Changeset View
Changeset View
Standalone View
Standalone View
CMakeLists.txt
| Show First 20 Lines • Show All 494 Lines • ▼ Show 20 Lines | if(WITH_GLEW_ES AND WITH_SYSTEM_GLEW) | ||||
| set(WITH_SYSTEM_GLEW OFF) | set(WITH_SYSTEM_GLEW OFF) | ||||
| endif() | endif() | ||||
| if(WIN32) | if(WIN32) | ||||
| getDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES) | getDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES) | ||||
| set(CPACK_INSTALL_PREFIX ${CMAKE_GENERIC_PROGRAM_FILES}/${}) | set(CPACK_INSTALL_PREFIX ${CMAKE_GENERIC_PROGRAM_FILES}/${}) | ||||
| endif() | endif() | ||||
| # Experimental support of C11 and C++11 | |||||
| # | |||||
| # We default options to whatever default standard in the current compiler. | |||||
| if(APPLE) | |||||
| set(_c11_init ON) | |||||
| set(_cxx11_init ON) | |||||
| set(WITH_C11 ON) | |||||
| set(WITH_CXX11 ON) | |||||
| elseif(CMAKE_COMPILER_IS_GNUCC AND (NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "6.0") AND (NOT WITH_CXX11)) | |||||
| set(_c11_init ON) | |||||
| set(_cxx11_init ON) | |||||
| else() | |||||
| set(_c11_init OFF) | |||||
| set(_cxx11_init OFF) | |||||
| endif() | |||||
| option(WITH_C11 "Build with C11 standard enabled, for development use only!" ${_c11_init}) | |||||
| mark_as_advanced(WITH_C11) | |||||
| option(WITH_CXX11 "Build with C++11 standard enabled, for development use only!" ${_cxx11_init}) | |||||
| mark_as_advanced(WITH_CXX11) | |||||
| # Compiler toolchain | # Compiler toolchain | ||||
| if(CMAKE_COMPILER_IS_GNUCC) | if(CMAKE_COMPILER_IS_GNUCC) | ||||
| option(WITH_LINKER_GOLD "Use ld.gold linker which is usually faster than ld.bfd" ON) | option(WITH_LINKER_GOLD "Use ld.gold linker which is usually faster than ld.bfd" ON) | ||||
| mark_as_advanced(WITH_LINKER_GOLD) | mark_as_advanced(WITH_LINKER_GOLD) | ||||
| endif() | endif() | ||||
| if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") | if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") | ||||
| option(WITH_COMPILER_ASAN "Build and link against address sanitizer (only for Debug & RelWithDebInfo targets)." OFF) | option(WITH_COMPILER_ASAN "Build and link against address sanitizer (only for Debug & RelWithDebInfo targets)." OFF) | ||||
| ▲ Show 20 Lines • Show All 161 Lines • ▼ Show 20 Lines | if(NOT WITH_BOOST) | ||||
| set_and_warn(WITH_OPENAL OFF) # depends on AUDASPACE | set_and_warn(WITH_OPENAL OFF) # depends on AUDASPACE | ||||
| set_and_warn(WITH_GAMEENGINE OFF) # depends on AUDASPACE | set_and_warn(WITH_GAMEENGINE OFF) # depends on AUDASPACE | ||||
| set_and_warn(WITH_PLAYER OFF) # depends on GAMEENGINE | set_and_warn(WITH_PLAYER OFF) # depends on GAMEENGINE | ||||
| elseif(WITH_CYCLES OR WITH_OPENIMAGEIO OR WITH_AUDASPACE OR WITH_INTERNATIONAL OR | elseif(WITH_CYCLES OR WITH_OPENIMAGEIO OR WITH_AUDASPACE OR WITH_INTERNATIONAL OR | ||||
| WITH_OPENVDB OR WITH_OPENCOLORIO) | WITH_OPENVDB OR WITH_OPENCOLORIO) | ||||
| # Keep enabled | # Keep enabled | ||||
| else() | else() | ||||
| # New dependency graph needs either Boost or C++11 for function bindings. | # Disable boost if not needed. | ||||
| if(NOT WITH_CXX11) | |||||
| # Enabled but we don't need it | |||||
| set(WITH_BOOST OFF) | set(WITH_BOOST OFF) | ||||
| endif() | endif() | ||||
| endif() | |||||
| # auto enable openimageio for cycles | # auto enable openimageio for cycles | ||||
| if(WITH_CYCLES) | if(WITH_CYCLES) | ||||
| set(WITH_OPENIMAGEIO ON) | set(WITH_OPENIMAGEIO ON) | ||||
| # auto enable llvm for cycles_osl | # auto enable llvm for cycles_osl | ||||
| if(WITH_CYCLES_OSL) | if(WITH_CYCLES_OSL) | ||||
| set(WITH_LLVM ON CACHE BOOL "" FORCE) | set(WITH_LLVM ON CACHE BOOL "" FORCE) | ||||
| Show All 39 Lines | |||||
| if(WITH_BUILDINFO) | if(WITH_BUILDINFO) | ||||
| find_package(Git) | find_package(Git) | ||||
| if(NOT GIT_FOUND) | if(NOT GIT_FOUND) | ||||
| message(WARNING "Git was not found, disabling WITH_BUILDINFO") | message(WARNING "Git was not found, disabling WITH_BUILDINFO") | ||||
| set(WITH_BUILDINFO OFF) | set(WITH_BUILDINFO OFF) | ||||
| endif() | endif() | ||||
| endif() | endif() | ||||
| TEST_SHARED_PTR_SUPPORT() | |||||
| TEST_UNORDERED_MAP_SUPPORT() | |||||
| if(WITH_AUDASPACE) | if(WITH_AUDASPACE) | ||||
| if(WITH_SYSTEM_AUDASPACE) | if(WITH_SYSTEM_AUDASPACE) | ||||
| set(AUDASPACE_DEFINITIONS | set(AUDASPACE_DEFINITIONS | ||||
| -DWITH_AUDASPACE | -DWITH_AUDASPACE | ||||
| -DWITH_SYSTEM_AUDASPACE | -DWITH_SYSTEM_AUDASPACE | ||||
| "-DAUD_DEVICE_H=<AUD_Device.h>" | "-DAUD_DEVICE_H=<AUD_Device.h>" | ||||
| "-DAUD_SPECIAL_H=<AUD_Special.h>" | "-DAUD_SPECIAL_H=<AUD_Special.h>" | ||||
| "-DAUD_SOUND_H=<AUD_Sound.h>" | "-DAUD_SOUND_H=<AUD_Sound.h>" | ||||
| ▲ Show 20 Lines • Show All 579 Lines • ▼ Show 20 Lines | else() | ||||
| endif() | endif() | ||||
| endif() | endif() | ||||
| endif() | endif() | ||||
| #----------------------------------------------------------------------------- | #----------------------------------------------------------------------------- | ||||
| # Configure Ceres | # Configure Ceres | ||||
| if(WITH_LIBMV) | if(WITH_LIBMV) | ||||
| set(CERES_DEFINES) | # We always have C++11 which includes unordered_map. | ||||
| set(CERES_DEFINES -DCERES_STD_UNORDERED_MAP) | |||||
| if(WITH_CXX11) | |||||
| # nothing to be done | |||||
| elseif(SHARED_PTR_FOUND) | |||||
| if(SHARED_PTR_TR1_MEMORY_HEADER) | |||||
| list(APPEND CERES_DEFINES -DCERES_TR1_MEMORY_HEADER) | |||||
| endif() | |||||
| if(SHARED_PTR_TR1_NAMESPACE) | |||||
| list(APPEND CERES_DEFINES -DCERES_TR1_SHARED_PTR) | |||||
| endif() | |||||
| else() | |||||
| message(FATAL_ERROR "Ceres: Unable to find shared_ptr.") | |||||
| endif() | |||||
| if(WITH_CXX11) | |||||
| list(APPEND CERES_DEFINES -DCERES_STD_UNORDERED_MAP) | |||||
| elseif(HAVE_STD_UNORDERED_MAP_HEADER) | |||||
| if(HAVE_UNORDERED_MAP_IN_STD_NAMESPACE) | |||||
| list(APPEND CERES_DEFINES -DCERES_STD_UNORDERED_MAP) | |||||
| else() | |||||
| if(HAVE_UNORDERED_MAP_IN_TR1_NAMESPACE) | |||||
| list(APPEND CERES_DEFINES -DCERES_STD_UNORDERED_MAP_IN_TR1_NAMESPACE) | |||||
| else() | |||||
| list(APPEND CERES_DEFINES -DCERES_NO_UNORDERED_MAP) | |||||
| message(STATUS "Ceres: Replacing unordered_map/set with map/set (warning: slower!)") | |||||
| endif() | |||||
| endif() | |||||
| else() | |||||
| if(HAVE_UNORDERED_MAP_IN_TR1_NAMESPACE) | |||||
| list(APPEND CERES_DEFINES -DCERES_TR1_UNORDERED_MAP) | |||||
| else() | |||||
| list(APPEND CERES_DEFINES -DCERES_NO_UNORDERED_MAP) | |||||
| message(STATUS "Ceres: Replacing unordered_map/set with map/set (warning: slower!)") | |||||
| endif() | |||||
| endif() | |||||
| endif() | endif() | ||||
| #----------------------------------------------------------------------------- | #----------------------------------------------------------------------------- | ||||
| # Extra compile flags | # Extra compile flags | ||||
| if(CMAKE_COMPILER_IS_GNUCC) | if(CMAKE_COMPILER_IS_GNUCC) | ||||
| ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall) | ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall) | ||||
| ▲ Show 20 Lines • Show All 205 Lines • ▼ Show 20 Lines | if(WITH_PYTHON) | ||||
| if(WIN32 OR APPLE) | if(WIN32 OR APPLE) | ||||
| # pass, we have this in lib/python/site-packages | # pass, we have this in lib/python/site-packages | ||||
| elseif(WITH_PYTHON_INSTALL_REQUESTS) | elseif(WITH_PYTHON_INSTALL_REQUESTS) | ||||
| find_python_package(requests) | find_python_package(requests) | ||||
| endif() | endif() | ||||
| endif() | endif() | ||||
| if(WITH_CXX11) | |||||
| if( | if( | ||||
| CMAKE_COMPILER_IS_GNUCC OR | CMAKE_COMPILER_IS_GNUCC OR | ||||
| CMAKE_C_COMPILER_ID MATCHES "Clang" OR | CMAKE_C_COMPILER_ID MATCHES "Clang" OR | ||||
| CMAKE_C_COMPILER_ID MATCHES "Intel" | CMAKE_C_COMPILER_ID MATCHES "Intel" | ||||
| ) | ) | ||||
| # TODO(sergey): Do we want c++11 or gnu-c++11 here? | # TODO(sergey): Do we want c++11 or gnu-c++11 here? | ||||
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") | ||||
| elseif(MSVC) | elseif(MSVC) | ||||
| # Nothing special is needed, C++11 features are available by default. | # Nothing special is needed, C++11 features are available by default. | ||||
| else() | else() | ||||
| message(FATAL_ERROR "Compiler ${CMAKE_C_COMPILER_ID} is not supported for C++11 build yet") | message(FATAL_ERROR "Unknown compiler ${CMAKE_C_COMPILER_ID}, can't enable C++11 build") | ||||
| endif() | |||||
| else() | |||||
| # GCC-6 switched to C++11 by default, which would break linking with existing libraries | |||||
| # by default. So we explicitly disable C++11 for a new GCC so no linking issues happens. | |||||
| if(CMAKE_COMPILER_IS_GNUCC AND (NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "6.0")) | |||||
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++98") | |||||
| # We also disable any of C++11 ABI from usage, so we wouldn't even try to | |||||
| # link to stuff from std::__cxx11 namespace. | |||||
| add_definitions("-D_GLIBCXX_USE_CXX11_ABI=0") | |||||
| endif() | |||||
| endif() | endif() | ||||
| # Visual Studio has all standards it supports available by default | # Visual Studio has all standards it supports available by default | ||||
| # Clang on windows copies this behavior and does not support these switches | # Clang on windows copies this behavior and does not support these switches | ||||
| if( | if( | ||||
| CMAKE_COMPILER_IS_GNUCC OR | CMAKE_COMPILER_IS_GNUCC OR | ||||
| (CMAKE_C_COMPILER_ID MATCHES "Clang" AND (NOT MSVC)) OR | (CMAKE_C_COMPILER_ID MATCHES "Clang" AND (NOT MSVC)) OR | ||||
| (CMAKE_C_COMPILER_ID MATCHES "Intel") | (CMAKE_C_COMPILER_ID MATCHES "Intel") | ||||
| ▲ Show 20 Lines • Show All 223 Lines • Show Last 20 Lines | |||||