build_files/build_environment/patches/oidn.diff | 36 +++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/build_files/build_environment/patches/oidn.diff b/build_files/build_environment/patches/oidn.diff new file mode 100644 index 00000000000..b9440a7b3bf --- /dev/null +++ b/build_files/build_environment/patches/oidn.diff @@ -0,0 +1,36 @@ +diff -Naur oidn-2.0.1/core/CMakeLists.txt external_openimagedenoise/core/CMakeLists.txt +--- oidn-2.0.1/core/CMakeLists.txt 2023-06-26 09:06:31.000000000 -0600 ++++ external_openimagedenoise/core/CMakeLists.txt 2023-07-01 10:54:06.347161100 -0600 +@@ -76,7 +76,7 @@ + + add_library(OpenImageDenoise_core SHARED ${OIDN_CORE_SOURCES} ${OIDN_RESOURCE_FILE}) + set_property(TARGET OpenImageDenoise_core PROPERTY VERSION ${PROJECT_VERSION}) +- ++target_compile_definitions(OpenImageDenoise_core PRIVATE SHARED_POSTFIX=\"$<$:$>\") + target_link_libraries(OpenImageDenoise_core + PUBLIC + OpenImageDenoise_common +diff -Naur oidn-2.0.1/core/module.cpp external_openimagedenoise/core/module.cpp +--- oidn-2.0.1/core/module.cpp 2023-06-26 09:06:31.000000000 -0600 ++++ external_openimagedenoise/core/module.cpp 2023-07-01 10:49:59.924876500 -0600 +@@ -29,7 +29,7 @@ + return true; // module already loaded + + // Get the path of the module to load +- std::string filename = "OpenImageDenoise_" + name; ++ std::string filename = "OpenImageDenoise_" + name + SHARED_POSTFIX; + #if defined(_WIN32) + filename += ".dll"; + #else +diff -Naur oidn-2.0.1/devices/CMakeLists.txt external_openimagedenoise/devices/CMakeLists.txt +--- oidn-2.0.1/devices/CMakeLists.txt 2023-06-26 09:06:31.000000000 -0600 ++++ external_openimagedenoise/devices/CMakeLists.txt 2023-07-01 10:57:36.987238700 -0600 +@@ -59,6 +59,8 @@ + -DOIDN_API_NAMESPACE:STRING=${OIDN_API_NAMESPACE} + -DOIDN_WARN_AS_ERRORS:BOOL=${OIDN_WARN_AS_ERRORS} + -DOIDN_SANITIZER:STRING=${OIDN_SANITIZER} ++ -DPYTHON_EXECUTABLE:STRING=${PYTHON_EXECUTABLE} ++ -DCMAKE_DEBUG_POSTFIX:STRING=${CMAKE_DEBUG_POSTFIX} + BUILD_ALWAYS TRUE + DEPENDS + OpenImageDenoise_core .../build_environment/cmake/openimagedenoise.cmake | 32 ++++++++++------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/build_files/build_environment/cmake/openimagedenoise.cmake b/build_files/build_environment/cmake/openimagedenoise.cmake index 89290691f7c..c2d25b21165 100644 --- a/build_files/build_environment/cmake/openimagedenoise.cmake +++ b/build_files/build_environment/cmake/openimagedenoise.cmake @@ -5,8 +5,6 @@ set(OIDN_EXTRA_ARGS -DOIDN_APPS=OFF -DTBB_ROOT=${LIBDIR}/tbb - -DTBB_STATIC_LIB=${TBB_STATIC_LIBRARY} - -DOIDN_STATIC_RUNTIME=OFF -DISPC_EXECUTABLE=${LIBDIR}/ispc/bin/ispc -DOIDN_FILTER_RTLIGHTMAP=OFF -DPYTHON_EXECUTABLE=${PYTHON_BINARY} @@ -22,6 +20,13 @@ if(WIN32) -DTBB_DEBUG_LIBRARY_MALLOC=${LIBDIR}/tbb/lib/tbbmalloc.lib -DCMAKE_CXX_COMPILER=${LIBDIR}/dpcpp/bin/clang++.exe -DCMAKE_C_COMPILER=${LIBDIR}/dpcpp/bin/clang.exe + -DCMAKE_DEBUG_POSTFIX=_d + ) + set(OIDN_CMAKE_FLAGS ${DEFAULT_CLANG_CMAKE_FLAGS} + -DCMAKE_CXX_COMPILER=${LIBDIR}/dpcpp/bin/clang++.exe + -DCMAKE_C_COMPILER=${LIBDIR}/dpcpp/bin/clang.exe + -DCMAKE_SHARED_LINKER_FLAGS=-L"${LIBDIR}/dpcpp/lib" + -DCMAKE_EXE_LINKER_FLAGS=-L"${LIBDIR}/dpcpp/lib" ) else() set(OIDN_EXTRA_ARGS @@ -32,6 +37,7 @@ else() -DCMAKE_C_COMPILER=${LIBDIR}/dpcpp/bin/clang -DCMAKE_FIND_ROOT_PATH=${LIBDIR}/ocloc ) + set(OIDN_CMAKE_FLAGS ${DEFAULT_CMAKE_FLAGS) endif() ExternalProject_Add(external_openimagedenoise @@ -39,7 +45,9 @@ ExternalProject_Add(external_openimagedenoise DOWNLOAD_DIR ${DOWNLOAD_DIR} URL_HASH ${OIDN_HASH_TYPE}=${OIDN_HASH} PREFIX ${BUILD_DIR}/openimagedenoise - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openimagedenoise ${DEFAULT_CMAKE_FLAGS} ${OIDN_EXTRA_ARGS} + CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR} + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openimagedenoise ${OIDN_CMAKE_FLAGS} ${OIDN_EXTRA_ARGS} + PATCH_COMMAND ${PATCH_CMD} --verbose -p 1 -N -d ${BUILD_DIR}/openimagedenoise/src/external_openimagedenoise < ${PATCH_DIR}/oidn.diff INSTALL_DIR ${LIBDIR}/openimagedenoise ) @@ -50,23 +58,11 @@ add_dependencies( external_python ) -if(WIN32) - if(BUILD_MODE STREQUAL Release) +if(BUILD_MODE STREQUAL Release AND WIN32) ExternalProject_Add_Step(external_openimagedenoise after_install + COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openimagedenoise/bin ${HARVEST_TARGET}/openimagedenoise/bin + COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openimagedenoise/lib ${HARVEST_TARGET}/openimagedenoise/lib COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openimagedenoise/include ${HARVEST_TARGET}/openimagedenoise/include - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimagedenoise/lib/openimagedenoise.lib ${HARVEST_TARGET}/openimagedenoise/lib/openimagedenoise.lib - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimagedenoise/lib/common.lib ${HARVEST_TARGET}/openimagedenoise/lib/common.lib - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimagedenoise/lib/dnnl.lib ${HARVEST_TARGET}/openimagedenoise/lib/dnnl.lib - DEPENDEES install - ) - endif() - - if(BUILD_MODE STREQUAL Debug) - ExternalProject_Add_Step(external_openimagedenoise after_install - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimagedenoise/lib/openimagedenoise.lib ${HARVEST_TARGET}/openimagedenoise/lib/openimagedenoise_d.lib - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimagedenoise/lib/common.lib ${HARVEST_TARGET}/openimagedenoise/lib/common_d.lib - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimagedenoise/lib/dnnl.lib ${HARVEST_TARGET}/openimagedenoise/lib/dnnl_d.lib DEPENDEES install ) - endif() endif() build_files/build_environment/cmake/options.cmake | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/build_files/build_environment/cmake/options.cmake b/build_files/build_environment/cmake/options.cmake index b3f676c5a4a..213794c86b4 100644 --- a/build_files/build_environment/cmake/options.cmake +++ b/build_files/build_environment/cmake/options.cmake @@ -97,6 +97,20 @@ if(WIN32) set(BLENDER_CLANG_CMAKE_CXX_FLAGS_RELEASE "${COMMON_CLANG_FLAGS} -Xclang --dependent-lib=msvcrt -D_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS -O2 -DNDEBUG -DPLATFORM_WINDOWS -DPSAPI_VERSION=2 -DTINYFORMAT_ALLOW_WCHAR_STRINGS") set(BLENDER_CLANG_CMAKE_CXX_FLAGS_RELWITHDEBINFO "${COMMON_CLANG_FLAGS} -Xclang --dependent-lib=msvcrt -D_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS -g -O2 -DNDEBUG -DPLATFORM_WINDOWS -DPSAPI_VERSION=2 -DTINYFORMAT_ALLOW_WCHAR_STRINGS") + set(DEFAULT_CLANG_CMAKE_FLAGS + -DCMAKE_BUILD_TYPE=${BUILD_MODE} + -DCMAKE_C_FLAGS_DEBUG=${BLENDER_CLANG_CMAKE_C_FLAGS_DEBUG} + -DCMAKE_C_FLAGS_MINSIZEREL=${BLENDER_CLANG_CMAKE_C_FLAGS_MINSIZEREL} + -DCMAKE_C_FLAGS_RELEASE=${BLENDER_CLANG_CMAKE_C_FLAGS_RELEASE} + -DCMAKE_C_FLAGS_RELWITHDEBINFO=${BLENDER_CLANG_CMAKE_C_FLAGS_RELWITHDEBINFO} + -DCMAKE_CXX_FLAGS_DEBUG=${BLENDER_CLANG_CMAKE_CXX_FLAGS_DEBUG} + -DCMAKE_CXX_FLAGS_MINSIZEREL=${BLENDER_CLANG_CMAKE_CXX_FLAGS_MINSIZEREL} + -DCMAKE_CXX_FLAGS_RELEASE=${BLENDER_CLANG_CMAKE_CXX_FLAGS_RELEASE} + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${BLENDER_CLANG_CMAKE_CXX_FLAGS_RELWITHDEBINFO} + -DCMAKE_CXX_STANDARD=17 + ) + + set(PLATFORM_FLAGS) set(PLATFORM_CXX_FLAGS) set(PLATFORM_CMAKE_FLAGS) build_files/cmake/platform/platform_win32.cmake | 44 ++++++++++++++++++------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake index 7ac2fa96059..99f96ac3c22 100644 --- a/build_files/cmake/platform/platform_win32.cmake +++ b/build_files/cmake/platform/platform_win32.cmake @@ -721,17 +721,39 @@ endif() if(WITH_OPENIMAGEDENOISE) - set(OPENIMAGEDENOISE ${LIBDIR}/OpenImageDenoise) - set(OPENIMAGEDENOISE_LIBPATH ${LIBDIR}/OpenImageDenoise/lib) - set(OPENIMAGEDENOISE_INCLUDE_DIRS ${OPENIMAGEDENOISE}/include) - set(OPENIMAGEDENOISE_LIBRARIES - optimized ${OPENIMAGEDENOISE_LIBPATH}/OpenImageDenoise.lib - optimized ${OPENIMAGEDENOISE_LIBPATH}/common.lib - optimized ${OPENIMAGEDENOISE_LIBPATH}/dnnl.lib - debug ${OPENIMAGEDENOISE_LIBPATH}/OpenImageDenoise_d.lib - debug ${OPENIMAGEDENOISE_LIBPATH}/common_d.lib - debug ${OPENIMAGEDENOISE_LIBPATH}/dnnl_d.lib - ) + if(EXISTS ${LIBDIR}/OpenImageDenoise/bin/OpenImageDenoise.dll) # 4.0 libs + find_package(OpenImageDenoise REQUIRED CONFIG) + if(OpenImageDenoise_FOUND) + get_target_property(OPENIMAGEDENOISE_LIBRARIES_RELEASE OpenImageDenoise IMPORTED_IMPLIB_RELEASE) + get_target_property(OPENIMAGEDENOISE_LIBRARIES_DEBUG OpenImageDenoise IMPORTED_IMPLIB_DEBUG) + if(EXISTS ${OPENIMAGEDENOISE_LIBRARIES_DEBUG}) + set(OPENIMAGEDENOISE_LIBRARIES optimized ${OPENIMAGEDENOISE_LIBRARIES_RELEASE} debug ${OPENIMAGEDENOISE_LIBRARIES_DEBUG}) + else() + if(EXISTS ${OPENIMAGEDENOISE_LIBRARIES_RELEASE}) + set(OPENIMAGEDENOISE_LIBRARIES ${OPENIMAGEDENOISE_LIBRARIES_RELEASE}) + else() + set(WITH_OPENIMAGEDENOISE OFF) + message(STATUS "OpenImageDenoise not found, disabling WITH_OPENIMAGEDENOISE") + endif() + endif() + get_target_property(OPENIMAGEDENOISE_INCLUDE_DIRS OpenImageDenoise INTERFACE_INCLUDE_DIRECTORIES) + else() + set(WITH_OPENIMAGEDENOISE OFF) + message(STATUS "OpenImageDenoise not found, disabling WITH_OPENIMAGEDENOISE") + endif() + else() + set(OPENIMAGEDENOISE ${LIBDIR}/OpenImageDenoise) + set(OPENIMAGEDENOISE_LIBPATH ${LIBDIR}/OpenImageDenoise/lib) + set(OPENIMAGEDENOISE_INCLUDE_DIRS ${OPENIMAGEDENOISE}/include) + set(OPENIMAGEDENOISE_LIBRARIES + optimized ${OPENIMAGEDENOISE_LIBPATH}/OpenImageDenoise.lib + optimized ${OPENIMAGEDENOISE_LIBPATH}/common.lib + optimized ${OPENIMAGEDENOISE_LIBPATH}/dnnl.lib + debug ${OPENIMAGEDENOISE_LIBPATH}/OpenImageDenoise_d.lib + debug ${OPENIMAGEDENOISE_LIBPATH}/common_d.lib + debug ${OPENIMAGEDENOISE_LIBPATH}/dnnl_d.lib + ) + endif() set(OPENIMAGEDENOISE_DEFINITIONS) endif() source/creator/CMakeLists.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 8c8c88326b7..1b23312b226 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -547,6 +547,15 @@ if(WIN32) CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel ) endif() + if(EXISTS ${LIBDIR}/OpenImageDenoise/bin/openimagedenoise.dll) # 4.0 + windows_install_shared_manifest( + FILES + ${LIBDIR}/OpenImageDenoise/bin/OpenImageDenoise.dll + ${LIBDIR}/OpenImageDenoise/bin/OpenImageDenoise_core.dll + ${LIBDIR}/OpenImageDenoise/bin/OpenImageDenoise_device_cpu.dll + ${LIBDIR}/OpenImageDenoise/bin/OpenImageDenoise_device_sycl.dll + ) + endif() endif() # Show helpful tip.