diff options
Diffstat (limited to 'build_files/cmake')
-rw-r--r-- | build_files/cmake/Modules/FindGLEW.cmake | 2 | ||||
-rw-r--r-- | build_files/cmake/Modules/FindLLVM.cmake | 84 | ||||
-rw-r--r-- | build_files/cmake/Modules/FindSndFile.cmake | 14 | ||||
-rw-r--r-- | build_files/cmake/Modules/GTestTesting.cmake | 82 | ||||
-rw-r--r-- | build_files/cmake/RpmBuild.cmake | 22 | ||||
-rw-r--r-- | build_files/cmake/buildinfo.cmake | 292 | ||||
-rw-r--r-- | build_files/cmake/config/blender_full.cmake | 10 | ||||
-rw-r--r-- | build_files/cmake/config/blender_release.cmake | 10 | ||||
-rw-r--r-- | build_files/cmake/config/bpy_module.cmake | 4 | ||||
-rw-r--r-- | build_files/cmake/macros.cmake | 1956 | ||||
-rw-r--r-- | build_files/cmake/packaging.cmake | 122 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_apple.cmake | 560 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_apple_xcode.cmake | 110 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_unix.cmake | 630 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_win32.cmake | 864 |
15 files changed, 2381 insertions, 2381 deletions
diff --git a/build_files/cmake/Modules/FindGLEW.cmake b/build_files/cmake/Modules/FindGLEW.cmake index b36a3272e3d..593b1693fd0 100644 --- a/build_files/cmake/Modules/FindGLEW.cmake +++ b/build_files/cmake/Modules/FindGLEW.cmake @@ -23,7 +23,7 @@ # If GLEW_ROOT_DIR was defined in the environment, use it. IF(NOT GLEW_ROOT_DIR AND NOT $ENV{GLEW_ROOT_DIR} STREQUAL "") - SET(GLEW_ROOT_DIR $ENV{GLEW_ROOT_DIR}) + SET(GLEW_ROOT_DIR $ENV{GLEW_ROOT_DIR}) ENDIF() SET(_glew_SEARCH_DIRS diff --git a/build_files/cmake/Modules/FindLLVM.cmake b/build_files/cmake/Modules/FindLLVM.cmake index a40a71cb58e..141a91c0508 100644 --- a/build_files/cmake/Modules/FindLLVM.cmake +++ b/build_files/cmake/Modules/FindLLVM.cmake @@ -22,65 +22,65 @@ #============================================================================= if(LLVM_ROOT_DIR) - if(DEFINED LLVM_VERSION) - find_program(LLVM_CONFIG llvm-config-${LLVM_VERSION} HINTS ${LLVM_ROOT_DIR}/bin NO_CMAKE_PATH) - endif() - if(NOT LLVM_CONFIG) - find_program(LLVM_CONFIG llvm-config HINTS ${LLVM_ROOT_DIR}/bin NO_CMAKE_PATH) - endif() + if(DEFINED LLVM_VERSION) + find_program(LLVM_CONFIG llvm-config-${LLVM_VERSION} HINTS ${LLVM_ROOT_DIR}/bin NO_CMAKE_PATH) + endif() + if(NOT LLVM_CONFIG) + find_program(LLVM_CONFIG llvm-config HINTS ${LLVM_ROOT_DIR}/bin NO_CMAKE_PATH) + endif() else() - if(DEFINED LLVM_VERSION) + if(DEFINED LLVM_VERSION) message(running llvm-config-${LLVM_VERSION}) - find_program(LLVM_CONFIG llvm-config-${LLVM_VERSION}) - endif() - if(NOT LLVM_CONFIG) - find_program(LLVM_CONFIG llvm-config) - endif() + find_program(LLVM_CONFIG llvm-config-${LLVM_VERSION}) + endif() + if(NOT LLVM_CONFIG) + find_program(LLVM_CONFIG llvm-config) + endif() endif() if(NOT DEFINED LLVM_VERSION) - execute_process(COMMAND ${LLVM_CONFIG} --version - OUTPUT_VARIABLE LLVM_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE) - set(LLVM_VERSION ${LLVM_VERSION} CACHE STRING "Version of LLVM to use") + execute_process(COMMAND ${LLVM_CONFIG} --version + OUTPUT_VARIABLE LLVM_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE) + set(LLVM_VERSION ${LLVM_VERSION} CACHE STRING "Version of LLVM to use") endif() if(NOT LLVM_ROOT_DIR) - execute_process(COMMAND ${LLVM_CONFIG} --prefix - OUTPUT_VARIABLE LLVM_ROOT_DIR - OUTPUT_STRIP_TRAILING_WHITESPACE) - set(LLVM_ROOT_DIR ${LLVM_ROOT_DIR} CACHE PATH "Path to the LLVM installation") + execute_process(COMMAND ${LLVM_CONFIG} --prefix + OUTPUT_VARIABLE LLVM_ROOT_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE) + set(LLVM_ROOT_DIR ${LLVM_ROOT_DIR} CACHE PATH "Path to the LLVM installation") endif() if(NOT LLVM_LIBPATH) - execute_process(COMMAND ${LLVM_CONFIG} --libdir - OUTPUT_VARIABLE LLVM_LIBPATH - OUTPUT_STRIP_TRAILING_WHITESPACE) - set(LLVM_LIBPATH ${LLVM_LIBPATH} CACHE PATH "Path to the LLVM library path") - mark_as_advanced(LLVM_LIBPATH) + execute_process(COMMAND ${LLVM_CONFIG} --libdir + OUTPUT_VARIABLE LLVM_LIBPATH + OUTPUT_STRIP_TRAILING_WHITESPACE) + set(LLVM_LIBPATH ${LLVM_LIBPATH} CACHE PATH "Path to the LLVM library path") + mark_as_advanced(LLVM_LIBPATH) endif() if(LLVM_STATIC) - find_library(LLVM_LIBRARY - NAMES LLVMAnalysis # first of a whole bunch of libs to get - PATHS ${LLVM_LIBPATH}) + find_library(LLVM_LIBRARY + NAMES LLVMAnalysis # first of a whole bunch of libs to get + PATHS ${LLVM_LIBPATH}) else() - find_library(LLVM_LIBRARY - NAMES - LLVM-${LLVM_VERSION} - LLVMAnalysis # check for the static library as a fall-back - PATHS ${LLVM_LIBPATH}) + find_library(LLVM_LIBRARY + NAMES + LLVM-${LLVM_VERSION} + LLVMAnalysis # check for the static library as a fall-back + PATHS ${LLVM_LIBPATH}) endif() if(LLVM_LIBRARY AND LLVM_ROOT_DIR AND LLVM_LIBPATH) - if(LLVM_STATIC) - # if static LLVM libraries were requested, use llvm-config to generate - # the list of what libraries we need, and substitute that in the right - # way for LLVM_LIBRARY. - execute_process(COMMAND ${LLVM_CONFIG} --libfiles - OUTPUT_VARIABLE LLVM_LIBRARY - OUTPUT_STRIP_TRAILING_WHITESPACE) - string(REPLACE " " ";" LLVM_LIBRARY "${LLVM_LIBRARY}") - endif() + if(LLVM_STATIC) + # if static LLVM libraries were requested, use llvm-config to generate + # the list of what libraries we need, and substitute that in the right + # way for LLVM_LIBRARY. + execute_process(COMMAND ${LLVM_CONFIG} --libfiles + OUTPUT_VARIABLE LLVM_LIBRARY + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REPLACE " " ";" LLVM_LIBRARY "${LLVM_LIBRARY}") + endif() endif() diff --git a/build_files/cmake/Modules/FindSndFile.cmake b/build_files/cmake/Modules/FindSndFile.cmake index ef6fb73598f..eabc08b0645 100644 --- a/build_files/cmake/Modules/FindSndFile.cmake +++ b/build_files/cmake/Modules/FindSndFile.cmake @@ -24,11 +24,11 @@ # If LIBSNDFILE_ROOT_DIR was defined in the environment, use it. IF(NOT LIBSNDFILE_ROOT_DIR AND NOT $ENV{LIBSNDFILE_ROOT_DIR} STREQUAL "") - SET(LIBSNDFILE_ROOT_DIR $ENV{LIBSNDFILE_ROOT_DIR}) + SET(LIBSNDFILE_ROOT_DIR $ENV{LIBSNDFILE_ROOT_DIR}) ENDIF() SET(_sndfile_SEARCH_DIRS - ${LIBSNDFILE_ROOT_DIR} + ${LIBSNDFILE_ROOT_DIR} /usr/local /sw # Fink /opt/local # DarwinPorts @@ -54,14 +54,14 @@ FIND_LIBRARY(LIBSNDFILE_LIBRARY # all listed variables are TRUE INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(SndFile DEFAULT_MSG - LIBSNDFILE_LIBRARY LIBSNDFILE_INCLUDE_DIR) + LIBSNDFILE_LIBRARY LIBSNDFILE_INCLUDE_DIR) IF(LIBSNDFILE_FOUND) - SET(LIBSNDFILE_LIBRARIES ${LIBSNDFILE_LIBRARY}) - SET(LIBSNDFILE_INCLUDE_DIRS ${LIBSNDFILE_INCLUDE_DIR}) + SET(LIBSNDFILE_LIBRARIES ${LIBSNDFILE_LIBRARY}) + SET(LIBSNDFILE_INCLUDE_DIRS ${LIBSNDFILE_INCLUDE_DIR}) ENDIF(LIBSNDFILE_FOUND) MARK_AS_ADVANCED( - LIBSNDFILE_INCLUDE_DIR - LIBSNDFILE_LIBRARY + LIBSNDFILE_INCLUDE_DIR + LIBSNDFILE_LIBRARY ) diff --git a/build_files/cmake/Modules/GTestTesting.cmake b/build_files/cmake/Modules/GTestTesting.cmake index dd80013cb91..eb06e00bf9e 100644 --- a/build_files/cmake/Modules/GTestTesting.cmake +++ b/build_files/cmake/Modules/GTestTesting.cmake @@ -13,55 +13,55 @@ #============================================================================= macro(BLENDER_SRC_GTEST_EX NAME SRC EXTRA_LIBS DO_ADD_TEST) - if(WITH_GTESTS) - get_property(_current_include_directories - DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - PROPERTY INCLUDE_DIRECTORIES) - set(TEST_INC - ${_current_include_directories} - ${CMAKE_SOURCE_DIR}/tests/gtests - ${GLOG_INCLUDE_DIRS} - ${GFLAGS_INCLUDE_DIRS} - ${CMAKE_SOURCE_DIR}/extern/gtest/include - ${CMAKE_SOURCE_DIR}/extern/gmock/include - ) - unset(_current_include_directories) + if(WITH_GTESTS) + get_property(_current_include_directories + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + PROPERTY INCLUDE_DIRECTORIES) + set(TEST_INC + ${_current_include_directories} + ${CMAKE_SOURCE_DIR}/tests/gtests + ${GLOG_INCLUDE_DIRS} + ${GFLAGS_INCLUDE_DIRS} + ${CMAKE_SOURCE_DIR}/extern/gtest/include + ${CMAKE_SOURCE_DIR}/extern/gmock/include + ) + unset(_current_include_directories) - add_executable(${NAME}_test ${SRC}) - target_link_libraries(${NAME}_test - ${EXTRA_LIBS} - ${PLATFORM_LINKLIBS} - bf_testing_main - bf_intern_eigen - bf_intern_guardedalloc - extern_gtest - extern_gmock - # needed for glog - ${PTHREADS_LIBRARIES} - ${GLOG_LIBRARIES} - ${GFLAGS_LIBRARIES}) - if(WITH_OPENMP_STATIC) - target_link_libraries(${NAME}_test ${OpenMP_LIBRARIES}) - endif() - set_target_properties(${NAME}_test PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${TESTS_OUTPUT_DIR}" - RUNTIME_OUTPUT_DIRECTORY_RELEASE "${TESTS_OUTPUT_DIR}" - RUNTIME_OUTPUT_DIRECTORY_DEBUG "${TESTS_OUTPUT_DIR}" - INCLUDE_DIRECTORIES "${TEST_INC}") - if(${DO_ADD_TEST}) - add_test(NAME ${NAME}_test COMMAND ${TESTS_OUTPUT_DIR}/${NAME}_test WORKING_DIRECTORY $<TARGET_FILE_DIR:blender>) - endif() - endif() + add_executable(${NAME}_test ${SRC}) + target_link_libraries(${NAME}_test + ${EXTRA_LIBS} + ${PLATFORM_LINKLIBS} + bf_testing_main + bf_intern_eigen + bf_intern_guardedalloc + extern_gtest + extern_gmock + # needed for glog + ${PTHREADS_LIBRARIES} + ${GLOG_LIBRARIES} + ${GFLAGS_LIBRARIES}) + if(WITH_OPENMP_STATIC) + target_link_libraries(${NAME}_test ${OpenMP_LIBRARIES}) + endif() + set_target_properties(${NAME}_test PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${TESTS_OUTPUT_DIR}" + RUNTIME_OUTPUT_DIRECTORY_RELEASE "${TESTS_OUTPUT_DIR}" + RUNTIME_OUTPUT_DIRECTORY_DEBUG "${TESTS_OUTPUT_DIR}" + INCLUDE_DIRECTORIES "${TEST_INC}") + if(${DO_ADD_TEST}) + add_test(NAME ${NAME}_test COMMAND ${TESTS_OUTPUT_DIR}/${NAME}_test WORKING_DIRECTORY $<TARGET_FILE_DIR:blender>) + endif() + endif() endmacro() macro(BLENDER_SRC_GTEST NAME SRC EXTRA_LIBS) - BLENDER_SRC_GTEST_EX("${NAME}" "${SRC}" "${EXTRA_LIBS}" "TRUE") + BLENDER_SRC_GTEST_EX("${NAME}" "${SRC}" "${EXTRA_LIBS}" "TRUE") endmacro() macro(BLENDER_TEST NAME EXTRA_LIBS) - BLENDER_SRC_GTEST_EX("${NAME}" "${NAME}_test.cc" "${EXTRA_LIBS}" "TRUE") + BLENDER_SRC_GTEST_EX("${NAME}" "${NAME}_test.cc" "${EXTRA_LIBS}" "TRUE") 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}_test.cc" "${EXTRA_LIBS}" "FALSE") endmacro() diff --git a/build_files/cmake/RpmBuild.cmake b/build_files/cmake/RpmBuild.cmake index 4e3047b4c6c..2ece06bcad3 100644 --- a/build_files/cmake/RpmBuild.cmake +++ b/build_files/cmake/RpmBuild.cmake @@ -4,22 +4,22 @@ if(NOT DEFINED RPMBUILD) - find_program(RPMBUILD - NAMES rpmbuild - PATHS "/usr/bin") + find_program(RPMBUILD + NAMES rpmbuild + PATHS "/usr/bin") - mark_as_advanced(RPMBUILD) + mark_as_advanced(RPMBUILD) - if(RPMBUILD) - message(STATUS "RPM Build Found: ${RPMBUILD}") - else() - message(STATUS "RPM Build Not Found (rpmbuild). RPM generation will not be available") - endif() + if(RPMBUILD) + message(STATUS "RPM Build Found: ${RPMBUILD}") + else() + message(STATUS "RPM Build Not Found (rpmbuild). RPM generation will not be available") + endif() endif() if(RPMBUILD) - set(RPMBUILD_FOUND TRUE) + set(RPMBUILD_FOUND TRUE) else() - set(RPMBUILD_FOUND FALSE) + set(RPMBUILD_FOUND FALSE) endif() diff --git a/build_files/cmake/buildinfo.cmake b/build_files/cmake/buildinfo.cmake index 12bbf49b747..ec43534528a 100644 --- a/build_files/cmake/buildinfo.cmake +++ b/build_files/cmake/buildinfo.cmake @@ -14,162 +14,162 @@ set(MY_WC_COMMIT_TIMESTAMP 0) # Guess if this is a git working copy and then look up the revision if(EXISTS ${SOURCE_DIR}/.git) - execute_process(COMMAND git rev-parse --abbrev-ref HEAD - WORKING_DIRECTORY ${SOURCE_DIR} - OUTPUT_VARIABLE MY_WC_BRANCH - OUTPUT_STRIP_TRAILING_WHITESPACE) - - if(MY_WC_BRANCH STREQUAL "HEAD") - # Detached HEAD, check whether commit hash is reachable - # in the master branch - execute_process(COMMAND git rev-parse --short=12 HEAD - WORKING_DIRECTORY ${SOURCE_DIR} - OUTPUT_VARIABLE MY_WC_HASH - OUTPUT_STRIP_TRAILING_WHITESPACE) - - execute_process(COMMAND git branch --list master blender-v* --contains ${MY_WC_HASH} - WORKING_DIRECTORY ${SOURCE_DIR} - OUTPUT_VARIABLE _git_contains_check - OUTPUT_STRIP_TRAILING_WHITESPACE) - - if(NOT _git_contains_check STREQUAL "") - set(MY_WC_BRANCH "master") - else() - execute_process(COMMAND git show-ref --tags -d - WORKING_DIRECTORY ${SOURCE_DIR} - OUTPUT_VARIABLE _git_tag_hashes - OUTPUT_STRIP_TRAILING_WHITESPACE) - - execute_process(COMMAND git rev-parse HEAD - WORKING_DIRECTORY ${SOURCE_DIR} - OUTPUT_VARIABLE _git_head_hash - OUTPUT_STRIP_TRAILING_WHITESPACE) - - if(_git_tag_hashes MATCHES "${_git_head_hash}") - set(MY_WC_BRANCH "master") - else() - execute_process(COMMAND git branch --contains ${MY_WC_HASH} - WORKING_DIRECTORY ${SOURCE_DIR} - OUTPUT_VARIABLE _git_contains_branches - OUTPUT_STRIP_TRAILING_WHITESPACE) - string(REGEX REPLACE "^\\*[ \t]+" "" _git_contains_branches "${_git_contains_branches}") - string(REGEX REPLACE "[\r\n]+" ";" _git_contains_branches "${_git_contains_branches}") - string(REGEX REPLACE ";[ \t]+" ";" _git_contains_branches "${_git_contains_branches}") - foreach(_branch ${_git_contains_branches}) - if(NOT "${_branch}" MATCHES "\\(HEAD.*") - set(MY_WC_BRANCH "${_branch}") - break() - endif() - endforeach() - unset(_branch) - unset(_git_contains_branches) - endif() - - unset(_git_tag_hashes) - unset(_git_head_hashs) - endif() - - - unset(_git_contains_check) - else() - execute_process(COMMAND git log HEAD..@{u} - WORKING_DIRECTORY ${SOURCE_DIR} - OUTPUT_VARIABLE _git_below_check - OUTPUT_STRIP_TRAILING_WHITESPACE - ERROR_QUIET) - if(NOT _git_below_check STREQUAL "") - # If there're commits between HEAD and upstream this means - # that we're reset-ed to older revision. Use it's hash then. - execute_process(COMMAND git rev-parse --short=12 HEAD - WORKING_DIRECTORY ${SOURCE_DIR} - OUTPUT_VARIABLE MY_WC_HASH - OUTPUT_STRIP_TRAILING_WHITESPACE) - else() - execute_process(COMMAND git rev-parse --short=12 @{u} - WORKING_DIRECTORY ${SOURCE_DIR} - OUTPUT_VARIABLE MY_WC_HASH - OUTPUT_STRIP_TRAILING_WHITESPACE - ERROR_QUIET) - - if(MY_WC_HASH STREQUAL "") - # Local branch, not set to upstream. - # Well, let's use HEAD for now - execute_process(COMMAND git rev-parse --short=12 HEAD - WORKING_DIRECTORY ${SOURCE_DIR} - OUTPUT_VARIABLE MY_WC_HASH - OUTPUT_STRIP_TRAILING_WHITESPACE) - endif() - endif() - - if(MY_WC_BRANCH MATCHES "^blender-v") - set(MY_WC_BRANCH "master") - endif() - - unset(_git_below_check) - endif() - - execute_process(COMMAND git log -1 --format=%ct - WORKING_DIRECTORY ${SOURCE_DIR} - OUTPUT_VARIABLE MY_WC_COMMIT_TIMESTAMP - OUTPUT_STRIP_TRAILING_WHITESPACE) - # May fail in rare cases - if(MY_WC_COMMIT_TIMESTAMP STREQUAL "") - set(MY_WC_COMMIT_TIMESTAMP 0) - endif() - - # Update GIT index before getting dirty files - execute_process(COMMAND git update-index -q --refresh - WORKING_DIRECTORY ${SOURCE_DIR} - OUTPUT_STRIP_TRAILING_WHITESPACE) - - execute_process(COMMAND git diff-index --name-only HEAD -- - WORKING_DIRECTORY ${SOURCE_DIR} - OUTPUT_VARIABLE _git_changed_files - OUTPUT_STRIP_TRAILING_WHITESPACE) - - if(NOT _git_changed_files STREQUAL "") - set(MY_WC_BRANCH "${MY_WC_BRANCH} (modified)") - else() - # Unpushed commits are also considered local modifications - execute_process(COMMAND git log @{u}.. - WORKING_DIRECTORY ${SOURCE_DIR} - OUTPUT_VARIABLE _git_unpushed_log - OUTPUT_STRIP_TRAILING_WHITESPACE - ERROR_QUIET) - if(NOT _git_unpushed_log STREQUAL "") - set(MY_WC_BRANCH "${MY_WC_BRANCH} (modified)") - endif() - unset(_git_unpushed_log) - endif() - - unset(_git_changed_files) + execute_process(COMMAND git rev-parse --abbrev-ref HEAD + WORKING_DIRECTORY ${SOURCE_DIR} + OUTPUT_VARIABLE MY_WC_BRANCH + OUTPUT_STRIP_TRAILING_WHITESPACE) + + if(MY_WC_BRANCH STREQUAL "HEAD") + # Detached HEAD, check whether commit hash is reachable + # in the master branch + execute_process(COMMAND git rev-parse --short=12 HEAD + WORKING_DIRECTORY ${SOURCE_DIR} + OUTPUT_VARIABLE MY_WC_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE) + + execute_process(COMMAND git branch --list master blender-v* --contains ${MY_WC_HASH} + WORKING_DIRECTORY ${SOURCE_DIR} + OUTPUT_VARIABLE _git_contains_check + OUTPUT_STRIP_TRAILING_WHITESPACE) + + if(NOT _git_contains_check STREQUAL "") + set(MY_WC_BRANCH "master") + else() + execute_process(COMMAND git show-ref --tags -d + WORKING_DIRECTORY ${SOURCE_DIR} + OUTPUT_VARIABLE _git_tag_hashes + OUTPUT_STRIP_TRAILING_WHITESPACE) + + execute_process(COMMAND git rev-parse HEAD + WORKING_DIRECTORY ${SOURCE_DIR} + OUTPUT_VARIABLE _git_head_hash + OUTPUT_STRIP_TRAILING_WHITESPACE) + + if(_git_tag_hashes MATCHES "${_git_head_hash}") + set(MY_WC_BRANCH "master") + else() + execute_process(COMMAND git branch --contains ${MY_WC_HASH} + WORKING_DIRECTORY ${SOURCE_DIR} + OUTPUT_VARIABLE _git_contains_branches + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REGEX REPLACE "^\\*[ \t]+" "" _git_contains_branches "${_git_contains_branches}") + string(REGEX REPLACE "[\r\n]+" ";" _git_contains_branches "${_git_contains_branches}") + string(REGEX REPLACE ";[ \t]+" ";" _git_contains_branches "${_git_contains_branches}") + foreach(_branch ${_git_contains_branches}) + if(NOT "${_branch}" MATCHES "\\(HEAD.*") + set(MY_WC_BRANCH "${_branch}") + break() + endif() + endforeach() + unset(_branch) + unset(_git_contains_branches) + endif() + + unset(_git_tag_hashes) + unset(_git_head_hashs) + endif() + + + unset(_git_contains_check) + else() + execute_process(COMMAND git log HEAD..@{u} + WORKING_DIRECTORY ${SOURCE_DIR} + OUTPUT_VARIABLE _git_below_check + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET) + if(NOT _git_below_check STREQUAL "") + # If there're commits between HEAD and upstream this means + # that we're reset-ed to older revision. Use it's hash then. + execute_process(COMMAND git rev-parse --short=12 HEAD + WORKING_DIRECTORY ${SOURCE_DIR} + OUTPUT_VARIABLE MY_WC_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE) + else() + execute_process(COMMAND git rev-parse --short=12 @{u} + WORKING_DIRECTORY ${SOURCE_DIR} + OUTPUT_VARIABLE MY_WC_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET) + + if(MY_WC_HASH STREQUAL "") + # Local branch, not set to upstream. + # Well, let's use HEAD for now + execute_process(COMMAND git rev-parse --short=12 HEAD + WORKING_DIRECTORY ${SOURCE_DIR} + OUTPUT_VARIABLE MY_WC_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE) + endif() + endif() + + if(MY_WC_BRANCH MATCHES "^blender-v") + set(MY_WC_BRANCH "master") + endif() + + unset(_git_below_check) + endif() + + execute_process(COMMAND git log -1 --format=%ct + WORKING_DIRECTORY ${SOURCE_DIR} + OUTPUT_VARIABLE MY_WC_COMMIT_TIMESTAMP + OUTPUT_STRIP_TRAILING_WHITESPACE) + # May fail in rare cases + if(MY_WC_COMMIT_TIMESTAMP STREQUAL "") + set(MY_WC_COMMIT_TIMESTAMP 0) + endif() + + # Update GIT index before getting dirty files + execute_process(COMMAND git update-index -q --refresh + WORKING_DIRECTORY ${SOURCE_DIR} + OUTPUT_STRIP_TRAILING_WHITESPACE) + + execute_process(COMMAND git diff-index --name-only HEAD -- + WORKING_DIRECTORY ${SOURCE_DIR} + OUTPUT_VARIABLE _git_changed_files + OUTPUT_STRIP_TRAILING_WHITESPACE) + + if(NOT _git_changed_files STREQUAL "") + set(MY_WC_BRANCH "${MY_WC_BRANCH} (modified)") + else() + # Unpushed commits are also considered local modifications + execute_process(COMMAND git log @{u}.. + WORKING_DIRECTORY ${SOURCE_DIR} + OUTPUT_VARIABLE _git_unpushed_log + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET) + if(NOT _git_unpushed_log STREQUAL "") + set(MY_WC_BRANCH "${MY_WC_BRANCH} (modified)") + endif() + unset(_git_unpushed_log) + endif() + + unset(_git_changed_files) endif() # BUILD_PLATFORM and BUILD_PLATFORM are taken from CMake # but BUILD_DATE and BUILD_TIME are platform dependent if(UNIX) - if(NOT BUILD_DATE) - execute_process(COMMAND date "+%Y-%m-%d" OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) - endif() - if(NOT BUILD_TIME) - execute_process(COMMAND date "+%H:%M:%S" OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE) - endif() + if(NOT BUILD_DATE) + execute_process(COMMAND date "+%Y-%m-%d" OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) + endif() + if(NOT BUILD_TIME) + execute_process(COMMAND date "+%H:%M:%S" OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE) + endif() elseif(WIN32) - if(NOT BUILD_DATE) - execute_process(COMMAND cmd /c date /t OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) - endif() - if(NOT BUILD_TIME) - execute_process(COMMAND cmd /c time /t OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE) - endif() + if(NOT BUILD_DATE) + execute_process(COMMAND cmd /c date /t OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) + endif() + if(NOT BUILD_TIME) + execute_process(COMMAND cmd /c time /t OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE) + endif() endif() # Write a file with the BUILD_HASH define file(WRITE buildinfo.h.txt - "#define BUILD_HASH \"${MY_WC_HASH}\"\n" - "#define BUILD_COMMIT_TIMESTAMP ${MY_WC_COMMIT_TIMESTAMP}\n" - "#define BUILD_BRANCH \"${MY_WC_BRANCH}\"\n" - "#define BUILD_DATE \"${BUILD_DATE}\"\n" - "#define BUILD_TIME \"${BUILD_TIME}\"\n" + "#define BUILD_HASH \"${MY_WC_HASH}\"\n" + "#define BUILD_COMMIT_TIMESTAMP ${MY_WC_COMMIT_TIMESTAMP}\n" + "#define BUILD_BRANCH \"${MY_WC_BRANCH}\"\n" + "#define BUILD_DATE \"${BUILD_DATE}\"\n" + "#define BUILD_TIME \"${BUILD_TIME}\"\n" ) # cleanup diff --git a/build_files/cmake/config/blender_full.cmake b/build_files/cmake/config/blender_full.cmake index aed3381cbbe..6786cb5ce37 100644 --- a/build_files/cmake/config/blender_full.cmake +++ b/build_files/cmake/config/blender_full.cmake @@ -55,12 +55,12 @@ set(WITH_MEM_JEMALLOC ON CACHE BOOL "" FORCE) # platform dependent options if(UNIX AND NOT APPLE) - set(WITH_JACK ON CACHE BOOL "" FORCE) - set(WITH_DOC_MANPAGE ON CACHE BOOL "" FORCE) + set(WITH_JACK ON CACHE BOOL "" FORCE) + set(WITH_DOC_MANPAGE ON CACHE BOOL "" FORCE) elseif(WIN32) - set(WITH_JACK OFF CACHE BOOL "" FORCE) + set(WITH_JACK OFF CACHE BOOL "" FORCE) elseif(APPLE) - set(WITH_JACK ON CACHE BOOL "" FORCE) + set(WITH_JACK ON CACHE BOOL "" FORCE) -# include("${CMAKE_CURRENT_SOURCE_DIR}/../platform/platform_apple_xcode.cmake") +# include("${CMAKE_CURRENT_SOURCE_DIR}/../platform/platform_apple_xcode.cmake") endif() diff --git a/build_files/cmake/config/blender_release.cmake b/build_files/cmake/config/blender_release.cmake index cf0be8d6b3f..24032b6aed6 100644 --- a/build_files/cmake/config/blender_release.cmake +++ b/build_files/cmake/config/blender_release.cmake @@ -58,12 +58,12 @@ set(CYCLES_CUDA_BINARIES_ARCH sm_30;sm_35;sm_37;sm_50;sm_52;sm_60;sm_61;sm_70;sm # platform dependent options if(UNIX AND NOT APPLE) - set(WITH_JACK ON CACHE BOOL "" FORCE) - set(WITH_DOC_MANPAGE ON CACHE BOOL "" FORCE) + set(WITH_JACK ON CACHE BOOL "" FORCE) + set(WITH_DOC_MANPAGE ON CACHE BOOL "" FORCE) elseif(WIN32) - set(WITH_JACK OFF CACHE BOOL "" FORCE) + set(WITH_JACK OFF CACHE BOOL "" FORCE) elseif(APPLE) - set(WITH_JACK ON CACHE BOOL "" FORCE) + set(WITH_JACK ON CACHE BOOL "" FORCE) -# include("${CMAKE_CURRENT_SOURCE_DIR}/../platform/platform_apple_xcode.cmake") +# include("${CMAKE_CURRENT_SOURCE_DIR}/../platform/platform_apple_xcode.cmake") endif() diff --git a/build_files/cmake/config/bpy_module.cmake b/build_files/cmake/config/bpy_module.cmake index 1637bbf9506..46aee50135c 100644 --- a/build_files/cmake/config/bpy_module.cmake +++ b/build_files/cmake/config/bpy_module.cmake @@ -32,6 +32,6 @@ set(WITH_OPENVDB OFF CACHE BOOL "" FORCE) set(WITH_ALEMBIC OFF CACHE BOOL "" FORCE) if(CMAKE_SYSTEM_NAME MATCHES "Linux") - # jemalloc causes linking error on import, disable. - set(WITH_MEM_JEMALLOC OFF CACHE BOOL "" FORCE) + # jemalloc causes linking error on import, disable. + set(WITH_MEM_JEMALLOC OFF CACHE BOOL "" FORCE) endif() diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 22e53fecf50..699f9cb1a99 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -19,175 +19,175 @@ # ***** END GPL LICENSE BLOCK ***** macro(list_insert_after - list_id item_check item_add - ) - set(_index) - list(FIND "${list_id}" "${item_check}" _index) - if("${_index}" MATCHES "-1") - message(FATAL_ERROR "'${list_id}' doesn't contain '${item_check}'") - endif() - math(EXPR _index "${_index} + 1") - list(INSERT ${list_id} "${_index}" ${item_add}) - unset(_index) + list_id item_check item_add + ) + set(_index) + list(FIND "${list_id}" "${item_check}" _index) + if("${_index}" MATCHES "-1") + message(FATAL_ERROR "'${list_id}' doesn't contain '${item_check}'") + endif() + math(EXPR _index "${_index} + 1") + list(INSERT ${list_id} "${_index}" ${item_add}) + unset(_index) endmacro() macro(list_insert_before - list_id item_check item_add - ) - set(_index) - list(FIND "${list_id}" "${item_check}" _index) - if("${_index}" MATCHES "-1") - message(FATAL_ERROR "'${list_id}' doesn't contain '${item_check}'") - endif() - list(INSERT ${list_id} "${_index}" ${item_add}) - unset(_index) + list_id item_check item_add + ) + set(_index) + list(FIND "${list_id}" "${item_check}" _index) + if("${_index}" MATCHES "-1") + message(FATAL_ERROR "'${list_id}' doesn't contain '${item_check}'") + endif() + list(INSERT ${list_id} "${_index}" ${item_add}) + unset(_index) endmacro() function(list_assert_duplicates - list_id - ) - - # message(STATUS "list data: ${list_id}") - - list(LENGTH list_id _len_before) - list(REMOVE_DUPLICATES list_id) - list(LENGTH list_id _len_after) - # message(STATUS "list size ${_len_before} -> ${_len_after}") - if(NOT _len_before EQUAL _len_after) - message(FATAL_ERROR "duplicate found in list which should not contain duplicates: ${list_id}") - endif() - unset(_len_before) - unset(_len_after) + list_id + ) + + # message(STATUS "list data: ${list_id}") + + list(LENGTH list_id _len_before) + list(REMOVE_DUPLICATES list_id) + list(LENGTH list_id _len_after) + # message(STATUS "list size ${_len_before} -> ${_len_after}") + if(NOT _len_before EQUAL _len_after) + message(FATAL_ERROR "duplicate found in list which should not contain duplicates: ${list_id}") + endif() + unset(_len_before) + unset(_len_after) endfunction() # foo_bar.spam --> foo_barMySuffix.spam macro(file_suffix - file_name_new file_name file_suffix - ) + file_name_new file_name file_suffix + ) - get_filename_component(_file_name_PATH ${file_name} PATH) - get_filename_component(_file_name_NAME_WE ${file_name} NAME_WE) - get_filename_component(_file_name_EXT ${file_name} EXT) - set(${file_name_new} "${_file_name_PATH}/${_file_name_NAME_WE}${file_suffix}${_file_name_EXT}") + get_filename_component(_file_name_PATH ${file_name} PATH) + get_filename_component(_file_name_NAME_WE ${file_name} NAME_WE) + get_filename_component(_file_name_EXT ${file_name} EXT) + set(${file_name_new} "${_file_name_PATH}/${_file_name_NAME_WE}${file_suffix}${_file_name_EXT}") - unset(_file_name_PATH) - unset(_file_name_NAME_WE) - unset(_file_name_EXT) + unset(_file_name_PATH) + unset(_file_name_NAME_WE) + unset(_file_name_EXT) endmacro() # useful for adding debug suffix to library lists: # /somepath/foo.lib --> /somepath/foo_d.lib macro(file_list_suffix - fp_list_new fp_list fn_suffix - ) + fp_list_new fp_list fn_suffix + ) - # incase of empty list - set(_fp) - set(_fp_suffixed) + # incase of empty list + set(_fp) + set(_fp_suffixed) - set(fp_list_new) + set(fp_list_new) - foreach(_fp ${fp_list}) - file_suffix(_fp_suffixed "${_fp}" "${fn_suffix}") - list(APPEND "${fp_list_new}" "${_fp_suffixed}") - endforeach() + foreach(_fp ${fp_list}) + file_suffix(_fp_suffixed "${_fp}" "${fn_suffix}") + list(APPEND "${fp_list_new}" "${_fp_suffixed}") + endforeach() - unset(_fp) - unset(_fp_suffixed) + unset(_fp) + unset(_fp_suffixed) endmacro() if(UNIX AND NOT APPLE) - macro(find_package_static) - set(_cmake_find_library_suffixes_back ${CMAKE_FIND_LIBRARY_SUFFIXES}) - set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) - find_package(${ARGV}) - set(CMAKE_FIND_LIBRARY_SUFFIXES ${_cmake_find_library_suffixes_back}) - unset(_cmake_find_library_suffixes_back) - endmacro() - - macro(find_library_static) - set(_cmake_find_library_suffixes_back ${CMAKE_FIND_LIBRARY_SUFFIXES}) - set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) - find_library(${ARGV}) - set(CMAKE_FIND_LIBRARY_SUFFIXES ${_cmake_find_library_suffixes_back}) - unset(_cmake_find_library_suffixes_back) - endmacro() + macro(find_package_static) + set(_cmake_find_library_suffixes_back ${CMAKE_FIND_LIBRARY_SUFFIXES}) + set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) + find_package(${ARGV}) + set(CMAKE_FIND_LIBRARY_SUFFIXES ${_cmake_find_library_suffixes_back}) + unset(_cmake_find_library_suffixes_back) + endmacro() + + macro(find_library_static) + set(_cmake_find_library_suffixes_back ${CMAKE_FIND_LIBRARY_SUFFIXES}) + set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) + find_library(${ARGV}) + set(CMAKE_FIND_LIBRARY_SUFFIXES ${_cmake_find_library_suffixes_back}) + unset(_cmake_find_library_suffixes_back) + endmacro() endif() function(target_link_libraries_optimized - TARGET - LIBS - ) + TARGET + LIBS + ) - foreach(_LIB ${LIBS}) - target_link_libraries(${TARGET} optimized "${_LIB}") - endforeach() + foreach(_LIB ${LIBS}) + target_link_libraries(${TARGET} optimized "${_LIB}") + endforeach() endfunction() function(target_link_libraries_debug - TARGET - LIBS - ) + TARGET + LIBS + ) - foreach(_LIB ${LIBS}) - target_link_libraries(${TARGET} debug "${_LIB}") - endforeach() + foreach(_LIB ${LIBS}) + target_link_libraries(${TARGET} debug "${_LIB}") + endforeach() endfunction() # Nicer makefiles with -I/1/foo/ instead of -I/1/2/3/../../foo/ # use it instead of include_directories() function(blender_include_dirs - includes - ) - - set(_ALL_INCS "") - foreach(_INC ${ARGV}) - get_filename_component(_ABS_INC ${_INC} ABSOLUTE) - list(APPEND _ALL_INCS ${_ABS_INC}) - # for checking for invalid includes, disable for regular use - ##if(NOT EXISTS "${_ABS_INC}/") - ## message(FATAL_ERROR "Include not found: ${_ABS_INC}/") - ##endif() - endforeach() - include_directories(${_ALL_INCS}) + includes + ) + + set(_ALL_INCS "") + foreach(_INC ${ARGV}) + get_filename_component(_ABS_INC ${_INC} ABSOLUTE) + list(APPEND _ALL_INCS ${_ABS_INC}) + # for checking for invalid includes, disable for regular use + ##if(NOT EXISTS "${_ABS_INC}/") + ## message(FATAL_ERROR "Include not found: ${_ABS_INC}/") + ##endif() + endforeach() + include_directories(${_ALL_INCS}) endfunction() function(blender_include_dirs_sys - includes - ) - - set(_ALL_INCS "") - foreach(_INC ${ARGV}) - get_filename_component(_ABS_INC ${_INC} ABSOLUTE) - list(APPEND _ALL_INCS ${_ABS_INC}) - ##if(NOT EXISTS "${_ABS_INC}/") - ## message(FATAL_ERROR "Include not found: ${_ABS_INC}/") - ##endif() - endforeach() - include_directories(SYSTEM ${_ALL_INCS}) + includes + ) + + set(_ALL_INCS "") + foreach(_INC ${ARGV}) + get_filename_component(_ABS_INC ${_INC} ABSOLUTE) + list(APPEND _ALL_INCS ${_ABS_INC}) + ##if(NOT EXISTS "${_ABS_INC}/") + ## message(FATAL_ERROR "Include not found: ${_ABS_INC}/") + ##endif() + endforeach() + include_directories(SYSTEM ${_ALL_INCS}) endfunction() function(blender_source_group - sources - ) - - # Group by location on disk - source_group("Source Files" FILES CMakeLists.txt) - - foreach(_SRC ${sources}) - get_filename_component(_SRC_EXT ${_SRC} EXT) - if((${_SRC_EXT} MATCHES ".h") OR - (${_SRC_EXT} MATCHES ".hpp") OR - (${_SRC_EXT} MATCHES ".hh")) - - set(GROUP_ID "Header Files") - else() - set(GROUP_ID "Source Files") - endif() - source_group("${GROUP_ID}" FILES ${_SRC}) - endforeach() + sources + ) + + # Group by location on disk + source_group("Source Files" FILES CMakeLists.txt) + + foreach(_SRC ${sources}) + get_filename_component(_SRC_EXT ${_SRC} EXT) + if((${_SRC_EXT} MATCHES ".h") OR + (${_SRC_EXT} MATCHES ".hpp") OR + (${_SRC_EXT} MATCHES ".hh")) + + set(GROUP_ID "Header Files") + else() + set(GROUP_ID "Source Files") + endif() + source_group("${GROUP_ID}" FILES ${_SRC}) + endforeach() endfunction() @@ -199,412 +199,412 @@ endfunction() # # Optionally takes an arg passed to set(), eg PARENT_SCOPE. macro(add_cc_flags_custom_test - name - ) - - string(TOUPPER ${name} _name_upper) - if(DEFINED CMAKE_C_FLAGS_${_name_upper}) - message(STATUS "Using custom CFLAGS: CMAKE_C_FLAGS_${_name_upper} in \"${CMAKE_CURRENT_SOURCE_DIR}\"") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${_name_upper}}" ${ARGV1}) - endif() - if(DEFINED CMAKE_CXX_FLAGS_${_name_upper}) - message(STATUS "Using custom CXXFLAGS: CMAKE_CXX_FLAGS_${_name_upper} in \"${CMAKE_CURRENT_SOURCE_DIR}\"") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${_name_upper}}" ${ARGV1}) - endif() - unset(_name_upper) + name + ) + + string(TOUPPER ${name} _name_upper) + if(DEFINED CMAKE_C_FLAGS_${_name_upper}) + message(STATUS "Using custom CFLAGS: CMAKE_C_FLAGS_${_name_upper} in \"${CMAKE_CURRENT_SOURCE_DIR}\"") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${_name_upper}}" ${ARGV1}) + endif() + if(DEFINED CMAKE_CXX_FLAGS_${_name_upper}) + message(STATUS "Using custom CXXFLAGS: CMAKE_CXX_FLAGS_${_name_upper} in \"${CMAKE_CURRENT_SOURCE_DIR}\"") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${_name_upper}}" ${ARGV1}) + endif() + unset(_name_upper) endmacro() # only MSVC uses SOURCE_GROUP function(blender_add_lib__impl - name - sources - includes - includes_sys - library_deps - ) - - # message(STATUS "Configuring library ${name}") - - # include_directories(${includes}) - # include_directories(SYSTEM ${includes_sys}) - blender_include_dirs("${includes}") - blender_include_dirs_sys("${includes_sys}") - - add_library(${name} ${sources}) - - if (NOT "${library_deps}" STREQUAL "") - target_link_libraries(${name} "${library_deps}") - endif() - - # works fine without having the includes - # listed is helpful for IDE's (QtCreator/MSVC) - blender_source_group("${sources}") - - #if enabled, set the FOLDER property for visual studio projects - if(WINDOWS_USE_VISUAL_STUDIO_FOLDERS) - get_filename_component(FolderDir ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY) - string(REPLACE ${CMAKE_SOURCE_DIR} "" FolderDir ${FolderDir}) - set_target_properties(${name} PROPERTIES FOLDER ${FolderDir}) - endif() - - list_assert_duplicates("${sources}") - list_assert_duplicates("${includes}") - # Not for system includes because they can resolve to the same path - # list_assert_duplicates("${includes_sys}") + name + sources + includes + includes_sys + library_deps + ) + + # message(STATUS "Configuring library ${name}") + + # include_directories(${includes}) + # include_directories(SYSTEM ${includes_sys}) + blender_include_dirs("${includes}") + blender_include_dirs_sys("${includes_sys}") + + add_library(${name} ${sources}) + + if (NOT "${library_deps}" STREQUAL "") + target_link_libraries(${name} "${library_deps}") + endif() + + # works fine without having the includes + # listed is helpful for IDE's (QtCreator/MSVC) + blender_source_group("${sources}") + + #if enabled, set the FOLDER property for visual studio projects + if(WINDOWS_USE_VISUAL_STUDIO_FOLDERS) + get_filename_component(FolderDir ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY) + string(REPLACE ${CMAKE_SOURCE_DIR} "" FolderDir ${FolderDir}) + set_target_properties(${name} PROPERTIES FOLDER ${FolderDir}) + endif() + + list_assert_duplicates("${sources}") + list_assert_duplicates("${includes}") + # Not for system includes because they can resolve to the same path + # list_assert_duplicates("${includes_sys}") endfunction() function(blender_add_lib_nolist - name - sources - includes - includes_sys - library_deps - ) + name + sources + includes + includes_sys + library_deps + ) - add_cc_flags_custom_test(${name} PARENT_SCOPE) + add_cc_flags_custom_test(${name} PARENT_SCOPE) - blender_add_lib__impl(${name} "${sources}" "${includes}" "${includes_sys}" "${library_deps}") + blender_add_lib__impl(${name} "${sources}" "${includes}" "${includes_sys}" "${library_deps}") endfunction() function(blender_add_lib - name - sources - includes - includes_sys - library_deps - ) + name + sources + includes + includes_sys + library_deps + ) - add_cc_flags_custom_test(${name} PARENT_SCOPE) + add_cc_flags_custom_test(${name} PARENT_SCOPE) - blender_add_lib__impl(${name} "${sources}" "${includes}" "${includes_sys}" "${library_deps}") + blender_add_lib__impl(${name} "${sources}" "${includes}" "${includes_sys}" "${library_deps}") - set_property(GLOBAL APPEND PROPERTY BLENDER_LINK_LIBS ${name}) + set_property(GLOBAL APPEND PROPERTY BLENDER_LINK_LIBS ${name}) endfunction() function(SETUP_LIBDIRS) - # NOTE: For all new libraries, use absolute library paths. - # This should eventually be phased out. - - if(NOT MSVC) - link_directories(${JPEG_LIBPATH} ${PNG_LIBPATH} ${ZLIB_LIBPATH} ${FREETYPE_LIBPATH}) - - if(WITH_PYTHON) # AND NOT WITH_PYTHON_MODULE # WIN32 needs - link_directories(${PYTHON_LIBPATH}) - endif() - if(WITH_SDL AND NOT WITH_SDL_DYNLOAD) - link_directories(${SDL_LIBPATH}) - endif() - if(WITH_CODEC_FFMPEG) - link_directories(${FFMPEG_LIBPATH}) - endif() - if(WITH_IMAGE_OPENEXR) - link_directories(${OPENEXR_LIBPATH}) - endif() - if(WITH_IMAGE_TIFF) - link_directories(${TIFF_LIBPATH}) - endif() - if(WITH_BOOST) - link_directories(${BOOST_LIBPATH}) - endif() - if(WITH_OPENIMAGEIO) - link_directories(${OPENIMAGEIO_LIBPATH}) - endif() - if(WITH_OPENCOLORIO) - link_directories(${OPENCOLORIO_LIBPATH}) - endif() - if(WITH_OPENVDB) - link_directories(${OPENVDB_LIBPATH}) - endif() - if(WITH_OPENAL) - link_directories(${OPENAL_LIBPATH}) - endif() - if(WITH_JACK AND NOT WITH_JACK_DYNLOAD) - link_directories(${JACK_LIBPATH}) - endif() - if(WITH_CODEC_SNDFILE) - link_directories(${LIBSNDFILE_LIBPATH}) - endif() - if(WITH_FFTW3) - link_directories(${FFTW3_LIBPATH}) - endif() - if(WITH_OPENCOLLADA) - link_directories(${OPENCOLLADA_LIBPATH}) - ## Never set - # link_directories(${PCRE_LIBPATH}) - # link_directories(${EXPAT_LIBPATH}) - endif() - if(WITH_LLVM) - link_directories(${LLVM_LIBPATH}) - endif() - - if(WITH_ALEMBIC) - link_directories(${ALEMBIC_LIBPATH}) - link_directories(${HDF5_LIBPATH}) - endif() - - if(WIN32 AND NOT UNIX) - link_directories(${PTHREADS_LIBPATH}) - endif() - endif() + # NOTE: For all new libraries, use absolute library paths. + # This should eventually be phased out. + + if(NOT MSVC) + link_directories(${JPEG_LIBPATH} ${PNG_LIBPATH} ${ZLIB_LIBPATH} ${FREETYPE_LIBPATH}) + + if(WITH_PYTHON) # AND NOT WITH_PYTHON_MODULE # WIN32 needs + link_directories(${PYTHON_LIBPATH}) + endif() + if(WITH_SDL AND NOT WITH_SDL_DYNLOAD) + link_directories(${SDL_LIBPATH}) + endif() + if(WITH_CODEC_FFMPEG) + link_directories(${FFMPEG_LIBPATH}) + endif() + if(WITH_IMAGE_OPENEXR) + link_directories(${OPENEXR_LIBPATH}) + endif() + if(WITH_IMAGE_TIFF) + link_directories(${TIFF_LIBPATH}) + endif() + if(WITH_BOOST) + link_directories(${BOOST_LIBPATH}) + endif() + if(WITH_OPENIMAGEIO) + link_directories(${OPENIMAGEIO_LIBPATH}) + endif() + if(WITH_OPENCOLORIO) + link_directories(${OPENCOLORIO_LIBPATH}) + endif() + if(WITH_OPENVDB) + link_directories(${OPENVDB_LIBPATH}) + endif() + if(WITH_OPENAL) + link_directories(${OPENAL_LIBPATH}) + endif() + if(WITH_JACK AND NOT WITH_JACK_DYNLOAD) + link_directories(${JACK_LIBPATH}) + endif() + if(WITH_CODEC_SNDFILE) + link_directories(${LIBSNDFILE_LIBPATH}) + endif() + if(WITH_FFTW3) + link_directories(${FFTW3_LIBPATH}) + endif() + if(WITH_OPENCOLLADA) + link_directories(${OPENCOLLADA_LIBPATH}) + ## Never set + # link_directories(${PCRE_LIBPATH}) + # link_directories(${EXPAT_LIBPATH}) + endif() + if(WITH_LLVM) + link_directories(${LLVM_LIBPATH}) + endif() + + if(WITH_ALEMBIC) + link_directories(${ALEMBIC_LIBPATH}) + link_directories(${HDF5_LIBPATH}) + endif() + + if(WIN32 AND NOT UNIX) + link_directories(${PTHREADS_LIBPATH}) + endif() + endif() endfunction() macro(setup_platform_linker_flags) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}") - set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}") + set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}") endmacro() function(setup_liblinks - target - ) - - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}" PARENT_SCOPE) - set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}" PARENT_SCOPE) - - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}" PARENT_SCOPE) - set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}" PARENT_SCOPE) - - set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}" PARENT_SCOPE) - set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}" PARENT_SCOPE) - - # jemalloc must be early in the list, to be before pthread (see T57998) - if(WITH_MEM_JEMALLOC) - target_link_libraries(${target} ${JEMALLOC_LIBRARIES}) - endif() - - target_link_libraries( - ${target} - ${PNG_LIBRARIES} - ${FREETYPE_LIBRARY} - ) - - # since we are using the local libs for python when compiling msvc projects, we need to add _d when compiling debug versions - if(WITH_PYTHON) # AND NOT WITH_PYTHON_MODULE # WIN32 needs - target_link_libraries(${target} ${PYTHON_LINKFLAGS}) - - if(WIN32 AND NOT UNIX) - file_list_suffix(PYTHON_LIBRARIES_DEBUG "${PYTHON_LIBRARIES}" "_d") - target_link_libraries_debug(${target} "${PYTHON_LIBRARIES_DEBUG}") - target_link_libraries_optimized(${target} "${PYTHON_LIBRARIES}") - unset(PYTHON_LIBRARIES_DEBUG) - else() - target_link_libraries(${target} ${PYTHON_LIBRARIES}) - endif() - endif() - - if(WITH_LZO AND WITH_SYSTEM_LZO) - target_link_libraries(${target} ${LZO_LIBRARIES}) - endif() - if(WITH_SYSTEM_GLEW) - target_link_libraries(${target} ${BLENDER_GLEW_LIBRARIES}) - endif() - if(WITH_BULLET AND WITH_SYSTEM_BULLET) - target_link_libraries(${target} ${BULLET_LIBRARIES}) - endif() - if(WITH_AUDASPACE AND WITH_SYSTEM_AUDASPACE) - target_link_libraries(${target} ${AUDASPACE_C_LIBRARIES} ${AUDASPACE_PY_LIBRARIES}) - endif() - if(WITH_OPENAL) - target_link_libraries(${target} ${OPENAL_LIBRARY}) - endif() - if(WITH_FFTW3) - target_link_libraries(${target} ${FFTW3_LIBRARIES}) - endif() - if(WITH_JACK AND NOT WITH_JACK_DYNLOAD) - target_link_libraries(${target} ${JACK_LIBRARIES}) - endif() - if(WITH_CODEC_SNDFILE) - target_link_libraries(${target} ${LIBSNDFILE_LIBRARIES}) - endif() - if(WITH_SDL AND NOT WITH_SDL_DYNLOAD) - target_link_libraries(${target} ${SDL_LIBRARY}) - endif() - if(WITH_CYCLES_OSL) - target_link_libraries(${target} ${OSL_LIBRARIES}) - endif() - if(WITH_OPENVDB) - target_link_libraries(${target} ${OPENVDB_LIBRARIES} ${TBB_LIBRARIES} ${BLOSC_LIBRARIES}) - endif() - if(WITH_OPENIMAGEIO) - target_link_libraries(${target} ${OPENIMAGEIO_LIBRARIES}) - endif() - if(WITH_OPENCOLORIO) - target_link_libraries(${target} ${OPENCOLORIO_LIBRARIES}) - endif() - if(WITH_OPENSUBDIV) - target_link_libraries(${target} ${OPENSUBDIV_LIBRARIES}) - endif() - if(WITH_CYCLES_EMBREE) - target_link_libraries(${target} ${EMBREE_LIBRARIES}) - endif() - if(WITH_BOOST) - target_link_libraries(${target} ${BOOST_LIBRARIES}) - if(Boost_USE_STATIC_LIBS AND Boost_USE_ICU) - target_link_libraries(${target} ${ICU_LIBRARIES}) - endif() - endif() - target_link_libraries(${target} ${JPEG_LIBRARIES}) - if(WITH_ALEMBIC) - target_link_libraries(${target} ${ALEMBIC_LIBRARIES} ${HDF5_LIBRARIES}) - endif() - if(WITH_IMAGE_TIFF) - target_link_libraries(${target} ${TIFF_LIBRARY}) - endif() - if(WITH_IMAGE_OPENEXR) - target_link_libraries(${target} ${OPENEXR_LIBRARIES}) - endif() - if(WITH_IMAGE_OPENJPEG) - target_link_libraries(${target} ${OPENJPEG_LIBRARIES}) - endif() - if(WITH_CODEC_FFMPEG) - target_link_libraries(${target} ${FFMPEG_LIBRARIES}) - endif() - if(WITH_OPENCOLLADA) - if(WIN32 AND NOT UNIX) - file_list_suffix(OPENCOLLADA_LIBRARIES_DEBUG "${OPENCOLLADA_LIBRARIES}" "_d") - target_link_libraries_debug(${target} "${OPENCOLLADA_LIBRARIES_DEBUG}") - target_link_libraries_optimized(${target} "${OPENCOLLADA_LIBRARIES}") - unset(OPENCOLLADA_LIBRARIES_DEBUG) - - file_list_suffix(PCRE_LIBRARIES_DEBUG "${PCRE_LIBRARIES}" "_d") - target_link_libraries_debug(${target} "${PCRE_LIBRARIES_DEBUG}") - target_link_libraries_optimized(${target} "${PCRE_LIBRARIES}") - unset(PCRE_LIBRARIES_DEBUG) - - if(EXPAT_LIB) - file_list_suffix(EXPAT_LIB_DEBUG "${EXPAT_LIB}" "_d") - target_link_libraries_debug(${target} "${EXPAT_LIB_DEBUG}") - target_link_libraries_optimized(${target} "${EXPAT_LIB}") - unset(EXPAT_LIB_DEBUG) - endif() - else() - target_link_libraries( - ${target} - ${OPENCOLLADA_LIBRARIES} - ${PCRE_LIBRARIES} - ${XML2_LIBRARIES} - ${EXPAT_LIB} - ) - endif() - endif() - if(WITH_MOD_CLOTH_ELTOPO) - target_link_libraries(${target} ${LAPACK_LIBRARIES}) - endif() - if(WITH_LLVM) - target_link_libraries(${target} ${LLVM_LIBRARY}) - endif() - if(WIN32 AND NOT UNIX) - target_link_libraries(${target} ${PTHREADS_LIBRARIES}) - endif() - if(UNIX AND NOT APPLE) - if(WITH_OPENMP_STATIC) - target_link_libraries(${target} ${OpenMP_LIBRARIES}) - endif() - if(WITH_INPUT_NDOF) - target_link_libraries(${target} ${NDOF_LIBRARIES}) - endif() - endif() - if(WITH_SYSTEM_GLOG) - target_link_libraries(${target} ${GLOG_LIBRARIES}) - endif() - if(WITH_SYSTEM_GFLAGS) - target_link_libraries(${target} ${GFLAGS_LIBRARIES}) - endif() - - # We put CLEW and CUEW here because OPENSUBDIV_LIBRARIES depends on them.. - if(WITH_CYCLES OR WITH_COMPOSITOR OR WITH_OPENSUBDIV) - target_link_libraries(${target} "extern_clew") - if(WITH_CUDA_DYNLOAD) - target_link_libraries(${target} "extern_cuew") - else() - target_link_libraries(${target} ${CUDA_CUDA_LIBRARY}) - endif() - endif() - - target_link_libraries( - ${target} - ${ZLIB_LIBRARIES} - ) - - #system libraries with no dependencies such as platform link libs or opengl should go last - target_link_libraries(${target} - ${BLENDER_GL_LIBRARIES}) - - #target_link_libraries(${target} ${PLATFORM_LINKLIBS} ${CMAKE_DL_LIBS}) - target_link_libraries(${target} ${PLATFORM_LINKLIBS}) + target + ) + + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}" PARENT_SCOPE) + set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}" PARENT_SCOPE) + + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}" PARENT_SCOPE) + set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}" PARENT_SCOPE) + + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}" PARENT_SCOPE) + set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}" PARENT_SCOPE) + + # jemalloc must be early in the list, to be before pthread (see T57998) + if(WITH_MEM_JEMALLOC) + target_link_libraries(${target} ${JEMALLOC_LIBRARIES}) + endif() + + target_link_libraries( + ${target} + ${PNG_LIBRARIES} + ${FREETYPE_LIBRARY} + ) + + # since we are using the local libs for python when compiling msvc projects, we need to add _d when compiling debug versions + if(WITH_PYTHON) # AND NOT WITH_PYTHON_MODULE # WIN32 needs + target_link_libraries(${target} ${PYTHON_LINKFLAGS}) + + if(WIN32 AND NOT UNIX) + file_list_suffix(PYTHON_LIBRARIES_DEBUG "${PYTHON_LIBRARIES}" "_d") + target_link_libraries_debug(${target} "${PYTHON_LIBRARIES_DEBUG}") + target_link_libraries_optimized(${target} "${PYTHON_LIBRARIES}") + unset(PYTHON_LIBRARIES_DEBUG) + else() + target_link_libraries(${target} ${PYTHON_LIBRARIES}) + endif() + endif() + + if(WITH_LZO AND WITH_SYSTEM_LZO) + target_link_libraries(${target} ${LZO_LIBRARIES}) + endif() + if(WITH_SYSTEM_GLEW) + target_link_libraries(${target} ${BLENDER_GLEW_LIBRARIES}) + endif() + if(WITH_BULLET AND WITH_SYSTEM_BULLET) + target_link_libraries(${target} ${BULLET_LIBRARIES}) + endif() + if(WITH_AUDASPACE AND WITH_SYSTEM_AUDASPACE) + target_link_libraries(${target} ${AUDASPACE_C_LIBRARIES} ${AUDASPACE_PY_LIBRARIES}) + endif() + if(WITH_OPENAL) + target_link_libraries(${target} ${OPENAL_LIBRARY}) + endif() + if(WITH_FFTW3) + target_link_libraries(${target} ${FFTW3_LIBRARIES}) + endif() + if(WITH_JACK AND NOT WITH_JACK_DYNLOAD) + target_link_libraries(${target} ${JACK_LIBRARIES}) + endif() + if(WITH_CODEC_SNDFILE) + target_link_libraries(${target} ${LIBSNDFILE_LIBRARIES}) + endif() + if(WITH_SDL AND NOT WITH_SDL_DYNLOAD) + target_link_libraries(${target} ${SDL_LIBRARY}) + endif() + if(WITH_CYCLES_OSL) + target_link_libraries(${target} ${OSL_LIBRARIES}) + endif() + if(WITH_OPENVDB) + target_link_libraries(${target} ${OPENVDB_LIBRARIES} ${TBB_LIBRARIES} ${BLOSC_LIBRARIES}) + endif() + if(WITH_OPENIMAGEIO) + target_link_libraries(${target} ${OPENIMAGEIO_LIBRARIES}) + endif() + if(WITH_OPENCOLORIO) + target_link_libraries(${target} ${OPENCOLORIO_LIBRARIES}) + endif() + if(WITH_OPENSUBDIV) + target_link_libraries(${target} ${OPENSUBDIV_LIBRARIES}) + endif() + if(WITH_CYCLES_EMBREE) + target_link_libraries(${target} ${EMBREE_LIBRARIES}) + endif() + if(WITH_BOOST) + target_link_libraries(${target} ${BOOST_LIBRARIES}) + if(Boost_USE_STATIC_LIBS AND Boost_USE_ICU) + target_link_libraries(${target} ${ICU_LIBRARIES}) + endif() + endif() + target_link_libraries(${target} ${JPEG_LIBRARIES}) + if(WITH_ALEMBIC) + target_link_libraries(${target} ${ALEMBIC_LIBRARIES} ${HDF5_LIBRARIES}) + endif() + if(WITH_IMAGE_TIFF) + target_link_libraries(${target} ${TIFF_LIBRARY}) + endif() + if(WITH_IMAGE_OPENEXR) + target_link_libraries(${target} ${OPENEXR_LIBRARIES}) + endif() + if(WITH_IMAGE_OPENJPEG) + target_link_libraries(${target} ${OPENJPEG_LIBRARIES}) + endif() + if(WITH_CODEC_FFMPEG) + target_link_libraries(${target} ${FFMPEG_LIBRARIES}) + endif() + if(WITH_OPENCOLLADA) + if(WIN32 AND NOT UNIX) + file_list_suffix(OPENCOLLADA_LIBRARIES_DEBUG "${OPENCOLLADA_LIBRARIES}" "_d") + target_link_libraries_debug(${target} "${OPENCOLLADA_LIBRARIES_DEBUG}") + target_link_libraries_optimized(${target} "${OPENCOLLADA_LIBRARIES}") + unset(OPENCOLLADA_LIBRARIES_DEBUG) + + file_list_suffix(PCRE_LIBRARIES_DEBUG "${PCRE_LIBRARIES}" "_d") + target_link_libraries_debug(${target} "${PCRE_LIBRARIES_DEBUG}") + target_link_libraries_optimized(${target} "${PCRE_LIBRARIES}") + unset(PCRE_LIBRARIES_DEBUG) + + if(EXPAT_LIB) + file_list_suffix(EXPAT_LIB_DEBUG "${EXPAT_LIB}" "_d") + target_link_libraries_debug(${target} "${EXPAT_LIB_DEBUG}") + target_link_libraries_optimized(${target} "${EXPAT_LIB}") + unset(EXPAT_LIB_DEBUG) + endif() + else() + target_link_libraries( + ${target} + ${OPENCOLLADA_LIBRARIES} + ${PCRE_LIBRARIES} + ${XML2_LIBRARIES} + ${EXPAT_LIB} + ) + endif() + endif() + if(WITH_MOD_CLOTH_ELTOPO) + target_link_libraries(${target} ${LAPACK_LIBRARIES}) + endif() + if(WITH_LLVM) + target_link_libraries(${target} ${LLVM_LIBRARY}) + endif() + if(WIN32 AND NOT UNIX) + target_link_libraries(${target} ${PTHREADS_LIBRARIES}) + endif() + if(UNIX AND NOT APPLE) + if(WITH_OPENMP_STATIC) + target_link_libraries(${target} ${OpenMP_LIBRARIES}) + endif() + if(WITH_INPUT_NDOF) + target_link_libraries(${target} ${NDOF_LIBRARIES}) + endif() + endif() + if(WITH_SYSTEM_GLOG) + target_link_libraries(${target} ${GLOG_LIBRARIES}) + endif() + if(WITH_SYSTEM_GFLAGS) + target_link_libraries(${target} ${GFLAGS_LIBRARIES}) + endif() + + # We put CLEW and CUEW here because OPENSUBDIV_LIBRARIES depends on them.. + if(WITH_CYCLES OR WITH_COMPOSITOR OR WITH_OPENSUBDIV) + target_link_libraries(${target} "extern_clew") + if(WITH_CUDA_DYNLOAD) + target_link_libraries(${target} "extern_cuew") + else() + target_link_libraries(${target} ${CUDA_CUDA_LIBRARY}) + endif() + endif() + + target_link_libraries( + ${target} + ${ZLIB_LIBRARIES} + ) + + #system libraries with no dependencies such as platform link libs or opengl should go last + target_link_libraries(${target} + ${BLENDER_GL_LIBRARIES}) + + #target_link_libraries(${target} ${PLATFORM_LINKLIBS} ${CMAKE_DL_LIBS}) + target_link_libraries(${target} ${PLATFORM_LINKLIBS}) endfunction() macro(TEST_SSE_SUPPORT - _sse_flags - _sse2_flags) - - include(CheckCSourceRuns) - - # message(STATUS "Detecting SSE support") - if(CMAKE_COMPILER_IS_GNUCC OR (CMAKE_C_COMPILER_ID MATCHES "Clang")) - set(${_sse_flags} "-msse") - set(${_sse2_flags} "-msse2") - elseif(MSVC) - # x86_64 has this auto enabled - if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") - set(${_sse_flags} "") - set(${_sse2_flags} "") - else() - set(${_sse_flags} "/arch:SSE") - set(${_sse2_flags} "/arch:SSE2") - endif() - elseif(CMAKE_C_COMPILER_ID MATCHES "Intel") - set(${_sse_flags} "") # icc defaults to -msse - set(${_sse2_flags} "") # icc defaults to -msse2 - else() - message(WARNING "SSE flags for this compiler: '${CMAKE_C_COMPILER_ID}' not known") - set(${_sse_flags}) - set(${_sse2_flags}) - endif() - - set(CMAKE_REQUIRED_FLAGS "${${_sse_flags}} ${${_sse2_flags}}") - - if(NOT DEFINED SUPPORT_SSE_BUILD) - # result cached - check_c_source_runs(" - #include <xmmintrin.h> - int main(void) { __m128 v = _mm_setzero_ps(); return 0; }" - SUPPORT_SSE_BUILD) - - if(SUPPORT_SSE_BUILD) - message(STATUS "SSE Support: detected.") - else() - message(STATUS "SSE Support: missing.") - endif() - endif() - - if(NOT DEFINED SUPPORT_SSE2_BUILD) - # result cached - check_c_source_runs(" - #include <emmintrin.h> - int main(void) { __m128d v = _mm_setzero_pd(); return 0; }" - SUPPORT_SSE2_BUILD) - - if(SUPPORT_SSE2_BUILD) - message(STATUS "SSE2 Support: detected.") - else() - message(STATUS "SSE2 Support: missing.") - endif() - endif() - - unset(CMAKE_REQUIRED_FLAGS) + _sse_flags + _sse2_flags) + + include(CheckCSourceRuns) + + # message(STATUS "Detecting SSE support") + if(CMAKE_COMPILER_IS_GNUCC OR (CMAKE_C_COMPILER_ID MATCHES "Clang")) + set(${_sse_flags} "-msse") + set(${_sse2_flags} "-msse2") + elseif(MSVC) + # x86_64 has this auto enabled + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + set(${_sse_flags} "") + set(${_sse2_flags} "") + else() + set(${_sse_flags} "/arch:SSE") + set(${_sse2_flags} "/arch:SSE2") + endif() + elseif(CMAKE_C_COMPILER_ID MATCHES "Intel") + set(${_sse_flags} "") # icc defaults to -msse + set(${_sse2_flags} "") # icc defaults to -msse2 + else() + message(WARNING "SSE flags for this compiler: '${CMAKE_C_COMPILER_ID}' not known") + set(${_sse_flags}) + set(${_sse2_flags}) + endif() + + set(CMAKE_REQUIRED_FLAGS "${${_sse_flags}} ${${_sse2_flags}}") + + if(NOT DEFINED SUPPORT_SSE_BUILD) + # result cached + check_c_source_runs(" + #include <xmmintrin.h> + int main(void) { __m128 v = _mm_setzero_ps(); return 0; }" + SUPPORT_SSE_BUILD) + + if(SUPPORT_SSE_BUILD) + message(STATUS "SSE Support: detected.") + else() + message(STATUS "SSE Support: missing.") + endif() + endif() + + if(NOT DEFINED SUPPORT_SSE2_BUILD) + # result cached + check_c_source_runs(" + #include <emmintrin.h> + int main(void) { __m128d v = _mm_setzero_pd(); return 0; }" + SUPPORT_SSE2_BUILD) + + if(SUPPORT_SSE2_BUILD) + message(STATUS "SSE2 Support: detected.") + else() + message(STATUS "SSE2 Support: missing.") + endif() + endif() + + unset(CMAKE_REQUIRED_FLAGS) endmacro() # Only print message if running CMake first time macro(message_first_run) - if(FIRST_RUN) - message(${ARGV}) - endif() + if(FIRST_RUN) + message(${ARGV}) + endif() endmacro() # when we have warnings as errors applied globally this @@ -612,252 +612,252 @@ endmacro() # utility macro macro(remove_cc_flag - _flag) - - foreach(flag ${ARGV}) - string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}") - string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") - string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}") - string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") - - string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") - string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") - string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}") - string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") - endforeach() - unset(flag) + _flag) + + foreach(flag ${ARGV}) + string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") + string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}") + string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") + string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}") + string(REGEX REPLACE ${flag} "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") + + string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") + string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") + string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}") + string(REGEX REPLACE ${flag} "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") + endforeach() + unset(flag) endmacro() macro(add_c_flag - flag) + flag) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") endmacro() macro(add_cxx_flag - flag) + flag) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") endmacro() macro(remove_strict_flags) - if(CMAKE_COMPILER_IS_GNUCC) - remove_cc_flag( - "-Wstrict-prototypes" - "-Wmissing-prototypes" - "-Wmissing-declarations" - "-Wmissing-format-attribute" - "-Wunused-local-typedefs" - "-Wunused-macros" - "-Wunused-parameter" - "-Wwrite-strings" - "-Wredundant-decls" - "-Wundef" - "-Wshadow" - "-Wdouble-promotion" - "-Wold-style-definition" - "-Werror=[^ ]+" - "-Werror" - ) - - # negate flags implied by '-Wall' - add_c_flag("${C_REMOVE_STRICT_FLAGS}") - add_cxx_flag("${CXX_REMOVE_STRICT_FLAGS}") - endif() - - if(CMAKE_C_COMPILER_ID MATCHES "Clang") - remove_cc_flag( - "-Wunused-parameter" - "-Wunused-variable" - "-Werror=[^ ]+" - "-Werror" - ) - - # negate flags implied by '-Wall' - add_c_flag("${C_REMOVE_STRICT_FLAGS}") - add_cxx_flag("${CXX_REMOVE_STRICT_FLAGS}") - endif() - - if(MSVC) - # TODO - endif() + if(CMAKE_COMPILER_IS_GNUCC) + remove_cc_flag( + "-Wstrict-prototypes" + "-Wmissing-prototypes" + "-Wmissing-declarations" + "-Wmissing-format-attribute" + "-Wunused-local-typedefs" + "-Wunused-macros" + "-Wunused-parameter" + "-Wwrite-strings" + "-Wredundant-decls" + "-Wundef" + "-Wshadow" + "-Wdouble-promotion" + "-Wold-style-definition" + "-Werror=[^ ]+" + "-Werror" + ) + + # negate flags implied by '-Wall' + add_c_flag("${C_REMOVE_STRICT_FLAGS}") + add_cxx_flag("${CXX_REMOVE_STRICT_FLAGS}") + endif() + + if(CMAKE_C_COMPILER_ID MATCHES "Clang") + remove_cc_flag( + "-Wunused-parameter" + "-Wunused-variable" + "-Werror=[^ ]+" + "-Werror" + ) + + # negate flags implied by '-Wall' + add_c_flag("${C_REMOVE_STRICT_FLAGS}") + add_cxx_flag("${CXX_REMOVE_STRICT_FLAGS}") + endif() + + if(MSVC) + # TODO + endif() endmacro() macro(remove_extra_strict_flags) - if(CMAKE_COMPILER_IS_GNUCC) - remove_cc_flag( - "-Wunused-parameter" - ) - endif() - - if(CMAKE_C_COMPILER_ID MATCHES "Clang") - remove_cc_flag( - "-Wunused-parameter" - ) - endif() - - if(MSVC) - # TODO - endif() + if(CMAKE_COMPILER_IS_GNUCC) + remove_cc_flag( + "-Wunused-parameter" + ) + endif() + + if(CMAKE_C_COMPILER_ID MATCHES "Clang") + remove_cc_flag( + "-Wunused-parameter" + ) + endif() + + if(MSVC) + # TODO + endif() endmacro() # note, we can only append flags on a single file so we need to negate the options. # at the moment we cant shut up ffmpeg deprecations, so use this, but will # probably add more removals here. macro(remove_strict_c_flags_file - filenames) - foreach(_SOURCE ${ARGV}) - if(CMAKE_COMPILER_IS_GNUCC OR - (CMAKE_C_COMPILER_ID MATCHES "Clang")) - set_source_files_properties(${_SOURCE} - PROPERTIES - COMPILE_FLAGS "${C_REMOVE_STRICT_FLAGS}" - ) - endif() - if(MSVC) - # TODO - endif() - endforeach() - unset(_SOURCE) + filenames) + foreach(_SOURCE ${ARGV}) + if(CMAKE_COMPILER_IS_GNUCC OR + (CMAKE_C_COMPILER_ID MATCHES "Clang")) + set_source_files_properties(${_SOURCE} + PROPERTIES + COMPILE_FLAGS "${C_REMOVE_STRICT_FLAGS}" + ) + endif() + if(MSVC) + # TODO + endif() + endforeach() + unset(_SOURCE) endmacro() macro(remove_strict_cxx_flags_file - filenames) - remove_strict_c_flags_file(${filenames} ${ARHV}) - foreach(_SOURCE ${ARGV}) - if(CMAKE_COMPILER_IS_GNUCC OR - (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) - set_source_files_properties(${_SOURCE} - PROPERTIES - COMPILE_FLAGS "${CXX_REMOVE_STRICT_FLAGS}" - ) - endif() - if(MSVC) - # TODO - endif() - endforeach() - unset(_SOURCE) + filenames) + remove_strict_c_flags_file(${filenames} ${ARHV}) + foreach(_SOURCE ${ARGV}) + if(CMAKE_COMPILER_IS_GNUCC OR + (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + set_source_files_properties(${_SOURCE} + PROPERTIES + COMPILE_FLAGS "${CXX_REMOVE_STRICT_FLAGS}" + ) + endif() + if(MSVC) + # TODO + endif() + endforeach() + unset(_SOURCE) endmacro() # External libs may need 'signed char' to be default. macro(remove_cc_flag_unsigned_char) - if(CMAKE_COMPILER_IS_GNUCC OR - (CMAKE_C_COMPILER_ID MATCHES "Clang") OR - (CMAKE_C_COMPILER_ID MATCHES "Intel")) - remove_cc_flag("-funsigned-char") - elseif(MSVC) - remove_cc_flag("/J") - else() - message(WARNING - "Compiler '${CMAKE_C_COMPILER_ID}' failed to disable 'unsigned char' flag." - "Build files need updating." - ) - endif() + if(CMAKE_COMPILER_IS_GNUCC OR + (CMAKE_C_COMPILER_ID MATCHES "Clang") OR + (CMAKE_C_COMPILER_ID MATCHES "Intel")) + remove_cc_flag("-funsigned-char") + elseif(MSVC) + remove_cc_flag("/J") + else() + message(WARNING + "Compiler '${CMAKE_C_COMPILER_ID}' failed to disable 'unsigned char' flag." + "Build files need updating." + ) + endif() endmacro() function(ADD_CHECK_C_COMPILER_FLAG - _CFLAGS - _CACHE_VAR - _FLAG - ) - - include(CheckCCompilerFlag) - - CHECK_C_COMPILER_FLAG("${_FLAG}" "${_CACHE_VAR}") - if(${_CACHE_VAR}) - # message(STATUS "Using CFLAG: ${_FLAG}") - set(${_CFLAGS} "${${_CFLAGS}} ${_FLAG}" PARENT_SCOPE) - else() - message(STATUS "Unsupported CFLAG: ${_FLAG}") - endif() + _CFLAGS + _CACHE_VAR + _FLAG + ) + + include(CheckCCompilerFlag) + + CHECK_C_COMPILER_FLAG("${_FLAG}" "${_CACHE_VAR}") + if(${_CACHE_VAR}) + # message(STATUS "Using CFLAG: ${_FLAG}") + set(${_CFLAGS} "${${_CFLAGS}} ${_FLAG}" PARENT_SCOPE) + else() + message(STATUS "Unsupported CFLAG: ${_FLAG}") + endif() endfunction() function(ADD_CHECK_CXX_COMPILER_FLAG - _CXXFLAGS - _CACHE_VAR - _FLAG - ) - - include(CheckCXXCompilerFlag) - - CHECK_CXX_COMPILER_FLAG("${_FLAG}" "${_CACHE_VAR}") - if(${_CACHE_VAR}) - # message(STATUS "Using CXXFLAG: ${_FLAG}") - set(${_CXXFLAGS} "${${_CXXFLAGS}} ${_FLAG}" PARENT_SCOPE) - else() - message(STATUS "Unsupported CXXFLAG: ${_FLAG}") - endif() + _CXXFLAGS + _CACHE_VAR + _FLAG + ) + + include(CheckCXXCompilerFlag) + + CHECK_CXX_COMPILER_FLAG("${_FLAG}" "${_CACHE_VAR}") + if(${_CACHE_VAR}) + # message(STATUS "Using CXXFLAG: ${_FLAG}") + set(${_CXXFLAGS} "${${_CXXFLAGS}} ${_FLAG}" PARENT_SCOPE) + else() + message(STATUS "Unsupported CXXFLAG: ${_FLAG}") + endif() endfunction() function(get_blender_version) - # extracts header vars and defines them in the parent scope: - # - # - BLENDER_VERSION (major.minor) - # - BLENDER_VERSION_MAJOR - # - BLENDER_VERSION_MINOR - # - BLENDER_SUBVERSION (used for internal versioning mainly) - # - BLENDER_VERSION_CHAR (a, b, c, ...or empty string) - # - BLENDER_VERSION_CYCLE (alpha, beta, rc, release) - - # So cmake depends on BKE_blender.h, beware of inf-loops! - CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/source/blender/blenkernel/BKE_blender_version.h - ${CMAKE_BINARY_DIR}/source/blender/blenkernel/BKE_blender_version.h.done) - - file(STRINGS ${CMAKE_SOURCE_DIR}/source/blender/blenkernel/BKE_blender_version.h _contents REGEX "^#define[ \t]+BLENDER_.*$") - - string(REGEX REPLACE ".*#define[ \t]+BLENDER_VERSION[ \t]+([0-9]+).*" "\\1" _out_version "${_contents}") - string(REGEX REPLACE ".*#define[ \t]+BLENDER_SUBVERSION[ \t]+([0-9]+).*" "\\1" _out_subversion "${_contents}") - string(REGEX REPLACE ".*#define[ \t]+BLENDER_VERSION_CHAR[ \t]+([a-z]+).*" "\\1" _out_version_char "${_contents}") - string(REGEX REPLACE ".*#define[ \t]+BLENDER_VERSION_CYCLE[ \t]+([a-z]+).*" "\\1" _out_version_cycle "${_contents}") - - if(NOT ${_out_version} MATCHES "[0-9]+") - message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION") - endif() - - if(NOT ${_out_subversion} MATCHES "[0-9]+") - message(FATAL_ERROR "Version parsing failed for BLENDER_SUBVERSION") - endif() - - # clumsy regex, only single char are ok but it could be unset - - string(LENGTH "${_out_version_char}" _out_version_char_len) - if(NOT _out_version_char_len EQUAL 1) - set(_out_version_char "") - elseif(NOT ${_out_version_char} MATCHES "[a-z]+") - message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION_CHAR") - endif() - - if(NOT ${_out_version_cycle} MATCHES "[a-z]+") - message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION_CYCLE") - endif() - - math(EXPR _out_version_major "${_out_version} / 100") - math(EXPR _out_version_minor "${_out_version} % 100") - - # for packaging, alpha to numbers - string(COMPARE EQUAL "${_out_version_char}" "" _out_version_char_empty) - if(${_out_version_char_empty}) - set(_out_version_char_index "0") - else() - set(_char_ls a b c d e f g h i j k l m n o p q r s t u v w x y z) - list(FIND _char_ls ${_out_version_char} _out_version_char_index) - math(EXPR _out_version_char_index "${_out_version_char_index} + 1") - endif() - - # output vars - set(BLENDER_VERSION "${_out_version_major}.${_out_version_minor}" PARENT_SCOPE) - set(BLENDER_VERSION_MAJOR "${_out_version_major}" PARENT_SCOPE) - set(BLENDER_VERSION_MINOR "${_out_version_minor}" PARENT_SCOPE) - set(BLENDER_SUBVERSION "${_out_subversion}" PARENT_SCOPE) - set(BLENDER_VERSION_CHAR "${_out_version_char}" PARENT_SCOPE) - set(BLENDER_VERSION_CHAR_INDEX "${_out_version_char_index}" PARENT_SCOPE) - set(BLENDER_VERSION_CYCLE "${_out_version_cycle}" PARENT_SCOPE) + # extracts header vars and defines them in the parent scope: + # + # - BLENDER_VERSION (major.minor) + # - BLENDER_VERSION_MAJOR + # - BLENDER_VERSION_MINOR + # - BLENDER_SUBVERSION (used for internal versioning mainly) + # - BLENDER_VERSION_CHAR (a, b, c, ...or empty string) + # - BLENDER_VERSION_CYCLE (alpha, beta, rc, release) + + # So cmake depends on BKE_blender.h, beware of inf-loops! + CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/source/blender/blenkernel/BKE_blender_version.h + ${CMAKE_BINARY_DIR}/source/blender/blenkernel/BKE_blender_version.h.done) + + file(STRINGS ${CMAKE_SOURCE_DIR}/source/blender/blenkernel/BKE_blender_version.h _contents REGEX "^#define[ \t]+BLENDER_.*$") + + string(REGEX REPLACE ".*#define[ \t]+BLENDER_VERSION[ \t]+([0-9]+).*" "\\1" _out_version "${_contents}") + string(REGEX REPLACE ".*#define[ \t]+BLENDER_SUBVERSION[ \t]+([0-9]+).*" "\\1" _out_subversion "${_contents}") + string(REGEX REPLACE ".*#define[ \t]+BLENDER_VERSION_CHAR[ \t]+([a-z]+).*" "\\1" _out_version_char "${_contents}") + string(REGEX REPLACE ".*#define[ \t]+BLENDER_VERSION_CYCLE[ \t]+([a-z]+).*" "\\1" _out_version_cycle "${_contents}") + + if(NOT ${_out_version} MATCHES "[0-9]+") + message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION") + endif() + + if(NOT ${_out_subversion} MATCHES "[0-9]+") + message(FATAL_ERROR "Version parsing failed for BLENDER_SUBVERSION") + endif() + + # clumsy regex, only single char are ok but it could be unset + + string(LENGTH "${_out_version_char}" _out_version_char_len) + if(NOT _out_version_char_len EQUAL 1) + set(_out_version_char "") + elseif(NOT ${_out_version_char} MATCHES "[a-z]+") + message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION_CHAR") + endif() + + if(NOT ${_out_version_cycle} MATCHES "[a-z]+") + message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION_CYCLE") + endif() + + math(EXPR _out_version_major "${_out_version} / 100") + math(EXPR _out_version_minor "${_out_version} % 100") + + # for packaging, alpha to numbers + string(COMPARE EQUAL "${_out_version_char}" "" _out_version_char_empty) + if(${_out_version_char_empty}) + set(_out_version_char_index "0") + else() + set(_char_ls a b c d e f g h i j k l m n o p q r s t u v w x y z) + list(FIND _char_ls ${_out_version_char} _out_version_char_index) + math(EXPR _out_version_char_index "${_out_version_char_index} + 1") + endif() + + # output vars + set(BLENDER_VERSION "${_out_version_major}.${_out_version_minor}" PARENT_SCOPE) + set(BLENDER_VERSION_MAJOR "${_out_version_major}" PARENT_SCOPE) + set(BLENDER_VERSION_MINOR "${_out_version_minor}" PARENT_SCOPE) + set(BLENDER_SUBVERSION "${_out_subversion}" PARENT_SCOPE) + set(BLENDER_VERSION_CHAR "${_out_version_char}" PARENT_SCOPE) + set(BLENDER_VERSION_CHAR_INDEX "${_out_version_char_index}" PARENT_SCOPE) + set(BLENDER_VERSION_CYCLE "${_out_version_cycle}" PARENT_SCOPE) endfunction() @@ -865,48 +865,48 @@ endfunction() # hacks to override initial project settings # these macros must be called directly before/after project(Blender) macro(blender_project_hack_pre) - # ------------------ - # GCC -O3 HACK START - # needed because O3 can cause problems but - # allow the builder to set O3 manually after. - if(DEFINED CMAKE_C_FLAGS_RELEASE) - set(_reset_standard_cflags_rel OFF) - else() - set(_reset_standard_cflags_rel ON) - endif() - if(DEFINED CMAKE_CXX_FLAGS_RELEASE) - set(_reset_standard_cxxflags_rel OFF) - else() - set(_reset_standard_cxxflags_rel ON) - endif() + # ------------------ + # GCC -O3 HACK START + # needed because O3 can cause problems but + # allow the builder to set O3 manually after. + if(DEFINED CMAKE_C_FLAGS_RELEASE) + set(_reset_standard_cflags_rel OFF) + else() + set(_reset_standard_cflags_rel ON) + endif() + if(DEFINED CMAKE_CXX_FLAGS_RELEASE) + set(_reset_standard_cxxflags_rel OFF) + else() + set(_reset_standard_cxxflags_rel ON) + endif() endmacro() macro(blender_project_hack_post) - # ---------------- - # GCC -O3 HACK END - if(_reset_standard_cflags_rel) - string(REGEX REPLACE "-O3" "-O2" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}" CACHE STRING "" FORCE) - mark_as_advanced(CMAKE_C_FLAGS_RELEASE) - endif() - - if(_reset_standard_cxxflags_rel) - string(REGEX REPLACE "-O3" "-O2" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}" CACHE STRING "" FORCE) - mark_as_advanced(CMAKE_CXX_FLAGS_RELEASE) - endif() - - unset(_reset_standard_cflags_rel) - unset(_reset_standard_cxxflags_rel) - - # ------------------------------------------------------------------ - # workaround for omission in cmake 2.8.4's GNU.cmake, fixed in 2.8.5 - if(CMAKE_COMPILER_IS_GNUCC) - if(NOT DARWIN) - set(CMAKE_INCLUDE_SYSTEM_FLAG_C "-isystem ") - endif() - endif() + # ---------------- + # GCC -O3 HACK END + if(_reset_standard_cflags_rel) + string(REGEX REPLACE "-O3" "-O2" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}" CACHE STRING "" FORCE) + mark_as_advanced(CMAKE_C_FLAGS_RELEASE) + endif() + + if(_reset_standard_cxxflags_rel) + string(REGEX REPLACE "-O3" "-O2" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}" CACHE STRING "" FORCE) + mark_as_advanced(CMAKE_CXX_FLAGS_RELEASE) + endif() + + unset(_reset_standard_cflags_rel) + unset(_reset_standard_cxxflags_rel) + + # ------------------------------------------------------------------ + # workaround for omission in cmake 2.8.4's GNU.cmake, fixed in 2.8.5 + if(CMAKE_COMPILER_IS_GNUCC) + if(NOT DARWIN) + set(CMAKE_INCLUDE_SYSTEM_FLAG_C "-isystem ") + endif() + endif() endmacro() @@ -914,297 +914,297 @@ endmacro() # only install them at the end so the directories don't get cleared with # the files in them. used by cycles to install addon. function(delayed_install - base - files - destination) - - foreach(f ${files}) - if(IS_ABSOLUTE ${f}) - set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_FILES ${f}) - else() - set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_FILES ${base}/${f}) - endif() - set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_DESTINATIONS ${destination}) - endforeach() + base + files + destination) + + foreach(f ${files}) + if(IS_ABSOLUTE ${f}) + set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_FILES ${f}) + else() + set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_FILES ${base}/${f}) + endif() + set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_DESTINATIONS ${destination}) + endforeach() endfunction() # note this is a function instead of a macro so that ${BUILD_TYPE} in targetdir # does not get expanded in calling but is preserved function(delayed_do_install - targetdir) - - get_property(files GLOBAL PROPERTY DELAYED_INSTALL_FILES) - get_property(destinations GLOBAL PROPERTY DELAYED_INSTALL_DESTINATIONS) - - if(files) - list(LENGTH files n) - math(EXPR n "${n}-1") - - foreach(i RANGE ${n}) - list(GET files ${i} f) - list(GET destinations ${i} d) - if(NOT IS_ABSOLUTE ${d}) - install(FILES ${f} DESTINATION ${targetdir}/${d}) - else() - install(FILES ${f} DESTINATION ${d}) - endif() - endforeach() - endif() + targetdir) + + get_property(files GLOBAL PROPERTY DELAYED_INSTALL_FILES) + get_property(destinations GLOBAL PROPERTY DELAYED_INSTALL_DESTINATIONS) + + if(files) + list(LENGTH files n) + math(EXPR n "${n}-1") + + foreach(i RANGE ${n}) + list(GET files ${i} f) + list(GET destinations ${i} d) + if(NOT IS_ABSOLUTE ${d}) + install(FILES ${f} DESTINATION ${targetdir}/${d}) + else() + install(FILES ${f} DESTINATION ${d}) + endif() + endforeach() + endif() endfunction() function(data_to_c - file_from file_to - list_to_add - ) + file_from file_to + list_to_add + ) - list(APPEND ${list_to_add} ${file_to}) - set(${list_to_add} ${${list_to_add}} PARENT_SCOPE) + list(APPEND ${list_to_add} ${file_to}) + set(${list_to_add} ${${list_to_add}} PARENT_SCOPE) - get_filename_component(_file_to_path ${file_to} PATH) + get_filename_component(_file_to_path ${file_to} PATH) - add_custom_command( - OUTPUT ${file_to} - COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path} - COMMAND "$<TARGET_FILE:datatoc>" ${file_from} ${file_to} - DEPENDS ${file_from} datatoc) + add_custom_command( + OUTPUT ${file_to} + COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path} + COMMAND "$<TARGET_FILE:datatoc>" ${file_from} ${file_to} + DEPENDS ${file_from} datatoc) - set_source_files_properties(${file_to} PROPERTIES GENERATED TRUE) + set_source_files_properties(${file_to} PROPERTIES GENERATED TRUE) endfunction() # same as above but generates the var name and output automatic. function(data_to_c_simple - file_from - list_to_add - ) + file_from + list_to_add + ) - # remove ../'s - get_filename_component(_file_from ${CMAKE_CURRENT_SOURCE_DIR}/${file_from} REALPATH) - get_filename_component(_file_to ${CMAKE_CURRENT_BINARY_DIR}/${file_from}.c REALPATH) + # remove ../'s + get_filename_component(_file_from ${CMAKE_CURRENT_SOURCE_DIR}/${file_from} REALPATH) + get_filename_component(_file_to ${CMAKE_CURRENT_BINARY_DIR}/${file_from}.c REALPATH) - list(APPEND ${list_to_add} ${_file_to}) - source_group(Generated FILES ${_file_to}) - list(APPEND ${list_to_add} ${file_from}) - set(${list_to_add} ${${list_to_add}} PARENT_SCOPE) + list(APPEND ${list_to_add} ${_file_to}) + source_group(Generated FILES ${_file_to}) + list(APPEND ${list_to_add} ${file_from}) + set(${list_to_add} ${${list_to_add}} PARENT_SCOPE) - get_filename_component(_file_to_path ${_file_to} PATH) + get_filename_component(_file_to_path ${_file_to} PATH) - add_custom_command( - OUTPUT ${_file_to} - COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path} - COMMAND "$<TARGET_FILE:datatoc>" ${_file_from} ${_file_to} - DEPENDS ${_file_from} datatoc) + add_custom_command( + OUTPUT ${_file_to} + COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path} + COMMAND "$<TARGET_FILE:datatoc>" ${_file_from} ${_file_to} + DEPENDS ${_file_from} datatoc) - set_source_files_properties(${_file_to} PROPERTIES GENERATED TRUE) + set_source_files_properties(${_file_to} PROPERTIES GENERATED TRUE) endfunction() # macro for converting pixmap directory to a png and then a c file function(data_to_c_simple_icons - path_from icon_prefix icon_names - list_to_add - ) - - # Conversion steps - # path_from -> _file_from -> _file_to - # foo/*.dat -> foo.png -> foo.png.c - - get_filename_component(_path_from_abs ${path_from} ABSOLUTE) - # remove ../'s - get_filename_component(_file_from ${CMAKE_CURRENT_BINARY_DIR}/${path_from}.png REALPATH) - get_filename_component(_file_to ${CMAKE_CURRENT_BINARY_DIR}/${path_from}.png.c REALPATH) - - list(APPEND ${list_to_add} ${_file_to}) - set(${list_to_add} ${${list_to_add}} PARENT_SCOPE) - - get_filename_component(_file_to_path ${_file_to} PATH) - - # Construct a list of absolute paths from input - set(_icon_files) - foreach(_var ${icon_names}) - list(APPEND _icon_files "${_path_from_abs}/${icon_prefix}${_var}.dat") - endforeach() - - add_custom_command( - OUTPUT ${_file_from} ${_file_to} - COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path} - #COMMAND python3 ${CMAKE_SOURCE_DIR}/source/blender/datatoc/datatoc_icon.py ${_path_from_abs} ${_file_from} - COMMAND "$<TARGET_FILE:datatoc_icon>" ${_path_from_abs} ${_file_from} - COMMAND "$<TARGET_FILE:datatoc>" ${_file_from} ${_file_to} - DEPENDS - ${_icon_files} - datatoc_icon - datatoc - # could be an arg but for now we only create icons depending on UI_icons.h - ${CMAKE_SOURCE_DIR}/source/blender/editors/include/UI_icons.h - ) - - set_source_files_properties(${_file_from} ${_file_to} PROPERTIES GENERATED TRUE) + path_from icon_prefix icon_names + list_to_add + ) + + # Conversion steps + # path_from -> _file_from -> _file_to + # foo/*.dat -> foo.png -> foo.png.c + + get_filename_component(_path_from_abs ${path_from} ABSOLUTE) + # remove ../'s + get_filename_component(_file_from ${CMAKE_CURRENT_BINARY_DIR}/${path_from}.png REALPATH) + get_filename_component(_file_to ${CMAKE_CURRENT_BINARY_DIR}/${path_from}.png.c REALPATH) + + list(APPEND ${list_to_add} ${_file_to}) + set(${list_to_add} ${${list_to_add}} PARENT_SCOPE) + + get_filename_component(_file_to_path ${_file_to} PATH) + + # Construct a list of absolute paths from input + set(_icon_files) + foreach(_var ${icon_names}) + list(APPEND _icon_files "${_path_from_abs}/${icon_prefix}${_var}.dat") + endforeach() + + add_custom_command( + OUTPUT ${_file_from} ${_file_to} + COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path} + #COMMAND python3 ${CMAKE_SOURCE_DIR}/source/blender/datatoc/datatoc_icon.py ${_path_from_abs} ${_file_from} + COMMAND "$<TARGET_FILE:datatoc_icon>" ${_path_from_abs} ${_file_from} + COMMAND "$<TARGET_FILE:datatoc>" ${_file_from} ${_file_to} + DEPENDS + ${_icon_files} + datatoc_icon + datatoc + # could be an arg but for now we only create icons depending on UI_icons.h + ${CMAKE_SOURCE_DIR}/source/blender/editors/include/UI_icons.h + ) + + set_source_files_properties(${_file_from} ${_file_to} PROPERTIES GENERATED TRUE) endfunction() # XXX Not used for now... function(svg_to_png - file_from - file_to - dpi - list_to_add - ) - - # remove ../'s - get_filename_component(_file_from ${CMAKE_CURRENT_SOURCE_DIR}/${file_from} REALPATH) - get_filename_component(_file_to ${CMAKE_CURRENT_SOURCE_DIR}/${file_to} REALPATH) - - list(APPEND ${list_to_add} ${_file_to}) - set(${list_to_add} ${${list_to_add}} PARENT_SCOPE) - - find_program(INKSCAPE_EXE inkscape) - mark_as_advanced(INKSCAPE_EXE) - - if(INKSCAPE_EXE) - if(APPLE) - # in OS X app bundle, the binary is a shim that doesn't take any - # command line arguments, replace it with the actual binary - string(REPLACE "MacOS/Inkscape" "Resources/bin/inkscape" INKSCAPE_REAL_EXE ${INKSCAPE_EXE}) - if(EXISTS "${INKSCAPE_REAL_EXE}") - set(INKSCAPE_EXE ${INKSCAPE_REAL_EXE}) - endif() - endif() - - add_custom_command( - OUTPUT ${_file_to} - COMMAND ${INKSCAPE_EXE} ${_file_from} --export-dpi=${dpi} --without-gui --export-png=${_file_to} - DEPENDS ${_file_from} ${INKSCAPE_EXE} - ) - else() - message(WARNING "Inkscape not found, could not re-generate ${_file_to} from ${_file_from}!") - endif() + file_from + file_to + dpi + list_to_add + ) + + # remove ../'s + get_filename_component(_file_from ${CMAKE_CURRENT_SOURCE_DIR}/${file_from} REALPATH) + get_filename_component(_file_to ${CMAKE_CURRENT_SOURCE_DIR}/${file_to} REALPATH) + + list(APPEND ${list_to_add} ${_file_to}) + set(${list_to_add} ${${list_to_add}} PARENT_SCOPE) + + find_program(INKSCAPE_EXE inkscape) + mark_as_advanced(INKSCAPE_EXE) + + if(INKSCAPE_EXE) + if(APPLE) + # in OS X app bundle, the binary is a shim that doesn't take any + # command line arguments, replace it with the actual binary + string(REPLACE "MacOS/Inkscape" "Resources/bin/inkscape" INKSCAPE_REAL_EXE ${INKSCAPE_EXE}) + if(EXISTS "${INKSCAPE_REAL_EXE}") + set(INKSCAPE_EXE ${INKSCAPE_REAL_EXE}) + endif() + endif() + + add_custom_command( + OUTPUT ${_file_to} + COMMAND ${INKSCAPE_EXE} ${_file_from} --export-dpi=${dpi} --without-gui --export-png=${_file_to} + DEPENDS ${_file_from} ${INKSCAPE_EXE} + ) + else() + message(WARNING "Inkscape not found, could not re-generate ${_file_to} from ${_file_from}!") + endif() endfunction() function(msgfmt_simple - file_from - list_to_add - ) + file_from + list_to_add + ) - # remove ../'s - get_filename_component(_file_from_we ${file_from} NAME_WE) + # remove ../'s + get_filename_component(_file_from_we ${file_from} NAME_WE) - get_filename_component(_file_from ${file_from} REALPATH) - get_filename_component(_file_to ${CMAKE_CURRENT_BINARY_DIR}/${_file_from_we}.mo REALPATH) + get_filename_component(_file_from ${file_from} REALPATH) + get_filename_component(_file_to ${CMAKE_CURRENT_BINARY_DIR}/${_file_from_we}.mo REALPATH) - list(APPEND ${list_to_add} ${_file_to}) - set(${list_to_add} ${${list_to_add}} PARENT_SCOPE) + list(APPEND ${list_to_add} ${_file_to}) + set(${list_to_add} ${${list_to_add}} PARENT_SCOPE) - get_filename_component(_file_to_path ${_file_to} PATH) + get_filename_component(_file_to_path ${_file_to} PATH) - add_custom_command( - OUTPUT ${_file_to} - COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path} - COMMAND "$<TARGET_FILE:msgfmt>" ${_file_from} ${_file_to} - DEPENDS msgfmt ${_file_from}) + add_custom_command( + OUTPUT ${_file_to} + COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path} + COMMAND "$<TARGET_FILE:msgfmt>" ${_file_from} ${_file_to} + DEPENDS msgfmt ${_file_from}) - set_source_files_properties(${_file_to} PROPERTIES GENERATED TRUE) + set_source_files_properties(${_file_to} PROPERTIES GENERATED TRUE) endfunction() function(find_python_package - package - ) - - string(TOUPPER ${package} _upper_package) - - # set but invalid - if((NOT ${PYTHON_${_upper_package}_PATH} STREQUAL "") AND - (NOT ${PYTHON_${_upper_package}_PATH} MATCHES NOTFOUND)) -# if(NOT EXISTS "${PYTHON_${_upper_package}_PATH}/${package}") -# message(WARNING "PYTHON_${_upper_package}_PATH is invalid, ${package} not found in '${PYTHON_${_upper_package}_PATH}' " -# "WITH_PYTHON_INSTALL_${_upper_package} option will be ignored when installing python") -# set(WITH_PYTHON_INSTALL${_upper_package} OFF) -# endif() - # not set, so initialize - else() - string(REPLACE "." ";" _PY_VER_SPLIT "${PYTHON_VERSION}") - list(GET _PY_VER_SPLIT 0 _PY_VER_MAJOR) - - # re-cache - unset(PYTHON_${_upper_package}_PATH CACHE) - find_path(PYTHON_${_upper_package}_PATH - NAMES - ${package} - HINTS - "${PYTHON_LIBPATH}/" - "${PYTHON_LIBPATH}/python${PYTHON_VERSION}/" - "${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/" - PATH_SUFFIXES - site-packages - dist-packages - vendor-packages - NO_DEFAULT_PATH - ) - - if(NOT EXISTS "${PYTHON_${_upper_package}_PATH}") - message(WARNING - "Python package '${package}' path could not be found in:\n" - "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/${package}', " - "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/site-packages/${package}', " - "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/dist-packages/${package}', " - "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/dist-packages/${package}', " - "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/vendor-packages/${package}', " - "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/vendor-packages/${package}', " - "\n" - "The 'WITH_PYTHON_INSTALL_${_upper_package}' option will be ignored when installing Python.\n" - "The build will be usable, only add-ons that depend on this package won't be functional." - ) - set(WITH_PYTHON_INSTALL_${_upper_package} OFF PARENT_SCOPE) - else() - message(STATUS "${package} found at '${PYTHON_${_upper_package}_PATH}'") - endif() - endif() + package + ) + + string(TOUPPER ${package} _upper_package) + + # set but invalid + if((NOT ${PYTHON_${_upper_package}_PATH} STREQUAL "") AND + (NOT ${PYTHON_${_upper_package}_PATH} MATCHES NOTFOUND)) +# if(NOT EXISTS "${PYTHON_${_upper_package}_PATH}/${package}") +# message(WARNING "PYTHON_${_upper_package}_PATH is invalid, ${package} not found in '${PYTHON_${_upper_package}_PATH}' " +# "WITH_PYTHON_INSTALL_${_upper_package} option will be ignored when installing python") +# set(WITH_PYTHON_INSTALL${_upper_package} OFF) +# endif() + # not set, so initialize + else() + string(REPLACE "." ";" _PY_VER_SPLIT "${PYTHON_VERSION}") + list(GET _PY_VER_SPLIT 0 _PY_VER_MAJOR) + + # re-cache + unset(PYTHON_${_upper_package}_PATH CACHE) + find_path(PYTHON_${_upper_package}_PATH + NAMES + ${package} + HINTS + "${PYTHON_LIBPATH}/" + "${PYTHON_LIBPATH}/python${PYTHON_VERSION}/" + "${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/" + PATH_SUFFIXES + site-packages + dist-packages + vendor-packages + NO_DEFAULT_PATH + ) + + if(NOT EXISTS "${PYTHON_${_upper_package}_PATH}") + message(WARNING + "Python package '${package}' path could not be found in:\n" + "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/${package}', " + "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/site-packages/${package}', " + "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/dist-packages/${package}', " + "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/dist-packages/${package}', " + "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/vendor-packages/${package}', " + "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/vendor-packages/${package}', " + "\n" + "The 'WITH_PYTHON_INSTALL_${_upper_package}' option will be ignored when installing Python.\n" + "The build will be usable, only add-ons that depend on this package won't be functional." + ) + set(WITH_PYTHON_INSTALL_${_upper_package} OFF PARENT_SCOPE) + else() + message(STATUS "${package} found at '${PYTHON_${_upper_package}_PATH}'") + endif() + endif() endfunction() # like Python's 'print(dir())' function(print_all_vars) - get_cmake_property(_vars VARIABLES) - foreach(_var ${_vars}) - message("${_var}=${${_var}}") - endforeach() + get_cmake_property(_vars VARIABLES) + foreach(_var ${_vars}) + message("${_var}=${${_var}}") + endforeach() endfunction() macro(openmp_delayload - projectname - ) - if(MSVC) - if(WITH_OPENMP) - if(MSVC_VERSION EQUAL 1800) - set(OPENMP_DLL_NAME "vcomp120") - else() - set(OPENMP_DLL_NAME "vcomp140") - endif() - SET_TARGET_PROPERTIES(${projectname} PROPERTIES LINK_FLAGS_RELEASE "/DELAYLOAD:${OPENMP_DLL_NAME}.dll delayimp.lib") - SET_TARGET_PROPERTIES(${projectname} PROPERTIES LINK_FLAGS_DEBUG "/DELAYLOAD:${OPENMP_DLL_NAME}d.dll delayimp.lib") - SET_TARGET_PROPERTIES(${projectname} PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/DELAYLOAD:${OPENMP_DLL_NAME}.dll delayimp.lib") - SET_TARGET_PROPERTIES(${projectname} PROPERTIES LINK_FLAGS_MINSIZEREL "/DELAYLOAD:${OPENMP_DLL_NAME}.dll delayimp.lib") - endif() - endif() + projectname + ) + if(MSVC) + if(WITH_OPENMP) + if(MSVC_VERSION EQUAL 1800) + set(OPENMP_DLL_NAME "vcomp120") + else() + set(OPENMP_DLL_NAME "vcomp140") + endif() + SET_TARGET_PROPERTIES(${projectname} PROPERTIES LINK_FLAGS_RELEASE "/DELAYLOAD:${OPENMP_DLL_NAME}.dll delayimp.lib") + SET_TARGET_PROPERTIES(${projectname} PROPERTIES LINK_FLAGS_DEBUG "/DELAYLOAD:${OPENMP_DLL_NAME}d.dll delayimp.lib") + SET_TARGET_PROPERTIES(${projectname} PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/DELAYLOAD:${OPENMP_DLL_NAME}.dll delayimp.lib") + SET_TARGET_PROPERTIES(${projectname} PROPERTIES LINK_FLAGS_MINSIZEREL "/DELAYLOAD:${OPENMP_DLL_NAME}.dll delayimp.lib") + endif() + endif() endmacro() macro(WINDOWS_SIGN_TARGET target) - if(WITH_WINDOWS_CODESIGN) - if(!SIGNTOOL_EXE) - error("Codesigning is enabled, but signtool is not found") - else() - if(WINDOWS_CODESIGN_PFX_PASSWORD) - set(CODESIGNPASSWORD /p ${WINDOWS_CODESIGN_PFX_PASSWORD}) - else() - if($ENV{PFXPASSWORD}) - set(CODESIGNPASSWORD /p $ENV{PFXPASSWORD}) - else() - message(FATAL_ERROR "WITH_WINDOWS_CODESIGN is on but WINDOWS_CODESIGN_PFX_PASSWORD not set, and environment variable PFXPASSWORD not found, unable to sign code.") - endif() - endif() - add_custom_command(TARGET ${target} - POST_BUILD - COMMAND ${SIGNTOOL_EXE} sign /f ${WINDOWS_CODESIGN_PFX} ${CODESIGNPASSWORD} $<TARGET_FILE:${target}> - VERBATIM - ) - endif() - endif() + if(WITH_WINDOWS_CODESIGN) + if(!SIGNTOOL_EXE) + error("Codesigning is enabled, but signtool is not found") + else() + if(WINDOWS_CODESIGN_PFX_PASSWORD) + set(CODESIGNPASSWORD /p ${WINDOWS_CODESIGN_PFX_PASSWORD}) + else() + if($ENV{PFXPASSWORD}) + set(CODESIGNPASSWORD /p $ENV{PFXPASSWORD}) + else() + message(FATAL_ERROR "WITH_WINDOWS_CODESIGN is on but WINDOWS_CODESIGN_PFX_PASSWORD not set, and environment variable PFXPASSWORD not found, unable to sign code.") + endif() + endif() + add_custom_command(TARGET ${target} + POST_BUILD + COMMAND ${SIGNTOOL_EXE} sign /f ${WINDOWS_CODESIGN_PFX} ${CODESIGNPASSWORD} $<TARGET_FILE:${target}> + VERBATIM + ) + endif() + endif() endmacro() diff --git a/build_files/cmake/packaging.cmake b/build_files/cmake/packaging.cmake index c086e8778c5..06a97fc9abb 100644 --- a/build_files/cmake/packaging.cmake +++ b/build_files/cmake/packaging.cmake @@ -23,15 +23,15 @@ SET(CPACK_PACKAGE_VERSION_PATCH "${PATCH_VERSION}") # Get the build revision, note that this can get out-of-sync, so for packaging run cmake first. set(MY_WC_HASH "unknown") if(EXISTS ${CMAKE_SOURCE_DIR}/.git/) - find_package(Git) - if(GIT_FOUND) - # message(STATUS "Found Git: ${GIT_EXECUTABLE}") - execute_process(COMMAND git rev-parse --short=12 HEAD - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - OUTPUT_VARIABLE MY_WC_HASH - OUTPUT_STRIP_TRAILING_WHITESPACE - ERROR_QUIET) - endif() + find_package(Git) + if(GIT_FOUND) + # message(STATUS "Found Git: ${GIT_EXECUTABLE}") + execute_process(COMMAND git rev-parse --short=12 HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE MY_WC_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET) + endif() endif() set(BUILD_REV ${MY_WC_HASH}) unset(MY_WC_HASH) @@ -41,61 +41,61 @@ unset(MY_WC_HASH) execute_process(COMMAND date "+%Y%m%d" OUTPUT_VARIABLE CPACK_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER) if(MSVC) - if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") - set(PACKAGE_ARCH windows64) - else() - set(PACKAGE_ARCH windows32) - endif() + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + set(PACKAGE_ARCH windows64) + else() + set(PACKAGE_ARCH windows32) + endif() else(MSVC) - set(PACKAGE_ARCH ${CMAKE_SYSTEM_PROCESSOR}) + set(PACKAGE_ARCH ${CMAKE_SYSTEM_PROCESSOR}) endif() if(CPACK_OVERRIDE_PACKAGENAME) - set(CPACK_PACKAGE_FILE_NAME ${CPACK_OVERRIDE_PACKAGENAME}-${PACKAGE_ARCH}) + set(CPACK_PACKAGE_FILE_NAME ${CPACK_OVERRIDE_PACKAGENAME}-${PACKAGE_ARCH}) else() - set(CPACK_PACKAGE_FILE_NAME ${PROJECT_NAME_LOWER}-${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-git${CPACK_DATE}.${BUILD_REV}-${PACKAGE_ARCH}) + set(CPACK_PACKAGE_FILE_NAME ${PROJECT_NAME_LOWER}-${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-git${CPACK_DATE}.${BUILD_REV}-${PACKAGE_ARCH}) endif() if(CMAKE_SYSTEM_NAME MATCHES "Linux") - # RPM packages - include(build_files/cmake/RpmBuild.cmake) - if(RPMBUILD_FOUND) - set(CPACK_GENERATOR "RPM") - set(CPACK_RPM_PACKAGE_RELEASE "git${CPACK_DATE}.${BUILD_REV}") - set(CPACK_SET_DESTDIR "true") - set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_DESCRIPTION}") - set(CPACK_PACKAGE_RELOCATABLE "false") - set(CPACK_RPM_PACKAGE_LICENSE "GPLv2+ and Apache 2.0") - set(CPACK_RPM_PACKAGE_GROUP "Amusements/Multimedia") - set(CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_SOURCE_DIR}/build_files/package_spec/rpm/blender.spec.in") - endif() + # RPM packages + include(build_files/cmake/RpmBuild.cmake) + if(RPMBUILD_FOUND) + set(CPACK_GENERATOR "RPM") + set(CPACK_RPM_PACKAGE_RELEASE "git${CPACK_DATE}.${BUILD_REV}") + set(CPACK_SET_DESTDIR "true") + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_DESCRIPTION}") + set(CPACK_PACKAGE_RELOCATABLE "false") + set(CPACK_RPM_PACKAGE_LICENSE "GPLv2+ and Apache 2.0") + set(CPACK_RPM_PACKAGE_GROUP "Amusements/Multimedia") + set(CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_SOURCE_DIR}/build_files/package_spec/rpm/blender.spec.in") + endif() endif() # Mac Bundle if(APPLE) - set(CPACK_GENERATOR "DragNDrop") + set(CPACK_GENERATOR "DragNDrop") - # Libraries are bundled directly - set(CPACK_COMPONENT_LIBRARIES_HIDDEN TRUE) + # Libraries are bundled directly + set(CPACK_COMPONENT_LIBRARIES_HIDDEN TRUE) endif() if(WIN32) - set(CPACK_PACKAGE_INSTALL_DIRECTORY "Blender Foundation/Blender") - set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "Blender Foundation/Blender") + set(CPACK_PACKAGE_INSTALL_DIRECTORY "Blender Foundation/Blender") + set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "Blender Foundation/Blender") - set(CPACK_NSIS_MUI_ICON ${CMAKE_SOURCE_DIR}/release/windows/icons/winblender.ico) - set(CPACK_NSIS_COMPRESSOR "/SOLID lzma") + set(CPACK_NSIS_MUI_ICON ${CMAKE_SOURCE_DIR}/release/windows/icons/winblender.ico) + set(CPACK_NSIS_COMPRESSOR "/SOLID lzma") - set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/release/text/GPL3-license.txt) - set(CPACK_WIX_PRODUCT_ICON ${CMAKE_SOURCE_DIR}/release/windows/icons/winblender.ico) - set(CPACK_WIX_UPGRADE_GUID "B767E4FD-7DE7-4094-B051-3AE62E13A17A") + set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/release/text/GPL3-license.txt) + set(CPACK_WIX_PRODUCT_ICON ${CMAKE_SOURCE_DIR}/release/windows/icons/winblender.ico) + set(CPACK_WIX_UPGRADE_GUID "B767E4FD-7DE7-4094-B051-3AE62E13A17A") - set(CPACK_WIX_TEMPLATE ${LIBDIR}/package/installer_wix/WIX.template) - set(CPACK_WIX_UI_BANNER ${LIBDIR}/package/installer_wix/WIX_UI_BANNER.bmp) - set(CPACK_WIX_UI_DIALOG ${LIBDIR}/package/installer_wix/WIX_UI_DIALOG.bmp) + set(CPACK_WIX_TEMPLATE ${LIBDIR}/package/installer_wix/WIX.template) + set(CPACK_WIX_UI_BANNER ${LIBDIR}/package/installer_wix/WIX_UI_BANNER.bmp) + set(CPACK_WIX_UI_DIALOG ${LIBDIR}/package/installer_wix/WIX_UI_DIALOG.bmp) - #force lzma instead of deflate - set(CPACK_WIX_LIGHT_EXTRA_FLAGS -dcl:high) + #force lzma instead of deflate + set(CPACK_WIX_LIGHT_EXTRA_FLAGS -dcl:high) endif() set(CPACK_PACKAGE_EXECUTABLES "blender" "blender") @@ -106,30 +106,30 @@ include(CPack) # Target for build_archive.py script, to automatically pass along # version, revision, platform, build directory macro(add_package_archive packagename extension) - set(build_archive python ${CMAKE_SOURCE_DIR}/build_files/package_spec/build_archive.py) - set(package_output ${CMAKE_BINARY_DIR}/release/${packagename}.${extension}) + set(build_archive python ${CMAKE_SOURCE_DIR}/build_files/package_spec/build_archive.py) + set(package_output ${CMAKE_BINARY_DIR}/release/${packagename}.${extension}) - add_custom_target(package_archive DEPENDS ${package_output}) + add_custom_target(package_archive DEPENDS ${package_output}) - add_custom_command( - OUTPUT ${package_output} - COMMAND ${build_archive} ${packagename} ${extension} bin release - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) - unset(build_archive) - unset(package_output) + add_custom_command( + OUTPUT ${package_output} + COMMAND ${build_archive} ${packagename} ${extension} bin release + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) + unset(build_archive) + unset(package_output) endmacro() if(APPLE) - add_package_archive( - "${PROJECT_NAME}-${BLENDER_VERSION}-${BUILD_REV}-OSX-${CMAKE_OSX_ARCHITECTURES}" - "zip") + add_package_archive( + "${PROJECT_NAME}-${BLENDER_VERSION}-${BUILD_REV}-OSX-${CMAKE_OSX_ARCHITECTURES}" + "zip") elseif(UNIX) - # platform name could be tweaked, to include glibc, and ensure processor is correct (i386 vs i686) - string(TOLOWER ${CMAKE_SYSTEM_NAME} PACKAGE_SYSTEM_NAME) + # platform name could be tweaked, to include glibc, and ensure processor is correct (i386 vs i686) + string(TOLOWER ${CMAKE_SYSTEM_NAME} PACKAGE_SYSTEM_NAME) - add_package_archive( - "${PROJECT_NAME}-${BLENDER_VERSION}-${BUILD_REV}-${PACKAGE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}" - "tar.bz2") + add_package_archive( + "${PROJECT_NAME}-${BLENDER_VERSION}-${BUILD_REV}-${PACKAGE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}" + "tar.bz2") endif() unset(MAJOR_VERSION) diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake index 4047a8f134d..3fd07f5b9c5 100644 --- a/build_files/cmake/platform/platform_apple.cmake +++ b/build_files/cmake/platform/platform_apple.cmake @@ -27,102 +27,102 @@ macro(find_package_wrapper) endmacro() if(NOT DEFINED LIBDIR) - set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin) - # Prefer lib directory paths - file(GLOB LIB_SUBDIRS ${LIBDIR}/*) - set(CMAKE_PREFIX_PATH ${LIB_SUBDIRS}) + set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin) + # Prefer lib directory paths + file(GLOB LIB_SUBDIRS ${LIBDIR}/*) + set(CMAKE_PREFIX_PATH ${LIB_SUBDIRS}) else() - message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}") + message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}") endif() if(NOT EXISTS "${LIBDIR}/") - message(FATAL_ERROR "Mac OSX requires pre-compiled libs at: '${LIBDIR}'") + message(FATAL_ERROR "Mac OSX requires pre-compiled libs at: '${LIBDIR}'") endif() if(WITH_OPENAL) - find_package(OpenAL) - if(OPENAL_FOUND) - set(WITH_OPENAL ON) - else() - set(WITH_OPENAL OFF) - endif() + find_package(OpenAL) + if(OPENAL_FOUND) + set(WITH_OPENAL ON) + else() + set(WITH_OPENAL OFF) + endif() endif() if(WITH_ALEMBIC) - set(ALEMBIC ${LIBDIR}/alembic) - set(ALEMBIC_INCLUDE_DIR ${ALEMBIC}/include) - set(ALEMBIC_INCLUDE_DIRS ${ALEMBIC_INCLUDE_DIR}) - set(ALEMBIC_LIBPATH ${ALEMBIC}/lib) - set(ALEMBIC_LIBRARIES Alembic) - set(ALEMBIC_FOUND ON) + set(ALEMBIC ${LIBDIR}/alembic) + set(ALEMBIC_INCLUDE_DIR ${ALEMBIC}/include) + set(ALEMBIC_INCLUDE_DIRS ${ALEMBIC_INCLUDE_DIR}) + set(ALEMBIC_LIBPATH ${ALEMBIC}/lib) + set(ALEMBIC_LIBRARIES Alembic) + set(ALEMBIC_FOUND ON) endif() if(WITH_OPENSUBDIV) - set(OPENSUBDIV ${LIBDIR}/opensubdiv) - set(OPENSUBDIV_LIBPATH ${OPENSUBDIV}/lib) - find_library(OSD_LIB_CPU NAMES osdCPU PATHS ${OPENSUBDIV_LIBPATH}) - find_library(OSD_LIB_GPU NAMES osdGPU PATHS ${OPENSUBDIV_LIBPATH}) - set(OPENSUBDIV_INCLUDE_DIR ${OPENSUBDIV}/include) - set(OPENSUBDIV_INCLUDE_DIRS ${OPENSUBDIV_INCLUDE_DIR}) - list(APPEND OPENSUBDIV_LIBRARIES ${OSD_LIB_CPU} ${OSD_LIB_GPU}) + set(OPENSUBDIV ${LIBDIR}/opensubdiv) + set(OPENSUBDIV_LIBPATH ${OPENSUBDIV}/lib) + find_library(OSD_LIB_CPU NAMES osdCPU PATHS ${OPENSUBDIV_LIBPATH}) + find_library(OSD_LIB_GPU NAMES osdGPU PATHS ${OPENSUBDIV_LIBPATH}) + set(OPENSUBDIV_INCLUDE_DIR ${OPENSUBDIV}/include) + set(OPENSUBDIV_INCLUDE_DIRS ${OPENSUBDIV_INCLUDE_DIR}) + list(APPEND OPENSUBDIV_LIBRARIES ${OSD_LIB_CPU} ${OSD_LIB_GPU}) endif() if(WITH_JACK) - find_library(JACK_FRAMEWORK - NAMES jackmp - ) - set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers) - if(NOT JACK_FRAMEWORK) - set(WITH_JACK OFF) - endif() + find_library(JACK_FRAMEWORK + NAMES jackmp + ) + set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers) + if(NOT JACK_FRAMEWORK) + set(WITH_JACK OFF) + endif() endif() if(WITH_CODEC_SNDFILE) - set(LIBSNDFILE ${LIBDIR}/sndfile) - set(LIBSNDFILE_INCLUDE_DIRS ${LIBSNDFILE}/include) - set(LIBSNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc) - set(LIBSNDFILE_LIBPATH ${LIBSNDFILE}/lib ${LIBDIR}/ffmpeg/lib) # TODO, deprecate + set(LIBSNDFILE ${LIBDIR}/sndfile) + set(LIBSNDFILE_INCLUDE_DIRS ${LIBSNDFILE}/include) + set(LIBSNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc) + set(LIBSNDFILE_LIBPATH ${LIBSNDFILE}/lib ${LIBDIR}/ffmpeg/lib) # TODO, deprecate endif() if(WITH_PYTHON) - # we use precompiled libraries for py 3.7 and up by default - set(PYTHON_VERSION 3.7) - if(NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK) - # normally cached but not since we include them with blender - set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m") - set(PYTHON_EXECUTABLE "${LIBDIR}/python/bin/python${PYTHON_VERSION}m") - set(PYTHON_LIBRARY ${LIBDIR}/python/lib/libpython${PYTHON_VERSION}m.a) - set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}") - # set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled - else() - # module must be compiled against Python framework - set(_py_framework "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}") - - set(PYTHON_INCLUDE_DIR "${_py_framework}/include/python${PYTHON_VERSION}m") - set(PYTHON_EXECUTABLE "${_py_framework}/bin/python${PYTHON_VERSION}m") - set(PYTHON_LIBPATH "${_py_framework}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}m") - #set(PYTHON_LIBRARY python${PYTHON_VERSION}) - #set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework Python") # won't build with this enabled - - unset(_py_framework) - endif() - - # uncached vars - set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}") - set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}") - - # needed for Audaspace, numpy is installed into python site-packages - set(PYTHON_NUMPY_INCLUDE_DIRS "${PYTHON_LIBPATH}/site-packages/numpy/core/include") - - if(NOT EXISTS "${PYTHON_EXECUTABLE}") - message(FATAL_ERROR "Python executable missing: ${PYTHON_EXECUTABLE}") - endif() + # we use precompiled libraries for py 3.7 and up by default + set(PYTHON_VERSION 3.7) + if(NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK) + # normally cached but not since we include them with blender + set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m") + set(PYTHON_EXECUTABLE "${LIBDIR}/python/bin/python${PYTHON_VERSION}m") + set(PYTHON_LIBRARY ${LIBDIR}/python/lib/libpython${PYTHON_VERSION}m.a) + set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}") + # set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled + else() + # module must be compiled against Python framework + set(_py_framework "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}") + + set(PYTHON_INCLUDE_DIR "${_py_framework}/include/python${PYTHON_VERSION}m") + set(PYTHON_EXECUTABLE "${_py_framework}/bin/python${PYTHON_VERSION}m") + set(PYTHON_LIBPATH "${_py_framework}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}m") + #set(PYTHON_LIBRARY python${PYTHON_VERSION}) + #set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework Python") # won't build with this enabled + + unset(_py_framework) + endif() + + # uncached vars + set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}") + set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}") + + # needed for Audaspace, numpy is installed into python site-packages + set(PYTHON_NUMPY_INCLUDE_DIRS "${PYTHON_LIBPATH}/site-packages/numpy/core/include") + + if(NOT EXISTS "${PYTHON_EXECUTABLE}") + message(FATAL_ERROR "Python executable missing: ${PYTHON_EXECUTABLE}") + endif() endif() if(WITH_FFTW3) - set(FFTW3 ${LIBDIR}/fftw3) - set(FFTW3_INCLUDE_DIRS ${FFTW3}/include) - set(FFTW3_LIBRARIES fftw3) - set(FFTW3_LIBPATH ${FFTW3}/lib) + set(FFTW3 ${LIBDIR}/fftw3) + set(FFTW3_INCLUDE_DIRS ${FFTW3}/include) + set(FFTW3_LIBRARIES fftw3) + set(FFTW3_LIBPATH ${FFTW3}/lib) endif() set(PNG_LIBRARIES png) @@ -138,101 +138,101 @@ set(FREETYPE_LIBPATH ${FREETYPE}/lib) set(FREETYPE_LIBRARY freetype) if(WITH_IMAGE_OPENEXR) - set(OPENEXR ${LIBDIR}/openexr) - set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include) - set(OPENEXR_INCLUDE_DIRS ${OPENEXR_INCLUDE_DIR} ${OPENEXR}/include/OpenEXR) - set(OPENEXR_LIBRARIES - Iex - Half - IlmImf - Imath - IlmThread) - set(OPENEXR_LIBPATH ${OPENEXR}/lib) + set(OPENEXR ${LIBDIR}/openexr) + set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include) + set(OPENEXR_INCLUDE_DIRS ${OPENEXR_INCLUDE_DIR} ${OPENEXR}/include/OpenEXR) + set(OPENEXR_LIBRARIES + Iex + Half + IlmImf + Imath + IlmThread) + set(OPENEXR_LIBPATH ${OPENEXR}/lib) endif() if(WITH_CODEC_FFMPEG) - set(FFMPEG ${LIBDIR}/ffmpeg) - set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include) - set(FFMPEG_LIBRARIES - avcodec avdevice avformat avutil - mp3lame swscale x264 xvidcore - theora theoradec theoraenc - vorbis vorbisenc vorbisfile ogg - vpx swresample) - set(FFMPEG_LIBPATH ${FFMPEG}/lib) + set(FFMPEG ${LIBDIR}/ffmpeg) + set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include) + set(FFMPEG_LIBRARIES + avcodec avdevice avformat avutil + mp3lame swscale x264 xvidcore + theora theoradec theoraenc + vorbis vorbisenc vorbisfile ogg + vpx swresample) + set(FFMPEG_LIBPATH ${FFMPEG}/lib) endif() if(WITH_IMAGE_OPENJPEG OR WITH_CODEC_FFMPEG) - # use openjpeg from libdir that is linked into ffmpeg - set(OPENJPEG ${LIBDIR}/openjpeg) - set(OPENJPEG_INCLUDE_DIRS ${OPENJPEG}/include) - set(OPENJPEG_LIBRARIES ${OPENJPEG}/lib/libopenjp2.a) + # use openjpeg from libdir that is linked into ffmpeg + set(OPENJPEG ${LIBDIR}/openjpeg) + set(OPENJPEG_INCLUDE_DIRS ${OPENJPEG}/include) + set(OPENJPEG_LIBRARIES ${OPENJPEG}/lib/libopenjp2.a) endif() find_library(SYSTEMSTUBS_LIBRARY - NAMES - SystemStubs - PATHS + NAMES + SystemStubs + PATHS ) mark_as_advanced(SYSTEMSTUBS_LIBRARY) if(SYSTEMSTUBS_LIBRARY) - list(APPEND PLATFORM_LINKLIBS SystemStubs) + list(APPEND PLATFORM_LINKLIBS SystemStubs) endif() set(PLATFORM_CFLAGS "-pipe -funsigned-char") set(PLATFORM_LINKFLAGS - "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio" + "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio" ) list(APPEND PLATFORM_LINKLIBS c++) if(WITH_JACK) - set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework jackmp") + set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework jackmp") endif() if(WITH_PYTHON_MODULE OR WITH_PYTHON_FRAMEWORK) - # force cmake to link right framework - set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/Python") + # force cmake to link right framework + set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/Python") endif() if(WITH_OPENCOLLADA) - set(OPENCOLLADA ${LIBDIR}/opencollada) - - set(OPENCOLLADA_INCLUDE_DIRS - ${LIBDIR}/opencollada/include/COLLADAStreamWriter - ${LIBDIR}/opencollada/include/COLLADABaseUtils - ${LIBDIR}/opencollada/include/COLLADAFramework - ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader - ${LIBDIR}/opencollada/include/GeneratedSaxParser - ) - - set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib) - set(OPENCOLLADA_LIBRARIES - OpenCOLLADASaxFrameworkLoader - -lOpenCOLLADAFramework - -lOpenCOLLADABaseUtils - -lOpenCOLLADAStreamWriter - -lMathMLSolver - -lGeneratedSaxParser - -lbuffer -lftoa -lUTF - ${OPENCOLLADA_LIBPATH}/libxml2.a - ) - # PCRE is bundled with openCollada - #set(PCRE ${LIBDIR}/pcre) - #set(PCRE_LIBPATH ${PCRE}/lib) - set(PCRE_LIBRARIES pcre) - # libxml2 is used - #set(EXPAT ${LIBDIR}/expat) - #set(EXPAT_LIBPATH ${EXPAT}/lib) - set(EXPAT_LIB) + set(OPENCOLLADA ${LIBDIR}/opencollada) + + set(OPENCOLLADA_INCLUDE_DIRS + ${LIBDIR}/opencollada/include/COLLADAStreamWriter + ${LIBDIR}/opencollada/include/COLLADABaseUtils + ${LIBDIR}/opencollada/include/COLLADAFramework + ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader + ${LIBDIR}/opencollada/include/GeneratedSaxParser + ) + + set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib) + set(OPENCOLLADA_LIBRARIES + OpenCOLLADASaxFrameworkLoader + -lOpenCOLLADAFramework + -lOpenCOLLADABaseUtils + -lOpenCOLLADAStreamWriter + -lMathMLSolver + -lGeneratedSaxParser + -lbuffer -lftoa -lUTF + ${OPENCOLLADA_LIBPATH}/libxml2.a + ) + # PCRE is bundled with openCollada + #set(PCRE ${LIBDIR}/pcre) + #set(PCRE_LIBPATH ${PCRE}/lib) + set(PCRE_LIBRARIES pcre) + # libxml2 is used + #set(EXPAT ${LIBDIR}/expat) + #set(EXPAT_LIBPATH ${EXPAT}/lib) + set(EXPAT_LIB) endif() if(WITH_SDL) - set(SDL ${LIBDIR}/sdl) - set(SDL_INCLUDE_DIR ${SDL}/include) - set(SDL_LIBRARY SDL2) - set(SDL_LIBPATH ${SDL}/lib) - set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework ForceFeedback") + set(SDL ${LIBDIR}/sdl) + set(SDL_INCLUDE_DIR ${SDL}/include) + set(SDL_LIBRARY SDL2) + set(SDL_LIBPATH ${SDL}/lib) + set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework ForceFeedback") endif() set(PNG "${LIBDIR}/png") @@ -244,166 +244,166 @@ set(JPEG_INCLUDE_DIR "${JPEG}/include") set(JPEG_LIBPATH ${JPEG}/lib) if(WITH_IMAGE_TIFF) - set(TIFF ${LIBDIR}/tiff) - set(TIFF_INCLUDE_DIR ${TIFF}/include) - set(TIFF_LIBRARY tiff) - set(TIFF_LIBPATH ${TIFF}/lib) + set(TIFF ${LIBDIR}/tiff) + set(TIFF_INCLUDE_DIR ${TIFF}/include) + set(TIFF_LIBRARY tiff) + set(TIFF_LIBPATH ${TIFF}/lib) endif() if(WITH_BOOST) - set(BOOST ${LIBDIR}/boost) - set(BOOST_INCLUDE_DIR ${BOOST}/include) - set(BOOST_POSTFIX) - set(BOOST_LIBRARIES - boost_date_time${BOOST_POSTFIX} - boost_filesystem${BOOST_POSTFIX} - boost_regex${BOOST_POSTFIX} - boost_system${BOOST_POSTFIX} - boost_thread${BOOST_POSTFIX} - boost_wave${BOOST_POSTFIX} - ) - if(WITH_INTERNATIONAL) - list(APPEND BOOST_LIBRARIES boost_locale${BOOST_POSTFIX}) - endif() - if(WITH_CYCLES_NETWORK) - list(APPEND BOOST_LIBRARIES boost_serialization${BOOST_POSTFIX}) - endif() - if(WITH_OPENVDB) - list(APPEND BOOST_LIBRARIES boost_iostreams${BOOST_POSTFIX}) - endif() - set(BOOST_LIBPATH ${BOOST}/lib) - set(BOOST_DEFINITIONS) + set(BOOST ${LIBDIR}/boost) + set(BOOST_INCLUDE_DIR ${BOOST}/include) + set(BOOST_POSTFIX) + set(BOOST_LIBRARIES + boost_date_time${BOOST_POSTFIX} + boost_filesystem${BOOST_POSTFIX} + boost_regex${BOOST_POSTFIX} + boost_system${BOOST_POSTFIX} + boost_thread${BOOST_POSTFIX} + boost_wave${BOOST_POSTFIX} + ) + if(WITH_INTERNATIONAL) + list(APPEND BOOST_LIBRARIES boost_locale${BOOST_POSTFIX}) + endif() + if(WITH_CYCLES_NETWORK) + list(APPEND BOOST_LIBRARIES boost_serialization${BOOST_POSTFIX}) + endif() + if(WITH_OPENVDB) + list(APPEND BOOST_LIBRARIES boost_iostreams${BOOST_POSTFIX}) + endif() + set(BOOST_LIBPATH ${BOOST}/lib) + set(BOOST_DEFINITIONS) endif() if(WITH_INTERNATIONAL OR WITH_CODEC_FFMPEG) - set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale and ffmpeg needs it ! + set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale and ffmpeg needs it ! endif() if(WITH_OPENIMAGEIO) - set(OPENIMAGEIO ${LIBDIR}/openimageio) - set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include) - set(OPENIMAGEIO_LIBRARIES - ${OPENIMAGEIO}/lib/libOpenImageIO.a - ${PNG_LIBRARIES} - ${JPEG_LIBRARIES} - ${TIFF_LIBRARY} - ${OPENEXR_LIBRARIES} - ${OPENJPEG_LIBRARIES} - ${ZLIB_LIBRARIES} - ) - set(OPENIMAGEIO_LIBPATH - ${OPENIMAGEIO}/lib - ${JPEG_LIBPATH} - ${PNG_LIBPATH} - ${TIFF_LIBPATH} - ${OPENEXR_LIBPATH} - ${ZLIB_LIBPATH} - ) - set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD") - set(OPENIMAGEIO_IDIFF "${LIBDIR}/openimageio/bin/idiff") + set(OPENIMAGEIO ${LIBDIR}/openimageio) + set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include) + set(OPENIMAGEIO_LIBRARIES + ${OPENIMAGEIO}/lib/libOpenImageIO.a + ${PNG_LIBRARIES} + ${JPEG_LIBRARIES} + ${TIFF_LIBRARY} + ${OPENEXR_LIBRARIES} + ${OPENJPEG_LIBRARIES} + ${ZLIB_LIBRARIES} + ) + set(OPENIMAGEIO_LIBPATH + ${OPENIMAGEIO}/lib + ${JPEG_LIBPATH} + ${PNG_LIBPATH} + ${TIFF_LIBPATH} + ${OPENEXR_LIBPATH} + ${ZLIB_LIBPATH} + ) + set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD") + set(OPENIMAGEIO_IDIFF "${LIBDIR}/openimageio/bin/idiff") endif() if(WITH_OPENCOLORIO) - set(OPENCOLORIO ${LIBDIR}/opencolorio) - set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include) - set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp) - set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib) + set(OPENCOLORIO ${LIBDIR}/opencolorio) + set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include) + set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp) + set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib) endif() if(WITH_OPENVDB) - set(OPENVDB ${LIBDIR}/openvdb) - set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include) - set(TBB_INCLUDE_DIRS ${LIBDIR}/tbb/include) - set(TBB_LIBRARIES ${LIBDIR}/tbb/lib/libtbb.a) - set(OPENVDB_LIBRARIES openvdb blosc ${TBB_LIBRARIES}) - set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib) - set(OPENVDB_DEFINITIONS) + set(OPENVDB ${LIBDIR}/openvdb) + set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include) + set(TBB_INCLUDE_DIRS ${LIBDIR}/tbb/include) + set(TBB_LIBRARIES ${LIBDIR}/tbb/lib/libtbb.a) + set(OPENVDB_LIBRARIES openvdb blosc ${TBB_LIBRARIES}) + set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib) + set(OPENVDB_DEFINITIONS) endif() if(WITH_LLVM) - set(LLVM_ROOT_DIR ${LIBDIR}/llvm) - set(LLVM_VERSION 3.4) - if(EXISTS "${LLVM_ROOT_DIR}/bin/llvm-config") - set(LLVM_CONFIG "${LLVM_ROOT_DIR}/bin/llvm-config") - else() - set(LLVM_CONFIG llvm-config) - endif() - execute_process(COMMAND ${LLVM_CONFIG} --version - OUTPUT_VARIABLE LLVM_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${LLVM_CONFIG} --prefix - OUTPUT_VARIABLE LLVM_ROOT_DIR - OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND ${LLVM_CONFIG} --libdir - OUTPUT_VARIABLE LLVM_LIBPATH - OUTPUT_STRIP_TRAILING_WHITESPACE) - find_library(LLVM_LIBRARY - NAMES LLVMAnalysis # first of a whole bunch of libs to get - PATHS ${LLVM_LIBPATH}) - - if(LLVM_LIBRARY AND LLVM_ROOT_DIR AND LLVM_LIBPATH) - if(LLVM_STATIC) - # if static LLVM libraries were requested, use llvm-config to generate - # the list of what libraries we need, and substitute that in the right - # way for LLVM_LIBRARY. - execute_process(COMMAND ${LLVM_CONFIG} --libfiles - OUTPUT_VARIABLE LLVM_LIBRARY - OUTPUT_STRIP_TRAILING_WHITESPACE) - string(REPLACE ".a /" ".a;/" LLVM_LIBRARY ${LLVM_LIBRARY}) - else() - set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -lLLVM-3.4") - endif() - else() - message(FATAL_ERROR "LLVM not found.") - endif() + set(LLVM_ROOT_DIR ${LIBDIR}/llvm) + set(LLVM_VERSION 3.4) + if(EXISTS "${LLVM_ROOT_DIR}/bin/llvm-config") + set(LLVM_CONFIG "${LLVM_ROOT_DIR}/bin/llvm-config") + else() + set(LLVM_CONFIG llvm-config) + endif() + execute_process(COMMAND ${LLVM_CONFIG} --version + OUTPUT_VARIABLE LLVM_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${LLVM_CONFIG} --prefix + OUTPUT_VARIABLE LLVM_ROOT_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND ${LLVM_CONFIG} --libdir + OUTPUT_VARIABLE LLVM_LIBPATH + OUTPUT_STRIP_TRAILING_WHITESPACE) + find_library(LLVM_LIBRARY + NAMES LLVMAnalysis # first of a whole bunch of libs to get + PATHS ${LLVM_LIBPATH}) + + if(LLVM_LIBRARY AND LLVM_ROOT_DIR AND LLVM_LIBPATH) + if(LLVM_STATIC) + # if static LLVM libraries were requested, use llvm-config to generate + # the list of what libraries we need, and substitute that in the right + # way for LLVM_LIBRARY. + execute_process(COMMAND ${LLVM_CONFIG} --libfiles + OUTPUT_VARIABLE LLVM_LIBRARY + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REPLACE ".a /" ".a;/" LLVM_LIBRARY ${LLVM_LIBRARY}) + else() + set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -lLLVM-3.4") + endif() + else() + message(FATAL_ERROR "LLVM not found.") + endif() endif() if(WITH_CYCLES_OSL) - set(CYCLES_OSL ${LIBDIR}/osl) - - find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib) - find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib) - find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib) - # WARNING! depends on correct order of OSL libs linking - list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -force_load ${OSL_LIB_EXEC} ${OSL_LIB_QUERY}) - find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include) - find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin) - - if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER) - set(OSL_FOUND TRUE) - else() - message(STATUS "OSL not found") - set(WITH_CYCLES_OSL OFF) - endif() + set(CYCLES_OSL ${LIBDIR}/osl) + + find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib) + find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib) + find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib) + # WARNING! depends on correct order of OSL libs linking + list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -force_load ${OSL_LIB_EXEC} ${OSL_LIB_QUERY}) + find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include) + find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin) + + if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER) + set(OSL_FOUND TRUE) + else() + message(STATUS "OSL not found") + set(WITH_CYCLES_OSL OFF) + endif() endif() if(WITH_CYCLES_EMBREE) - find_package(Embree 3.2.4 REQUIRED) - set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Xlinker -stack_size -Xlinker 0x100000") + find_package(Embree 3.2.4 REQUIRED) + set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Xlinker -stack_size -Xlinker 0x100000") endif() # CMake FindOpenMP doesn't know about AppleClang before 3.12, so provide custom flags. if(WITH_OPENMP) - if(CMAKE_C_COMPILER_ID MATCHES "AppleClang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "7.0") - # Use OpenMP from our precompiled libraries. - message(STATUS "Using ${LIBDIR}/openmp for OpenMP") - set(OPENMP_CUSTOM ON) - set(OPENMP_FOUND ON) - set(OpenMP_C_FLAGS "-Xclang -fopenmp -I'${LIBDIR}/openmp/include'") - set(OpenMP_CXX_FLAGS "-Xclang -fopenmp -I'${LIBDIR}/openmp/include'") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L'${LIBDIR}/openmp/lib' -lomp") - - # Copy libomp.dylib to allow executables like datatoc to work. - if(CMAKE_MAKE_PROGRAM MATCHES "xcodebuild") - set(OPENMP_DYLIB_AUX_PATH "${CMAKE_BINARY_DIR}/bin") - else() - set(OPENMP_DYLIB_AUX_PATH "${CMAKE_BINARY_DIR}") - endif() - - execute_process( - COMMAND mkdir -p ${OPENMP_DYLIB_AUX_PATH}/Resources/lib - COMMAND cp -p ${LIBDIR}/openmp/lib/libomp.dylib ${OPENMP_DYLIB_AUX_PATH}/Resources/lib/libomp.dylib) - endif() + if(CMAKE_C_COMPILER_ID MATCHES "AppleClang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "7.0") + # Use OpenMP from our precompiled libraries. + message(STATUS "Using ${LIBDIR}/openmp for OpenMP") + set(OPENMP_CUSTOM ON) + set(OPENMP_FOUND ON) + set(OpenMP_C_FLAGS "-Xclang -fopenmp -I'${LIBDIR}/openmp/include'") + set(OpenMP_CXX_FLAGS "-Xclang -fopenmp -I'${LIBDIR}/openmp/include'") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L'${LIBDIR}/openmp/lib' -lomp") + + # Copy libomp.dylib to allow executables like datatoc to work. + if(CMAKE_MAKE_PROGRAM MATCHES "xcodebuild") + set(OPENMP_DYLIB_AUX_PATH "${CMAKE_BINARY_DIR}/bin") + else() + set(OPENMP_DYLIB_AUX_PATH "${CMAKE_BINARY_DIR}") + endif() + + execute_process( + COMMAND mkdir -p ${OPENMP_DYLIB_AUX_PATH}/Resources/lib + COMMAND cp -p ${LIBDIR}/openmp/lib/libomp.dylib ${OPENMP_DYLIB_AUX_PATH}/Resources/lib/libomp.dylib) + endif() endif() set(EXETYPE MACOSX_BUNDLE) @@ -411,24 +411,24 @@ set(EXETYPE MACOSX_BUNDLE) set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g") set(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g") if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "i386") - set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3") - set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3") - if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller") - endif() + set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3") + set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3") + if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller") + endif() else() - set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing") - set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing") + set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing") + set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing") endif() if(${XCODE_VERSION} VERSION_EQUAL 5 OR ${XCODE_VERSION} VERSION_GREATER 5) - # Xcode 5 is always using CLANG, which has too low template depth of 128 for libmv - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024") + # Xcode 5 is always using CLANG, which has too low template depth of 128 for libmv + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024") endif() # Get rid of eventually clashes, we export some symbols explicitly as local set(PLATFORM_LINKFLAGS - "${PLATFORM_LINKFLAGS} -Xlinker -unexported_symbols_list -Xlinker '${CMAKE_SOURCE_DIR}/source/creator/osx_locals.map'" + "${PLATFORM_LINKFLAGS} -Xlinker -unexported_symbols_list -Xlinker '${CMAKE_SOURCE_DIR}/source/creator/osx_locals.map'" ) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") diff --git a/build_files/cmake/platform/platform_apple_xcode.cmake b/build_files/cmake/platform/platform_apple_xcode.cmake index 27d337753d8..81bd6f906de 100644 --- a/build_files/cmake/platform/platform_apple_xcode.cmake +++ b/build_files/cmake/platform/platform_apple_xcode.cmake @@ -25,92 +25,92 @@ cmake_minimum_required(VERSION 3.0.0) if(NOT CMAKE_OSX_ARCHITECTURES) - set(CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING - "Choose the architecture you want to build Blender for: i386, x86_64 or ppc" - FORCE) + set(CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING + "Choose the architecture you want to build Blender for: i386, x86_64 or ppc" + FORCE) endif() if(NOT DEFINED OSX_SYSTEM) - execute_process( - COMMAND xcodebuild -version -sdk macosx SDKVersion - OUTPUT_VARIABLE OSX_SYSTEM - OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process( + COMMAND xcodebuild -version -sdk macosx SDKVersion + OUTPUT_VARIABLE OSX_SYSTEM + OUTPUT_STRIP_TRAILING_WHITESPACE) endif() # workaround for incorrect cmake xcode lookup for developer previews - XCODE_VERSION does not # take xcode-select path into account but would always look into /Applications/Xcode.app # while dev versions are named Xcode<version>-DP<preview_number> execute_process( - COMMAND xcode-select --print-path - OUTPUT_VARIABLE XCODE_CHECK OUTPUT_STRIP_TRAILING_WHITESPACE) + COMMAND xcode-select --print-path + OUTPUT_VARIABLE XCODE_CHECK OUTPUT_STRIP_TRAILING_WHITESPACE) string(REPLACE "/Contents/Developer" "" XCODE_BUNDLE ${XCODE_CHECK}) # truncate to bundlepath in any case if(${CMAKE_GENERATOR} MATCHES "Xcode") - # earlier xcode has no bundled developer dir, no sense in getting xcode path from - if(${XCODE_VERSION} VERSION_GREATER 4.2) - # reduce to XCode name without dp extension - string(SUBSTRING "${XCODE_CHECK}" 14 6 DP_NAME) - if(${DP_NAME} MATCHES Xcode5) - set(XCODE_VERSION 5) - endif() - endif() + # earlier xcode has no bundled developer dir, no sense in getting xcode path from + if(${XCODE_VERSION} VERSION_GREATER 4.2) + # reduce to XCode name without dp extension + string(SUBSTRING "${XCODE_CHECK}" 14 6 DP_NAME) + if(${DP_NAME} MATCHES Xcode5) + set(XCODE_VERSION 5) + endif() + endif() - ##### cmake incompatibility with xcode 4.3 and higher ##### - if(${XCODE_VERSION} MATCHES '') # cmake fails due looking for xcode in the wrong path, thus will be empty var - message(FATAL_ERROR "Xcode 4.3 and higher must be used with cmake 2.8-8 or higher") - endif() - ### end cmake incompatibility with xcode 4.3 and higher ### + ##### cmake incompatibility with xcode 4.3 and higher ##### + if(${XCODE_VERSION} MATCHES '') # cmake fails due looking for xcode in the wrong path, thus will be empty var + message(FATAL_ERROR "Xcode 4.3 and higher must be used with cmake 2.8-8 or higher") + endif() + ### end cmake incompatibility with xcode 4.3 and higher ### - if(${XCODE_VERSION} VERSION_EQUAL 4 OR ${XCODE_VERSION} VERSION_GREATER 4 AND ${XCODE_VERSION} VERSION_LESS 4.3) - # Xcode 4 defaults to the Apple LLVM Compiler. - # Override the default compiler selection because Blender only compiles with gcc up to xcode 4.2 - set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42") - message(STATUS "Setting compiler to: " ${CMAKE_XCODE_ATTRIBUTE_GCC_VERSION}) - endif() + if(${XCODE_VERSION} VERSION_EQUAL 4 OR ${XCODE_VERSION} VERSION_GREATER 4 AND ${XCODE_VERSION} VERSION_LESS 4.3) + # Xcode 4 defaults to the Apple LLVM Compiler. + # Override the default compiler selection because Blender only compiles with gcc up to xcode 4.2 + set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42") + message(STATUS "Setting compiler to: " ${CMAKE_XCODE_ATTRIBUTE_GCC_VERSION}) + endif() else() # unix makefile generator does not fill XCODE_VERSION var, so we get it with a command - execute_process(COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERS_BUILD_NR) - string(SUBSTRING "${XCODE_VERS_BUILD_NR}" 6 3 XCODE_VERSION) # truncate away build-nr - unset(XCODE_VERS_BUILD_NR) + execute_process(COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERS_BUILD_NR) + string(SUBSTRING "${XCODE_VERS_BUILD_NR}" 6 3 XCODE_VERSION) # truncate away build-nr + unset(XCODE_VERS_BUILD_NR) endif() message(STATUS "Detected OS X ${OSX_SYSTEM} and Xcode ${XCODE_VERSION} at ${XCODE_BUNDLE}") if(${XCODE_VERSION} VERSION_LESS 4.3) - # use guaranteed existing sdk - set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk CACHE PATH "" FORCE) + # use guaranteed existing sdk + set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk CACHE PATH "" FORCE) else() - # note: xcode-select path could be ambiguous, - # cause /Applications/Xcode.app/Contents/Developer or /Applications/Xcode.app would be allowed - # so i use a selfcomposed bundlepath here - set(OSX_SYSROOT_PREFIX ${XCODE_BUNDLE}/Contents/Developer/Platforms/MacOSX.platform) - message(STATUS "OSX_SYSROOT_PREFIX: " ${OSX_SYSROOT_PREFIX}) - set(OSX_DEVELOPER_PREFIX /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk) # use guaranteed existing sdk - set(CMAKE_OSX_SYSROOT ${OSX_SYSROOT_PREFIX}/${OSX_DEVELOPER_PREFIX} CACHE PATH "" FORCE) - if(${CMAKE_GENERATOR} MATCHES "Xcode") - # to silence sdk not found warning, just overrides CMAKE_OSX_SYSROOT - set(CMAKE_XCODE_ATTRIBUTE_SDKROOT macosx${OSX_SYSTEM}) - endif() + # note: xcode-select path could be ambiguous, + # cause /Applications/Xcode.app/Contents/Developer or /Applications/Xcode.app would be allowed + # so i use a selfcomposed bundlepath here + set(OSX_SYSROOT_PREFIX ${XCODE_BUNDLE}/Contents/Developer/Platforms/MacOSX.platform) + message(STATUS "OSX_SYSROOT_PREFIX: " ${OSX_SYSROOT_PREFIX}) + set(OSX_DEVELOPER_PREFIX /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk) # use guaranteed existing sdk + set(CMAKE_OSX_SYSROOT ${OSX_SYSROOT_PREFIX}/${OSX_DEVELOPER_PREFIX} CACHE PATH "" FORCE) + if(${CMAKE_GENERATOR} MATCHES "Xcode") + # to silence sdk not found warning, just overrides CMAKE_OSX_SYSROOT + set(CMAKE_XCODE_ATTRIBUTE_SDKROOT macosx${OSX_SYSTEM}) + endif() endif() if(OSX_SYSTEM MATCHES 10.9) - # make sure syslibs and headers are looked up in sdk ( especially for 10.9 openGL atm. ) - set(CMAKE_FIND_ROOT_PATH ${CMAKE_OSX_SYSROOT}) + # make sure syslibs and headers are looked up in sdk ( especially for 10.9 openGL atm. ) + set(CMAKE_FIND_ROOT_PATH ${CMAKE_OSX_SYSROOT}) endif() # 10.9 is our min. target, if you use higher sdk, weak linking happens if(CMAKE_OSX_DEPLOYMENT_TARGET) - if(${CMAKE_OSX_DEPLOYMENT_TARGET} VERSION_LESS 10.9) - message(STATUS "Setting deployment target to 10.9, lower versions are not supported") - set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "" FORCE) - endif() + if(${CMAKE_OSX_DEPLOYMENT_TARGET} VERSION_LESS 10.9) + message(STATUS "Setting deployment target to 10.9, lower versions are not supported") + set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "" FORCE) + endif() else() - set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "" FORCE) + set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "" FORCE) endif() if(NOT ${CMAKE_GENERATOR} MATCHES "Xcode") - # force CMAKE_OSX_DEPLOYMENT_TARGET for makefiles, will not work else ( cmake bug ? ) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") - add_definitions("-DMACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}") + # force CMAKE_OSX_DEPLOYMENT_TARGET for makefiles, will not work else ( cmake bug ? ) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") + add_definitions("-DMACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}") endif() diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake index 0d486c84fe6..0f5b45d722b 100644 --- a/build_files/cmake/platform/platform_unix.cmake +++ b/build_files/cmake/platform/platform_unix.cmake @@ -22,34 +22,34 @@ # Detect precompiled library directory if(NOT DEFINED LIBDIR) - set(LIBDIR_NAME ${CMAKE_SYSTEM_NAME}_${CMAKE_SYSTEM_PROCESSOR}) - string(TOLOWER ${LIBDIR_NAME} LIBDIR_NAME) - set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_NAME}) + set(LIBDIR_NAME ${CMAKE_SYSTEM_NAME}_${CMAKE_SYSTEM_PROCESSOR}) + string(TOLOWER ${LIBDIR_NAME} LIBDIR_NAME) + set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_NAME}) else() - message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}") + message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}") endif() if(EXISTS ${LIBDIR}) - file(GLOB LIB_SUBDIRS ${LIBDIR}/*) - # NOTE: Make sure "proper" compiled zlib comes first before the one - # which is a part of OpenCollada. They have different ABI, and we - # do need to use the official one. - set(CMAKE_PREFIX_PATH ${LIBDIR}/zlib ${LIB_SUBDIRS}) - set(WITH_STATIC_LIBS ON) - set(WITH_OPENMP_STATIC ON) + file(GLOB LIB_SUBDIRS ${LIBDIR}/*) + # NOTE: Make sure "proper" compiled zlib comes first before the one + # which is a part of OpenCollada. They have different ABI, and we + # do need to use the official one. + set(CMAKE_PREFIX_PATH ${LIBDIR}/zlib ${LIB_SUBDIRS}) + set(WITH_STATIC_LIBS ON) + set(WITH_OPENMP_STATIC ON) endif() if(WITH_STATIC_LIBS) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++") endif() # Wrapper to prefer static libraries macro(find_package_wrapper) - if(WITH_STATIC_LIBS) - find_package_static(${ARGV}) - else() - find_package(${ARGV}) - endif() + if(WITH_STATIC_LIBS) + find_package_static(${ARGV}) + else() + find_package(${ARGV}) + endif() endmacro() find_package_wrapper(JPEG REQUIRED) @@ -58,360 +58,360 @@ find_package_wrapper(ZLIB REQUIRED) find_package_wrapper(Freetype REQUIRED) if(WITH_LZO AND WITH_SYSTEM_LZO) - find_package_wrapper(LZO) - if(NOT LZO_FOUND) - message(FATAL_ERROR "Failed finding system LZO version!") - endif() + find_package_wrapper(LZO) + if(NOT LZO_FOUND) + message(FATAL_ERROR "Failed finding system LZO version!") + endif() endif() if(WITH_SYSTEM_EIGEN3) - find_package_wrapper(Eigen3) - if(NOT EIGEN3_FOUND) - message(FATAL_ERROR "Failed finding system Eigen3 version!") - endif() + find_package_wrapper(Eigen3) + if(NOT EIGEN3_FOUND) + message(FATAL_ERROR "Failed finding system Eigen3 version!") + endif() endif() # else values are set below for all platforms if(WITH_PYTHON) - # No way to set py35, remove for now. - # find_package(PythonLibs) + # No way to set py35, remove for now. + # find_package(PythonLibs) - # Use our own instead, since without py is such a rare case, - # require this package - # XXX Linking errors with debian static python :/ -# find_package_wrapper(PythonLibsUnix REQUIRED) - find_package(PythonLibsUnix REQUIRED) + # Use our own instead, since without py is such a rare case, + # require this package + # XXX Linking errors with debian static python :/ +# find_package_wrapper(PythonLibsUnix REQUIRED) + find_package(PythonLibsUnix REQUIRED) endif() if(WITH_IMAGE_OPENEXR) - find_package_wrapper(OpenEXR) # our own module - if(NOT OPENEXR_FOUND) - set(WITH_IMAGE_OPENEXR OFF) - endif() + find_package_wrapper(OpenEXR) # our own module + if(NOT OPENEXR_FOUND) + set(WITH_IMAGE_OPENEXR OFF) + endif() endif() if(WITH_IMAGE_OPENJPEG) - find_package_wrapper(OpenJPEG) - if(NOT OPENJPEG_FOUND) - set(WITH_IMAGE_OPENJPEG OFF) - endif() + find_package_wrapper(OpenJPEG) + if(NOT OPENJPEG_FOUND) + set(WITH_IMAGE_OPENJPEG OFF) + endif() endif() if(WITH_IMAGE_TIFF) - # XXX Linking errors with debian static tiff :/ -# find_package_wrapper(TIFF) - find_package(TIFF) - if(NOT TIFF_FOUND) - set(WITH_IMAGE_TIFF OFF) - endif() + # XXX Linking errors with debian static tiff :/ +# find_package_wrapper(TIFF) + find_package(TIFF) + if(NOT TIFF_FOUND) + set(WITH_IMAGE_TIFF OFF) + endif() endif() # Audio IO if(WITH_SYSTEM_AUDASPACE) - find_package_wrapper(Audaspace) - if(NOT AUDASPACE_FOUND OR NOT AUDASPACE_C_FOUND) - message(FATAL_ERROR "Audaspace external library not found!") - endif() + find_package_wrapper(Audaspace) + if(NOT AUDASPACE_FOUND OR NOT AUDASPACE_C_FOUND) + message(FATAL_ERROR "Audaspace external library not found!") + endif() endif() if(WITH_OPENAL) - find_package_wrapper(OpenAL) - if(NOT OPENAL_FOUND) - set(WITH_OPENAL OFF) - endif() + find_package_wrapper(OpenAL) + if(NOT OPENAL_FOUND) + set(WITH_OPENAL OFF) + endif() endif() if(WITH_SDL) - if(WITH_SDL_DYNLOAD) - set(SDL_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/extern/sdlew/include/SDL2") - set(SDL_LIBRARY) - else() - find_package_wrapper(SDL2) - if(SDL2_FOUND) - # Use same names for both versions of SDL until we move to 2.x. - set(SDL_INCLUDE_DIR "${SDL2_INCLUDE_DIR}") - set(SDL_LIBRARY "${SDL2_LIBRARY}") - set(SDL_FOUND "${SDL2_FOUND}") - else() - find_package_wrapper(SDL) - endif() - mark_as_advanced( - SDL_INCLUDE_DIR - SDL_LIBRARY - ) - # unset(SDLMAIN_LIBRARY CACHE) - if(NOT SDL_FOUND) - set(WITH_SDL OFF) - endif() - endif() + if(WITH_SDL_DYNLOAD) + set(SDL_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/extern/sdlew/include/SDL2") + set(SDL_LIBRARY) + else() + find_package_wrapper(SDL2) + if(SDL2_FOUND) + # Use same names for both versions of SDL until we move to 2.x. + set(SDL_INCLUDE_DIR "${SDL2_INCLUDE_DIR}") + set(SDL_LIBRARY "${SDL2_LIBRARY}") + set(SDL_FOUND "${SDL2_FOUND}") + else() + find_package_wrapper(SDL) + endif() + mark_as_advanced( + SDL_INCLUDE_DIR + SDL_LIBRARY + ) + # unset(SDLMAIN_LIBRARY CACHE) + if(NOT SDL_FOUND) + set(WITH_SDL OFF) + endif() + endif() endif() if(WITH_JACK) - find_package_wrapper(Jack) - if(NOT JACK_FOUND) - set(WITH_JACK OFF) - endif() + find_package_wrapper(Jack) + if(NOT JACK_FOUND) + set(WITH_JACK OFF) + endif() endif() # Codecs if(WITH_CODEC_SNDFILE) - find_package_wrapper(SndFile) - if(NOT LIBSNDFILE_FOUND) - set(WITH_CODEC_SNDFILE OFF) - endif() + find_package_wrapper(SndFile) + if(NOT LIBSNDFILE_FOUND) + set(WITH_CODEC_SNDFILE OFF) + endif() endif() if(WITH_CODEC_FFMPEG) - if(EXISTS ${LIBDIR}) - # For precompiled lib directory, all ffmpeg dependencies are in the same folder - file(GLOB ffmpeg_libs ${LIBDIR}/ffmpeg/lib/*.a ${LIBDIR}/sndfile/lib/*.a) - set(FFMPEG ${LIBDIR}/ffmpeg CACHE PATH "FFMPEG Directory") - set(FFMPEG_LIBRARIES ${ffmpeg_libs} ${ffmpeg_libs} CACHE STRING "FFMPEG Libraries") - else() - set(FFMPEG /usr CACHE PATH "FFMPEG Directory") - set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries") - endif() + if(EXISTS ${LIBDIR}) + # For precompiled lib directory, all ffmpeg dependencies are in the same folder + file(GLOB ffmpeg_libs ${LIBDIR}/ffmpeg/lib/*.a ${LIBDIR}/sndfile/lib/*.a) + set(FFMPEG ${LIBDIR}/ffmpeg CACHE PATH "FFMPEG Directory") + set(FFMPEG_LIBRARIES ${ffmpeg_libs} ${ffmpeg_libs} CACHE STRING "FFMPEG Libraries") + else() + set(FFMPEG /usr CACHE PATH "FFMPEG Directory") + set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries") + endif() - mark_as_advanced(FFMPEG) + mark_as_advanced(FFMPEG) - # lame, but until we have proper find module for ffmpeg - set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include) - if(EXISTS "${FFMPEG}/include/ffmpeg/") - list(APPEND FFMPEG_INCLUDE_DIRS "${FFMPEG}/include/ffmpeg") - endif() - # end lameness + # lame, but until we have proper find module for ffmpeg + set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include) + if(EXISTS "${FFMPEG}/include/ffmpeg/") + list(APPEND FFMPEG_INCLUDE_DIRS "${FFMPEG}/include/ffmpeg") + endif() + # end lameness - mark_as_advanced(FFMPEG_LIBRARIES) - set(FFMPEG_LIBPATH ${FFMPEG}/lib) + mark_as_advanced(FFMPEG_LIBRARIES) + set(FFMPEG_LIBPATH ${FFMPEG}/lib) endif() if(WITH_FFTW3) - find_package_wrapper(Fftw3) - if(NOT FFTW3_FOUND) - set(WITH_FFTW3 OFF) - endif() + find_package_wrapper(Fftw3) + if(NOT FFTW3_FOUND) + set(WITH_FFTW3 OFF) + endif() endif() if(WITH_OPENCOLLADA) - find_package_wrapper(OpenCOLLADA) - if(OPENCOLLADA_FOUND) - find_package_wrapper(XML2) - find_package_wrapper(PCRE) - else() - set(WITH_OPENCOLLADA OFF) - endif() + find_package_wrapper(OpenCOLLADA) + if(OPENCOLLADA_FOUND) + find_package_wrapper(XML2) + find_package_wrapper(PCRE) + else() + set(WITH_OPENCOLLADA OFF) + endif() endif() if(WITH_MEM_JEMALLOC) - find_package_wrapper(JeMalloc) - if(NOT JEMALLOC_FOUND) - set(WITH_MEM_JEMALLOC OFF) - endif() + find_package_wrapper(JeMalloc) + if(NOT JEMALLOC_FOUND) + set(WITH_MEM_JEMALLOC OFF) + endif() endif() if(WITH_INPUT_NDOF) - find_package_wrapper(Spacenav) - if(SPACENAV_FOUND) - # use generic names within blenders buildsystem. - set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS}) - set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES}) - else() - set(WITH_INPUT_NDOF OFF) - endif() + find_package_wrapper(Spacenav) + if(SPACENAV_FOUND) + # use generic names within blenders buildsystem. + set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS}) + set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES}) + else() + set(WITH_INPUT_NDOF OFF) + endif() endif() if(WITH_CYCLES_OSL) - set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation") - if(NOT OSL_ROOT) - set(OSL_ROOT ${CYCLES_OSL}) - endif() - find_package_wrapper(OpenShadingLanguage) - if(OSL_FOUND) - if(${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6") - # Note: --whole-archive is needed to force loading of all symbols in liboslexec, - # otherwise LLVM is missing the osl_allocate_closure_component function - set(OSL_LIBRARIES - ${OSL_OSLCOMP_LIBRARY} - -Wl,--whole-archive ${OSL_OSLEXEC_LIBRARY} - -Wl,--no-whole-archive ${OSL_OSLQUERY_LIBRARY} - ) - endif() - else() - message(STATUS "OSL not found, disabling it from Cycles") - set(WITH_CYCLES_OSL OFF) - endif() + set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation") + if(NOT OSL_ROOT) + set(OSL_ROOT ${CYCLES_OSL}) + endif() + find_package_wrapper(OpenShadingLanguage) + if(OSL_FOUND) + if(${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6") + # Note: --whole-archive is needed to force loading of all symbols in liboslexec, + # otherwise LLVM is missing the osl_allocate_closure_component function + set(OSL_LIBRARIES + ${OSL_OSLCOMP_LIBRARY} + -Wl,--whole-archive ${OSL_OSLEXEC_LIBRARY} + -Wl,--no-whole-archive ${OSL_OSLQUERY_LIBRARY} + ) + endif() + else() + message(STATUS "OSL not found, disabling it from Cycles") + set(WITH_CYCLES_OSL OFF) + endif() endif() if(WITH_OPENVDB) - find_package_wrapper(OpenVDB) - find_package_wrapper(TBB) - find_package_wrapper(Blosc) - if(NOT TBB_FOUND) - set(WITH_OPENVDB OFF) - set(WITH_OPENVDB_BLOSC OFF) - message(STATUS "TBB not found, disabling OpenVDB") - elseif(NOT OPENVDB_FOUND) - set(WITH_OPENVDB OFF) - set(WITH_OPENVDB_BLOSC OFF) - message(STATUS "OpenVDB not found, disabling it") - elseif(NOT BLOSC_FOUND) - set(WITH_OPENVDB_BLOSC OFF) - message(STATUS "Blosc not found, disabling it for OpenVBD") - endif() + find_package_wrapper(OpenVDB) + find_package_wrapper(TBB) + find_package_wrapper(Blosc) + if(NOT TBB_FOUND) + set(WITH_OPENVDB OFF) + set(WITH_OPENVDB_BLOSC OFF) + message(STATUS "TBB not found, disabling OpenVDB") + elseif(NOT OPENVDB_FOUND) + set(WITH_OPENVDB OFF) + set(WITH_OPENVDB_BLOSC OFF) + message(STATUS "OpenVDB not found, disabling it") + elseif(NOT BLOSC_FOUND) + set(WITH_OPENVDB_BLOSC OFF) + message(STATUS "Blosc not found, disabling it for OpenVBD") + endif() endif() if(WITH_ALEMBIC) - find_package_wrapper(Alembic) + find_package_wrapper(Alembic) - if(WITH_ALEMBIC_HDF5) - set(HDF5_ROOT_DIR ${LIBDIR}/hdf5) - find_package_wrapper(HDF5) - endif() + if(WITH_ALEMBIC_HDF5) + set(HDF5_ROOT_DIR ${LIBDIR}/hdf5) + find_package_wrapper(HDF5) + endif() - if(NOT ALEMBIC_FOUND OR (WITH_ALEMBIC_HDF5 AND NOT HDF5_FOUND)) - set(WITH_ALEMBIC OFF) - set(WITH_ALEMBIC_HDF5 OFF) - endif() + if(NOT ALEMBIC_FOUND OR (WITH_ALEMBIC_HDF5 AND NOT HDF5_FOUND)) + set(WITH_ALEMBIC OFF) + set(WITH_ALEMBIC_HDF5 OFF) + endif() endif() if(WITH_BOOST) - # uses in build instructions to override include and library variables - if(NOT BOOST_CUSTOM) - if(WITH_STATIC_LIBS) - set(Boost_USE_STATIC_LIBS ON) - endif() - set(Boost_USE_MULTITHREADED ON) - set(__boost_packages filesystem regex thread date_time) - if(WITH_CYCLES_OSL) - if(NOT (${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6")) - list(APPEND __boost_packages wave) - else() - endif() - endif() - if(WITH_INTERNATIONAL) - list(APPEND __boost_packages locale) - endif() - if(WITH_CYCLES_NETWORK) - list(APPEND __boost_packages serialization) - endif() - if(WITH_OPENVDB) - list(APPEND __boost_packages iostreams) - endif() - list(APPEND __boost_packages system) - find_package(Boost 1.48 COMPONENTS ${__boost_packages}) - if(NOT Boost_FOUND) - # try to find non-multithreaded if -mt not found, this flag - # doesn't matter for us, it has nothing to do with thread - # safety, but keep it to not disturb build setups - set(Boost_USE_MULTITHREADED OFF) - find_package(Boost 1.48 COMPONENTS ${__boost_packages}) - endif() - unset(__boost_packages) - if(Boost_USE_STATIC_LIBS AND WITH_BOOST_ICU) - find_package(IcuLinux) - endif() - mark_as_advanced(Boost_DIR) # why doesn't boost do this? - endif() - - set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS}) - set(BOOST_LIBRARIES ${Boost_LIBRARIES}) - set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS}) - set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB") + # uses in build instructions to override include and library variables + if(NOT BOOST_CUSTOM) + if(WITH_STATIC_LIBS) + set(Boost_USE_STATIC_LIBS ON) + endif() + set(Boost_USE_MULTITHREADED ON) + set(__boost_packages filesystem regex thread date_time) + if(WITH_CYCLES_OSL) + if(NOT (${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6")) + list(APPEND __boost_packages wave) + else() + endif() + endif() + if(WITH_INTERNATIONAL) + list(APPEND __boost_packages locale) + endif() + if(WITH_CYCLES_NETWORK) + list(APPEND __boost_packages serialization) + endif() + if(WITH_OPENVDB) + list(APPEND __boost_packages iostreams) + endif() + list(APPEND __boost_packages system) + find_package(Boost 1.48 COMPONENTS ${__boost_packages}) + if(NOT Boost_FOUND) + # try to find non-multithreaded if -mt not found, this flag + # doesn't matter for us, it has nothing to do with thread + # safety, but keep it to not disturb build setups + set(Boost_USE_MULTITHREADED OFF) + find_package(Boost 1.48 COMPONENTS ${__boost_packages}) + endif() + unset(__boost_packages) + if(Boost_USE_STATIC_LIBS AND WITH_BOOST_ICU) + find_package(IcuLinux) + endif() + mark_as_advanced(Boost_DIR) # why doesn't boost do this? + endif() + + set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS}) + set(BOOST_LIBRARIES ${Boost_LIBRARIES}) + set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS}) + set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB") endif() if(WITH_OPENIMAGEIO) - find_package_wrapper(OpenImageIO) - if(NOT OPENIMAGEIO_PUGIXML_FOUND AND WITH_CYCLES_STANDALONE) - find_package_wrapper(PugiXML) - else() - set(PUGIXML_INCLUDE_DIR "${OPENIMAGEIO_INCLUDE_DIR/OpenImageIO}") - set(PUGIXML_LIBRARIES "") - endif() - - set(OPENIMAGEIO_LIBRARIES - ${OPENIMAGEIO_LIBRARIES} - ${PNG_LIBRARIES} - ${JPEG_LIBRARIES} - ${ZLIB_LIBRARIES} - ${BOOST_LIBRARIES} - ) - set(OPENIMAGEIO_LIBPATH) # TODO, remove and reference the absolute path everywhere - set(OPENIMAGEIO_DEFINITIONS "") - - if(WITH_IMAGE_TIFF) - list(APPEND OPENIMAGEIO_LIBRARIES "${TIFF_LIBRARY}") - endif() - if(WITH_IMAGE_OPENEXR) - list(APPEND OPENIMAGEIO_LIBRARIES "${OPENEXR_LIBRARIES}") - endif() - - if(NOT OPENIMAGEIO_FOUND) - set(WITH_OPENIMAGEIO OFF) - message(STATUS "OpenImageIO not found, disabling WITH_CYCLES") - endif() + find_package_wrapper(OpenImageIO) + if(NOT OPENIMAGEIO_PUGIXML_FOUND AND WITH_CYCLES_STANDALONE) + find_package_wrapper(PugiXML) + else() + set(PUGIXML_INCLUDE_DIR "${OPENIMAGEIO_INCLUDE_DIR/OpenImageIO}") + set(PUGIXML_LIBRARIES "") + endif() + + set(OPENIMAGEIO_LIBRARIES + ${OPENIMAGEIO_LIBRARIES} + ${PNG_LIBRARIES} + ${JPEG_LIBRARIES} + ${ZLIB_LIBRARIES} + ${BOOST_LIBRARIES} + ) + set(OPENIMAGEIO_LIBPATH) # TODO, remove and reference the absolute path everywhere + set(OPENIMAGEIO_DEFINITIONS "") + + if(WITH_IMAGE_TIFF) + list(APPEND OPENIMAGEIO_LIBRARIES "${TIFF_LIBRARY}") + endif() + if(WITH_IMAGE_OPENEXR) + list(APPEND OPENIMAGEIO_LIBRARIES "${OPENEXR_LIBRARIES}") + endif() + + if(NOT OPENIMAGEIO_FOUND) + set(WITH_OPENIMAGEIO OFF) + message(STATUS "OpenImageIO not found, disabling WITH_CYCLES") + endif() endif() if(WITH_OPENCOLORIO) - find_package_wrapper(OpenColorIO) + find_package_wrapper(OpenColorIO) - set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES}) - set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere - set(OPENCOLORIO_DEFINITIONS) + set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES}) + set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere + set(OPENCOLORIO_DEFINITIONS) - if(NOT OPENCOLORIO_FOUND) - set(WITH_OPENCOLORIO OFF) - message(STATUS "OpenColorIO not found") - endif() + if(NOT OPENCOLORIO_FOUND) + set(WITH_OPENCOLORIO OFF) + message(STATUS "OpenColorIO not found") + endif() endif() if(WITH_CYCLES_EMBREE) - find_package(Embree 3.2.4 REQUIRED) + find_package(Embree 3.2.4 REQUIRED) endif() if(WITH_LLVM) - if(EXISTS ${LIBDIR}) - set(LLVM_STATIC ON) - endif() + if(EXISTS ${LIBDIR}) + set(LLVM_STATIC ON) + endif() - find_package_wrapper(LLVM) + find_package_wrapper(LLVM) - # Symbol conflicts with same UTF library used by OpenCollada - if(EXISTS ${LIBDIR}) - if(WITH_OPENCOLLADA AND (${LLVM_VERSION} VERSION_LESS "4.0.0")) - list(REMOVE_ITEM OPENCOLLADA_LIBRARIES ${OPENCOLLADA_UTF_LIBRARY}) - endif() - endif() + # Symbol conflicts with same UTF library used by OpenCollada + if(EXISTS ${LIBDIR}) + if(WITH_OPENCOLLADA AND (${LLVM_VERSION} VERSION_LESS "4.0.0")) + list(REMOVE_ITEM OPENCOLLADA_LIBRARIES ${OPENCOLLADA_UTF_LIBRARY}) + endif() + endif() - if(NOT LLVM_FOUND) - set(WITH_LLVM OFF) - message(STATUS "LLVM not found") - endif() + if(NOT LLVM_FOUND) + set(WITH_LLVM OFF) + message(STATUS "LLVM not found") + endif() endif() if(WITH_LLVM OR WITH_SDL_DYNLOAD) - # Fix for conflict with Mesa llvmpipe - set(PLATFORM_LINKFLAGS - "${PLATFORM_LINKFLAGS} -Wl,--version-script='${CMAKE_SOURCE_DIR}/source/creator/blender.map'" - ) + # Fix for conflict with Mesa llvmpipe + set(PLATFORM_LINKFLAGS + "${PLATFORM_LINKFLAGS} -Wl,--version-script='${CMAKE_SOURCE_DIR}/source/creator/blender.map'" + ) endif() if(WITH_OPENSUBDIV) - find_package_wrapper(OpenSubdiv) + find_package_wrapper(OpenSubdiv) - set(OPENSUBDIV_LIBRARIES ${OPENSUBDIV_LIBRARIES}) - set(OPENSUBDIV_LIBPATH) # TODO, remove and reference the absolute path everywhere + set(OPENSUBDIV_LIBRARIES ${OPENSUBDIV_LIBRARIES}) + set(OPENSUBDIV_LIBPATH) # TODO, remove and reference the absolute path everywhere - if(NOT OPENSUBDIV_FOUND) - set(WITH_OPENSUBDIV OFF) - message(STATUS "OpenSubdiv not found") - endif() + if(NOT OPENSUBDIV_FOUND) + set(WITH_OPENSUBDIV OFF) + message(STATUS "OpenSubdiv not found") + endif() endif() # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed if(HAIKU) - list(APPEND PLATFORM_LINKLIBS -lnetwork) + list(APPEND PLATFORM_LINKLIBS -lnetwork) else() - list(APPEND PLATFORM_LINKLIBS -lutil -lc -lm) + list(APPEND PLATFORM_LINKLIBS -lutil -lc -lm) endif() find_package(Threads REQUIRED) @@ -420,15 +420,15 @@ list(APPEND PLATFORM_LINKLIBS ${CMAKE_THREAD_LIBS_INIT}) set(PTHREADS_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) if(CMAKE_DL_LIBS) - list(APPEND PLATFORM_LINKLIBS ${CMAKE_DL_LIBS}) + list(APPEND PLATFORM_LINKLIBS ${CMAKE_DL_LIBS}) endif() if(CMAKE_SYSTEM_NAME MATCHES "Linux") - if(NOT WITH_PYTHON_MODULE) - # binreloc is linux only - set(BINRELOC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/binreloc/include) - set(WITH_BINRELOC ON) - endif() + if(NOT WITH_PYTHON_MODULE) + # binreloc is linux only + set(BINRELOC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/binreloc/include) + set(WITH_BINRELOC ON) + endif() endif() # lfs on glibc, all compilers should use @@ -436,43 +436,43 @@ add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE # GNU Compiler if(CMAKE_COMPILER_IS_GNUCC) - set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing") - - if(WITH_LINKER_GOLD) - execute_process( - COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version - ERROR_QUIET OUTPUT_VARIABLE LD_VERSION) - if("${LD_VERSION}" MATCHES "GNU gold") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=gold") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold") - else() - message(STATUS "GNU gold linker isn't available, using the default system linker.") - endif() - unset(LD_VERSION) - endif() + set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing") + + if(WITH_LINKER_GOLD) + execute_process( + COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version + ERROR_QUIET OUTPUT_VARIABLE LD_VERSION) + if("${LD_VERSION}" MATCHES "GNU gold") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=gold") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold") + else() + message(STATUS "GNU gold linker isn't available, using the default system linker.") + endif() + unset(LD_VERSION) + endif() # CLang is the same as GCC for now. elseif(CMAKE_C_COMPILER_ID MATCHES "Clang") - set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing") + set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing") # Intel C++ Compiler elseif(CMAKE_C_COMPILER_ID MATCHES "Intel") - # think these next two are broken - find_program(XIAR xiar) - if(XIAR) - set(CMAKE_AR "${XIAR}") - endif() - mark_as_advanced(XIAR) - - find_program(XILD xild) - if(XILD) - set(CMAKE_LINKER "${XILD}") - endif() - mark_as_advanced(XILD) - - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel") - - # set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3") - set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing") - set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel") + # think these next two are broken + find_program(XIAR xiar) + if(XIAR) + set(CMAKE_AR "${XIAR}") + endif() + mark_as_advanced(XIAR) + + find_program(XILD xild) + if(XILD) + set(CMAKE_LINKER "${XILD}") + endif() + mark_as_advanced(XILD) + + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel") + + # set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3") + set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing") + set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel") endif() diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake index 827357df043..7b516d87f38 100644 --- a/build_files/cmake/platform/platform_win32.cmake +++ b/build_files/cmake/platform/platform_win32.cmake @@ -23,44 +23,44 @@ add_definitions(-DWIN32) if(NOT MSVC) - message(FATAL_ERROR "Compiler is unsupported") + message(FATAL_ERROR "Compiler is unsupported") endif() if(CMAKE_C_COMPILER_ID MATCHES "Clang") - set(MSVC_CLANG On) - set(VC_TOOLS_DIR $ENV{VCToolsRedistDir} CACHE STRING "Location of the msvc redistributables") - set(MSVC_REDIST_DIR ${VC_TOOLS_DIR}) - if (DEFINED MSVC_REDIST_DIR) - file(TO_CMAKE_PATH ${MSVC_REDIST_DIR} MSVC_REDIST_DIR) - else() - message("Unable to detect the Visual Studio redist directory, copying of the runtime dlls will not work, try running from the visual studio developer prompt.") - endif() + set(MSVC_CLANG On) + set(VC_TOOLS_DIR $ENV{VCToolsRedistDir} CACHE STRING "Location of the msvc redistributables") + set(MSVC_REDIST_DIR ${VC_TOOLS_DIR}) + if (DEFINED MSVC_REDIST_DIR) + file(TO_CMAKE_PATH ${MSVC_REDIST_DIR} MSVC_REDIST_DIR) + else() + message("Unable to detect the Visual Studio redist directory, copying of the runtime dlls will not work, try running from the visual studio developer prompt.") + endif() endif() set_property(GLOBAL PROPERTY USE_FOLDERS ${WINDOWS_USE_VISUAL_STUDIO_FOLDERS}) if(NOT WITH_PYTHON_MODULE) - set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT blender) + set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT blender) endif() macro(warn_hardcoded_paths package_name - ) - if(WITH_WINDOWS_FIND_MODULES) - message(WARNING "Using HARDCODED ${package_name} locations") - endif() + ) + if(WITH_WINDOWS_FIND_MODULES) + message(WARNING "Using HARDCODED ${package_name} locations") + endif() endmacro() macro(windows_find_package package_name - ) - if(WITH_WINDOWS_FIND_MODULES) - find_package(${package_name}) - endif() + ) + if(WITH_WINDOWS_FIND_MODULES) + find_package(${package_name}) + endif() endmacro() macro(find_package_wrapper) - if(WITH_WINDOWS_FIND_MODULES) - find_package(${ARGV}) - endif() + if(WITH_WINDOWS_FIND_MODULES) + find_package(${ARGV}) + endif() endmacro() add_definitions(-DWIN32) @@ -71,22 +71,22 @@ add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>") # Minimum MSVC Version if(CMAKE_CXX_COMPILER_ID MATCHES MSVC) - if(MSVC_VERSION EQUAL 1800) - set(_min_ver "18.0.31101") - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${_min_ver}) - message(FATAL_ERROR - "Visual Studio 2013 (Update 4, ${_min_ver}) required, " - "found (${CMAKE_CXX_COMPILER_VERSION})") - endif() - endif() - if(MSVC_VERSION EQUAL 1900) - set(_min_ver "19.0.24210") - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${_min_ver}) - message(FATAL_ERROR - "Visual Studio 2015 (Update 3, ${_min_ver}) required, " - "found (${CMAKE_CXX_COMPILER_VERSION})") - endif() - endif() + if(MSVC_VERSION EQUAL 1800) + set(_min_ver "18.0.31101") + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${_min_ver}) + message(FATAL_ERROR + "Visual Studio 2013 (Update 4, ${_min_ver}) required, " + "found (${CMAKE_CXX_COMPILER_VERSION})") + endif() + endif() + if(MSVC_VERSION EQUAL 1900) + set(_min_ver "19.0.24210") + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${_min_ver}) + message(FATAL_ERROR + "Visual Studio 2015 (Update 3, ${_min_ver}) required, " + "found (${CMAKE_CXX_COMPILER_VERSION})") + endif() + endif() endif() unset(_min_ver) @@ -96,20 +96,20 @@ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO") set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO") list(APPEND PLATFORM_LINKLIBS - ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 - advapi32 shfolder shell32 ole32 oleaut32 uuid psapi Dbghelp + ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 + advapi32 shfolder shell32 ole32 oleaut32 uuid psapi Dbghelp ) if(WITH_INPUT_IME) - list(APPEND PLATFORM_LINKLIBS imm32) + list(APPEND PLATFORM_LINKLIBS imm32) endif() add_definitions( - -D_CRT_NONSTDC_NO_DEPRECATE - -D_CRT_SECURE_NO_DEPRECATE - -D_SCL_SECURE_NO_DEPRECATE - -D_CONSOLE - -D_LIB + -D_CRT_NONSTDC_NO_DEPRECATE + -D_CRT_SECURE_NO_DEPRECATE + -D_SCL_SECURE_NO_DEPRECATE + -D_CONSOLE + -D_LIB ) # MSVC11 needs _ALLOW_KEYWORD_MACROS to build @@ -128,11 +128,11 @@ include(InstallRequiredSystemLibraries) remove_cc_flag("/MDd" "/MD") if(MSVC_CLANG) # Clangs version of cl doesn't support all flags - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_WARN_FLAGS} /nologo /J /Gd /EHsc -Wno-unused-command-line-argument -Wno-microsoft-enum-forward-reference ") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /nologo /J /Gd -Wno-unused-command-line-argument -Wno-microsoft-enum-forward-reference") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_WARN_FLAGS} /nologo /J /Gd /EHsc -Wno-unused-command-line-argument -Wno-microsoft-enum-forward-reference ") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /nologo /J /Gd -Wno-unused-command-line-argument -Wno-microsoft-enum-forward-reference") else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /nologo /J /Gd /MP /EHsc") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /nologo /J /Gd /MP") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /nologo /J /Gd /MP /EHsc") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /nologo /J /Gd /MP") endif() set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") @@ -152,50 +152,50 @@ set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /ignore:4049 /ignore:4217 /ignore: set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} /ignore:4221") if(CMAKE_CL_64) - set(PLATFORM_LINKFLAGS "/MACHINE:X64 ${PLATFORM_LINKFLAGS}") + set(PLATFORM_LINKFLAGS "/MACHINE:X64 ${PLATFORM_LINKFLAGS}") else() - set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}") + set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}") endif() set(PLATFORM_LINKFLAGS_DEBUG "${PLATFORM_LINKFLAGS_DEBUG} /IGNORE:4099 /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib") if(NOT DEFINED LIBDIR) - # Setup 64bit and 64bit windows systems - if(CMAKE_CL_64) - message(STATUS "64 bit compiler detected.") - set(LIBDIR_BASE "win64") - else() - message(STATUS "32 bit compiler detected.") - set(LIBDIR_BASE "windows") - endif() - # Can be 1910..1912 - if(MSVC_VERSION GREATER 1919) - message(STATUS "Visual Studio 2019 detected.") - set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc14) - elseif(MSVC_VERSION GREATER 1909) - message(STATUS "Visual Studio 2017 detected.") - set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc14) - elseif(MSVC_VERSION EQUAL 1900) - message(STATUS "Visual Studio 2015 detected.") - set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc14) - else() - message(STATUS "Visual Studio 2013 detected.") - set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc12) - endif() + # Setup 64bit and 64bit windows systems + if(CMAKE_CL_64) + message(STATUS "64 bit compiler detected.") + set(LIBDIR_BASE "win64") + else() + message(STATUS "32 bit compiler detected.") + set(LIBDIR_BASE "windows") + endif() + # Can be 1910..1912 + if(MSVC_VERSION GREATER 1919) + message(STATUS "Visual Studio 2019 detected.") + set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc14) + elseif(MSVC_VERSION GREATER 1909) + message(STATUS "Visual Studio 2017 detected.") + set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc14) + elseif(MSVC_VERSION EQUAL 1900) + message(STATUS "Visual Studio 2015 detected.") + set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc14) + else() + message(STATUS "Visual Studio 2013 detected.") + set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc12) + endif() else() - message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}") + message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}") endif() if(NOT EXISTS "${LIBDIR}/") - message(FATAL_ERROR "Windows requires pre-compiled libs at: '${LIBDIR}'") + message(FATAL_ERROR "Windows requires pre-compiled libs at: '${LIBDIR}'") endif() # Add each of our libraries to our cmake_prefix_path so find_package() could work file(GLOB children RELATIVE ${LIBDIR} ${LIBDIR}/*) foreach(child ${children}) - if(IS_DIRECTORY ${LIBDIR}/${child}) - list(APPEND CMAKE_PREFIX_PATH ${LIBDIR}/${child}) - endif() + if(IS_DIRECTORY ${LIBDIR}/${child}) + list(APPEND CMAKE_PREFIX_PATH ${LIBDIR}/${child}) + endif() endforeach() set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include) @@ -208,20 +208,20 @@ windows_find_package(zlib) # we want to find before finding things that depend o windows_find_package(png) if(NOT PNG_FOUND) - warn_hardcoded_paths(libpng) - set(PNG_PNG_INCLUDE_DIR ${LIBDIR}/png/include) - set(PNG_LIBRARIES ${LIBDIR}/png/lib/libpng.lib) - set(PNG "${LIBDIR}/png") - set(PNG_INCLUDE_DIRS "${PNG}/include") - set(PNG_LIBPATH ${PNG}/lib) # not cmake defined + warn_hardcoded_paths(libpng) + set(PNG_PNG_INCLUDE_DIR ${LIBDIR}/png/include) + set(PNG_LIBRARIES ${LIBDIR}/png/lib/libpng.lib) + set(PNG "${LIBDIR}/png") + set(PNG_INCLUDE_DIRS "${PNG}/include") + set(PNG_LIBPATH ${PNG}/lib) # not cmake defined endif() set(JPEG_NAMES ${JPEG_NAMES} libjpeg) windows_find_package(jpeg REQUIRED) if(NOT JPEG_FOUND) - warn_hardcoded_paths(jpeg) - set(JPEG_INCLUDE_DIR ${LIBDIR}/jpeg/include) - set(JPEG_LIBRARIES ${LIBDIR}/jpeg/lib/libjpeg.lib) + warn_hardcoded_paths(jpeg) + set(JPEG_INCLUDE_DIR ${LIBDIR}/jpeg/include) + set(JPEG_LIBRARIES ${LIBDIR}/jpeg/lib/libjpeg.lib) endif() set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include) @@ -229,313 +229,313 @@ set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC3.lib) set(FREETYPE ${LIBDIR}/freetype) set(FREETYPE_INCLUDE_DIRS - ${LIBDIR}/freetype/include - ${LIBDIR}/freetype/include/freetype2 + ${LIBDIR}/freetype/include + ${LIBDIR}/freetype/include/freetype2 ) set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/freetype2ST.lib) windows_find_package(freetype REQUIRED) if(WITH_FFTW3) - set(FFTW3 ${LIBDIR}/fftw3) - set(FFTW3_LIBRARIES ${FFTW3}/lib/libfftw.lib) - set(FFTW3_INCLUDE_DIRS ${FFTW3}/include) - set(FFTW3_LIBPATH ${FFTW3}/lib) + set(FFTW3 ${LIBDIR}/fftw3) + set(FFTW3_LIBRARIES ${FFTW3}/lib/libfftw.lib) + set(FFTW3_INCLUDE_DIRS ${FFTW3}/include) + set(FFTW3_LIBPATH ${FFTW3}/lib) endif() if(WITH_OPENCOLLADA) - set(OPENCOLLADA ${LIBDIR}/opencollada) - - set(OPENCOLLADA_INCLUDE_DIRS - ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter - ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils - ${OPENCOLLADA}/include/opencollada/COLLADAFramework - ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader - ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser - ) - - set(OPENCOLLADA_LIBRARIES - ${OPENCOLLADA}/lib/opencollada/OpenCOLLADASaxFrameworkLoader.lib - ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAFramework.lib - ${OPENCOLLADA}/lib/opencollada/OpenCOLLADABaseUtils.lib - ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAStreamWriter.lib - ${OPENCOLLADA}/lib/opencollada/MathMLSolver.lib - ${OPENCOLLADA}/lib/opencollada/GeneratedSaxParser.lib - ${OPENCOLLADA}/lib/opencollada/xml.lib - ${OPENCOLLADA}/lib/opencollada/buffer.lib - ${OPENCOLLADA}/lib/opencollada/ftoa.lib - ) - - list(APPEND OPENCOLLADA_LIBRARIES ${OPENCOLLADA}/lib/opencollada/UTF.lib) - - set(PCRE_LIBRARIES - ${OPENCOLLADA}/lib/opencollada/pcre.lib - ) + set(OPENCOLLADA ${LIBDIR}/opencollada) + + set(OPENCOLLADA_INCLUDE_DIRS + ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter + ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils + ${OPENCOLLADA}/include/opencollada/COLLADAFramework + ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader + ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser + ) + + set(OPENCOLLADA_LIBRARIES + ${OPENCOLLADA}/lib/opencollada/OpenCOLLADASaxFrameworkLoader.lib + ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAFramework.lib + ${OPENCOLLADA}/lib/opencollada/OpenCOLLADABaseUtils.lib + ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAStreamWriter.lib + ${OPENCOLLADA}/lib/opencollada/MathMLSolver.lib + ${OPENCOLLADA}/lib/opencollada/GeneratedSaxParser.lib + ${OPENCOLLADA}/lib/opencollada/xml.lib + ${OPENCOLLADA}/lib/opencollada/buffer.lib + ${OPENCOLLADA}/lib/opencollada/ftoa.lib + ) + + list(APPEND OPENCOLLADA_LIBRARIES ${OPENCOLLADA}/lib/opencollada/UTF.lib) + + set(PCRE_LIBRARIES + ${OPENCOLLADA}/lib/opencollada/pcre.lib + ) endif() if(WITH_CODEC_FFMPEG) - set(FFMPEG_INCLUDE_DIRS - ${LIBDIR}/ffmpeg/include - ${LIBDIR}/ffmpeg/include/msvc - ) - windows_find_package(FFMPEG) - if(NOT FFMPEG_FOUND) - warn_hardcoded_paths(ffmpeg) - set(FFMPEG_LIBRARIES - ${LIBDIR}/ffmpeg/lib/avcodec.lib - ${LIBDIR}/ffmpeg/lib/avformat.lib - ${LIBDIR}/ffmpeg/lib/avdevice.lib - ${LIBDIR}/ffmpeg/lib/avutil.lib - ${LIBDIR}/ffmpeg/lib/swscale.lib - ) - endif() + set(FFMPEG_INCLUDE_DIRS + ${LIBDIR}/ffmpeg/include + ${LIBDIR}/ffmpeg/include/msvc + ) + windows_find_package(FFMPEG) + if(NOT FFMPEG_FOUND) + warn_hardcoded_paths(ffmpeg) + set(FFMPEG_LIBRARIES + ${LIBDIR}/ffmpeg/lib/avcodec.lib + ${LIBDIR}/ffmpeg/lib/avformat.lib + ${LIBDIR}/ffmpeg/lib/avdevice.lib + ${LIBDIR}/ffmpeg/lib/avutil.lib + ${LIBDIR}/ffmpeg/lib/swscale.lib + ) + endif() endif() if(WITH_IMAGE_OPENEXR) - set(OPENEXR_ROOT_DIR ${LIBDIR}/openexr) - set(OPENEXR_VERSION "2.1") - windows_find_package(OPENEXR REQUIRED) - if(NOT OPENEXR_FOUND) - warn_hardcoded_paths(OpenEXR) - set(OPENEXR ${LIBDIR}/openexr) - set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include) - set(OPENEXR_INCLUDE_DIRS ${OPENEXR_INCLUDE_DIR} ${OPENEXR}/include/OpenEXR) - set(OPENEXR_LIBPATH ${OPENEXR}/lib) - set(OPENEXR_LIBRARIES - optimized ${OPENEXR_LIBPATH}/Iex_s.lib - optimized ${OPENEXR_LIBPATH}/Half_s.lib - optimized ${OPENEXR_LIBPATH}/IlmImf_s.lib - optimized ${OPENEXR_LIBPATH}/Imath_s.lib - optimized ${OPENEXR_LIBPATH}/IlmThread_s.lib - debug ${OPENEXR_LIBPATH}/Iex_s_d.lib - debug ${OPENEXR_LIBPATH}/Half_s_d.lib - debug ${OPENEXR_LIBPATH}/IlmImf_s_d.lib - debug ${OPENEXR_LIBPATH}/Imath_s_d.lib - debug ${OPENEXR_LIBPATH}/IlmThread_s_d.lib - ) - endif() + set(OPENEXR_ROOT_DIR ${LIBDIR}/openexr) + set(OPENEXR_VERSION "2.1") + windows_find_package(OPENEXR REQUIRED) + if(NOT OPENEXR_FOUND) + warn_hardcoded_paths(OpenEXR) + set(OPENEXR ${LIBDIR}/openexr) + set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include) + set(OPENEXR_INCLUDE_DIRS ${OPENEXR_INCLUDE_DIR} ${OPENEXR}/include/OpenEXR) + set(OPENEXR_LIBPATH ${OPENEXR}/lib) + set(OPENEXR_LIBRARIES + optimized ${OPENEXR_LIBPATH}/Iex_s.lib + optimized ${OPENEXR_LIBPATH}/Half_s.lib + optimized ${OPENEXR_LIBPATH}/IlmImf_s.lib + optimized ${OPENEXR_LIBPATH}/Imath_s.lib + optimized ${OPENEXR_LIBPATH}/IlmThread_s.lib + debug ${OPENEXR_LIBPATH}/Iex_s_d.lib + debug ${OPENEXR_LIBPATH}/Half_s_d.lib + debug ${OPENEXR_LIBPATH}/IlmImf_s_d.lib + debug ${OPENEXR_LIBPATH}/Imath_s_d.lib + debug ${OPENEXR_LIBPATH}/IlmThread_s_d.lib + ) + endif() endif() if(WITH_IMAGE_TIFF) - # Try to find tiff first then complain and set static and maybe wrong paths - windows_find_package(TIFF) - if(NOT TIFF_FOUND) - warn_hardcoded_paths(libtiff) - set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib) - set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include) - endif() + # Try to find tiff first then complain and set static and maybe wrong paths + windows_find_package(TIFF) + if(NOT TIFF_FOUND) + warn_hardcoded_paths(libtiff) + set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib) + set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include) + endif() endif() if(WITH_JACK) - set(JACK_INCLUDE_DIRS - ${LIBDIR}/jack/include/jack - ${LIBDIR}/jack/include - ) - set(JACK_LIBRARIES optimized ${LIBDIR}/jack/lib/libjack.lib debug ${LIBDIR}/jack/lib/libjack_d.lib) + set(JACK_INCLUDE_DIRS + ${LIBDIR}/jack/include/jack + ${LIBDIR}/jack/include + ) + set(JACK_LIBRARIES optimized ${LIBDIR}/jack/lib/libjack.lib debug ${LIBDIR}/jack/lib/libjack_d.lib) endif() if(WITH_PYTHON) - set(PYTHON_VERSION 3.7) # CACHE STRING) + set(PYTHON_VERSION 3.7) # CACHE STRING) - string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION}) - # Use shared libs for vc2008 and vc2010 until we actually have vc2010 libs - set(PYTHON_LIBRARY ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}.lib) - unset(_PYTHON_VERSION_NO_DOTS) + string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION}) + # Use shared libs for vc2008 and vc2010 until we actually have vc2010 libs + set(PYTHON_LIBRARY ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}.lib) + unset(_PYTHON_VERSION_NO_DOTS) - # Shared includes for both vc2008 and vc2010 - set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/include/python${PYTHON_VERSION}) + # Shared includes for both vc2008 and vc2010 + set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/include/python${PYTHON_VERSION}) - # uncached vars - set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}") - set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}") + # uncached vars + set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}") + set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}") endif() if(WITH_BOOST) - if(WITH_CYCLES_OSL) - set(boost_extra_libs wave) - endif() - if(WITH_INTERNATIONAL) - list(APPEND boost_extra_libs locale) - endif() - if(WITH_OPENVDB) - list(APPEND boost_extra_libs iostreams) - endif() - set(Boost_USE_STATIC_RUNTIME ON) # prefix lib - set(Boost_USE_MULTITHREADED ON) # suffix -mt - set(Boost_USE_STATIC_LIBS ON) # suffix -s - if(WITH_WINDOWS_FIND_MODULES) - find_package(Boost COMPONENTS date_time filesystem thread regex system ${boost_extra_libs}) - endif() - if(NOT Boost_FOUND) - warn_hardcoded_paths(BOOST) - set(BOOST ${LIBDIR}/boost) - set(BOOST_INCLUDE_DIR ${BOOST}/include) - set(BOOST_LIBPATH ${BOOST}/lib) - if(CMAKE_CL_64) - set(BOOST_POSTFIX "vc140-mt-s-x64-1_68.lib") - set(BOOST_DEBUG_POSTFIX "vc140-mt-sgd-x64-1_68.lib") - else() - set(BOOST_POSTFIX "vc140-mt-s-x32-1_68.lib") - set(BOOST_DEBUG_POSTFIX "vc140-mt-sgd-x32-1_68.lib") - endif() - set(BOOST_LIBRARIES - optimized ${BOOST_LIBPATH}/libboost_date_time-${BOOST_POSTFIX} - optimized ${BOOST_LIBPATH}/libboost_filesystem-${BOOST_POSTFIX} - optimized ${BOOST_LIBPATH}/libboost_regex-${BOOST_POSTFIX} - optimized ${BOOST_LIBPATH}/libboost_system-${BOOST_POSTFIX} - optimized ${BOOST_LIBPATH}/libboost_thread-${BOOST_POSTFIX} - optimized ${BOOST_LIBPATH}/libboost_chrono-${BOOST_POSTFIX} - debug ${BOOST_LIBPATH}/libboost_date_time-${BOOST_DEBUG_POSTFIX} - debug ${BOOST_LIBPATH}/libboost_filesystem-${BOOST_DEBUG_POSTFIX} - debug ${BOOST_LIBPATH}/libboost_regex-${BOOST_DEBUG_POSTFIX} - debug ${BOOST_LIBPATH}/libboost_system-${BOOST_DEBUG_POSTFIX} - debug ${BOOST_LIBPATH}/libboost_thread-${BOOST_DEBUG_POSTFIX} - debug ${BOOST_LIBPATH}/libboost_chrono-${BOOST_DEBUG_POSTFIX} - ) - if(WITH_CYCLES_OSL) - set(BOOST_LIBRARIES ${BOOST_LIBRARIES} - optimized ${BOOST_LIBPATH}/libboost_wave-${BOOST_POSTFIX} - debug ${BOOST_LIBPATH}/libboost_wave-${BOOST_DEBUG_POSTFIX}) - endif() - if(WITH_INTERNATIONAL) - set(BOOST_LIBRARIES ${BOOST_LIBRARIES} - optimized ${BOOST_LIBPATH}/libboost_locale-${BOOST_POSTFIX} - debug ${BOOST_LIBPATH}/libboost_locale-${BOOST_DEBUG_POSTFIX}) - endif() - else() # we found boost using find_package - set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS}) - set(BOOST_LIBRARIES ${Boost_LIBRARIES}) - set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS}) - endif() - set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB") + if(WITH_CYCLES_OSL) + set(boost_extra_libs wave) + endif() + if(WITH_INTERNATIONAL) + list(APPEND boost_extra_libs locale) + endif() + if(WITH_OPENVDB) + list(APPEND boost_extra_libs iostreams) + endif() + set(Boost_USE_STATIC_RUNTIME ON) # prefix lib + set(Boost_USE_MULTITHREADED ON) # suffix -mt + set(Boost_USE_STATIC_LIBS ON) # suffix -s + if(WITH_WINDOWS_FIND_MODULES) + find_package(Boost COMPONENTS date_time filesystem thread regex system ${boost_extra_libs}) + endif() + if(NOT Boost_FOUND) + warn_hardcoded_paths(BOOST) + set(BOOST ${LIBDIR}/boost) + set(BOOST_INCLUDE_DIR ${BOOST}/include) + set(BOOST_LIBPATH ${BOOST}/lib) + if(CMAKE_CL_64) + set(BOOST_POSTFIX "vc140-mt-s-x64-1_68.lib") + set(BOOST_DEBUG_POSTFIX "vc140-mt-sgd-x64-1_68.lib") + else() + set(BOOST_POSTFIX "vc140-mt-s-x32-1_68.lib") + set(BOOST_DEBUG_POSTFIX "vc140-mt-sgd-x32-1_68.lib") + endif() + set(BOOST_LIBRARIES + optimized ${BOOST_LIBPATH}/libboost_date_time-${BOOST_POSTFIX} + optimized ${BOOST_LIBPATH}/libboost_filesystem-${BOOST_POSTFIX} + optimized ${BOOST_LIBPATH}/libboost_regex-${BOOST_POSTFIX} + optimized ${BOOST_LIBPATH}/libboost_system-${BOOST_POSTFIX} + optimized ${BOOST_LIBPATH}/libboost_thread-${BOOST_POSTFIX} + optimized ${BOOST_LIBPATH}/libboost_chrono-${BOOST_POSTFIX} + debug ${BOOST_LIBPATH}/libboost_date_time-${BOOST_DEBUG_POSTFIX} + debug ${BOOST_LIBPATH}/libboost_filesystem-${BOOST_DEBUG_POSTFIX} + debug ${BOOST_LIBPATH}/libboost_regex-${BOOST_DEBUG_POSTFIX} + debug ${BOOST_LIBPATH}/libboost_system-${BOOST_DEBUG_POSTFIX} + debug ${BOOST_LIBPATH}/libboost_thread-${BOOST_DEBUG_POSTFIX} + debug ${BOOST_LIBPATH}/libboost_chrono-${BOOST_DEBUG_POSTFIX} + ) + if(WITH_CYCLES_OSL) + set(BOOST_LIBRARIES ${BOOST_LIBRARIES} + optimized ${BOOST_LIBPATH}/libboost_wave-${BOOST_POSTFIX} + debug ${BOOST_LIBPATH}/libboost_wave-${BOOST_DEBUG_POSTFIX}) + endif() + if(WITH_INTERNATIONAL) + set(BOOST_LIBRARIES ${BOOST_LIBRARIES} + optimized ${BOOST_LIBPATH}/libboost_locale-${BOOST_POSTFIX} + debug ${BOOST_LIBPATH}/libboost_locale-${BOOST_DEBUG_POSTFIX}) + endif() + else() # we found boost using find_package + set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS}) + set(BOOST_LIBRARIES ${Boost_LIBRARIES}) + set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS}) + endif() + set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB") endif() if(WITH_OPENIMAGEIO) - windows_find_package(OpenImageIO) - set(OPENIMAGEIO ${LIBDIR}/openimageio) - set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib) - set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include) - set(OIIO_OPTIMIZED optimized ${OPENIMAGEIO_LIBPATH}/OpenImageIO.lib optimized ${OPENIMAGEIO_LIBPATH}/OpenImageIO_Util.lib) - set(OIIO_DEBUG debug ${OPENIMAGEIO_LIBPATH}/OpenImageIO_d.lib debug ${OPENIMAGEIO_LIBPATH}/OpenImageIO_Util_d.lib) - set(OPENIMAGEIO_LIBRARIES ${OIIO_OPTIMIZED} ${OIIO_DEBUG}) + windows_find_package(OpenImageIO) + set(OPENIMAGEIO ${LIBDIR}/openimageio) + set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib) + set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include) + set(OIIO_OPTIMIZED optimized ${OPENIMAGEIO_LIBPATH}/OpenImageIO.lib optimized ${OPENIMAGEIO_LIBPATH}/OpenImageIO_Util.lib) + set(OIIO_DEBUG debug ${OPENIMAGEIO_LIBPATH}/OpenImageIO_d.lib debug ${OPENIMAGEIO_LIBPATH}/OpenImageIO_Util_d.lib) + set(OPENIMAGEIO_LIBRARIES ${OIIO_OPTIMIZED} ${OIIO_DEBUG}) - set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0") - set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD") - set(OPENIMAGEIO_IDIFF "${OPENIMAGEIO}/bin/idiff.exe") - add_definitions(-DOIIO_STATIC_BUILD) - add_definitions(-DOIIO_NO_SSE=1) + set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0") + set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD") + set(OPENIMAGEIO_IDIFF "${OPENIMAGEIO}/bin/idiff.exe") + add_definitions(-DOIIO_STATIC_BUILD) + add_definitions(-DOIIO_NO_SSE=1) endif() if(WITH_LLVM) - set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation") - set(LLVM_INCLUDE_DIRS ${LLVM_ROOT_DIR}/$<$<CONFIG:Debug>:Debug>/include CACHE PATH "Path to the LLVM include directory") - file(GLOB LLVM_LIBRARY_OPTIMIZED ${LLVM_ROOT_DIR}/lib/*.lib) + set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation") + set(LLVM_INCLUDE_DIRS ${LLVM_ROOT_DIR}/$<$<CONFIG:Debug>:Debug>/include CACHE PATH "Path to the LLVM include directory") + file(GLOB LLVM_LIBRARY_OPTIMIZED ${LLVM_ROOT_DIR}/lib/*.lib) - if(EXISTS ${LLVM_ROOT_DIR}/debug/lib) - foreach(LLVM_OPTIMIZED_LIB ${LLVM_LIBRARY_OPTIMIZED}) - get_filename_component(LIBNAME ${LLVM_OPTIMIZED_LIB} ABSOLUTE) - list(APPEND LLVM_LIBS optimized ${LIBNAME}) - endforeach(LLVM_OPTIMIZED_LIB) + if(EXISTS ${LLVM_ROOT_DIR}/debug/lib) + foreach(LLVM_OPTIMIZED_LIB ${LLVM_LIBRARY_OPTIMIZED}) + get_filename_component(LIBNAME ${LLVM_OPTIMIZED_LIB} ABSOLUTE) + list(APPEND LLVM_LIBS optimized ${LIBNAME}) + endforeach(LLVM_OPTIMIZED_LIB) - file(GLOB LLVM_LIBRARY_DEBUG ${LLVM_ROOT_DIR}/debug/lib/*.lib) + file(GLOB LLVM_LIBRARY_DEBUG ${LLVM_ROOT_DIR}/debug/lib/*.lib) - foreach(LLVM_DEBUG_LIB ${LLVM_LIBRARY_DEBUG}) - get_filename_component(LIBNAME ${LLVM_DEBUG_LIB} ABSOLUTE) - list(APPEND LLVM_LIBS debug ${LIBNAME}) - endforeach(LLVM_DEBUG_LIB) + foreach(LLVM_DEBUG_LIB ${LLVM_LIBRARY_DEBUG}) + get_filename_component(LIBNAME ${LLVM_DEBUG_LIB} ABSOLUTE) + list(APPEND LLVM_LIBS debug ${LIBNAME}) + endforeach(LLVM_DEBUG_LIB) - set(LLVM_LIBRARY ${LLVM_LIBS}) - else() - message(WARNING "LLVM debug libs not present on this system. Using release libs for debug builds.") - set(LLVM_LIBRARY ${LLVM_LIBRARY_OPTIMIZED}) - endif() + set(LLVM_LIBRARY ${LLVM_LIBS}) + else() + message(WARNING "LLVM debug libs not present on this system. Using release libs for debug builds.") + set(LLVM_LIBRARY ${LLVM_LIBRARY_OPTIMIZED}) + endif() endif() if(WITH_OPENCOLORIO) - set(OPENCOLORIO ${LIBDIR}/opencolorio) - set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include) - set(OPENCOLORIO_LIBPATH ${LIBDIR}/opencolorio/lib) - set(OPENCOLORIO_LIBRARIES - optimized ${OPENCOLORIO_LIBPATH}/OpenColorIO.lib - optimized ${OPENCOLORIO_LIBPATH}/tinyxml.lib - optimized ${OPENCOLORIO_LIBPATH}/libyaml-cpp.lib - debug ${OPENCOLORIO_LIBPATH}/OpenColorIO_d.lib - debug ${OPENCOLORIO_LIBPATH}/tinyxml_d.lib - debug ${OPENCOLORIO_LIBPATH}/libyaml-cpp_d.lib - ) - set(OPENCOLORIO_DEFINITIONS) + set(OPENCOLORIO ${LIBDIR}/opencolorio) + set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include) + set(OPENCOLORIO_LIBPATH ${LIBDIR}/opencolorio/lib) + set(OPENCOLORIO_LIBRARIES + optimized ${OPENCOLORIO_LIBPATH}/OpenColorIO.lib + optimized ${OPENCOLORIO_LIBPATH}/tinyxml.lib + optimized ${OPENCOLORIO_LIBPATH}/libyaml-cpp.lib + debug ${OPENCOLORIO_LIBPATH}/OpenColorIO_d.lib + debug ${OPENCOLORIO_LIBPATH}/tinyxml_d.lib + debug ${OPENCOLORIO_LIBPATH}/libyaml-cpp_d.lib + ) + set(OPENCOLORIO_DEFINITIONS) endif() if(WITH_OPENVDB) - set(BLOSC_LIBRARIES optimized ${LIBDIR}/blosc/lib/libblosc.lib debug ${LIBDIR}/blosc/lib/libblosc_d.lib) - set(TBB_LIBRARIES optimized ${LIBDIR}/tbb/lib/tbb.lib debug ${LIBDIR}/tbb/lib/tbb_debug.lib) - set(TBB_INCLUDE_DIR ${LIBDIR}/tbb/include) - set(OPENVDB ${LIBDIR}/openvdb) - set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib) - set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include ${TBB_INCLUDE_DIR}) - set(OPENVDB_LIBRARIES optimized ${OPENVDB_LIBPATH}/openvdb.lib debug ${OPENVDB_LIBPATH}/openvdb_d.lib ${TBB_LIBRARIES} ${BLOSC_LIBRARIES}) - set(OPENVDB_DEFINITIONS -DNOMINMAX) + set(BLOSC_LIBRARIES optimized ${LIBDIR}/blosc/lib/libblosc.lib debug ${LIBDIR}/blosc/lib/libblosc_d.lib) + set(TBB_LIBRARIES optimized ${LIBDIR}/tbb/lib/tbb.lib debug ${LIBDIR}/tbb/lib/tbb_debug.lib) + set(TBB_INCLUDE_DIR ${LIBDIR}/tbb/include) + set(OPENVDB ${LIBDIR}/openvdb) + set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib) + set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include ${TBB_INCLUDE_DIR}) + set(OPENVDB_LIBRARIES optimized ${OPENVDB_LIBPATH}/openvdb.lib debug ${OPENVDB_LIBPATH}/openvdb_d.lib ${TBB_LIBRARIES} ${BLOSC_LIBRARIES}) + set(OPENVDB_DEFINITIONS -DNOMINMAX) endif() if(WITH_ALEMBIC) - set(ALEMBIC ${LIBDIR}/alembic) - set(ALEMBIC_INCLUDE_DIR ${ALEMBIC}/include) - set(ALEMBIC_INCLUDE_DIRS ${ALEMBIC_INCLUDE_DIR}) - set(ALEMBIC_LIBPATH ${ALEMBIC}/lib) - set(ALEMBIC_LIBRARIES optimized ${ALEMBIC}/lib/alembic.lib debug ${ALEMBIC}/lib/alembic_d.lib) - set(ALEMBIC_FOUND 1) + set(ALEMBIC ${LIBDIR}/alembic) + set(ALEMBIC_INCLUDE_DIR ${ALEMBIC}/include) + set(ALEMBIC_INCLUDE_DIRS ${ALEMBIC_INCLUDE_DIR}) + set(ALEMBIC_LIBPATH ${ALEMBIC}/lib) + set(ALEMBIC_LIBRARIES optimized ${ALEMBIC}/lib/alembic.lib debug ${ALEMBIC}/lib/alembic_d.lib) + set(ALEMBIC_FOUND 1) endif() if(WITH_MOD_CLOTH_ELTOPO) - set(LAPACK ${LIBDIR}/lapack) - # set(LAPACK_INCLUDE_DIR ${LAPACK}/include) - set(LAPACK_LIBPATH ${LAPACK}/lib) - set(LAPACK_LIBRARIES - ${LIBDIR}/lapack/lib/libf2c.lib - ${LIBDIR}/lapack/lib/clapack_nowrap.lib - ${LIBDIR}/lapack/lib/BLAS_nowrap.lib - ) + set(LAPACK ${LIBDIR}/lapack) + # set(LAPACK_INCLUDE_DIR ${LAPACK}/include) + set(LAPACK_LIBPATH ${LAPACK}/lib) + set(LAPACK_LIBRARIES + ${LIBDIR}/lapack/lib/libf2c.lib + ${LIBDIR}/lapack/lib/clapack_nowrap.lib + ${LIBDIR}/lapack/lib/BLAS_nowrap.lib + ) endif() if(WITH_IMAGE_OPENJPEG) - set(OPENJPEG ${LIBDIR}/openjpeg) - set(OPENJPEG_INCLUDE_DIRS ${OPENJPEG}/include/openjpeg-2.3) - set(OPENJPEG_LIBRARIES ${OPENJPEG}/lib/openjp2.lib) + set(OPENJPEG ${LIBDIR}/openjpeg) + set(OPENJPEG_INCLUDE_DIRS ${OPENJPEG}/include/openjpeg-2.3) + set(OPENJPEG_LIBRARIES ${OPENJPEG}/lib/openjp2.lib) endif() if(WITH_OPENSUBDIV) - set(OPENSUBDIV_INCLUDE_DIR ${LIBDIR}/opensubdiv/include) - set(OPENSUBDIV_LIBPATH ${LIBDIR}/opensubdiv/lib) - set(OPENSUBDIV_LIBRARIES - optimized ${OPENSUBDIV_LIBPATH}/osdCPU.lib - optimized ${OPENSUBDIV_LIBPATH}/osdGPU.lib - debug ${OPENSUBDIV_LIBPATH}/osdCPU_d.lib - debug ${OPENSUBDIV_LIBPATH}/osdGPU_d.lib - ) - set(OPENSUBDIV_HAS_OPENMP TRUE) - set(OPENSUBDIV_HAS_TBB FALSE) - set(OPENSUBDIV_HAS_OPENCL TRUE) - set(OPENSUBDIV_HAS_CUDA FALSE) - set(OPENSUBDIV_HAS_GLSL_TRANSFORM_FEEDBACK TRUE) - set(OPENSUBDIV_HAS_GLSL_COMPUTE TRUE) - windows_find_package(OpenSubdiv) + set(OPENSUBDIV_INCLUDE_DIR ${LIBDIR}/opensubdiv/include) + set(OPENSUBDIV_LIBPATH ${LIBDIR}/opensubdiv/lib) + set(OPENSUBDIV_LIBRARIES + optimized ${OPENSUBDIV_LIBPATH}/osdCPU.lib + optimized ${OPENSUBDIV_LIBPATH}/osdGPU.lib + debug ${OPENSUBDIV_LIBPATH}/osdCPU_d.lib + debug ${OPENSUBDIV_LIBPATH}/osdGPU_d.lib + ) + set(OPENSUBDIV_HAS_OPENMP TRUE) + set(OPENSUBDIV_HAS_TBB FALSE) + set(OPENSUBDIV_HAS_OPENCL TRUE) + set(OPENSUBDIV_HAS_CUDA FALSE) + set(OPENSUBDIV_HAS_GLSL_TRANSFORM_FEEDBACK TRUE) + set(OPENSUBDIV_HAS_GLSL_COMPUTE TRUE) + windows_find_package(OpenSubdiv) endif() if(WITH_SDL) - set(SDL ${LIBDIR}/sdl) - set(SDL_INCLUDE_DIR ${SDL}/include) - set(SDL_LIBPATH ${SDL}/lib) - set(SDL_LIBRARY ${SDL_LIBPATH}/SDL2.lib) + set(SDL ${LIBDIR}/sdl) + set(SDL_INCLUDE_DIR ${SDL}/include) + set(SDL_LIBPATH ${SDL}/lib) + set(SDL_LIBRARY ${SDL_LIBPATH}/SDL2.lib) endif() # Audio IO if(WITH_SYSTEM_AUDASPACE) - set(AUDASPACE_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace) - set(AUDASPACE_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace.lib) - set(AUDASPACE_C_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace) - set(AUDASPACE_C_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace-c.lib) - set(AUDASPACE_PY_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace) - set(AUDASPACE_PY_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace-py.lib) + set(AUDASPACE_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace) + set(AUDASPACE_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace.lib) + set(AUDASPACE_C_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace) + set(AUDASPACE_C_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace-c.lib) + set(AUDASPACE_PY_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace) + set(AUDASPACE_PY_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace-py.lib) endif() # used in many places so include globally, like OpenGL @@ -544,130 +544,130 @@ blender_include_dirs_sys("${PTHREADS_INCLUDE_DIRS}") #find signtool set(ProgramFilesX86_NAME "ProgramFiles(x86)") #env dislikes the ( ) find_program(SIGNTOOL_EXE signtool - HINTS - "$ENV{${ProgramFilesX86_NAME}}/Windows Kits/10/bin/x86/" - "$ENV{ProgramFiles}/Windows Kits/10/bin/x86/" - "$ENV{${ProgramFilesX86_NAME}}/Windows Kits/8.1/bin/x86/" - "$ENV{ProgramFiles}/Windows Kits/8.1/bin/x86/" - "$ENV{${ProgramFilesX86_NAME}}/Windows Kits/8.0/bin/x86/" - "$ENV{ProgramFiles}/Windows Kits/8.0/bin/x86/" + HINTS + "$ENV{${ProgramFilesX86_NAME}}/Windows Kits/10/bin/x86/" + "$ENV{ProgramFiles}/Windows Kits/10/bin/x86/" + "$ENV{${ProgramFilesX86_NAME}}/Windows Kits/8.1/bin/x86/" + "$ENV{ProgramFiles}/Windows Kits/8.1/bin/x86/" + "$ENV{${ProgramFilesX86_NAME}}/Windows Kits/8.0/bin/x86/" + "$ENV{ProgramFiles}/Windows Kits/8.0/bin/x86/" ) set(WINTAB_INC ${LIBDIR}/wintab/include) if(WITH_OPENAL) - set(OPENAL ${LIBDIR}/openal) - set(OPENALDIR ${LIBDIR}/openal) - set(OPENAL_INCLUDE_DIR ${OPENAL}/include/AL) - set(OPENAL_LIBPATH ${OPENAL}/lib) - if(MSVC) - set(OPENAL_LIBRARY ${OPENAL_LIBPATH}/openal32.lib) - else() - set(OPENAL_LIBRARY ${OPENAL_LIBPATH}/wrap_oal.lib) - endif() + set(OPENAL ${LIBDIR}/openal) + set(OPENALDIR ${LIBDIR}/openal) + set(OPENAL_INCLUDE_DIR ${OPENAL}/include/AL) + set(OPENAL_LIBPATH ${OPENAL}/lib) + if(MSVC) + set(OPENAL_LIBRARY ${OPENAL_LIBPATH}/openal32.lib) + else() + set(OPENAL_LIBRARY ${OPENAL_LIBPATH}/wrap_oal.lib) + endif() endif() if(WITH_CODEC_SNDFILE) - set(LIBSNDFILE ${LIBDIR}/sndfile) - set(LIBSNDFILE_INCLUDE_DIRS ${LIBSNDFILE}/include) - set(LIBSNDFILE_LIBPATH ${LIBSNDFILE}/lib) # TODO, deprecate - set(LIBSNDFILE_LIBRARIES ${LIBSNDFILE_LIBPATH}/libsndfile-1.lib) + set(LIBSNDFILE ${LIBDIR}/sndfile) + set(LIBSNDFILE_INCLUDE_DIRS ${LIBSNDFILE}/include) + set(LIBSNDFILE_LIBPATH ${LIBSNDFILE}/lib) # TODO, deprecate + set(LIBSNDFILE_LIBRARIES ${LIBSNDFILE_LIBPATH}/libsndfile-1.lib) endif() if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD) - add_definitions(-D__SSE__ -D__MMX__) + add_definitions(-D__SSE__ -D__MMX__) endif() if(WITH_CYCLES_OSL) - set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation") - - find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib) - find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib) - find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib) - find_library(OSL_LIB_EXEC_DEBUG NAMES oslexec_d PATHS ${CYCLES_OSL}/lib) - find_library(OSL_LIB_COMP_DEBUG NAMES oslcomp_d PATHS ${CYCLES_OSL}/lib) - find_library(OSL_LIB_QUERY_DEBUG NAMES oslquery_d PATHS ${CYCLES_OSL}/lib) - list(APPEND OSL_LIBRARIES - optimized ${OSL_LIB_COMP} - optimized ${OSL_LIB_EXEC} - optimized ${OSL_LIB_QUERY} - optimized ${CYCLES_OSL}/lib/pugixml.lib - debug ${OSL_LIB_EXEC_DEBUG} - debug ${OSL_LIB_COMP_DEBUG} - debug ${OSL_LIB_QUERY_DEBUG} - debug ${CYCLES_OSL}/lib/pugixml_d.lib - ) - find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include) - find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin) - - if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER) - set(OSL_FOUND TRUE) - else() - message(STATUS "OSL not found") - set(WITH_CYCLES_OSL OFF) - endif() + set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation") + + find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib) + find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib) + find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib) + find_library(OSL_LIB_EXEC_DEBUG NAMES oslexec_d PATHS ${CYCLES_OSL}/lib) + find_library(OSL_LIB_COMP_DEBUG NAMES oslcomp_d PATHS ${CYCLES_OSL}/lib) + find_library(OSL_LIB_QUERY_DEBUG NAMES oslquery_d PATHS ${CYCLES_OSL}/lib) + list(APPEND OSL_LIBRARIES + optimized ${OSL_LIB_COMP} + optimized ${OSL_LIB_EXEC} + optimized ${OSL_LIB_QUERY} + optimized ${CYCLES_OSL}/lib/pugixml.lib + debug ${OSL_LIB_EXEC_DEBUG} + debug ${OSL_LIB_COMP_DEBUG} + debug ${OSL_LIB_QUERY_DEBUG} + debug ${CYCLES_OSL}/lib/pugixml_d.lib + ) + find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include) + find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin) + + if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER) + set(OSL_FOUND TRUE) + else() + message(STATUS "OSL not found") + set(WITH_CYCLES_OSL OFF) + endif() endif() if(WITH_CYCLES_EMBREE) - windows_find_package(Embree) - if(NOT EMBREE_FOUND) - set(EMBREE_INCLUDE_DIRS ${LIBDIR}/embree/include) - set(EMBREE_LIBRARIES - optimized ${LIBDIR}/embree/lib/embree3.lib - optimized ${LIBDIR}/embree/lib/embree_avx2.lib - optimized ${LIBDIR}/embree/lib/embree_avx.lib - optimized ${LIBDIR}/embree/lib/embree_sse42.lib - optimized ${LIBDIR}/embree/lib/lexers.lib - optimized ${LIBDIR}/embree/lib/math.lib - optimized ${LIBDIR}/embree/lib/simd.lib - optimized ${LIBDIR}/embree/lib/sys.lib - optimized ${LIBDIR}/embree/lib/tasking.lib - - debug ${LIBDIR}/embree/lib/embree3_d.lib - debug ${LIBDIR}/embree/lib/embree_avx2_d.lib - debug ${LIBDIR}/embree/lib/embree_avx_d.lib - debug ${LIBDIR}/embree/lib/embree_sse42_d.lib - debug ${LIBDIR}/embree/lib/lexers_d.lib - debug ${LIBDIR}/embree/lib/math_d.lib - debug ${LIBDIR}/embree/lib/simd_d.lib - debug ${LIBDIR}/embree/lib/sys_d.lib - debug ${LIBDIR}/embree/lib/tasking_d.lib) - endif() + windows_find_package(Embree) + if(NOT EMBREE_FOUND) + set(EMBREE_INCLUDE_DIRS ${LIBDIR}/embree/include) + set(EMBREE_LIBRARIES + optimized ${LIBDIR}/embree/lib/embree3.lib + optimized ${LIBDIR}/embree/lib/embree_avx2.lib + optimized ${LIBDIR}/embree/lib/embree_avx.lib + optimized ${LIBDIR}/embree/lib/embree_sse42.lib + optimized ${LIBDIR}/embree/lib/lexers.lib + optimized ${LIBDIR}/embree/lib/math.lib + optimized ${LIBDIR}/embree/lib/simd.lib + optimized ${LIBDIR}/embree/lib/sys.lib + optimized ${LIBDIR}/embree/lib/tasking.lib + + debug ${LIBDIR}/embree/lib/embree3_d.lib + debug ${LIBDIR}/embree/lib/embree_avx2_d.lib + debug ${LIBDIR}/embree/lib/embree_avx_d.lib + debug ${LIBDIR}/embree/lib/embree_sse42_d.lib + debug ${LIBDIR}/embree/lib/lexers_d.lib + debug ${LIBDIR}/embree/lib/math_d.lib + debug ${LIBDIR}/embree/lib/simd_d.lib + debug ${LIBDIR}/embree/lib/sys_d.lib + debug ${LIBDIR}/embree/lib/tasking_d.lib) + endif() endif() if (WINDOWS_PYTHON_DEBUG) - # Include the system scripts in the blender_python_system_scripts project. - FILE(GLOB_RECURSE inFiles "${CMAKE_SOURCE_DIR}/release/scripts/*.*" ) - ADD_CUSTOM_TARGET(blender_python_system_scripts SOURCES ${inFiles}) - foreach(_source IN ITEMS ${inFiles}) - get_filename_component(_source_path "${_source}" PATH) - string(REPLACE "${CMAKE_SOURCE_DIR}/release/scripts/" "" _source_path "${_source_path}") - string(REPLACE "/" "\\" _group_path "${_source_path}") - source_group("${_group_path}" FILES "${_source}") - endforeach() - # Include the user scripts from the profile folder in the blender_python_user_scripts project. - set(USER_SCRIPTS_ROOT "$ENV{appdata}/blender foundation/blender/${BLENDER_VERSION}") - file(TO_CMAKE_PATH ${USER_SCRIPTS_ROOT} USER_SCRIPTS_ROOT) - FILE(GLOB_RECURSE inFiles "${USER_SCRIPTS_ROOT}/scripts/*.*" ) - ADD_CUSTOM_TARGET(blender_python_user_scripts SOURCES ${inFiles}) - foreach(_source IN ITEMS ${inFiles}) - get_filename_component(_source_path "${_source}" PATH) - string(REPLACE "${USER_SCRIPTS_ROOT}/scripts" "" _source_path "${_source_path}") - string(REPLACE "/" "\\" _group_path "${_source_path}") - source_group("${_group_path}" FILES "${_source}") - endforeach() - set_target_properties(blender_python_system_scripts PROPERTIES FOLDER "scripts") - set_target_properties(blender_python_user_scripts PROPERTIES FOLDER "scripts") - # Set the default debugging options for the project, only write this file once so the user - # is free to override them at their own perril. - set(USER_PROPS_FILE "${CMAKE_CURRENT_BINARY_DIR}/source/creator/blender.Cpp.user.props") - if(NOT EXISTS ${USER_PROPS_FILE}) - # Layout below is messy, because otherwise the generated file will look messy. - file(WRITE ${USER_PROPS_FILE} "<?xml version=\"1.0\" encoding=\"utf-8\"?> + # Include the system scripts in the blender_python_system_scripts project. + FILE(GLOB_RECURSE inFiles "${CMAKE_SOURCE_DIR}/release/scripts/*.*" ) + ADD_CUSTOM_TARGET(blender_python_system_scripts SOURCES ${inFiles}) + foreach(_source IN ITEMS ${inFiles}) + get_filename_component(_source_path "${_source}" PATH) + string(REPLACE "${CMAKE_SOURCE_DIR}/release/scripts/" "" _source_path "${_source_path}") + string(REPLACE "/" "\\" _group_path "${_source_path}") + source_group("${_group_path}" FILES "${_source}") + endforeach() + # Include the user scripts from the profile folder in the blender_python_user_scripts project. + set(USER_SCRIPTS_ROOT "$ENV{appdata}/blender foundation/blender/${BLENDER_VERSION}") + file(TO_CMAKE_PATH ${USER_SCRIPTS_ROOT} USER_SCRIPTS_ROOT) + FILE(GLOB_RECURSE inFiles "${USER_SCRIPTS_ROOT}/scripts/*.*" ) + ADD_CUSTOM_TARGET(blender_python_user_scripts SOURCES ${inFiles}) + foreach(_source IN ITEMS ${inFiles}) + get_filename_component(_source_path "${_source}" PATH) + string(REPLACE "${USER_SCRIPTS_ROOT}/scripts" "" _source_path "${_source_path}") + string(REPLACE "/" "\\" _group_path "${_source_path}") + source_group("${_group_path}" FILES "${_source}") + endforeach() + set_target_properties(blender_python_system_scripts PROPERTIES FOLDER "scripts") + set_target_properties(blender_python_user_scripts PROPERTIES FOLDER "scripts") + # Set the default debugging options for the project, only write this file once so the user + # is free to override them at their own perril. + set(USER_PROPS_FILE "${CMAKE_CURRENT_BINARY_DIR}/source/creator/blender.Cpp.user.props") + if(NOT EXISTS ${USER_PROPS_FILE}) + # Layout below is messy, because otherwise the generated file will look messy. + file(WRITE ${USER_PROPS_FILE} "<?xml version=\"1.0\" encoding=\"utf-8\"?> <Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"> - <PropertyGroup> - <LocalDebuggerCommandArguments>-con --env-system-scripts \"${CMAKE_SOURCE_DIR}/release/scripts\" </LocalDebuggerCommandArguments> - </PropertyGroup> + <PropertyGroup> + <LocalDebuggerCommandArguments>-con --env-system-scripts \"${CMAKE_SOURCE_DIR}/release/scripts\" </LocalDebuggerCommandArguments> + </PropertyGroup> </Project>") - endif() + endif() endif() |