cmake: transitive deps and remove deprecated LINK_*

Keep the immediate direct deps at the library that depends on them,
declare deps as PUBLIC so that targets that link against that library
get the library's deps as transitive deps.

Break dep cycle between blockchain_db <-> crytonote_core.
No code refactoring, just hide cycle from cmake so that
it doesn't complain (cycles are allowed only between
static libs, not shared libs).

This is in preparation for supproting BUILD_SHARED_LIBS cmake
built-in option for building internal libs as shared.
This commit is contained in:
redfish 2016-09-17 13:59:29 -04:00
parent 54010b97b4
commit e1c7af35d4
29 changed files with 101 additions and 114 deletions

View file

@ -39,7 +39,7 @@ include_directories("${CMAKE_CURRENT_SOURCE_DIR}")
add_library(lmdb
${lmdb_sources})
target_link_libraries(lmdb
LINK_PRIVATE
PRIVATE
${CMAKE_THREAD_LIBS_INIT})
if(WIN32)
target_link_libraries(lmdb

View file

@ -202,13 +202,13 @@ add_library(unbound
${compat_src}
${libunbound_src})
target_link_libraries(unbound
LINK_PRIVATE
PRIVATE
${OPENSSL_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT})
if (WIN32)
target_link_libraries(unbound
LINK_PRIVATE
PRIVATE
iphlpapi
ws2_32)
endif ()

View file

@ -66,7 +66,7 @@ function (bitmonero_add_executable name)
add_executable("${name}"
${ARGN})
target_link_libraries("${name}"
LINK_PRIVATE
PRIVATE
${EXTRA_LIBRARIES})
set_property(TARGET "${name}"
PROPERTY

View file

@ -60,18 +60,12 @@ bitmonero_add_library(blockchain_db
${blockchain_db_headers}
${blockchain_db_private_headers})
target_link_libraries(blockchain_db
LINK_PUBLIC
PUBLIC
common
crypto
cryptonote_core
${Boost_DATE_TIME_LIBRARY}
${Boost_CHRONO_LIBRARY}
${Boost_PROGRAM_OPTIONS_LIBRARY}
${Boost_SERIALIZATION_LIBRARY}
${LMDB_LIBRARY}
${BDB_LIBRARY}
LINK_PRIVATE
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
PRIVATE
${EXTRA_LIBRARIES})

View file

@ -63,11 +63,15 @@ bitmonero_add_executable(blockchain_import
${blockchain_import_private_headers})
target_link_libraries(blockchain_import
LINK_PRIVATE
PRIVATE
cryptonote_core
blockchain_db
p2p
${CMAKE_THREAD_LIBS_INIT})
blockchain_db
p2p
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
${CMAKE_THREAD_LIBS_INIT}
${EXTRA_LIBRARIES})
if(ARCH_WIDTH)
target_compile_definitions(blockchain_import
@ -85,11 +89,15 @@ bitmonero_add_executable(blockchain_export
${blockchain_export_private_headers})
target_link_libraries(blockchain_export
LINK_PRIVATE
PRIVATE
cryptonote_core
p2p
blockchain_db
${CMAKE_THREAD_LIBS_INIT})
blockchain_db
p2p
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
${CMAKE_THREAD_LIBS_INIT}
${EXTRA_LIBRARIES})
add_dependencies(blockchain_export
version)

View file

@ -62,13 +62,15 @@ bitmonero_add_library(common
${common_headers}
${common_private_headers})
target_link_libraries(common
LINK_PRIVATE
PUBLIC
crypto
${UNBOUND_LIBRARY}
${LIBUNWIND_LIBRARIES}
${Boost_DATE_TIME_LIBRARY}
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
PRIVATE
${EXTRA_LIBRARIES})
#bitmonero_install_headers(common

View file

@ -74,6 +74,11 @@ bitmonero_add_library(crypto
${crypto_sources}
${crypto_headers}
${crypto_private_headers})
target_link_libraries(crypto
PUBLIC
${Boost_SYSTEM_LIBRARY}
PRIVATE
${EXTRA_LIBRARIES})
if (ARM)
option(NO_OPTIMIZED_MULTIPLY_ON_ARM

View file

@ -73,7 +73,7 @@ bitmonero_add_library(cryptonote_core
${cryptonote_core_headers}
${cryptonote_core_private_headers})
target_link_libraries(cryptonote_core
LINK_PUBLIC
PUBLIC
common
crypto
otshell_utils
@ -82,9 +82,9 @@ target_link_libraries(cryptonote_core
${Boost_DATE_TIME_LIBRARY}
${Boost_PROGRAM_OPTIONS_LIBRARY}
${Boost_SERIALIZATION_LIBRARY}
LINK_PRIVATE
${Blocks}
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
PRIVATE
${Blocks}
${EXTRA_LIBRARIES})

View file

@ -32,16 +32,10 @@ project (bitmonero CXX)
file(GLOB CRYPTONOTE_PROTOCOL *)
source_group(cryptonote_protocol FILES ${CRYPTONOTE_PROTOCOL})
#add_library(p2p ${P2P})
#bitmonero_private_headers(p2p ${CRYPTONOTE_PROTOCOL})
#bitmonero_private_headers(cryptonote_protocol ${CRYPTONOTE_PROTOCOL})
bitmonero_add_library(cryptonote_protocol ${CRYPTONOTE_PROTOCOL})
#target_link_libraries(p2p)
# LINK_PRIVATE
# ${Boost_CHRONO_LIBRARY}
# ${Boost_REGEX_LIBRARY}
# ${Boost_SYSTEM_LIBRARY}
# ${Boost_THREAD_LIBRARY}
# ${EXTRA_LIBRARIES})
target_link_libraries(cryptonote_protocol
PRIVATE
${EXTRA_LIBRARIES})
add_dependencies(cryptonote_protocol
version)

View file

@ -83,7 +83,7 @@ bitmonero_add_executable(daemon
${blocksdat}
)
target_link_libraries(daemon
LINK_PRIVATE
PRIVATE
rpc
blockchain_db
cryptonote_core
@ -98,9 +98,7 @@ target_link_libraries(daemon
${Boost_PROGRAM_OPTIONS_LIBRARY}
${Boost_REGEX_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
${CMAKE_THREAD_LIBS_INIT}
${UPNP_LIBRARIES}
${EXTRA_LIBRARIES})
add_dependencies(daemon version)
set_property(TARGET daemon

View file

@ -61,14 +61,10 @@ bitmonero_add_library(daemonizer
${daemonizer_headers}
${daemonizer_private_headers})
target_link_libraries(daemonizer
LINK_PRIVATE
PUBLIC
common
${Boost_CHRONO_LIBRARY}
${Boost_FILESYSTEM_LIBRARY}
${Boost_PROGRAM_OPTIONS_LIBRARY}
${Boost_REGEX_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
${CMAKE_THREAD_LIBS_INIT}
${UPNP_LIBRARIES}
PRIVATE
${EXTRA_LIBRARIES})

View file

@ -51,5 +51,5 @@ bitmonero_add_library(mnemonics
${mnemonics_headers}
${mnemonics_private_headers})
target_link_libraries(mnemonics
LINK_PRIVATE
${Boost_SYSTEM_LIBRARY})
PRIVATE
${EXTRA_LIBRARIES})

View file

@ -36,12 +36,15 @@ source_group(p2p FILES ${P2P})
#bitmonero_private_headers(p2p ${P2P})
bitmonero_add_library(p2p ${P2P})
#target_link_libraries(p2p)
# LINK_PRIVATE
# ${Boost_CHRONO_LIBRARY}
# ${Boost_REGEX_LIBRARY}
# ${Boost_SYSTEM_LIBRARY}
# ${Boost_THREAD_LIBRARY}
# ${EXTRA_LIBRARIES})
target_link_libraries(p2p
PUBLIC
${UPNP_LIBRARIES}
${Boost_CHRONO_LIBRARY}
${Boost_PROGRAM_OPTIONS_LIBRARY}
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
PRIVATE
${EXTRA_LIBRARIES})
add_dependencies(p2p
version)

View file

@ -46,14 +46,8 @@ bitmonero_add_library(ringct
${ringct_headers}
${ringct_private_headers})
target_link_libraries(ringct
LINK_PUBLIC
PUBLIC
common
crypto
${Boost_DATE_TIME_LIBRARY}
${Boost_PROGRAM_OPTIONS_LIBRARY}
${Boost_SERIALIZATION_LIBRARY}
LINK_PRIVATE
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
PRIVATE
${EXTRA_LIBRARIES})

View file

@ -43,13 +43,11 @@ bitmonero_add_library(rpc
${rpc_headers}
${rpc_private_headers})
target_link_libraries(rpc
LINK_PRIVATE
PUBLIC
cryptonote_core
cryptonote_protocol
${Boost_CHRONO_LIBRARY}
${Boost_REGEX_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
PRIVATE
${EXTRA_LIBRARIES})
add_dependencies(rpc
version)

View file

@ -43,7 +43,7 @@ bitmonero_add_executable(simplewallet
${simplewallet_headers}
${simplewallet_private_headers})
target_link_libraries(simplewallet
LINK_PRIVATE
PRIVATE
wallet
rpc
cryptonote_core
@ -51,8 +51,10 @@ target_link_libraries(simplewallet
common
mnemonics
p2p
${UNBOUND_LIBRARY}
${UPNP_LIBRARIES}
${Boost_CHRONO_LIBRARY}
${Boost_PROGRAM_OPTIONS_LIBRARY}
${Boost_FILESYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
${CMAKE_THREAD_LIBS_INIT}
${EXTRA_LIBRARIES})
add_dependencies(simplewallet

View file

@ -64,17 +64,19 @@ bitmonero_add_library(wallet
${wallet_api_headers}
${wallet_private_headers})
target_link_libraries(wallet
LINK_PUBLIC
PUBLIC
cryptonote_core
mnemonics
LINK_PRIVATE
p2p
${Boost_CHRONO_LIBRARY}
${Boost_SERIALIZATION_LIBRARY}
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
${Boost_REGEX_LIBRARY}
PRIVATE
${EXTRA_LIBRARIES})
# build and install libwallet_merged only if we building for GUI
if (BUILD_GUI_DEPS)
set(libs_to_merge wallet cryptonote_core mnemonics common crypto ringct)

View file

@ -84,7 +84,7 @@ add_executable(hash-target-tests
${hash_targets_sources}
${hash_targets_headers})
target_link_libraries(hash-target-tests
LINK_PRIVATE
PRIVATE
cryptonote_core)
set_property(TARGET hash-target-tests
PROPERTY

View file

@ -36,17 +36,12 @@ add_executable(core_proxy
${core_proxy_sources}
${core_proxy_headers})
target_link_libraries(core_proxy
LINK_PRIVATE
PRIVATE
cryptonote_core
cryptonote_protocol
p2p
${UPNP_LIBRARIES}
${Boost_CHRONO_LIBRARY}
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
${CMAKE_THREAD_LIBS_INIT}
${EXPAT_LIBRARIES})
${EXTRA_LIBRARIES})
set_property(TARGET core_proxy
PROPERTY
FOLDER "tests")

View file

@ -62,14 +62,10 @@ add_executable(coretests
${core_tests_sources}
${core_tests_headers})
target_link_libraries(coretests
LINK_PRIVATE
PRIVATE
cryptonote_core
p2p
${Boost_CHRONO_LIBRARY}
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${CMAKE_THREAD_LIBS_INIT}
${EXPAT_LIBRARIES}
${EXTRA_LIBRARIES})
set_property(TARGET coretests
PROPERTY

View file

@ -41,7 +41,9 @@ add_executable(crypto-tests
${crypto_sources}
${crypto_headers})
target_link_libraries(crypto-tests
${Boost_SYSTEM_LIBRARY})
PRIVATE
${Boost_SYSTEM_LIBRARY}
${EXTRA_LIBRARIES})
set_property(TARGET crypto-tests
PROPERTY
FOLDER "tests")

View file

@ -35,15 +35,14 @@ add_executable(transfers
${transfers_sources}
${transfers_headers})
target_link_libraries(transfers
LINK_PRIVATE
PRIVATE
useragent
rpc
cryptonote_core
crypto
common
epee
${GTEST_LIBRARIES}
${Boost_LIBRARIES})
${GTEST_LIBRARIES})
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test_transfers")
add_custom_target(test_transfers

View file

@ -35,8 +35,9 @@ add_executable(difficulty-tests
${difficulty_sources}
${difficulty_headers})
target_link_libraries(difficulty-tests
LINK_PRIVATE
cryptonote_core)
PRIVATE
cryptonote_core
${EXTRA_LIBRARIES})
set_property(TARGET difficulty-tests
PROPERTY
FOLDER "tests")

View file

@ -39,13 +39,13 @@ add_executable(functional_tests
${functional_tests_sources}
${functional_tests_headers})
target_link_libraries(functional_tests
LINK_PRIVATE
PRIVATE
cryptonote_core
wallet
common
crypto
${UNBOUND_LIBRARY}
${Boost_REGEX_LIBRARY}
${Boost_PROGRAM_OPTIONS_LIBRARY}
${CMAKE_THREAD_LIBS_INIT}
${EXTRA_LIBRARIES})
set_property(TARGET functional_tests

View file

@ -35,8 +35,9 @@ add_executable(hash-tests
${hash_sources}
${hash_headers})
target_link_libraries(hash-tests
LINK_PRIVATE
crypto)
PRIVATE
crypto
${EXTRA_LIBRARIES})
set_property(TARGET hash-tests
PROPERTY
FOLDER "tests")

View file

@ -38,9 +38,13 @@ add_executable(libwallet_api_tests
${libwallet_api_tests_headers})
target_link_libraries(libwallet_api_tests
LINK_PRIVATE
PRIVATE
wallet
${Boost_SERIALIZATION_LIBRARY}
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${GTEST_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
${EXTRA_LIBRARIES})
set_property(TARGET libwallet_api_tests

View file

@ -36,16 +36,15 @@ add_executable(net_load_tests_clt
${clt_sources}
${clt_headers})
target_link_libraries(net_load_tests_clt
LINK_PRIVATE
otshell_utils
p2p
cryptonote_core
PRIVATE
otshell_utils
p2p
cryptonote_core
${GTEST_LIBRARIES}
${Boost_CHRONO_LIBRARY}
${Boost_DATE_TIME_LIBRARY}
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
${CMAKE_THREAD_LIBS_INIT}
${EXTRA_LIBRARIES})
set(srv_sources
@ -58,16 +57,15 @@ add_executable(net_load_tests_srv
${srv_sources}
${srv_headers})
target_link_libraries(net_load_tests_srv
LINK_PRIVATE
otshell_utils
p2p
cryptonote_core
PRIVATE
otshell_utils
p2p
cryptonote_core
${GTEST_LIBRARIES}
${Boost_CHRONO_LIBRARY}
${Boost_DATE_TIME_LIBRARY}
${Boost_FILESYSTEM_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
${CMAKE_THREAD_LIBS_INIT}
${EXTRA_LIBRARIES})
set_property(TARGET net_load_tests_clt net_load_tests_srv

View file

@ -48,11 +48,10 @@ add_executable(performance_tests
${performance_tests_sources}
${performance_tests_headers})
target_link_libraries(performance_tests
LINK_PRIVATE
PRIVATE
cryptonote_core
common
crypto
${UNBOUND_LIBRARY}
${Boost_CHRONO_LIBRARY}
${CMAKE_THREAD_LIBS_INIT}
${EXTRA_LIBRARIES})

View file

@ -62,7 +62,7 @@ add_executable(unit_tests
${unit_tests_sources}
${unit_tests_headers})
target_link_libraries(unit_tests
LINK_PRIVATE
PRIVATE
ringct
cryptonote_core
blockchain_db
@ -70,11 +70,7 @@ target_link_libraries(unit_tests
wallet
p2p
${GTEST_LIBRARIES}
${Boost_CHRONO_LIBRARY}
${Boost_REGEX_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
${UNBOUND_LIBRARY}
${CMAKE_THREAD_LIBS_INIT}
${EXTRA_LIBRARIES})
set_property(TARGET unit_tests
PROPERTY