diff options
Diffstat (limited to 'build_files/cmake/platform/platform_win32_bundle_crt.cmake')
-rw-r--r-- | build_files/cmake/platform/platform_win32_bundle_crt.cmake | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/build_files/cmake/platform/platform_win32_bundle_crt.cmake b/build_files/cmake/platform/platform_win32_bundle_crt.cmake new file mode 100644 index 00000000000..a4aa608b013 --- /dev/null +++ b/build_files/cmake/platform/platform_win32_bundle_crt.cmake @@ -0,0 +1,36 @@ +if(WITH_WINDOWS_BUNDLE_CRT) + set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE) + set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + set(CMAKE_INSTALL_OPENMP_LIBRARIES ${WITH_OPENMP}) + include(InstallRequiredSystemLibraries) + + # Install the CRT to the blender.crt Sub folder. + install(FILES ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} DESTINATION ./blender.crt COMPONENT Libraries) + + # Generating the manifest is a relativly expensive operation since + # it is collecting an sha1 hash for every file required. so only do + # this work when the libs have either changed or the manifest does + # not exist yet. + + string(SHA1 libshash "${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}") + set(manifest_trigger_file "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/crt_${libshash}") + + if(NOT EXISTS ${manifest_trigger_file}) + set(CRTLIBS "") + foreach(lib ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}) + get_filename_component(filename ${lib} NAME) + file(SHA1 "${lib}" sha1_file) + set(CRTLIBS "${CRTLIBS} <file name=\"${filename}\" hash=\"${sha1_file}\" hashalg=\"SHA1\" />\n") + endforeach() + configure_file(${CMAKE_SOURCE_DIR}/release/windows/manifest/blender.crt.manifest.in ${CMAKE_CURRENT_BINARY_DIR}/blender.crt.manifest @ONLY) + file(TOUCH ${manifest_trigger_file}) + endif() + + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/blender.crt.manifest DESTINATION ./blender.crt) + set(BUNDLECRT "<dependency><dependentAssembly><assemblyIdentity type=\"win32\" name=\"blender.crt\" version=\"1.0.0.0\" /></dependentAssembly></dependency>") +endif() +configure_file(${CMAKE_SOURCE_DIR}/release/windows/manifest/blender.exe.manifest.in ${CMAKE_CURRENT_BINARY_DIR}/blender.exe.manifest @ONLY) + + + + |