diff --git a/CMakeLists.txt b/CMakeLists.txt index 4df6ec01d..31d2eaa4b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -433,28 +433,30 @@ if (ASSERT_STATUS_CHECKED) add_definitions(-DROCKSDB_ASSERT_STATUS_CHECKED) endif() -if(DEFINED USE_RTTI) - if(USE_RTTI) - message(STATUS "Enabling RTTI") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DROCKSDB_USE_RTTI") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DROCKSDB_USE_RTTI") + +# RTTI is by default AUTO which enables it in debug and disables it in release. +set(USE_RTTI AUTO CACHE STRING "Enable RTTI in builds") +set_property(CACHE USE_RTTI PROPERTY STRINGS AUTO ON OFF) +if(USE_RTTI STREQUAL "AUTO") + message(STATUS "Enabling RTTI in Debug builds only (default)") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DROCKSDB_USE_RTTI") + if(MSVC) + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GR-") else() - if(MSVC) - message(STATUS "Disabling RTTI in Release builds. Always on in Debug.") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DROCKSDB_USE_RTTI") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GR-") - else() - message(STATUS "Disabling RTTI in Release builds") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-rtti") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-rtti") - endif() + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-rtti") endif() -else() - message(STATUS "Enabling RTTI in Debug builds only (default)") +elseif(USE_RTTI) + message(STATUS "Enabling RTTI in all builds") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DROCKSDB_USE_RTTI") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DROCKSDB_USE_RTTI") +else() if(MSVC) - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GR-") + message(STATUS "Disabling RTTI in Release builds. Always on in Debug.") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DROCKSDB_USE_RTTI") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GR-") else() + message(STATUS "Disabling RTTI in all builds") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-rtti") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-rtti") endif() endif()