Skip to content

Commit

Permalink
cmake: Build leveldb sub-project
Browse files Browse the repository at this point in the history
  • Loading branch information
hebasto committed Feb 17, 2023
1 parent fc80998 commit eeb8465
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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]]
$<$<CXX_COMPILER_ID:MSVC>:_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.
$<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-frtti>
$<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Release>>:/wd4722>
$<$<BOOL:${MINGW}>:-Wno-format>
$<$<BOOL:${MINGW}>:-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})

0 comments on commit eeb8465

Please sign in to comment.