# Copyright (c) 2024-present The Limenka developers # Distributed under the MIT software license, see the accompanying # file COPYING or https://opensource.org/license/mit/. include(GNUInstallDirs) # TODO: liblimenkakernel is a work in progress consensus engine # library, as more and more modules are decoupled from the # consensus engine, this list will shrink to only those # which are absolutely necessary. add_library(limenkakernel limenkakernel.cpp chain.cpp checks.cpp chainparams.cpp coinstats.cpp context.cpp cs_main.cpp disconnected_transactions.cpp mempool_removal_reason.cpp ../arith_uint256.cpp ../chain.cpp ../coins.cpp ../common/system_ram.cpp ../compressor.cpp ../consensus/merkle.cpp ../consensus/tx_check.cpp ../consensus/tx_verify.cpp ../core_read.cpp ../dbwrapper.cpp ../deploymentinfo.cpp ../deploymentstatus.cpp ../flatfile.cpp ../hash.cpp ../logging.cpp ../node/blockstorage.cpp ../node/chainstate.cpp ../node/dbcache.cpp ../node/utxo_snapshot.cpp ../policy/coin_age_priority.cpp ../policy/ephemeral_policy.cpp ../policy/feerate.cpp ../policy/packages.cpp ../policy/policy.cpp ../policy/rbf.cpp ../policy/settings.cpp ../policy/truc_policy.cpp ../pow.cpp ../primitives/block.cpp ../primitives/transaction.cpp ../pubkey.cpp ../random.cpp ../randomenv.cpp ../script/interpreter.cpp ../script/script.cpp ../script/script_error.cpp ../script/sigcache.cpp ../script/solver.cpp ../signet.cpp ../stats/stats.cpp ../streams.cpp ../support/lockedpool.cpp ../sync.cpp ../txdb.cpp ../txmempool.cpp ../uint256.cpp ../util/chaintype.cpp ../util/check.cpp ../util/feefrac.cpp ../util/fs.cpp ../util/fs_helpers.cpp ../util/hasher.cpp ../util/ioprio.cpp ../util/mempressure.cpp ../util/moneystr.cpp ../util/rbf.cpp ../util/serfloat.cpp ../util/signalinterrupt.cpp ../util/strencodings.cpp ../util/string.cpp ../util/syserror.cpp ../util/threadnames.cpp ../util/time.cpp ../util/tokenpipe.cpp ../validation.cpp ../validationinterface.cpp ../versionbits.cpp ) target_compile_definitions(limenkakernel PRIVATE BUILDING_FOR_LIBLIMENKAKERNEL ) target_link_libraries(limenkakernel PRIVATE core_interface external_lib_interface limenka_clientversion limenka_crypto leveldb secp256k1 $ PUBLIC Boost::headers ) # liblimenkakernel requires default symbol visibility, explicitly # specify that here so that things still work even when user # configures with -DREDUCE_EXPORTS=ON # # Note this is a quick hack that will be removed as we # incrementally define what to export from the library. set_target_properties(limenkakernel PROPERTIES CXX_VISIBILITY_PRESET default ) # Add a convenience liblimenkakernel target as a synonym for limenkakernel. add_custom_target(liblimenkakernel) add_dependencies(liblimenkakernel limenkakernel) # When building the static library, install all static libraries the # limenkakernel 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(liblimenkakernel ${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(limenkakernel all_kernel_static_link_libs) install(TARGETS ${all_kernel_static_link_libs} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT liblimenkakernel) 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}/liblimenkakernel.pc.in ${PROJECT_BINARY_DIR}/liblimenkakernel.pc @ONLY) install(FILES ${PROJECT_BINARY_DIR}/liblimenkakernel.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig" COMPONENT liblimenkakernel) install(TARGETS limenkakernel RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT liblimenkakernel LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT liblimenkakernel ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT liblimenkakernel )