Inside Bitcoin
Opening the selected file…
Inside Bitcoin
Opening the selected file…
The code behind the network, with room to understand it.
Release published 2026-10-28 · Snapshot fetched 2026-11-01. Latest stable release at fetch time; development branches and Git history are excluded. Only the selected code window and visible folders load here.
252if(BUILD_SHARED_LIBS)253target_compile_definitions(leveldb254PUBLIC255# Used by include/export.h.256LEVELDB_SHARED_LIBRARY257)258endif(BUILD_SHARED_LIBS)260if(HAVE_CLANG_THREAD_SAFETY)261target_compile_options(leveldb262PUBLIC263-Werror -Wthread-safety)264endif(HAVE_CLANG_THREAD_SAFETY)266if(HAVE_CRC32C)267target_link_libraries(leveldb crc32c)268endif(HAVE_CRC32C)269if(HAVE_SNAPPY)270target_link_libraries(leveldb snappy)271endif(HAVE_SNAPPY)272if(HAVE_TCMALLOC)273target_link_libraries(leveldb tcmalloc)274endif(HAVE_TCMALLOC)276# Needed by port_stdcxx.h277find_package(Threads REQUIRED)278target_link_libraries(leveldb Threads::Threads)280add_executable(leveldbutil281"db/leveldbutil.cc"282)283target_link_libraries(leveldbutil leveldb)285if(LEVELDB_BUILD_TESTS)286enable_testing()288function(leveldb_test test_file)289get_filename_component(test_target_name "${test_file}" NAME_WE)291add_executable("${test_target_name}" "")292target_sources("${test_target_name}"293PRIVATE294"${PROJECT_BINARY_DIR}/${LEVELDB_PORT_CONFIG_DIR}/port_config.h"295"util/testharness.cc"296"util/testharness.h"297"util/testutil.cc"298"util/testutil.h"300"${test_file}"301)302target_link_libraries("${test_target_name}" leveldb)303target_compile_definitions("${test_target_name}"304PRIVATE305${LEVELDB_PLATFORM_NAME}=1306)307if (NOT HAVE_CXX17_HAS_INCLUDE)308target_compile_definitions("${test_target_name}"309PRIVATE310LEVELDB_HAS_PORT_CONFIG_H=1311)312endif(NOT HAVE_CXX17_HAS_INCLUDE)314add_test(NAME "${test_target_name}" COMMAND "${test_target_name}")315endfunction(leveldb_test)317leveldb_test("db/c_test.c")318leveldb_test("db/fault_injection_test.cc")320leveldb_test("issues/issue178_test.cc")321leveldb_test("issues/issue200_test.cc")322leveldb_test("issues/issue320_test.cc")324leveldb_test("util/env_test.cc")325leveldb_test("util/status_test.cc")326leveldb_test("util/no_destructor_test.cc")328if(NOT BUILD_SHARED_LIBS)329leveldb_test("db/autocompact_test.cc")330leveldb_test("db/corruption_test.cc")331leveldb_test("db/db_test.cc")332leveldb_test("db/dbformat_test.cc")333leveldb_test("db/filename_test.cc")334leveldb_test("db/log_test.cc")335leveldb_test("db/recovery_test.cc")336leveldb_test("db/skiplist_test.cc")337leveldb_test("db/version_edit_test.cc")338leveldb_test("db/version_set_test.cc")339leveldb_test("db/write_batch_test.cc")341leveldb_test("helpers/memenv/memenv_test.cc")343leveldb_test("table/filter_block_test.cc")344leveldb_test("table/table_test.cc")346leveldb_test("util/arena_test.cc")347leveldb_test("util/bloom_test.cc")348leveldb_test("util/cache_test.cc")349leveldb_test("util/coding_test.cc")350leveldb_test("util/crc32c_test.cc")351leveldb_test("util/hash_test.cc")352leveldb_test("util/logging_test.cc")354# TODO(costan): This test also uses355# "util/env_{posix|windows}_test_helper.h"356if (WIN32)357leveldb_test("util/env_windows_test.cc")358else (WIN32)359leveldb_test("util/env_posix_test.cc")360endif (WIN32)361endif(NOT BUILD_SHARED_LIBS)362endif(LEVELDB_BUILD_TESTS)364if(LEVELDB_BUILD_BENCHMARKS)365function(leveldb_benchmark bench_file)366get_filename_component(bench_target_name "${bench_file}" NAME_WE)368add_executable("${bench_target_name}" "")369target_sources("${bench_target_name}"370PRIVATE371"${PROJECT_BINARY_DIR}/${LEVELDB_PORT_CONFIG_DIR}/port_config.h"372"util/histogram.cc"373"util/histogram.h"374"util/testharness.cc"375"util/testharness.h"376"util/testutil.cc"377"util/testutil.h"379"${bench_file}"380)381target_link_libraries("${bench_target_name}" leveldb)382target_compile_definitions("${bench_target_name}"383PRIVATE384${LEVELDB_PLATFORM_NAME}=1385)386if (NOT HAVE_CXX17_HAS_INCLUDE)387target_compile_definitions("${bench_target_name}"388PRIVATE389LEVELDB_HAS_PORT_CONFIG_H=1390)391endif(NOT HAVE_CXX17_HAS_INCLUDE)392endfunction(leveldb_benchmark)394if(NOT BUILD_SHARED_LIBS)395leveldb_benchmark("benchmarks/db_bench.cc")396endif(NOT BUILD_SHARED_LIBS)398check_library_exists(sqlite3 sqlite3_open "" HAVE_SQLITE3)399if(HAVE_SQLITE3)400leveldb_benchmark("benchmarks/db_bench_sqlite3.cc")401target_link_libraries(db_bench_sqlite3 sqlite3)402endif(HAVE_SQLITE3)404# check_library_exists is insufficient here because the library names have405# different manglings when compiled with clang or gcc, at least when installed406# with Homebrew on Mac.407set(OLD_CMAKE_REQURED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})408list(APPEND CMAKE_REQUIRED_LIBRARIES kyotocabinet)409check_cxx_source_compiles("410#include <kcpolydb.h>412int main() {413kyotocabinet::TreeDB* db = new kyotocabinet::TreeDB();414delete db;415return 0;416}417" HAVE_KYOTOCABINET)418set(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQURED_LIBRARIES})419if(HAVE_KYOTOCABINET)420leveldb_benchmark("benchmarks/db_bench_tree_db.cc")421target_link_libraries(db_bench_tree_db kyotocabinet)422endif(HAVE_KYOTOCABINET)423endif(LEVELDB_BUILD_BENCHMARKS)425if(LEVELDB_INSTALL)426install(TARGETS leveldb427EXPORT leveldbTargets428RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}429LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}430ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}431)432install(433FILES434"${LEVELDB_PUBLIC_INCLUDE_DIR}/c.h"435"${LEVELDB_PUBLIC_INCLUDE_DIR}/cache.h"436"${LEVELDB_PUBLIC_INCLUDE_DIR}/comparator.h"437"${LEVELDB_PUBLIC_INCLUDE_DIR}/db.h"438"${LEVELDB_PUBLIC_INCLUDE_DIR}/dumpfile.h"439"${LEVELDB_PUBLIC_INCLUDE_DIR}/env.h"440"${LEVELDB_PUBLIC_INCLUDE_DIR}/export.h"441"${LEVELDB_PUBLIC_INCLUDE_DIR}/filter_policy.h"442"${LEVELDB_PUBLIC_INCLUDE_DIR}/iterator.h"443"${LEVELDB_PUBLIC_INCLUDE_DIR}/options.h"444"${LEVELDB_PUBLIC_INCLUDE_DIR}/slice.h"445"${LEVELDB_PUBLIC_INCLUDE_DIR}/status.h"446"${LEVELDB_PUBLIC_INCLUDE_DIR}/table_builder.h"447"${LEVELDB_PUBLIC_INCLUDE_DIR}/table.h"448"${LEVELDB_PUBLIC_INCLUDE_DIR}/write_batch.h"449DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/leveldb450)452include(CMakePackageConfigHelpers)453write_basic_package_version_file(454"${PROJECT_BINARY_DIR}/leveldbConfigVersion.cmake"455COMPATIBILITY SameMajorVersion456)457install(458EXPORT leveldbTargets459NAMESPACE leveldb::460DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/leveldb"461)462install(463FILES464"cmake/leveldbConfig.cmake"465"${PROJECT_BINARY_DIR}/leveldbConfigVersion.cmake"466DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/leveldb"467)468endif(LEVELDB_INSTALL)
Independent explanations by MyBitcoinExplorer. Not affiliated with or endorsed by Bitcoin Core. Guides are educational and do not replace the source or its tests.
Bitcoin Core source © its contributors, distributed under the MIT license. Original notices and bundled third-party licenses are retained in the source tree.