diff options
author | Sebastián Barschkis <sebbas@sebbas.org> | 2019-12-13 00:46:00 +0300 |
---|---|---|
committer | Sebastián Barschkis <sebbas@sebbas.org> | 2019-12-13 00:46:00 +0300 |
commit | 50256da50a35f7053c21bb866c4a88d5d625401e (patch) | |
tree | 7581122ae928e7ec05ffa8030b3b66ad42ae30a9 /build_files/cmake | |
parent | 6ca148dad01aeb9a2275221bcc3291eff7461d34 (diff) | |
parent | c30d6571bb47734e0bcb2fced5cf11cb6d8b1169 (diff) |
Merge branch 'master' into fluid-mantaflow
Diffstat (limited to 'build_files/cmake')
-rw-r--r-- | build_files/cmake/Modules/GTestTesting.cmake | 43 | ||||
-rw-r--r-- | build_files/cmake/config/blender_developer.cmake | 3 | ||||
-rw-r--r-- | build_files/cmake/config/blender_full.cmake | 17 | ||||
-rw-r--r-- | build_files/cmake/config/blender_lite.cmake | 9 | ||||
-rw-r--r-- | build_files/cmake/config/blender_release.cmake | 17 | ||||
-rw-r--r-- | build_files/cmake/packaging.cmake | 2 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_win32.cmake | 9 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_win32_bundle_crt.cmake | 39 |
8 files changed, 95 insertions, 44 deletions
diff --git a/build_files/cmake/Modules/GTestTesting.cmake b/build_files/cmake/Modules/GTestTesting.cmake index a93e829e6b0..30b10ae5980 100644 --- a/build_files/cmake/Modules/GTestTesting.cmake +++ b/build_files/cmake/Modules/GTestTesting.cmake @@ -12,9 +12,14 @@ # #============================================================================= -macro(BLENDER_SRC_GTEST_EX NAME SRC EXTRA_LIBS DO_ADD_TEST) +macro(BLENDER_SRC_GTEST_EX) if(WITH_GTESTS) - set(TARGET_NAME ${NAME}_test) + set(options SKIP_ADD_TEST) + set(oneValueArgs NAME) + set(multiValueArgs SRC EXTRA_LIBS COMMAND_ARGS) + cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) + + set(TARGET_NAME ${ARG_NAME}_test) get_property(_current_include_directories DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES) @@ -29,12 +34,14 @@ macro(BLENDER_SRC_GTEST_EX NAME SRC EXTRA_LIBS DO_ADD_TEST) ${CMAKE_SOURCE_DIR}/extern/gmock/include ) unset(_current_include_directories) - - add_executable(${TARGET_NAME} ${SRC}) + if(WIN32) + set(MANIFEST "${CMAKE_BINARY_DIR}/tests.exe.manifest") + endif() + add_executable(${TARGET_NAME} ${ARG_SRC} ${MANIFEST}) target_include_directories(${TARGET_NAME} PUBLIC "${TEST_INC}") target_include_directories(${TARGET_NAME} SYSTEM PUBLIC "${TEST_INC_SYS}") target_link_libraries(${TARGET_NAME} - ${EXTRA_LIBS} + ${ARG_EXTRA_LIBS} ${PLATFORM_LINKLIBS} bf_testing_main bf_intern_eigen @@ -60,13 +67,19 @@ macro(BLENDER_SRC_GTEST_EX NAME SRC EXTRA_LIBS DO_ADD_TEST) RUNTIME_OUTPUT_DIRECTORY "${TESTS_OUTPUT_DIR}" RUNTIME_OUTPUT_DIRECTORY_RELEASE "${TESTS_OUTPUT_DIR}" RUNTIME_OUTPUT_DIRECTORY_DEBUG "${TESTS_OUTPUT_DIR}") - if(${DO_ADD_TEST}) - add_test(NAME ${TARGET_NAME} COMMAND ${TESTS_OUTPUT_DIR}/${TARGET_NAME} WORKING_DIRECTORY ${TEST_INSTALL_DIR}) + if(NOT ARG_SKIP_ADD_TEST) + add_test( + NAME ${TARGET_NAME} + COMMAND ${TESTS_OUTPUT_DIR}/${TARGET_NAME} ${ARG_COMMAND_ARGS} + WORKING_DIRECTORY ${TEST_INSTALL_DIR}) # Don't fail tests on leaks since these often happen in external libraries # that we can't fix. set_tests_properties(${TARGET_NAME} PROPERTIES ENVIRONMENT LSAN_OPTIONS=exitcode=0) endif() + if(WIN32) + unset(MANIFEST) + endif() unset(TEST_INC) unset(TEST_INC_SYS) unset(TARGET_NAME) @@ -74,13 +87,23 @@ macro(BLENDER_SRC_GTEST_EX NAME SRC EXTRA_LIBS DO_ADD_TEST) endmacro() macro(BLENDER_SRC_GTEST NAME SRC EXTRA_LIBS) - BLENDER_SRC_GTEST_EX("${NAME}" "${SRC}" "${EXTRA_LIBS}" "TRUE") + BLENDER_SRC_GTEST_EX( + NAME "${NAME}" + SRC "${SRC}" + EXTRA_LIBS "${EXTRA_LIBS}") endmacro() macro(BLENDER_TEST NAME EXTRA_LIBS) - BLENDER_SRC_GTEST_EX("${NAME}" "${NAME}_test.cc" "${EXTRA_LIBS}" "TRUE") + BLENDER_SRC_GTEST_EX( + NAME "${NAME}" + SRC "${NAME}_test.cc" + EXTRA_LIBS "${EXTRA_LIBS}") endmacro() macro(BLENDER_TEST_PERFORMANCE NAME EXTRA_LIBS) - BLENDER_SRC_GTEST_EX("${NAME}" "${NAME}_test.cc" "${EXTRA_LIBS}" "FALSE") + BLENDER_SRC_GTEST_EX( + NAME "${NAME}" + SRC "${NAME}_test.cc" + EXTRA_LIBS "${EXTRA_LIBS}" + SKIP_ADD_TEST) endmacro() diff --git a/build_files/cmake/config/blender_developer.cmake b/build_files/cmake/config/blender_developer.cmake index 5209ce4ed25..29092b8c7c8 100644 --- a/build_files/cmake/config/blender_developer.cmake +++ b/build_files/cmake/config/blender_developer.cmake @@ -13,6 +13,9 @@ set(WITH_GTESTS ON CACHE BOOL "" FORCE) set(WITH_LIBMV_SCHUR_SPECIALIZATIONS OFF CACHE BOOL "" FORCE) set(WITH_PYTHON_SAFETY ON CACHE BOOL "" FORCE) set(WITH_DOC_MANPAGE OFF CACHE BOOL "" FORCE) +if(WIN32) + set(WITH_WINDOWS_BUNDLE_CRT OFF CACHE BOOL "" FORCE) +endif() # This may have issues with C++ initialization order, needs to be tested # on all platforms to be sure this is safe to enable. diff --git a/build_files/cmake/config/blender_full.cmake b/build_files/cmake/config/blender_full.cmake index 6187fe78c52..5c7a9517c7d 100644 --- a/build_files/cmake/config/blender_full.cmake +++ b/build_files/cmake/config/blender_full.cmake @@ -18,7 +18,6 @@ set(WITH_LIBMV ON CACHE BOOL "" FORCE) set(WITH_LIBMV_SCHUR_SPECIALIZATIONS ON CACHE BOOL "" FORCE) set(WITH_COMPOSITOR ON CACHE BOOL "" FORCE) set(WITH_FREESTYLE ON CACHE BOOL "" FORCE) -set(WITH_GHOST_XDND ON CACHE BOOL "" FORCE) set(WITH_IK_SOLVER ON CACHE BOOL "" FORCE) set(WITH_IK_ITASC ON CACHE BOOL "" FORCE) set(WITH_IMAGE_CINEON ON CACHE BOOL "" FORCE) @@ -29,7 +28,6 @@ set(WITH_IMAGE_OPENJPEG ON CACHE BOOL "" FORCE) set(WITH_IMAGE_TIFF ON CACHE BOOL "" FORCE) set(WITH_INPUT_NDOF ON CACHE BOOL "" FORCE) set(WITH_INTERNATIONAL ON CACHE BOOL "" FORCE) -set(WITH_JACK ON CACHE BOOL "" FORCE) set(WITH_LZMA ON CACHE BOOL "" FORCE) set(WITH_LZO ON CACHE BOOL "" FORCE) set(WITH_MOD_REMESH ON CACHE BOOL "" FORCE) @@ -48,20 +46,17 @@ set(WITH_PYTHON_INSTALL ON CACHE BOOL "" FORCE) set(WITH_QUADRIFLOW ON CACHE BOOL "" FORCE) set(WITH_SDL ON CACHE BOOL "" FORCE) set(WITH_TBB ON CACHE BOOL "" FORCE) -set(WITH_X11_XINPUT ON CACHE BOOL "" FORCE) -set(WITH_X11_XF86VMODE ON CACHE BOOL "" FORCE) set(WITH_MEM_JEMALLOC ON CACHE BOOL "" FORCE) # platform dependent options -if(UNIX AND NOT APPLE) +if(NOT WIN32) set(WITH_JACK ON CACHE BOOL "" FORCE) +endif() +if(UNIX AND NOT APPLE) set(WITH_DOC_MANPAGE ON CACHE BOOL "" FORCE) -elseif(WIN32) - set(WITH_JACK OFF CACHE BOOL "" FORCE) -elseif(APPLE) - set(WITH_JACK ON CACHE BOOL "" FORCE) - -# include("${CMAKE_CURRENT_SOURCE_DIR}/../platform/platform_apple_xcode.cmake") + set(WITH_GHOST_XDND ON CACHE BOOL "" FORCE) + set(WITH_X11_XINPUT ON CACHE BOOL "" FORCE) + set(WITH_X11_XF86VMODE ON CACHE BOOL "" FORCE) endif() diff --git a/build_files/cmake/config/blender_lite.cmake b/build_files/cmake/config/blender_lite.cmake index 2f8b1115637..7a54a4dd995 100644 --- a/build_files/cmake/config/blender_lite.cmake +++ b/build_files/cmake/config/blender_lite.cmake @@ -24,7 +24,6 @@ set(WITH_LIBMV OFF CACHE BOOL "" FORCE) set(WITH_LLVM OFF CACHE BOOL "" FORCE) set(WITH_COMPOSITOR OFF CACHE BOOL "" FORCE) set(WITH_FREESTYLE OFF CACHE BOOL "" FORCE) -set(WITH_GHOST_XDND OFF CACHE BOOL "" FORCE) set(WITH_IK_SOLVER OFF CACHE BOOL "" FORCE) set(WITH_IK_ITASC OFF CACHE BOOL "" FORCE) set(WITH_IMAGE_CINEON OFF CACHE BOOL "" FORCE) @@ -53,5 +52,9 @@ set(WITH_OPENVDB OFF CACHE BOOL "" FORCE) set(WITH_QUADRIFLOW OFF CACHE BOOL "" FORCE) set(WITH_SDL OFF CACHE BOOL "" FORCE) set(WITH_TBB OFF CACHE BOOL "" FORCE) -set(WITH_X11_XINPUT OFF CACHE BOOL "" FORCE) -set(WITH_X11_XF86VMODE OFF CACHE BOOL "" FORCE) + +if(UNIX AND NOT APPLE) + set(WITH_GHOST_XDND OFF CACHE BOOL "" FORCE) + set(WITH_X11_XINPUT OFF CACHE BOOL "" FORCE) + set(WITH_X11_XF86VMODE OFF CACHE BOOL "" FORCE) +endif() diff --git a/build_files/cmake/config/blender_release.cmake b/build_files/cmake/config/blender_release.cmake index 129ef873981..72d56eb21f2 100644 --- a/build_files/cmake/config/blender_release.cmake +++ b/build_files/cmake/config/blender_release.cmake @@ -19,7 +19,6 @@ set(WITH_LIBMV ON CACHE BOOL "" FORCE) set(WITH_LIBMV_SCHUR_SPECIALIZATIONS ON CACHE BOOL "" FORCE) set(WITH_COMPOSITOR ON CACHE BOOL "" FORCE) set(WITH_FREESTYLE ON CACHE BOOL "" FORCE) -set(WITH_GHOST_XDND ON CACHE BOOL "" FORCE) set(WITH_IK_SOLVER ON CACHE BOOL "" FORCE) set(WITH_IK_ITASC ON CACHE BOOL "" FORCE) set(WITH_IMAGE_CINEON ON CACHE BOOL "" FORCE) @@ -30,7 +29,6 @@ set(WITH_IMAGE_OPENJPEG ON CACHE BOOL "" FORCE) set(WITH_IMAGE_TIFF ON CACHE BOOL "" FORCE) set(WITH_INPUT_NDOF ON CACHE BOOL "" FORCE) set(WITH_INTERNATIONAL ON CACHE BOOL "" FORCE) -set(WITH_JACK ON CACHE BOOL "" FORCE) set(WITH_LZMA ON CACHE BOOL "" FORCE) set(WITH_LZO ON CACHE BOOL "" FORCE) set(WITH_MOD_REMESH ON CACHE BOOL "" FORCE) @@ -49,8 +47,6 @@ set(WITH_PYTHON_INSTALL ON CACHE BOOL "" FORCE) set(WITH_QUADRIFLOW ON CACHE BOOL "" FORCE) set(WITH_SDL ON CACHE BOOL "" FORCE) set(WITH_TBB ON CACHE BOOL "" FORCE) -set(WITH_X11_XINPUT ON CACHE BOOL "" FORCE) -set(WITH_X11_XF86VMODE ON CACHE BOOL "" FORCE) set(WITH_MEM_JEMALLOC ON CACHE BOOL "" FORCE) set(WITH_CYCLES_CUDA_BINARIES ON CACHE BOOL "" FORCE) @@ -59,13 +55,12 @@ set(CYCLES_CUDA_BINARIES_ARCH sm_30;sm_35;sm_37;sm_50;sm_52;sm_60;sm_61;sm_70;sm set(WITH_CYCLES_DEVICE_OPTIX ON CACHE BOOL "" FORCE) # platform dependent options -if(UNIX AND NOT APPLE) +if(NOT WIN32) set(WITH_JACK ON CACHE BOOL "" FORCE) +endif() +if(UNIX AND NOT APPLE) set(WITH_DOC_MANPAGE ON CACHE BOOL "" FORCE) -elseif(WIN32) - set(WITH_JACK OFF CACHE BOOL "" FORCE) -elseif(APPLE) - set(WITH_JACK ON CACHE BOOL "" FORCE) - -# include("${CMAKE_CURRENT_SOURCE_DIR}/../platform/platform_apple_xcode.cmake") + set(WITH_GHOST_XDND ON CACHE BOOL "" FORCE) + set(WITH_X11_XINPUT ON CACHE BOOL "" FORCE) + set(WITH_X11_XF86VMODE ON CACHE BOOL "" FORCE) endif() diff --git a/build_files/cmake/packaging.cmake b/build_files/cmake/packaging.cmake index 5ace42646c5..0e530463659 100644 --- a/build_files/cmake/packaging.cmake +++ b/build_files/cmake/packaging.cmake @@ -135,7 +135,7 @@ elseif(UNIX) add_package_archive( "${PROJECT_NAME}-${BLENDER_VERSION}-${BUILD_REV}-${PACKAGE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}" - "tar.bz2") + "tar.xz") endif() unset(MAJOR_VERSION) diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake index 2d4343a636d..7e759aeccb0 100644 --- a/build_files/cmake/platform/platform_win32.cmake +++ b/build_files/cmake/platform/platform_win32.cmake @@ -133,14 +133,7 @@ add_definitions(-D_ALLOW_KEYWORD_MACROS) # We want to support Vista level ABI add_definitions(-D_WIN32_WINNT=0x600) - -# Make cmake find the msvc redistributables -set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP FALSE) -set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) -set(CMAKE_INSTALL_OPENMP_LIBRARIES ${WITH_OPENMP}) -set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION .) -include(InstallRequiredSystemLibraries) - +include(build_files/cmake/platform/platform_win32_bundle_crt.cmake) remove_cc_flag("/MDd" "/MD") if(MSVC_CLANG) # Clangs version of cl doesn't support all flags 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..e84a139fac9 --- /dev/null +++ b/build_files/cmake/platform/platform_win32_bundle_crt.cmake @@ -0,0 +1,39 @@ +# First generate the manifest for tests since it will not need the dependency on the CRT. +configure_file(${CMAKE_SOURCE_DIR}/release/windows/manifest/blender.exe.manifest.in ${CMAKE_CURRENT_BINARY_DIR}/tests.exe.manifest @ONLY) + +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) + + + + |