# Copyright (c) 2023-present The Limenka developers # Distributed under the MIT software license, see the accompanying # file COPYING or https://opensource.org/license/mit/. include(GNUInstallDirs) add_library(limenkaconsensus ../script/limenkaconsensus.cpp ../util/strencodings.cpp ) target_compile_definitions(limenkaconsensus PRIVATE BUILD_LIMENKA_INTERNAL ) target_link_libraries(limenkaconsensus PRIVATE core_interface external_lib_interface limenka_consensus limenka_crypto secp256k1 ) set_target_properties(limenkaconsensus PROPERTIES SOVERSION 0 VERSION 0.0.0 ) add_library(liblimenkaconsensus ALIAS limenkaconsensus) # When building the static library, install all static libraries the # liblimenkaconsensus 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_liblimenkaconsensus_static_link_libs target libs_out) get_target_property(linked_libraries ${target} LINK_LIBRARIES) foreach(dep ${linked_libraries}) if(TARGET ${dep}) add_dependencies(limenkaconsensus ${dep}) get_target_property(dep_type ${dep} TYPE) if(dep_type STREQUAL "STATIC_LIBRARY") list(APPEND ${libs_out} ${dep}) get_liblimenkaconsensus_static_link_libs(${dep} ${libs_out}) endif() endif() endforeach() set(${libs_out} ${${libs_out}} PARENT_SCOPE) endfunction() set(all_consensus_static_link_libs "") get_liblimenkaconsensus_static_link_libs(limenkaconsensus all_consensus_static_link_libs) install(TARGETS ${all_consensus_static_link_libs} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT liblimenkaconsensus) list(TRANSFORM all_consensus_static_link_libs PREPEND "-l") # LIBS_PRIVATE is substituted in the pkg-config file. list(JOIN all_consensus_static_link_libs " " LIBS_PRIVATE) target_compile_definitions(limenkaconsensus PRIVATE STATIC_LIBLIMENKACONSENSUS) set(MAYBE_DEFINE_STATIC_LIBLIMENKACONSENSUS "-DSTATIC_LIBLIMENKACONSENSUS") else() set(MAYBE_DEFINE_STATIC_LIBLIMENKACONSENSUS ) endif() configure_file(${PROJECT_SOURCE_DIR}/liblimenkaconsensus.pc.in ${PROJECT_BINARY_DIR}/liblimenkaconsensus.pc @ONLY) install(FILES ${PROJECT_BINARY_DIR}/liblimenkaconsensus.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig" COMPONENT limenkaconsensus) install(TARGETS limenkaconsensus RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT limenkaconsensus LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT limenkaconsensus ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT limenkaconsensus ) install(FILES ../script/limenkaconsensus.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )