Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2018-07-25 17:59:46 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-07-30 18:12:24 +0300
commit885cc4cf9a1d5c167e4cbd26c3294d8b1ad400d8 (patch)
treecb7f2b6ef98c6ce346f2378096bc9d32a3e5606e /CMakeLists.txt
parentb59d85b5a56c020c7b86b0cca4dc38e4950550f9 (diff)
Build: require C11/C++11 for all operating systems in master.
This is in preparation of upgrading our library dependencies, some of which need C++11. We already use C++11 in blender2.8 and for Windows and macOS, so this just affects Linux. On many distributions this will not require any changes, on some install_deps.sh will need to be run again to rebuild libraries. Differential Revision: https://developer.blender.org/D3568
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt100
1 files changed, 14 insertions, 86 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7b018905e4f..f6435316fec 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -505,27 +505,6 @@ if(WIN32)
set(CPACK_INSTALL_PREFIX ${CMAKE_GENERIC_PROGRAM_FILES}/${})
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
if(CMAKE_COMPILER_IS_GNUCC)
option(WITH_LINKER_GOLD "Use ld.gold linker which is usually faster than ld.bfd" ON)
@@ -703,11 +682,8 @@ elseif(WITH_CYCLES OR WITH_OPENIMAGEIO OR WITH_AUDASPACE OR WITH_INTERNATIONAL O
WITH_OPENVDB OR WITH_OPENCOLORIO)
# Keep enabled
else()
- # New dependency graph needs either Boost or C++11 for function bindings.
- if(NOT WITH_CXX11)
- # Enabled but we don't need it
- set(WITH_BOOST OFF)
- endif()
+ # Disable boost if not needed.
+ set(WITH_BOOST OFF)
endif()
# auto enable openimageio for cycles
@@ -764,9 +740,6 @@ if(WITH_BUILDINFO)
endif()
endif()
-TEST_SHARED_PTR_SUPPORT()
-TEST_UNORDERED_MAP_SUPPORT()
-
if(WITH_AUDASPACE)
if(WITH_SYSTEM_AUDASPACE)
set(AUDASPACE_DEFINITIONS
@@ -1362,42 +1335,8 @@ endif()
# Configure Ceres
if(WITH_LIBMV)
- set(CERES_DEFINES)
-
- 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()
+ # We always have C++11 which includes unordered_map.
+ set(CERES_DEFINES -DCERES_STD_UNORDERED_MAP)
endif()
#-----------------------------------------------------------------------------
@@ -1619,28 +1558,17 @@ if(WITH_PYTHON)
endif()
endif()
-if(WITH_CXX11)
- if(
- CMAKE_COMPILER_IS_GNUCC OR
- CMAKE_C_COMPILER_ID MATCHES "Clang" OR
- CMAKE_C_COMPILER_ID MATCHES "Intel"
- )
- # TODO(sergey): Do we want c++11 or gnu-c++11 here?
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
- elseif(MSVC)
- # Nothing special is needed, C++11 features are available by default.
- else()
- message(FATAL_ERROR "Compiler ${CMAKE_C_COMPILER_ID} is not supported for C++11 build yet")
- endif()
+if(
+ CMAKE_COMPILER_IS_GNUCC OR
+ CMAKE_C_COMPILER_ID MATCHES "Clang" OR
+ CMAKE_C_COMPILER_ID MATCHES "Intel"
+)
+ # TODO(sergey): Do we want c++11 or gnu-c++11 here?
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+elseif(MSVC)
+ # Nothing special is needed, C++11 features are available by default.
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()
+ message(FATAL_ERROR "Unknown compiler ${CMAKE_C_COMPILER_ID}, can't enable C++11 build")
endif()
# Visual Studio has all standards it supports available by default