diff --git a/build_files/build_environment/cmake/openimagedenoise.cmake b/build_files/build_environment/cmake/openimagedenoise.cmake index 95659231cc3..e3fdd557db6 100644 --- a/build_files/build_environment/cmake/openimagedenoise.cmake +++ b/build_files/build_environment/cmake/openimagedenoise.cmake @@ -82,6 +82,14 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux") ) endif() +if(WIN32 AND BLENDER_PLATFORM_ARM) + set(ODIN_PATCH_COMMAND ${ODIN_PATCH_COMMAND} && + ${PATCH_CMD} --verbose -p 1 -N -d + ${BUILD_DIR}/openimagedenoise/src/external_openimagedenoise < + ${PATCH_DIR}/oidn_disable_dependentload.diff + ) +endif() + ExternalProject_Add(external_openimagedenoise URL file://${PACKAGE_DIR}/${OIDN_FILE} DOWNLOAD_DIR ${DOWNLOAD_DIR} diff --git a/build_files/build_environment/patches/oidn_disable_dependentload.diff b/build_files/build_environment/patches/oidn_disable_dependentload.diff new file mode 100644 index 00000000000..94df47856fa --- /dev/null +++ b/build_files/build_environment/patches/oidn_disable_dependentload.diff @@ -0,0 +1,29 @@ +diff --git a/cmake/oidn_platform.cmake b/cmake/oidn_platform.cmake +index d5cc45e..24fcd5b 100644 +--- a/cmake/oidn_platform.cmake ++++ b/cmake/oidn_platform.cmake +@@ -232,15 +232,15 @@ if(MSVC) + # Enable control flow guard + append(OIDN_C_CXX_FLAGS "/guard:cf") + +- if(WIN32) +- if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") +- append(CMAKE_EXE_LINKER_FLAGS "/DEPENDENTLOADFLAG:0x2000") +- append(CMAKE_SHARED_LINKER_FLAGS "/DEPENDENTLOADFLAG:0x2000") +- elseif(CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM") +- append(CMAKE_EXE_LINKER_FLAGS "/Qoption,link,/DEPENDENTLOADFLAG:0x2000") +- append(CMAKE_SHARED_LINKER_FLAGS "/Qoption,link,/DEPENDENTLOADFLAG:0x2000") +- endif() +- endif() ++ #if(WIN32) ++ # if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") ++ # append(CMAKE_EXE_LINKER_FLAGS "/DEPENDENTLOADFLAG:0x2000") ++ # append(CMAKE_SHARED_LINKER_FLAGS "/DEPENDENTLOADFLAG:0x2000") ++ # elseif(CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM") ++ # append(CMAKE_EXE_LINKER_FLAGS "/Qoption,link,/DEPENDENTLOADFLAG:0x2000") ++ # append(CMAKE_SHARED_LINKER_FLAGS "/Qoption,link,/DEPENDENTLOADFLAG:0x2000") ++ # endif() ++ #endif() + else() + append(OIDN_C_CXX_FLAGS_RELEASE "-fstack-protector") + diff --git a/build_files/cmake/config/bpy_module.cmake b/build_files/cmake/config/bpy_module.cmake index 5b046acaab7..6298d558192 100644 --- a/build_files/cmake/config/bpy_module.cmake +++ b/build_files/cmake/config/bpy_module.cmake @@ -88,3 +88,16 @@ endif() # Language Support. set(WITH_INTERNATIONAL OFF CACHE BOOL "" FORCE) + +# ----------------------------------------------------------------------------- +# OpenMP Support. + +# OpenMP doesn't work on Windows ARM64 devices due to using an external manifest +# Note: This only applies to the bpy module, it works for regular builds. + +# We can't use CMAKE_SYSTEM_PROCESSOR here as it's not set yet, +# so fall back to checking the env for vcvarsall's VSCMD_ARG_TGT_ARCH +if(WIN32 AND "$ENV{VSCMD_ARG_TGT_ARCH}" STREQUAL "arm64") + set(WITH_OPENMP OFF CACHE BOOL "" FORCE) + set(WITH_OPENMP_STATIC OFF CACHE BOOL "" FORCE) +endif() diff --git a/lib/windows_arm64 b/lib/windows_arm64 index 24213b2effc..3fd42876b98 160000 --- a/lib/windows_arm64 +++ b/lib/windows_arm64 @@ -1 +1 @@ -Subproject commit 24213b2effc1c25098bcceaf806ad159925f7bf1 +Subproject commit 3fd42876b98cfec2a21037060d27a3ee0811d836