diff options
Diffstat (limited to 'source/creator/CMakeLists.txt')
-rw-r--r-- | source/creator/CMakeLists.txt | 641 |
1 files changed, 360 insertions, 281 deletions
diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 278cd4362c3..caaffa283ba 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -1,9 +1,8 @@ # SPDX-License-Identifier: GPL-2.0-or-later # Copyright 2006 Blender Foundation. All rights reserved. -blender_include_dirs( +set(INC ../../intern/clog - ../../intern/glew-mx ../../intern/guardedalloc ../blender/blenkernel ../blender/blenlib @@ -22,10 +21,13 @@ set(LIB bf_windowmanager ) +if(HAVE_FEENABLEEXCEPT) + add_definitions(-DHAVE_FEENABLEEXCEPT) +endif() + if(WITH_TBB) - # Force TBB libraries to be in front of MKL (part of OpenImageDenoise), so - # that it is initialized before MKL and static library initialization order - # issues are avoided. + # Force TBB libraries to be in front of MKL (part of `OpenImageDenoise`), so + # that it is initialized before MKL and static library initialization order issues are avoided. # # This isn't fully robust but seems to work. list(INSERT LIB 0 ${TBB_LIBRARIES}) @@ -33,17 +35,17 @@ if(WITH_TBB) endif() if(WIN32) - blender_include_dirs(../../intern/utfconv) + list(APPEND INC ../../intern/utfconv) endif() if(WITH_LIBMV) - blender_include_dirs(../../intern/libmv) + list(APPEND INC ../../intern/libmv) add_definitions(-DWITH_LIBMV) endif() if(WITH_CYCLES) if(WITH_CYCLES_LOGGING) - blender_include_dirs(../../intern/cycles/blender) + list(APPEND INC ../../intern/cycles/blender) add_definitions(-DWITH_CYCLES_LOGGING) endif() endif() @@ -53,16 +55,16 @@ if(WITH_CODEC_FFMPEG) endif() if(WITH_TBB) - blender_include_dirs(${TBB_INCLUDE_DIRS}) + list(APPEND INC ${TBB_INCLUDE_DIRS}) if(WIN32) - # For pragma that links tbbmalloc_proxy.lib + # For `pragma` that links `tbbmalloc_proxy.lib`. link_directories(${LIBDIR}/tbb/lib) endif() endif() if(WITH_PYTHON) - blender_include_dirs(../blender/python) + list(APPEND INC ../blender/python) add_definitions(-DWITH_PYTHON) if(WITH_PYTHON_SECURITY) @@ -76,19 +78,19 @@ endif() if(WITH_SDL) if(WITH_SDL_DYNLOAD) - blender_include_dirs(../../extern/sdlew/include) + list(APPEND INC ../../extern/sdlew/include) add_definitions(-DWITH_SDL_DYNLOAD) endif() add_definitions(-DWITH_SDL) endif() if(WITH_BINRELOC) - blender_include_dirs(${BINRELOC_INCLUDE_DIRS}) + list(APPEND INC ${BINRELOC_INCLUDE_DIRS}) add_definitions(-DWITH_BINRELOC) endif() if(WITH_FREESTYLE) - blender_include_dirs(../blender/freestyle) + list(APPEND INC ../blender/freestyle) add_definitions(-DWITH_FREESTYLE) endif() @@ -97,7 +99,7 @@ if(WITH_XR_OPENXR) endif() if(WITH_GMP) - blender_include_dirs(${GMP_INCLUDE_DIRS}) + list(APPEND INC ${GMP_INCLUDE_DIRS}) add_definitions(-DWITH_GMP) endif() @@ -105,7 +107,7 @@ if(WITH_OPENCOLORIO) add_definitions(-DWITH_OCIO) endif() -# Setup the exe sources and buildinfo +# Setup the EXE sources and `buildinfo`. set(SRC creator.c creator_args.c @@ -114,7 +116,7 @@ set(SRC creator_intern.h ) -# MSVC 2010 gives linking errors with the manifest +# MSVC 2010 gives linking errors with the manifest. if(WIN32 AND NOT UNIX) add_definitions( -DBLEN_VER_RC_STR="${BLENDER_VERSION}" @@ -170,19 +172,20 @@ if(WITH_BUILDINFO) unset(BUILD_SYSTEM) # -------------------------------------------------------------------------- - # write header for values that change each build - # note, generated file is in build dir's source/creator - # except when used as an include path. + # Write header for values that change each build + # + # NOTE: generated file is in build directory `source/creator` + # except when used as an include path. add_definitions(-DWITH_BUILDINFO_HEADER) - # include the output directory, where the buildinfo.h file is generated + # Include the output directory, where the `buildinfo.h` file is generated. include_directories(${CMAKE_CURRENT_BINARY_DIR}) - # XXX, ${buildinfo_h_fake} is used here, + # XXX: `${buildinfo_h_fake}` is used here, # because we rely on that file being detected as missing - # every build so that the real header "buildinfo.h" is updated. + # every build so that the real header `buildinfo.h` is updated. # # Keep this until we find a better way to resolve! @@ -190,32 +193,40 @@ if(WITH_BUILDINFO) set(buildinfo_h_fake "${CMAKE_CURRENT_BINARY_DIR}/buildinfo.h_fake") if(EXISTS ${buildinfo_h_fake}) - message(FATAL_ERROR "File \"${buildinfo_h_fake}\" found, this should never be created, remove!") + message( + FATAL_ERROR + "File \"${buildinfo_h_fake}\" found, this should never be created, remove!" + ) endif() - # From the cmake documentation "If the output of the custom command is not actually created as a + # From the CMAKE documentation "If the output of the custom command is not actually created as a # file on disk it should be marked with the SYMBOLIC source file property." # - # Not doing this leads to build warnings for the not generated file on windows when using msbuild - SET_SOURCE_FILES_PROPERTIES(${buildinfo_h_fake} PROPERTIES SYMBOLIC TRUE) + # Not doing this leads to build warnings for the not generated file on + # MS-Windows when using `msbuild`. + set_source_files_properties(${buildinfo_h_fake} PROPERTIES SYMBOLIC TRUE) # a custom target that is always built - add_custom_target(buildinfo ALL - DEPENDS ${buildinfo_h_fake}) + add_custom_target( + buildinfo ALL + DEPENDS ${buildinfo_h_fake} + ) - # creates buildinfo.h using cmake script + # Creates `buildinfo.h` using CMAKE script. add_custom_command( OUTPUT ${buildinfo_h_fake} # ensure we always run ${buildinfo_h_real} - COMMAND ${CMAKE_COMMAND} - -DSOURCE_DIR=${CMAKE_SOURCE_DIR} - # overrides only used when non-empty strings - -DBUILD_DATE=${BUILDINFO_OVERRIDE_DATE} - -DBUILD_TIME=${BUILDINFO_OVERRIDE_TIME} - -P ${CMAKE_SOURCE_DIR}/build_files/cmake/buildinfo.cmake) - - # buildinfo.h is a generated file + COMMAND + ${CMAKE_COMMAND} + -DSOURCE_DIR=${CMAKE_SOURCE_DIR} + # Overrides only used when non-empty strings. + -DBUILD_DATE=${BUILDINFO_OVERRIDE_DATE} + -DBUILD_TIME=${BUILDINFO_OVERRIDE_TIME} + -P ${CMAKE_SOURCE_DIR}/build_files/cmake/buildinfo.cmake + ) + + # `buildinfo.h` is a generated file. set_source_files_properties( ${buildinfo_h_real} PROPERTIES GENERATED TRUE @@ -224,7 +235,7 @@ if(WITH_BUILDINFO) unset(buildinfo_h_real) unset(buildinfo_h_fake) - # add deps below, after adding blender + # Add dependencies below, after adding Blender # -------------- done with header values. list(APPEND SRC @@ -242,26 +253,35 @@ add_cc_flags_custom_test(blender) if(WITH_PYTHON_MODULE) add_definitions(-DWITH_PYTHON_MODULE) - # creates ./bin/bpy.so which can be imported as a python module. + # Creates `./bpy/__init__.so` which can be imported as a Python module. # - # note that 'SHARED' works on Linux and Windows, - # but not OSX which _must_ be 'MODULE' + # Note that 'SHARED' works on Linux and Windows, but not MACOS which _must_ be 'MODULE'. add_library(blender MODULE ${SRC}) + + + get_property(GENERATOR_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + if(GENERATOR_IS_MULTI_CONFIG) + set(BPY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/$<CONFIG>/bpy) + else() + set(BPY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/bpy) + endif() + set_target_properties( blender PROPERTIES PREFIX "" - OUTPUT_NAME bpy - LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin - RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin # only needed on windows + OUTPUT_NAME __init__ + LIBRARY_OUTPUT_DIRECTORY ${BPY_OUTPUT_DIRECTORY} + RUNTIME_OUTPUT_DIRECTORY ${BPY_OUTPUT_DIRECTORY} ) + unset(BPY_OUTPUT_DIRECTORY) if(APPLE) set_target_properties(blender PROPERTIES MACOSX_BUNDLE TRUE) endif() if(WIN32) - # python modules use this + # Python modules use this. set_target_properties( blender PROPERTIES @@ -272,72 +292,87 @@ if(WITH_PYTHON_MODULE) else() add_executable(blender ${EXETYPE} ${SRC}) if(WIN32) - add_executable(blender-launcher WIN32 - blender_launcher_win32.c - ${CMAKE_SOURCE_DIR}/release/windows/icons/winblender.rc - ${CMAKE_BINARY_DIR}/blender.exe.manifest - ) - target_compile_definitions (blender-launcher PRIVATE -D_UNICODE -DUNICODE) - target_link_libraries(blender-launcher Pathcch.lib) + add_executable(blender-launcher WIN32 + blender_launcher_win32.c + ${CMAKE_SOURCE_DIR}/release/windows/icons/winblender.rc + ${CMAKE_BINARY_DIR}/blender.exe.manifest + ) + target_compile_definitions (blender-launcher PRIVATE -D_UNICODE -DUNICODE) + target_link_libraries(blender-launcher Pathcch.lib) endif() endif() if(WITH_BUILDINFO) - # explicitly say that the executable depends on the buildinfo + # Explicitly say that the executable depends on the `buildinfo`. add_dependencies(blender buildinfo) endif() set(BLENDER_TEXT_FILES ${CMAKE_SOURCE_DIR}/release/text/copyright.txt - # generate this file - # ${CMAKE_SOURCE_DIR}/release/text/readme.html + # Generate this file: + # `${CMAKE_SOURCE_DIR}/release/text/readme.html` ) # ----------------------------------------------------------------------------- -# Platform Specific Var: TARGETDIR_VER +# Platform specific target destinations +# +# Setup version directory, libraries, `bpy` & text files. if(UNIX AND NOT APPLE) if(WITH_PYTHON_MODULE) if(WITH_INSTALL_PORTABLE) - set(TARGETDIR_VER ${BLENDER_VERSION}) + set(TARGETDIR_BPY bpy) + set(TARGETDIR_VER bpy/${BLENDER_VERSION}) + set(TARGETDIR_LIB bpy/lib) else() - set(TARGETDIR_VER ${PYTHON_SITE_PACKAGES}/${BLENDER_VERSION}) + set(TARGETDIR_BPY ${PYTHON_SITE_PACKAGES}/bpy) + set(TARGETDIR_VER ${PYTHON_SITE_PACKAGES}/bpy/${BLENDER_VERSION}) + set(TARGETDIR_LIB ${PYTHON_SITE_PACKAGES}/bpy/lib) endif() else() if(WITH_INSTALL_PORTABLE) set(TARGETDIR_VER ${BLENDER_VERSION}) + set(TARGETDIR_TEXT .) + set(TARGETDIR_LIB lib) else() set(TARGETDIR_VER share/blender/${BLENDER_VERSION}) + set(TARGETDIR_TEXT share/doc/blender) endif() endif() elseif(WIN32) - set(TARGETDIR_VER ${BLENDER_VERSION}) - + if(WITH_PYTHON_MODULE) + set(TARGETDIR_BPY ${CMAKE_INSTALL_PREFIX_WITH_CONFIG}/bpy) + set(TARGETDIR_VER ${CMAKE_INSTALL_PREFIX_WITH_CONFIG}/bpy/${BLENDER_VERSION}) + # Important the DLL's are next to `__init__.pyd` otherwise it won't load. + set(TARGETDIR_LIB ${CMAKE_INSTALL_PREFIX_WITH_CONFIG}/bpy) + else() + set(TARGETDIR_VER ${BLENDER_VERSION}) + set(TARGETDIR_TEXT .) + set(TARGETDIR_LIB .) + endif() elseif(APPLE) if(WITH_PYTHON_MODULE) if(WITH_INSTALL_PORTABLE) - set(BPY_INSTALL_DIR) - set(TARGETDIR_VER $<TARGET_FILE_DIR:blender>/../Resources/${BLENDER_VERSION}) - # Keep the `BLENDER_VERSION` folder and bpy.so in the build folder. - set(INSTALL_BPY_TO_SITE_PACKAGES OFF) + set(TARGETDIR_BPY bpy) + set(TARGETDIR_VER bpy/${BLENDER_VERSION}) + set(TARGETDIR_LIB bpy/lib) else() - # Parent directory of bpy.so for installation. - set(BPY_INSTALL_DIR ${PYTHON_LIBPATH}/site-packages) - # Defined in terms of site-packages since the site-packages + # Paths defined in terms of site-packages since the site-packages # directory can be a symlink (brew for example). - set(TARGETDIR_VER "${BPY_INSTALL_DIR}/../Resources/${BLENDER_VERSION}") - set(INSTALL_BPY_TO_SITE_PACKAGES ON) + set(TARGETDIR_BPY ${PYTHON_SITE_PACKAGES}/bpy) + set(TARGETDIR_VER ${PYTHON_SITE_PACKAGES}/bpy/${BLENDER_VERSION}) + set(TARGETDIR_LIB ${PYTHON_SITE_PACKAGES}/bpy/lib) endif() else() set(TARGETDIR_VER Blender.app/Contents/Resources/${BLENDER_VERSION}) + set(TARGETDIR_LIB Blender.app/Contents/Resources/lib) + set(TARGETDIR_TEXT Blender.app/Contents/Resources/text) endif() - # License, copyright, readme files. - set(BLENDER_TEXT_FILES_DESTINATION "${TARGETDIR_VER}/../text") - set(MAC_BLENDER_TARGET_DYLIBS_DIR "${TARGETDIR_VER}/lib") - # Skip relinking on cpack / install + + # Skip re-linking on CPACK / install. set_target_properties(blender PROPERTIES BUILD_WITH_INSTALL_RPATH true) endif() @@ -360,14 +395,14 @@ if(WITH_PYTHON) "${BLENDER_VERSION_CYCLE}" STREQUAL "rc") set(ADDON_EXCLUDE_CONDITIONAL "addons_contrib/*") else() - set(ADDON_EXCLUDE_CONDITIONAL "_addons_contrib/*") # dummy, won't do anything + set(ADDON_EXCLUDE_CONDITIONAL "_addons_contrib/*") # Dummy, won't do anything. endif() # do not install freestyle dir if disabled if(NOT WITH_FREESTYLE) set(FREESTYLE_EXCLUDE_CONDITIONAL "freestyle/*") else() - set(FREESTYLE_EXCLUDE_CONDITIONAL "_freestyle/*") # dummy, won't do anything + set(FREESTYLE_EXCLUDE_CONDITIONAL "_freestyle/*") # Dummy, won't do anything. endif() install( @@ -375,6 +410,7 @@ if(WITH_PYTHON) DESTINATION ${TARGETDIR_VER} PATTERN ".git" EXCLUDE PATTERN ".gitignore" EXCLUDE + PATTERN ".github" EXCLUDE PATTERN ".arcconfig" EXCLUDE PATTERN "__pycache__" EXCLUDE PATTERN "${ADDON_EXCLUDE_CONDITIONAL}" EXCLUDE @@ -387,8 +423,7 @@ endif() # fonts install( - DIRECTORY - ${CMAKE_SOURCE_DIR}/release/datafiles/fonts + DIRECTORY ${CMAKE_SOURCE_DIR}/release/datafiles/fonts DESTINATION ${TARGETDIR_VER}/datafiles ) @@ -402,14 +437,14 @@ if(WITH_INTERNATIONAL) msgfmt_simple(${_po_file} _all_mo_files) endforeach() - # Create a custom target which will compile all po to mo + # Create a custom target which will compile all `*.po` to `*.mo`. add_custom_target( locales - DEPENDS ${_all_mo_files}) - + DEPENDS ${_all_mo_files} + ) add_dependencies(blender locales) - # Generate INSTALL rules + # Generate INSTALL rules. install( FILES ${_locale_dir}/languages DESTINATION ${_locale_target_dir} @@ -434,7 +469,7 @@ if(WITH_INTERNATIONAL) unset(_locale_dir) endif() -# color management +# Color management. if(WITH_OPENCOLORIO) install( DIRECTORY ${CMAKE_SOURCE_DIR}/release/datafiles/colormanagement @@ -442,13 +477,14 @@ if(WITH_OPENCOLORIO) ) endif() -# helpful tip when using make +# Helpful tip when using make. if("${CMAKE_GENERATOR}" MATCHES ".*Makefiles.*") - # message after building. + # Message to display after building. add_custom_command( TARGET blender POST_BUILD MAIN_DEPENDENCY blender - COMMAND ${CMAKE_COMMAND} -E - echo 'now run: \"make install\" to copy runtime files and scripts to ${TARGETDIR_VER}' + COMMAND + ${CMAKE_COMMAND} -E + echo 'now run: \"make install\" to copy runtime files and scripts to ${TARGETDIR_VER}' ) endif() @@ -462,24 +498,33 @@ if(UNIX AND NOT APPLE) if(WITH_DOC_MANPAGE) add_custom_target( blender_man_page ALL - COMMAND ${CMAKE_SOURCE_DIR}/doc/manpage/blender.1.py - --blender ${EXECUTABLE_OUTPUT_PATH}/blender - --output ${CMAKE_CURRENT_BINARY_DIR}/blender.1) + COMMAND + ${CMAKE_SOURCE_DIR}/doc/manpage/blender.1.py + --blender ${EXECUTABLE_OUTPUT_PATH}/blender + --output ${CMAKE_CURRENT_BINARY_DIR}/blender.1 + ) add_dependencies(blender_man_page blender) endif() endif() - # there are a few differences between portable and system install + if(PLATFORM_BUNDLED_LIBRARIES AND TARGETDIR_LIB) + install( + FILES ${PLATFORM_BUNDLED_LIBRARIES} + DESTINATION ${TARGETDIR_LIB} + ) + endif() + + # There are a few differences between portable and system install. if(WITH_PYTHON_MODULE) if(WITH_INSTALL_PORTABLE) install( TARGETS blender - DESTINATION "." + DESTINATION ${TARGETDIR_BPY} ) else() install( TARGETS blender - LIBRARY DESTINATION ${PYTHON_SITE_PACKAGES} + LIBRARY DESTINATION ${TARGETDIR_BPY} ) endif() # none of the other files are needed currently @@ -518,9 +563,23 @@ if(UNIX AND NOT APPLE) ${CMAKE_SOURCE_DIR}/release/bin/blender-softwaregl DESTINATION "." ) - endif() - set(BLENDER_TEXT_FILES_DESTINATION ".") + # Remove from old location, so existing builds don't start with software + # OpenGL now that the lib/ folder is used for other libraries. + install( + CODE + "file(REMOVE ${CMAKE_BINARY_DIR}/bin/lib/libGL.so)\n + file(REMOVE ${CMAKE_BINARY_DIR}/bin/lib/libGL.so.1)\n + file(REMOVE ${CMAKE_BINARY_DIR}/bin/lib/libGL.so.1.5.0)\n + file(REMOVE ${CMAKE_BINARY_DIR}/bin/lib/libGLU.so)\n + file(REMOVE ${CMAKE_BINARY_DIR}/bin/lib/libGLU.so.1)\n + file(REMOVE ${CMAKE_BINARY_DIR}/bin/lib/libGLU.so.1.3.1)\n + file(REMOVE ${CMAKE_BINARY_DIR}/bin/lib/libglapi.so)\n + file(REMOVE ${CMAKE_BINARY_DIR}/bin/lib/libglapi.so.0)\n + file(REMOVE ${CMAKE_BINARY_DIR}/bin/lib/libglapi.so.0.0.0)\n + " + ) + endif() else() # main blender binary install( @@ -528,14 +587,14 @@ if(UNIX AND NOT APPLE) DESTINATION bin ) if(WITH_DOC_MANPAGE) - # manpage only with 'blender' binary + # Manual page (only with `blender` binary). install( FILES ${CMAKE_CURRENT_BINARY_DIR}/blender.1 DESTINATION share/man/man1 ) endif() - # misc files + # Misc files. install( FILES ${CMAKE_SOURCE_DIR}/release/freedesktop/blender.desktop DESTINATION share/applications @@ -554,7 +613,6 @@ if(UNIX AND NOT APPLE) DESTINATION bin ) endif() - set(BLENDER_TEXT_FILES_DESTINATION share/doc/blender) endif() if(WITH_PYTHON) @@ -565,11 +623,9 @@ if(UNIX AND NOT APPLE) DESTINATION ${TARGETDIR_VER}/python/bin ) - # on some platforms (like openSUSE) Python is linked - # to be used from lib64 folder. - # determine this from Python's libraries path - # - # ugh, its possible 'lib64' is just a symlink to 'lib' which causes incorrect use of 'lib64' + # On some platforms (like openSUSE) Python is linked to be used from `lib64` directory. + # determine this from Python's libraries path. + # Ugh, its possible `lib64` is just a symlink to 'lib' which causes incorrect use of `lib64`. get_filename_component(_pypath_real ${PYTHON_LIBPATH} REALPATH) if(${_pypath_real} MATCHES "lib64$") set(_target_LIB "lib64") @@ -578,7 +634,7 @@ if(UNIX AND NOT APPLE) endif() unset(_pypath_real) - # Copy the systems python into the install directory + # Copy the systems python into the install directory: # install(CODE "message(\"copying a subset of the systems python...\")") install( DIRECTORY ${PYTHON_LIBPATH}/python${PYTHON_VERSION} @@ -596,8 +652,8 @@ if(UNIX AND NOT APPLE) PATTERN "wininst*.exe" EXCLUDE # from distutils, avoid malware false positive ) - # Needed for distutils/pip - # get the last part of the include dir, will be 'python{version}{abiflag}', + # Needed for `distutils/pip`. + # Get the last part of the include dir, will be `python{version}{abiflag}`. get_filename_component(_py_inc_suffix ${PYTHON_INCLUDE_DIR} NAME) install( FILES ${PYTHON_INCLUDE_DIR}/pyconfig.h @@ -607,7 +663,7 @@ if(UNIX AND NOT APPLE) if(WITH_PYTHON_INSTALL_NUMPY) # Install to the same directory as the source, so debian-like - # distros are happy with their policy. + # distributions are happy with their policy. set(_suffix "site-packages") if(${PYTHON_NUMPY_PATH} MATCHES "dist-packages") set(_suffix "dist-packages") @@ -644,7 +700,7 @@ if(UNIX AND NOT APPLE) if(WITH_PYTHON_INSTALL_ZSTANDARD) # Install to the same directory as the source, so debian-like - # distros are happy with their policy. + # distributions are happy with their policy. set(_suffix "site-packages") if(${PYTHON_ZSTANDARD_PATH} MATCHES "dist-packages") set(_suffix "dist-packages") @@ -660,7 +716,7 @@ if(UNIX AND NOT APPLE) unset(_suffix) endif() - # Copy requests, we need to generalize site-packages + # Copy requests, we need to generalize site-packages. if(WITH_PYTHON_INSTALL_REQUESTS) set(_suffix "site-packages") if(${PYTHON_REQUESTS_PATH} MATCHES "dist-packages") @@ -676,9 +732,8 @@ if(UNIX AND NOT APPLE) ) # On some platforms requests does have extra dependencies. # - # Either 'chardet' or 'charset_normalizer" is used, depending on the - # version of Python. The code below silently skips the one that's not - # available, so we can just list both here. + # Either `chardet` or `charset_normalizer` is used, depending on the version of Python. + # The code below silently skips the one that's not available, so we can list both here. set(_requests_deps "certifi" "chardet" "charset_normalizer" "idna" "urllib3") foreach(_requests_dep ${_requests_deps}) if(EXISTS ${PYTHON_REQUESTS_PATH}/${_requests_dep}) @@ -714,38 +769,45 @@ if(UNIX AND NOT APPLE) ) endif() elseif(WIN32) - - set(BLENDER_TEXT_FILES_DESTINATION ".") + install( + FILES ${LIBDIR}/epoxy/bin/epoxy-0.dll + DESTINATION ${TARGETDIR_LIB} + ) if(WITH_OPENMP AND MSVC_CLANG) install( - FILES ${CLANG_OPENMP_DLL} - DESTINATION "." + FILES ${CLANG_OPENMP_DLL} + DESTINATION ${TARGETDIR_LIB} ) endif() if(WITH_FFTW3) install( - FILES ${LIBDIR}/fftw3/lib/libfftw3-3.dll - DESTINATION "." + FILES ${LIBDIR}/fftw3/lib/libfftw3-3.dll + DESTINATION ${TARGETDIR_LIB} ) endif() if(MSVC_ASAN) - # The asan dll's can be found in the same folder as the compiler, this is the easiest way to find these. + # The ASAN DLL's can be found in the same folder as the compiler, + # this is the easiest way to find these. string(REPLACE "cl.exe" "clang_rt.asan_dynamic-x86_64.dll" ASAN_DLL ${CMAKE_C_COMPILER}) string(REPLACE "cl.exe" "clang_rt.asan_dbg_dynamic-x86_64.dll" ASAN_DEBUG_DLL ${CMAKE_C_COMPILER}) if(NOT EXISTS "${ASAN_DLL}") - message(FATAL_ERROR "Asan is enabled, but the ASAN runtime is not detected, this is an optional component during the MSVC install, please install it") + message( + FATAL_ERROR + "ASAN is enabled, but the ASAN runtime is not detected, " + "this is an optional component during the MSVC install, please install it" + ) endif() install( - FILES ${ASAN_DLL} - DESTINATION "." - CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel + FILES ${ASAN_DLL} + DESTINATION ${TARGETDIR_LIB} + CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel ) install( - FILES ${ASAN_DEBUG_DLL} - DESTINATION "." - CONFIGURATIONS Debug + FILES ${ASAN_DEBUG_DLL} + DESTINATION ${TARGETDIR_LIB} + CONFIGURATIONS Debug ) unset(ASAN_DLL) unset(ASAN_DEBUG_DLL) @@ -753,66 +815,75 @@ elseif(WIN32) if(WITH_GMP) install( - FILES ${LIBDIR}/gmp/lib/libgmp-10.dll - DESTINATION "." + FILES ${LIBDIR}/gmp/lib/libgmp-10.dll + DESTINATION ${TARGETDIR_LIB} ) install( - FILES ${LIBDIR}/gmp/lib/libgmpxx.dll - DESTINATION "." - CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel + FILES ${LIBDIR}/gmp/lib/libgmpxx.dll + DESTINATION ${TARGETDIR_LIB} + CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel ) install( - FILES ${LIBDIR}/gmp/lib/libgmpxx_d.dll - DESTINATION "." - CONFIGURATIONS Debug + FILES ${LIBDIR}/gmp/lib/libgmpxx_d.dll + DESTINATION ${TARGETDIR_LIB} + CONFIGURATIONS Debug ) endif() if(WITH_WINDOWS_PDB) if(WITH_WINDOWS_STRIPPED_PDB) - # Icky hack for older cmake from https://stackoverflow.com/a/21198501 - # $<CONFIG> will work in newer cmake but the version currently (3.12) - # on the buildbot does not support this endavour. - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}/blender_public.pdb DESTINATION . RENAME blender.pdb) + # Icky hack for older CMAKE from https://stackoverflow.com/a/21198501 + # `$<CONFIG>` will work in newer CMAKE but the version currently (3.12) + # on the build-bot does not support this endeavor. + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}/blender_public.pdb + DESTINATION . + RENAME blender.pdb + ) else() install(FILES $<TARGET_PDB_FILE:blender> DESTINATION . RENAME blender.pdb) endif() endif() if(WITH_OPENVDB) - install( - FILES ${LIBDIR}/openvdb/bin/openvdb.dll - DESTINATION "." - CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel - ) - install( - FILES ${LIBDIR}/openvdb/bin/openvdb_d.dll - DESTINATION "." - CONFIGURATIONS Debug - ) + install( + FILES ${LIBDIR}/openvdb/bin/openvdb.dll + DESTINATION ${TARGETDIR_LIB} + CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel + ) + install( + FILES ${LIBDIR}/openvdb/bin/openvdb_d.dll + DESTINATION ${TARGETDIR_LIB} + CONFIGURATIONS Debug + ) endif() if(WITH_PYTHON) string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION}) - if(NOT CMAKE_COMPILER_IS_GNUCC) - install( - FILES ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python${_PYTHON_VERSION_NO_DOTS}.dll - ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python3.dll - DESTINATION "." - CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel - ) + if(NOT WITH_PYTHON_MODULE) + if(NOT CMAKE_COMPILER_IS_GNUCC) + install( + FILES + ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python${_PYTHON_VERSION_NO_DOTS}.dll + ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python3.dll + DESTINATION ${TARGETDIR_LIB} + CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel + ) - install( - FILES ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python${_PYTHON_VERSION_NO_DOTS}_d.dll - ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python3_d.dll - DESTINATION "." - CONFIGURATIONS Debug - ) + install( + FILES + ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python${_PYTHON_VERSION_NO_DOTS}_d.dll + ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python3_d.dll + DESTINATION ${TARGETDIR_LIB} + CONFIGURATIONS Debug + ) + endif() endif() if(WITH_PYTHON_INSTALL) - # note, as far as python is concerned 'RelWithDebInfo' is not debug since its without debug flags. + # NOTE: as far as python is concerned `RelWithDebInfo` + # is not debug since its without debug flags. install(DIRECTORY DESTINATION ${TARGETDIR_VER}/python) install(DIRECTORY DESTINATION ${TARGETDIR_VER}/python/lib) @@ -822,7 +893,7 @@ elseif(WIN32) DESTINATION ${BLENDER_VERSION}/python/ CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel PATTERN ".svn" EXCLUDE - PATTERN "*_d.*" EXCLUDE # * debug libraries * + PATTERN "*_d.*" EXCLUDE # * debug libraries * PATTERN "__pycache__" EXCLUDE # * any cache * PATTERN "*.pyc" EXCLUDE # * any cache * PATTERN "*.pyo" EXCLUDE # * any cache * @@ -853,28 +924,32 @@ elseif(WIN32) ) install( - FILES ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python${_PYTHON_VERSION_NO_DOTS}.dll - ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python.exe + FILES + ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python${_PYTHON_VERSION_NO_DOTS}.dll + ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python.exe DESTINATION ${BLENDER_VERSION}/python/bin CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel ) install( - FILES ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python${_PYTHON_VERSION_NO_DOTS}_d.dll - ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python_d.exe + FILES + ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python${_PYTHON_VERSION_NO_DOTS}_d.dll + ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python_d.exe DESTINATION ${BLENDER_VERSION}/python/bin CONFIGURATIONS Debug ) if(WINDOWS_PYTHON_DEBUG) install( - FILES ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/libs/python${_PYTHON_VERSION_NO_DOTS}.pdb - DESTINATION "." + FILES + ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/libs/python${_PYTHON_VERSION_NO_DOTS}.pdb + DESTINATION ${TARGETDIR_LIB} CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel ) install( - FILES ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/libs/python${_PYTHON_VERSION_NO_DOTS}_d.pdb - DESTINATION "." + FILES + ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/libs/python${_PYTHON_VERSION_NO_DOTS}_d.pdb + DESTINATION ${TARGETDIR_LIB} CONFIGURATIONS Debug ) endif() @@ -883,22 +958,9 @@ elseif(WIN32) unset(_PYTHON_VERSION_NO_DOTS) endif() - # EGL Runtime Components - if(WITH_GL_EGL) - if(WIN32) - install(FILES "${OPENGLES_DLL}" DESTINATION ".") - install(FILES "${OPENGLES_EGL_DLL}" DESTINATION ".") - - if(WITH_GL_ANGLE) - install(FILES "${D3DCOMPILER_DLL}" DESTINATION ".") - endif() - endif() - endif() - if(WITH_CODEC_FFMPEG) - # Filenames change slightly between ffmpeg versions - # check both 5.0 and fallback to 4.4 to ease the transition - # between versions. + # Filenames change slightly between FFMPEG versions check both 5.0 and fallback to 4.4 + # to ease the transition between versions. if(EXISTS "${LIBDIR}/ffmpeg/lib/avcodec-59.dll") install( FILES @@ -908,7 +970,7 @@ elseif(WIN32) ${LIBDIR}/ffmpeg/lib/avutil-57.dll ${LIBDIR}/ffmpeg/lib/swscale-6.dll ${LIBDIR}/ffmpeg/lib/swresample-4.dll - DESTINATION "." + DESTINATION ${TARGETDIR_LIB} ) else() install( @@ -919,7 +981,7 @@ elseif(WIN32) ${LIBDIR}/ffmpeg/lib/avutil-56.dll ${LIBDIR}/ffmpeg/lib/swscale-5.dll ${LIBDIR}/ffmpeg/lib/swresample-3.dll - DESTINATION "." + DESTINATION ${TARGETDIR_LIB} ) endif() endif() @@ -927,13 +989,13 @@ elseif(WIN32) install( FILES ${LIBDIR}/tbb/bin/tbb.dll - DESTINATION "." + DESTINATION ${TARGETDIR_LIB} CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel ) install( FILES ${LIBDIR}/tbb/bin/tbb_debug.dll - DESTINATION "." + DESTINATION ${TARGETDIR_LIB} CONFIGURATIONS Debug ) endif() @@ -942,14 +1004,14 @@ elseif(WIN32) FILES ${LIBDIR}/tbb/bin/tbbmalloc.dll ${LIBDIR}/tbb/bin/tbbmalloc_proxy.dll - DESTINATION "." + DESTINATION ${TARGETDIR_LIB} CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel ) install( FILES ${LIBDIR}/tbb/bin/tbbmalloc_debug.dll ${LIBDIR}/tbb/bin/tbbmalloc_proxy_debug.dll - DESTINATION "." + DESTINATION ${TARGETDIR_LIB} CONFIGURATIONS Debug ) list(APPEND LIB ${TBB_MALLOC_LIBRARIES}) @@ -958,7 +1020,7 @@ elseif(WIN32) if(WITH_CODEC_SNDFILE) install( FILES ${LIBDIR}/sndfile/lib/libsndfile-1.dll - DESTINATION "." + DESTINATION ${TARGETDIR_LIB} ) endif() @@ -966,14 +1028,14 @@ elseif(WIN32) install( FILES ${LIBDIR}/openal/lib/OpenAL32.dll - DESTINATION "." + DESTINATION ${TARGETDIR_LIB} ) endif() if(WITH_SDL) install( FILES ${LIBDIR}/sdl/lib/SDL2.dll - DESTINATION "." + DESTINATION ${TARGETDIR_LIB} ) endif() @@ -983,20 +1045,23 @@ elseif(WIN32) ${LIBDIR}/audaspace/lib/audaspace.dll ${LIBDIR}/audaspace/lib/audaspace-c.dll ${LIBDIR}/audaspace/lib/audaspace-py.dll - DESTINATION "." + DESTINATION ${TARGETDIR_LIB} ) endif() - install( - FILES - ${CMAKE_SOURCE_DIR}/release/windows/batch/blender_debug_gpu.cmd - ${CMAKE_SOURCE_DIR}/release/windows/batch/blender_debug_gpu_glitchworkaround.cmd - ${CMAKE_SOURCE_DIR}/release/windows/batch/blender_debug_log.cmd - ${CMAKE_SOURCE_DIR}/release/windows/batch/blender_factory_startup.cmd - ${CMAKE_SOURCE_DIR}/release/windows/batch/blender_oculus.cmd - ${CMAKE_SOURCE_DIR}/release/windows/batch/oculus.json - DESTINATION "." - ) + + if(NOT WITH_PYTHON_MODULE) + install( + FILES + ${CMAKE_SOURCE_DIR}/release/windows/batch/blender_debug_gpu.cmd + ${CMAKE_SOURCE_DIR}/release/windows/batch/blender_debug_gpu_glitchworkaround.cmd + ${CMAKE_SOURCE_DIR}/release/windows/batch/blender_debug_log.cmd + ${CMAKE_SOURCE_DIR}/release/windows/batch/blender_factory_startup.cmd + ${CMAKE_SOURCE_DIR}/release/windows/batch/blender_oculus.cmd + ${CMAKE_SOURCE_DIR}/release/windows/batch/oculus.json + DESTINATION ${TARGETDIR_LIB} + ) + endif() if(WITH_BLENDER_THUMBNAILER) install( @@ -1011,14 +1076,21 @@ elseif(WIN32) DESTINATION ${TARGETDIR_VER}/python/lib/site-packages ) endif() + + if(PLATFORM_BUNDLED_LIBRARIES) + install( + FILES ${PLATFORM_BUNDLED_LIBRARIES} + DESTINATION ${TARGETDIR_LIB} + ) + endif() elseif(APPLE) if(NOT WITH_PYTHON_MODULE) - # Uppercase name for app bundle + # Uppercase name for app bundle. set_target_properties(blender PROPERTIES OUTPUT_NAME Blender) endif() - # handy install macro to exclude files, we use \$ escape for the "to" - # argument when calling so ${BUILD_TYPE} does not get expanded + # Handy install macro to exclude files, we use \$ escape for the "to" + # argument when calling so `${BUILD_TYPE}` does not get expanded. macro(install_dir from to) install( DIRECTORY ${from} @@ -1046,29 +1118,35 @@ elseif(APPLE) set(OSX_APP_SOURCEDIR ${CMAKE_SOURCE_DIR}/release/darwin/Blender.app) - # setup Info.plist - execute_process(COMMAND date "+%Y-%m-%d" - OUTPUT_VARIABLE BLENDER_DATE - OUTPUT_STRIP_TRAILING_WHITESPACE) + # Setup `Info.plist`. + execute_process( + COMMAND date "+%Y-%m-%d" + OUTPUT_VARIABLE BLENDER_DATE + OUTPUT_STRIP_TRAILING_WHITESPACE + ) set_target_properties(blender PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${OSX_APP_SOURCEDIR}/Contents/Info.plist MACOSX_BUNDLE_SHORT_VERSION_STRING "${BLENDER_VERSION}.${BLENDER_VERSION_PATCH}" - MACOSX_BUNDLE_LONG_VERSION_STRING "${BLENDER_VERSION}.${BLENDER_VERSION_PATCH} ${BLENDER_DATE}") + MACOSX_BUNDLE_LONG_VERSION_STRING "${BLENDER_VERSION}.${BLENDER_VERSION_PATCH} ${BLENDER_DATE}" + ) - # Gather the date in finder-style - execute_process(COMMAND date "+%m/%d/%Y/%H:%M" - OUTPUT_VARIABLE SETFILE_DATE - OUTPUT_STRIP_TRAILING_WHITESPACE) + # Gather the date in finder-style. + execute_process( + COMMAND date "+%m/%d/%Y/%H:%M" + OUTPUT_VARIABLE SETFILE_DATE + OUTPUT_STRIP_TRAILING_WHITESPACE + ) - # Give the bundle actual creation/modification date + # Give the bundle actual creation/modification date. # - # Note that the directory might not yet exist, which happens when CMake is first run. + # Note that the directory might not yet exist, which happens when CMAKE is first run. if(NOT EXISTS ${EXECUTABLE_OUTPUT_PATH}/Blender.app) file(MAKE_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}/Blender.app) endif() - execute_process(COMMAND SetFile -d ${SETFILE_DATE} -m ${SETFILE_DATE} - ${EXECUTABLE_OUTPUT_PATH}/Blender.app) + execute_process( + COMMAND SetFile -d ${SETFILE_DATE} -m ${SETFILE_DATE} ${EXECUTABLE_OUTPUT_PATH}/Blender.app + ) install( TARGETS blender @@ -1086,41 +1164,35 @@ elseif(APPLE) ) if(WITH_BLENDER_THUMBNAILER) - install( - TARGETS blender-thumbnailer - DESTINATION Blender.app/Contents/MacOS/ - ) - endif() - - if(WITH_OPENMP AND OPENMP_CUSTOM) install( - FILES "${OpenMP_LIBRARY}" - DESTINATION "${MAC_BLENDER_TARGET_DYLIBS_DIR}" + TARGETS blender-thumbnailer + DESTINATION Blender.app/Contents/MacOS/ ) endif() - if(WITH_COMPILER_ASAN) + if(PLATFORM_BUNDLED_LIBRARIES AND TARGETDIR_LIB) install( - FILES "${COMPILER_ASAN_LIBRARY}" - DESTINATION "${MAC_BLENDER_TARGET_DYLIBS_DIR}" + FILES ${PLATFORM_BUNDLED_LIBRARIES} + DESTINATION ${TARGETDIR_LIB} ) endif() - # python + # Python. if(WITH_PYTHON AND NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK) - # Copy the python libs into the install directory + # Copy the python libraries into the install directory. install_dir( - ${PYTHON_LIBPATH} + ${PYTHON_LIBPATH}/python${PYTHON_VERSION} ${TARGETDIR_VER}/python/lib ) + # Install Python executable. install( PROGRAMS ${PYTHON_EXECUTABLE} DESTINATION ${TARGETDIR_VER}/python/bin ) - # Needed for distutils/pip - # get the last part of the include dir, will be 'python{version}{abiflag}', + # Needed for `distutils/pip`. + # Get the last part of the include dir, will be `python{version}{abiflag}`. get_filename_component(_py_inc_suffix ${PYTHON_INCLUDE_DIR} NAME) install( FILES ${PYTHON_INCLUDE_DIR}/pyconfig.h @@ -1129,13 +1201,11 @@ elseif(APPLE) unset(_py_inc_suffix) endif() - if(WITH_PYTHON_MODULE) - if(INSTALL_BPY_TO_SITE_PACKAGES) - install( - TARGETS blender - LIBRARY DESTINATION ${BPY_INSTALL_DIR} - ) - endif() + if(WITH_PYTHON_MODULE AND TARGETDIR_BPY) + install( + TARGETS blender + LIBRARY DESTINATION ${TARGETDIR_BPY} + ) endif() if(WITH_DRACO) @@ -1149,11 +1219,12 @@ endif() # ----------------------------------------------------------------------------- # Generic Install, for all targets -if(DEFINED BLENDER_TEXT_FILES_DESTINATION) +if(DEFINED TARGETDIR_TEXT) - configure_file(${CMAKE_SOURCE_DIR}/release/text/readme.html - ${CMAKE_BINARY_DIR}/release/text/readme.html - @ONLY + configure_file( + ${CMAKE_SOURCE_DIR}/release/text/readme.html + ${CMAKE_BINARY_DIR}/release/text/readme.html + @ONLY ) list(APPEND BLENDER_TEXT_FILES ${CMAKE_BINARY_DIR}/release/text/readme.html @@ -1161,21 +1232,20 @@ if(DEFINED BLENDER_TEXT_FILES_DESTINATION) install( FILES ${BLENDER_TEXT_FILES} - DESTINATION "${BLENDER_TEXT_FILES_DESTINATION}" + DESTINATION "${TARGETDIR_TEXT}" ) install( - DIRECTORY - ${CMAKE_SOURCE_DIR}/release/license - DESTINATION "${BLENDER_TEXT_FILES_DESTINATION}" + DIRECTORY ${CMAKE_SOURCE_DIR}/release/license + DESTINATION "${TARGETDIR_TEXT}" ) endif() -# install more files specified elsewhere +# Install more files specified elsewhere. delayed_do_install(${TARGETDIR_VER}) unset(BLENDER_TEXT_FILES) -unset(BLENDER_TEXT_FILES_DESTINATION) +unset(TARGETDIR_TEXT) # ----------------------------------------------------------------------------- @@ -1198,16 +1268,18 @@ unset(_icon_names) unset(_icon_files) unset(_f) + # ----------------------------------------------------------------------------- # Studio Lights + install( - DIRECTORY - ${CMAKE_SOURCE_DIR}/release/datafiles/studiolights + DIRECTORY ${CMAKE_SOURCE_DIR}/release/datafiles/studiolights DESTINATION ${TARGETDIR_VER}/datafiles ) + # ----------------------------------------------------------------------------- -# Setup link libs +# Setup link libraries add_dependencies(blender makesdna) target_link_libraries(blender ${LIB}) @@ -1216,43 +1288,50 @@ unset(LIB) setup_platform_linker_flags(blender) setup_platform_linker_libs(blender) -if(APPLE) - set_target_properties(blender PROPERTIES LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/osx_locals.map) -elseif(UNIX) - set_target_properties(blender PROPERTIES LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/blender.map) +if(DEFINED PLATFORM_SYMBOLS_MAP) + set_target_properties(blender PROPERTIES LINK_DEPENDS ${PLATFORM_SYMBOLS_MAP}) endif() +blender_target_include_dirs(blender ${INC}) + # ----------------------------------------------------------------------------- # USD registry. -# USD requires a set of JSON files that define the standard schemas. These -# files are required at runtime. + +# USD requires a set of JSON files that define the standard schemas. +# These files are required at runtime. if(WITH_USD) add_definitions(-DWITH_USD) - install(DIRECTORY - ${USD_LIBRARY_DIR}/usd + install( + DIRECTORY ${USD_LIBRARY_DIR}/usd DESTINATION "${TARGETDIR_VER}/datafiles" ) endif() -# vcpkg substitutes our libs with theirs, which will cause issues when you -# you run these builds on other systems due to missing dlls. So we opt out -# the use of vcpkg +# `vcpkg` substitutes our libraries with theirs, which will cause issues when you you run +# these builds on other systems due to missing DLL's. So we opt out the use of `vcpkg`. if(WIN32) set_target_properties(blender PROPERTIES VS_GLOBAL_VcpkgEnabled "false") set_target_properties(blender PROPERTIES PDB_NAME "blender_private" - PDB_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>") - if(WITH_WINDOWS_PDB AND WITH_WINDOWS_STRIPPED_PDB) - # This is slightly messy, but single target generators like ninja will not have the - # CMAKE_CFG_INTDIR variable and multitarget generators like msbuild will not have - # CMAKE_BUILD_TYPE. This can be simplified by target_link_options and the $<CONFIG> - # generator expression in newer cmake (2.13+) but until that time this fill have suffice. - if(CMAKE_BUILD_TYPE) - set_property(TARGET blender APPEND_STRING PROPERTY LINK_FLAGS " /PDBSTRIPPED:${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/blender_public.pdb") - else() - set_property(TARGET blender APPEND_STRING PROPERTY LINK_FLAGS " /PDBSTRIPPED:${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/blender_public.pdb") - endif() + PDB_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>" + ) + if(WITH_WINDOWS_PDB AND WITH_WINDOWS_STRIPPED_PDB) + # This is slightly messy, but single target generators like ninja will not have the + # `CMAKE_CFG_INTDIR` variable and multi-target generators like `msbuild` will not have + # `CMAKE_BUILD_TYPE`. This can be simplified by `target_link_options` and the `$<CONFIG>` + # generator expression in newer CMAKE (2.13+) but until that time this fill have suffice. + if(CMAKE_BUILD_TYPE) + set_property( + TARGET blender APPEND_STRING PROPERTY LINK_FLAGS + " /PDBSTRIPPED:${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/blender_public.pdb" + ) + else() + set_property( + TARGET blender APPEND_STRING PROPERTY LINK_FLAGS + " /PDBSTRIPPED:${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/blender_public.pdb" + ) + endif() endif() endif() |