mirror of
https://github.com/monero-project/monero.git
synced 2024-10-01 11:49:47 -04:00
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:
parent
54010b97b4
commit
e1c7af35d4
2
external/db_drivers/liblmdb/CMakeLists.txt
vendored
2
external/db_drivers/liblmdb/CMakeLists.txt
vendored
@ -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
|
||||
|
4
external/unbound/CMakeLists.txt
vendored
4
external/unbound/CMakeLists.txt
vendored
@ -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 ()
|
||||
|
@ -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
|
||||
|
@ -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})
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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})
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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})
|
||||
|
@ -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})
|
||||
|
@ -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)
|
||||
|
@ -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})
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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})
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user