From eeb8465444af566d98dced950fbd48cb7653fbfa Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Tue, 24 Jan 2023 15:41:58 +0000 Subject: [PATCH] cmake: Build `leveldb` sub-project --- src/CMakeLists.txt | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 253cd1ee7249c..2118774a49611 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -18,6 +18,54 @@ mark_as_advanced( ) add_subdirectory(crc32c EXCLUDE_FROM_ALL) +set(LEVELDB_BUILD_TESTS OFF CACHE BOOL "" FORCE) +set(LEVELDB_BUILD_BENCHMARKS OFF CACHE BOOL "" FORCE) +set(LEVELDB_INSTALL OFF CACHE BOOL "" FORCE) +set(HAVE_CRC32C ON CACHE BOOL "" FORCE) +set(HAVE_SNAPPY OFF CACHE BOOL "" FORCE) +set(HAVE_TCMALLOC OFF CACHE BOOL "" FORCE) +# Disabling TSA warnings because leveldb simultaneously +# enables -Werror as a usage requirement. +set(HAVE_CLANG_THREAD_SAFETY OFF CACHE BOOL "" FORCE) +mark_as_advanced( + LEVELDB_BUILD_TESTS + LEVELDB_BUILD_BENCHMARKS + LEVELDB_INSTALL + HAVE_CRC32C + HAVE_SNAPPY + HAVE_TCMALLOC + HAVE_CLANG_THREAD_SAFETY +) +add_subdirectory(leveldb EXCLUDE_FROM_ALL) +target_compile_definitions(leveldb + PRIVATE + FALLTHROUGH_INTENDED=[[fallthrough]] + $<$:_CRT_NONSTDC_NO_WARNINGS> +) +target_compile_options(leveldb + PRIVATE + # RTTI has been forcibly disabled in leveldb's CMake configuration + # since the commit 69061b464ab1da287da9b7ffec1ed911b754403b. + # Using leveldb::Logger as a base class to derive CBitcoinLevelDBLogger + # requires RTTI been enabled. + $<$>:-frtti> + $<$,$>:/wd4722> + $<$:-Wno-format> + $<$:-Wno-format-security> +) +get_target_property(leveldb_cxx_flags leveldb COMPILE_OPTIONS) +list(REMOVE_ITEM leveldb_cxx_flags "-Wconditional-uninitialized" "-Wsuggest-override") +set_target_properties(leveldb PROPERTIES + COMPILE_OPTIONS "${leveldb_cxx_flags}" + # Can be dropped after backporting of the commit + # ed72a3496ed01e1c6a28f743258623a58f6867ee from the leveldb's repo + # into the subtree repo. + CXX_STANDARD ${CMAKE_CXX_STANDARD} +) +set_property(TARGET leveldb leveldbutil + PROPERTY EXPORT_COMPILE_COMMANDS OFF +) + configure_file(${CMAKE_SOURCE_DIR}/cmake/bitcoin-config.h.in config/bitcoin-config.h @ONLY) add_compile_definitions(HAVE_CONFIG_H) include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})