From 4d40b10e0f111319a45a53dc074df635a5a76853 Mon Sep 17 00:00:00 2001 From: Fosco Marotto Date: Fri, 4 May 2018 15:09:40 -0700 Subject: [PATCH] Add USE_RTTI and default behavior to CMakeLists Summary: Proposed fix for #3701 Closes https://github.com/facebook/rocksdb/pull/3801 Differential Revision: D7868264 Pulled By: gfosco fbshipit-source-id: 013963ed3d172c8dc2abd1dd5982580082ca5d2d --- CMakeLists.txt | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5477bca41..69fe4809d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,7 +16,7 @@ # See thirdparty.inc for more information. # sample command: cmake -G "Visual Studio 15 Win64" -DWITH_GFLAGS=1 -DWITH_SNAPPY=1 -DWITH_JEMALLOC=1 -DWITH_JNI=1 .. # 4. Then build the project in debug mode (you may want to add /m[:] flag to run msbuild in parallel threads -# or simply /m ot use all avail cores) +# or simply /m to use all avail cores) # msbuild rocksdb.sln # # rocksdb.sln build features exclusions of test only code in Release. If you build ALL_BUILD then everything @@ -309,6 +309,20 @@ else() set(OPTIMIZE_DEBUG ${OPTIMIZE_DEBUG_DEFAULT}) endif() +if(DEFINED USE_RTTI AND USE_RTTI EQUAL 1) + 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") +elseif(DEFINED USE_RTTI AND USE_RTTI EQUAL 0) + message(STATUS "Disabling RTTI") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-rtti") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-rtti") +else() + message(STATUS "Enabling RTTI in Debug builds only (default)") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DROCKSDB_USE_RTTI") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-rtti") +endif() + if(MSVC) if((${OPTIMIZE_DEBUG} EQUAL 1)) message(STATUS "Debug optimization is enabled")