From fdbade6f8ded63519b637c8fa6f39914a400ab5e Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Tue, 3 Jun 2025 18:22:19 +0000 Subject: [PATCH] kernel: create monolithic kernel static library --- libbitcoinkernel.pc.in | 1 - src/kernel/CMakeLists.txt | 39 +++++++-------------------------------- 2 files changed, 7 insertions(+), 33 deletions(-) diff --git a/libbitcoinkernel.pc.in b/libbitcoinkernel.pc.in index 6b622c926be..df73448a3a3 100644 --- a/libbitcoinkernel.pc.in +++ b/libbitcoinkernel.pc.in @@ -7,5 +7,4 @@ Name: @CLIENT_NAME@ kernel library Description: Experimental library for the @CLIENT_NAME@ validation engine. Version: @CLIENT_VERSION_STRING@ Libs: -L${libdir} -lbitcoinkernel -Libs.private: -L${libdir} @LIBS_PRIVATE@ Cflags: -I${includedir} diff --git a/src/kernel/CMakeLists.txt b/src/kernel/CMakeLists.txt index 52e91671dd0..c45ce7819e9 100644 --- a/src/kernel/CMakeLists.txt +++ b/src/kernel/CMakeLists.txt @@ -79,20 +79,23 @@ add_library(bitcoinkernel ../validation.cpp ../validationinterface.cpp ../versionbits.cpp + $ + $ + $ + $ ) target_link_libraries(bitcoinkernel PRIVATE core_interface - bitcoin_clientversion - bitcoin_crypto - leveldb - secp256k1 + secp256k1_objs $<$:bcrypt> $ PUBLIC Boost::headers ) +target_include_directories(bitcoinkernel PRIVATE $) + # libbitcoinkernel requires default symbol visibility, explicitly # specify that here so that things still work even when user # configures with -DREDUCE_EXPORTS=ON @@ -107,34 +110,6 @@ set_target_properties(bitcoinkernel PROPERTIES add_custom_target(libbitcoinkernel) add_dependencies(libbitcoinkernel bitcoinkernel) -# When building the static library, install all static libraries the -# bitcoinkernel depends on. -if(NOT BUILD_SHARED_LIBS) - # Recursively get all the static libraries a target depends on and put them in libs_out - function(get_target_static_link_libs target libs_out) - get_target_property(linked_libraries ${target} LINK_LIBRARIES) - foreach(dep ${linked_libraries}) - if(TARGET ${dep}) - add_dependencies(libbitcoinkernel ${dep}) - get_target_property(dep_type ${dep} TYPE) - if(dep_type STREQUAL "STATIC_LIBRARY") - list(APPEND ${libs_out} ${dep}) - get_target_static_link_libs(${dep} ${libs_out}) - endif() - endif() - endforeach() - set(${libs_out} ${${libs_out}} PARENT_SCOPE) - endfunction() - - set(all_kernel_static_link_libs "") - get_target_static_link_libs(bitcoinkernel all_kernel_static_link_libs) - - install(TARGETS ${all_kernel_static_link_libs} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libbitcoinkernel) - list(TRANSFORM all_kernel_static_link_libs PREPEND "-l") - # LIBS_PRIVATE is substituted in the pkg-config file. - list(JOIN all_kernel_static_link_libs " " LIBS_PRIVATE) -endif() - configure_file(${PROJECT_SOURCE_DIR}/libbitcoinkernel.pc.in ${PROJECT_BINARY_DIR}/libbitcoinkernel.pc @ONLY) install(FILES ${PROJECT_BINARY_DIR}/libbitcoinkernel.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig" COMPONENT libbitcoinkernel)