diff options
| author | Dan Liew <dan@su-root.co.uk> | 2014-07-22 15:41:18 +0000 |
|---|---|---|
| committer | Dan Liew <dan@su-root.co.uk> | 2014-07-22 15:41:18 +0000 |
| commit | a5bdc846aa62215dab94630f5854acef0f080b27 (patch) | |
| tree | b6fd5897d61aef157534a07b58defe224578ad10 /llvm/cmake | |
| parent | 521237cad6b82e8f8bd340410e275474672838ba (diff) | |
| download | bcm5719-llvm-a5bdc846aa62215dab94630f5854acef0f080b27.tar.gz bcm5719-llvm-a5bdc846aa62215dab94630f5854acef0f080b27.zip | |
Added LLVM_ENABLE_RTTI and LLVM_ENABLE_EH options that allow RTTI and EH
to globally be controlled. Individual targets (e.g. ExceptionDemo) can
still override this by using LLVM_REQUIRE_RTTI and LLVM_REQUIRE_EH if
they need to be compiled with RTTI or exception handling respectively.
llvm-svn: 213663
Diffstat (limited to 'llvm/cmake')
| -rw-r--r-- | llvm/cmake/modules/AddLLVM.cmake | 13 | ||||
| -rw-r--r-- | llvm/cmake/modules/HandleLLVMOptions.cmake | 7 |
2 files changed, 17 insertions, 3 deletions
diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake index 81efae62e79..409a5d61e65 100644 --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -8,8 +8,13 @@ function(llvm_update_compile_flags name) set(update_src_props ON) endif() - if(LLVM_REQUIRES_EH) - set(LLVM_REQUIRES_RTTI ON) + # LLVM_REQUIRES_EH is an internal flag that individual + # targets can use to force EH + if(LLVM_REQUIRES_EH OR LLVM_ENABLE_EH) + if(NOT (LLVM_REQUIRES_RTTI OR LLVM_ENABLE_RTTI)) + message(AUTHOR_WARNING "Exception handling requires RTTI. Enabling RTTI for ${name}") + set(LLVM_REQUIRES_RTTI ON) + endif() else() if(LLVM_COMPILER_IS_GCC_COMPATIBLE) list(APPEND LLVM_COMPILE_FLAGS "-fno-exceptions") @@ -19,7 +24,9 @@ function(llvm_update_compile_flags name) endif() endif() - if(NOT LLVM_REQUIRES_RTTI) + # LLVM_REQUIRES_RTTI is an internal flag that individual + # targets can use to force RTTI + if(NOT (LLVM_REQUIRES_RTTI OR LLVM_ENABLE_RTTI)) list(APPEND LLVM_COMPILE_DEFINITIONS GTEST_HAS_RTTI=0) if (LLVM_COMPILER_IS_GCC_COMPATIBLE) list(APPEND LLVM_COMPILE_FLAGS "-fno-rtti") diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake b/llvm/cmake/modules/HandleLLVMOptions.cmake index 27a126c8cb3..8258512c42a 100644 --- a/llvm/cmake/modules/HandleLLVMOptions.cmake +++ b/llvm/cmake/modules/HandleLLVMOptions.cmake @@ -408,6 +408,13 @@ if(MSVC) string(REGEX REPLACE "(^| ) */GR-? *( |$)" "\\1 \\2" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") endif() +# Provide public options to globally control RTTI and EH +option(LLVM_ENABLE_EH "Enable Exception handling" OFF) +option(LLVM_ENABLE_RTTI "Enable run time type information" OFF) +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() + # Plugin support # FIXME: Make this configurable. if(WIN32 OR CYGWIN) |

