diff options
Diffstat (limited to 'llvm/cmake/modules/HandleLLVMOptions.cmake')
| -rw-r--r-- | llvm/cmake/modules/HandleLLVMOptions.cmake | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake b/llvm/cmake/modules/HandleLLVMOptions.cmake index d3c6e9f6a168..5ab34bc3b9c7 100644 --- a/llvm/cmake/modules/HandleLLVMOptions.cmake +++ b/llvm/cmake/modules/HandleLLVMOptions.cmake @@ -183,7 +183,15 @@ CHECK_CXX_SOURCE_COMPILES(" int main() { return 0; } " LLVM_USES_LIBSTDCXX) -option(GLIBCXX_USE_CXX11_ABI "Use new libstdc++ CXX11 ABI" ON) +CHECK_CXX_SOURCE_COMPILES(" +#include <string> +#if _GLIBCXX_USE_CXX11_ABI == 0 +#error _GLIBCXX_USE_CXX11_ABI not active +#endif +int main() { return 0; } +" LLVM_DEFAULT_TO_GLIBCXX_USE_CXX11_ABI) + +option(GLIBCXX_USE_CXX11_ABI "Use new libstdc++ CXX11 ABI" ${LLVM_DEFAULT_TO_GLIBCXX_USE_CXX11_ABI}) if (LLVM_USES_LIBSTDCXX) if (GLIBCXX_USE_CXX11_ABI) @@ -193,10 +201,6 @@ if (LLVM_USES_LIBSTDCXX) endif() endif() -if (LLVM_ENABLE_STRICT_FIXED_SIZE_VECTORS) - add_compile_definitions(STRICT_FIXED_SIZE_VECTORS) -endif() - string(TOUPPER "${LLVM_ABI_BREAKING_CHECKS}" uppercase_LLVM_ABI_BREAKING_CHECKS) if( uppercase_LLVM_ABI_BREAKING_CHECKS STREQUAL "WITH_ASSERTS" ) @@ -885,6 +889,14 @@ if (LLVM_ENABLE_WARNINGS AND (LLVM_COMPILER_IS_GCC_COMPATIBLE OR CLANG_CL)) endif() endif() + # Disable -Wdangling-reference, a C++-only warning from GCC 13 that seems + # to produce a large number of false positives. + if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1) + append("-Wno-dangling-reference" CMAKE_CXX_FLAGS) + endif() + endif() + # Disable -Wredundant-move and -Wpessimizing-move on GCC>=9. GCC wants to # remove std::move in code like # "A foo(ConvertibleToA a) { return std::move(a); }", @@ -1172,16 +1184,13 @@ if(LLVM_ENABLE_EH AND NOT LLVM_ENABLE_RTTI) message(FATAL_ERROR "Exception handling requires RTTI. You must set LLVM_ENABLE_RTTI to ON") endif() -option(LLVM_ENABLE_IR_PGO "Build LLVM and tools with IR PGO instrumentation (deprecated)" Off) -mark_as_advanced(LLVM_ENABLE_IR_PGO) - set(LLVM_BUILD_INSTRUMENTED OFF CACHE STRING "Build LLVM and tools with PGO instrumentation. May be specified as IR or Frontend") set(LLVM_VP_COUNTERS_PER_SITE "1.5" CACHE STRING "Value profile counters to use per site for IR PGO with Clang") mark_as_advanced(LLVM_BUILD_INSTRUMENTED LLVM_VP_COUNTERS_PER_SITE) string(TOUPPER "${LLVM_BUILD_INSTRUMENTED}" uppercase_LLVM_BUILD_INSTRUMENTED) if (LLVM_BUILD_INSTRUMENTED) - if (LLVM_ENABLE_IR_PGO OR uppercase_LLVM_BUILD_INSTRUMENTED STREQUAL "IR") + if (uppercase_LLVM_BUILD_INSTRUMENTED STREQUAL "IR") append("-fprofile-generate=\"${LLVM_PROFILE_DATA_DIR}\"" CMAKE_CXX_FLAGS CMAKE_C_FLAGS) @@ -1333,7 +1342,7 @@ endif() # linking (due to incompatibility). With MSVC, note that the plugin has to # explicitly link against (exactly one) tool so we can't unilaterally turn on # LLVM_ENABLE_PLUGINS when it's enabled. -if("${CMAKE_SYSTEM_NAME}" MATCHES AIX) +if("${CMAKE_SYSTEM_NAME}" MATCHES "AIX") set(LLVM_EXPORT_SYMBOLS_FOR_PLUGINS_OPTION OFF) else() set(LLVM_EXPORT_SYMBOLS_FOR_PLUGINS_OPTION ON) |
