diff --git a/cmake/ModSDK.cmake b/cmake/ModSDK.cmake index 0371a7d61b..10a87e8525 100644 --- a/cmake/ModSDK.cmake +++ b/cmake/ModSDK.cmake @@ -13,6 +13,18 @@ function(_mod_lib_info out_platform_var out_name_var) message(FATAL_ERROR "add_mod: universal binaries are not supported") endif () set(_arch "${CMAKE_OSX_ARCHITECTURES}") + elseif (WIN32) + set(_arch_id "${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}") + if (NOT _arch_id) + set(_arch_id "${CMAKE_C_COMPILER_ARCHITECTURE_ID}") + endif () + if (_arch_id MATCHES "^ARM64(EC)?$") + set(_arch "arm64") + elseif (_arch_id STREQUAL "x64") + set(_arch "amd64") + elseif (_arch_id STREQUAL "X86") + set(_arch "x86") + endif () endif () string(TOLOWER "${CMAKE_SYSTEM_NAME}" _platform) if (_platform STREQUAL "darwin") @@ -74,7 +86,15 @@ function(_mod_collect_assets out_var dir) endif () file(GLOB_RECURSE _files CONFIGURE_DEPENDS LIST_DIRECTORIES false "${dir}/*") - set(${out_var} ${_files} PARENT_SCOPE) + # Dotfiles (.gitkeep, .DS_Store, ...) are not packaged; see CopyModAssets.cmake. + set(_assets "") + foreach (_file IN LISTS _files) + file(RELATIVE_PATH _rel "${dir}" "${_file}") + if (NOT _rel MATCHES "(^|/)\\.") + list(APPEND _assets "${_file}") + endif () + endforeach () + set(${out_var} ${_assets} PARENT_SCOPE) endfunction() function(_mod_add_webgpu_headers target_name) @@ -290,8 +310,8 @@ function(add_mod target_name) list(APPEND _package_deps ${_res_deps}) list(APPEND _package_inputs "${_res_dir}" ${_res_deps}) list(APPEND _zip_args res) - list(APPEND _extra_cmds COMMAND ${CMAKE_COMMAND} -E copy_directory - "${_res_dir}" "${_stage}/res") + list(APPEND _extra_cmds COMMAND ${CMAKE_COMMAND} "-DSRC=${_res_dir}" + "-DDST=${_stage}/res" -P "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/CopyModAssets.cmake") endif () if (ARG_OVERLAY_DIR) _mod_resolve_source_path(_overlay_dir "${ARG_OVERLAY_DIR}") @@ -299,8 +319,8 @@ function(add_mod target_name) list(APPEND _package_deps ${_overlay_deps}) list(APPEND _package_inputs "${_overlay_dir}" ${_overlay_deps}) list(APPEND _zip_args overlay) - list(APPEND _extra_cmds COMMAND ${CMAKE_COMMAND} -E copy_directory - "${_overlay_dir}" "${_stage}/overlay") + list(APPEND _extra_cmds COMMAND ${CMAKE_COMMAND} "-DSRC=${_overlay_dir}" + "-DDST=${_stage}/overlay" -P "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/CopyModAssets.cmake") endif () if (ARG_TEXTURES_DIR) _mod_resolve_source_path(_textures_dir "${ARG_TEXTURES_DIR}") @@ -308,8 +328,8 @@ function(add_mod target_name) list(APPEND _package_deps ${_textures_deps}) list(APPEND _package_inputs "${_textures_dir}" ${_textures_deps}) list(APPEND _zip_args textures) - list(APPEND _extra_cmds COMMAND ${CMAKE_COMMAND} -E copy_directory - "${_textures_dir}" "${_stage}/textures") + list(APPEND _extra_cmds COMMAND ${CMAKE_COMMAND} "-DSRC=${_textures_dir}" + "-DDST=${_stage}/textures" -P "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/CopyModAssets.cmake") endif () set(_bundle_cmds "")