-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
151 lines (128 loc) · 4.08 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
cmake_minimum_required(VERSION 3.1.0)
project(beldex-lws)
enable_language(CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(BELDEX_LIBRARIES
cncrypto
lmdb_lib
net
cryptonote_core
cryptonote_basic
# cryptonote_format_utils_basic
ringct
ringct_basic
multisig
checkpoints
blockchain_db
common
lmdb
device
randomx
epee
)
set(BELDEX_SEARCH_PATHS
"/src/crypto"
"/contrib/epee/src"
"/external/db_drivers/liblmdb"
"/external/easylogging++"
"/src"
"/src/crypto/wallet"
"/src/cryptonote_basic"
"/src/lmdb"
"/src/ringct"
"/src/rpc"
)
set(MONERO_OPTIONAL unbound wallet-crypto)
# Needed due to "bug" in beldex CMake - the `project` function is used twice!
if (NOT BELDEX_SOURCE_DIR)
message(FATAL_ERROR "The argument -DBELDEX_SOURCE_DIR must specify a location of a beldex source tree")
endif()
if (NOT BELDEX_BUILD_DIR)
message(FATAL_ERROR "The argument -DBELDEX_BUILD_DIR must specify a location of an existing beldex build")
endif()
load_cache(${BELDEX_BUILD_DIR} READ_WITH_PREFIX beldex_
Boost_THREAD_LIBRARY_RELEASE
CMAKE_CXX_COMPILER
EXTRA_LIBRARIES
HIDAPI_LIBRARY
LMDB_INCLUDE
UNBOUND_LIBRARIES
beldex_SOURCE_DIR
OPENSSL_CRYPTO_LIBRARY
OPENSSL_SSL_LIBRARY
SODIUM_LIBRARY
ZMQ_INCLUDE_PATH
ZMQ_LIB
)
if (NOT (beldex_beldex_SOURCE_DIR MATCHES "${BELDEX_SOURCE_DIR}(/src/cryptonote_protocol)"))
message(FATAL_ERROR "Invalid Beldex source dir - does not appear to match source used for build directory")
endif()
if (NOT (CMAKE_CXX_COMPILER STREQUAL beldex_CMAKE_CXX_COMPILER))
message(FATAL_ERROR "Compiler for beldex build differs from this project")
endif()
if ("${beldex_UNBOUND_LIBRARIES}" STREQUAL "UNBOUND_LIBRARIES-NOTFOUND")
unset(beldex_UNBOUND_LIBRARIES)
endif()
if ("${beldex_HIDAPI_LIBRARY}" STREQUAL "HIDAPI_LIBRARY-NOTFOUND")
unset(beldex_HIDAPI_LIBRARY)
endif()
#
# Dependencies specific to beldex-lws
#
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
set(Boost_NO_BOOST_CMAKE ON)
find_package(Boost 1.58 QUIET REQUIRED COMPONENTS chrono filesystem program_options regex serialization system thread)
if (NOT (Boost_THREAD_LIBRARY STREQUAL beldex_Boost_THREAD_LIBRARY_RELEASE))
message(STATUS "Found Boost_THREAD_LIBRARY: ${Boost_THREAD_LIBRARY}")
message(STATUS "Found beldex_Boost_THREAD_LIBRARY_RELEASE: ${beldex_Boost_THREAD_LIBRARY_RELEASE}")
message(FATAL_ERROR "Boost libraries for beldex build differs from this project")
endif()
foreach (LIB ${BELDEX_LIBRARIES})
find_library(LIB_PATH NAMES "${LIB}" PATHS ${BELDEX_BUILD_DIR} PATH_SUFFIXES "/src/${LIB}" "external/${LIB}" ${BELDEX_SEARCH_PATHS} NO_DEFAULT_PATH)
list(FIND MONERO_OPTIONAL "${LIB}" LIB_OPTIONAL)
if (NOT LIB_PATH)
if (LIB_OPTIONAL EQUAL -1)
message(FATAL_ERROR "Unable to find required Monero library ${LIB}")
endif()
else ()
set(LIB_NAME "beldex::${LIB}")
add_library(${LIB_NAME} STATIC IMPORTED)
set_target_properties(${LIB_NAME} PROPERTIES IMPORTED_LOCATION ${LIB_PATH})
list(APPEND IMPORTED_BELDEX_LIBRARIES "${LIB_NAME}")
endif()
unset(LIB_PATH CACHE)
endforeach()
add_library(beldex::libraries INTERFACE IMPORTED)
set_property(TARGET beldex::libraries PROPERTY
INTERFACE_INCLUDE_DIRECTORIES
${Boost_INCLUDE_DIR}
"${BELDEX_SOURCE_DIR}/contrib/epee/include"
"${BELDEX_SOURCE_DIR}/external/easylogging++"
"${BELDEX_SOURCE_DIR}/external/loki-mq"
"${BELDEX_SOURCE_DIR}/src"
)
set_property(TARGET beldex::libraries PROPERTY
INTERFACE_LINK_LIBRARIES
${IMPORTED_BELDEX_LIBRARIES}
${Boost_CHRONO_LIBRARY}
${Boost_FILESYSTEM_LIBRARY}
${Boost_REGEX_LIBRARY}
${Boost_SERIALIZATION_LIBRARY}
${Boost_SYSTEM_LIBRARY}
${Boost_THREAD_LIBRARY}
${beldex_HIDAPI_LIBRARY}
${beldex_OPENSSL_CRYPTO_LIBRARY}
${beldex_OPENSSL_SSL_LIBRARY}
${beldex_SODIUM_LIBRARY}
${beldex_UNBOUND_LIBRARIES}
${CMAKE_DL_LIBS}
)
set(LMDB_INCLUDE "${beldex_LMDB_INCLUDE}")
set(LMDB_LIB_PATH "beldex::lmdb")
set(ZMQ_LIB "${beldex_ZMQ_LIB}")
set(ZMQ_INCLUDE_PATH "${beldex_ZMQ_INCLUDE_PATH}")
add_subdirectory(external)
add_subdirectory(utils)
add_subdirectory(src)