From: Arnaud A. de Grandmaison Date: Tue, 26 Nov 2013 10:33:53 +0000 (+0000) Subject: CMake : optionaly enable LLVM to be compiled with -std=c++11 (default: off) X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=7c6be4d5586aa365c8f52289ffddf57b87da4da7 CMake : optionaly enable LLVM to be compiled with -std=c++11 (default: off) In some case, it may be required to build LLVM in C++11 mode, as some the subprojects (like lldb) requires it. This mimics the autoconf behaviour. However, given the discussions on the switch to C++11 of the codebase, this behaviour should evolve to default to C++11 with some checks of the compiler capabilities. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195727 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 551b17828bc..ce952f8997b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -179,6 +179,7 @@ else( MSVC ) option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." ON) endif() +option(LLVM_ENABLE_CXX11 "Compile with C++11 enabled." OFF) option(LLVM_ENABLE_PEDANTIC "Compile with pedantic enabled." ON) option(LLVM_ENABLE_WERROR "Fail and stop if a warning is triggered." OFF) diff --git a/cmake/modules/HandleLLVMOptions.cmake b/cmake/modules/HandleLLVMOptions.cmake index bb41a58df2d..811ee922435 100644 --- a/cmake/modules/HandleLLVMOptions.cmake +++ b/cmake/modules/HandleLLVMOptions.cmake @@ -246,6 +246,10 @@ elseif( LLVM_COMPILER_IS_GCC_COMPATIBLE ) if (LLVM_ENABLE_WERROR) add_llvm_definitions( -Werror ) endif (LLVM_ENABLE_WERROR) + if (LLVM_ENABLE_CXX11) + check_cxx_compiler_flag("-std=c++11" CXX_SUPPORTS_CXX11) + append_if(CXX_SUPPORTS_CXX11 "-std=c++11" CMAKE_CXX_FLAGS) + endif (LLVM_ENABLE_CXX11) endif( MSVC ) macro(append_common_sanitizer_flags) diff --git a/docs/CMake.rst b/docs/CMake.rst index c9fe538c9df..9fb4f489b44 100644 --- a/docs/CMake.rst +++ b/docs/CMake.rst @@ -211,6 +211,9 @@ LLVM-specific variables **LLVM_ENABLE_THREADS**:BOOL Build with threads support, if available. Defaults to ON. +**LLVM_ENABLE_CXX11**:BOOL + Build in C++11 mode, if available. Defaults to OFF. + **LLVM_ENABLE_ASSERTIONS**:BOOL Enables code assertions. Defaults to OFF if and only if ``CMAKE_BUILD_TYPE`` is *Release*.