@@ -60,8 +60,18 @@ else ()
6060 message (INFO "---- CMAKE_BUILD_TYPE = ${DEPS_INSTALL_ROOT} is not supported explicitly" )
6161endif ()
6262
63+
64+ ###################################
65+ # libBLS #
66+ ###################################
67+ # Disable libBLS components we don't need
68+ set (LIBBLS_BUILD_TESTS OFF CACHE BOOL "Don't build libBLS tests" )
69+ set (LIBBLS_BUILD_BENCHMARKS OFF CACHE BOOL "Don't build libBLS benchmarks" )
70+ set (LIBBLS_BUILD_UTILS OFF CACHE BOOL "Don't build libBLS utils" )
71+ set (SKALE_SKIP_INSTALLING_DIRECTIVES ON CACHE BOOL "Skip libBLS install() calls" )
6372add_subdirectory (libBLS )
6473
74+
6575project (consensus)
6676
6777include_directories ("${DEPS_INSTALL_ROOT} /include" "${DEPS_INSTALL_ROOT} /include/cryptopp"
@@ -104,7 +114,6 @@ endif ()
104114
105115
106116#Threads package
107-
108117set (THREADS_PREFER_PTHREAD_FLAG ON )
109118find_package (Threads REQUIRED )
110119
@@ -218,75 +227,92 @@ if (${CMAKE_BUILD_TYPE} MATCHES "Debug")
218227 set (DASH_SUFFIX "-d" )
219228endif ()
220229
221-
222230SET (LINK_LIBRARIES
223- backtrace
224- Threads::Threads
225- ${BOOST_LIBS_FOR_CONSENSUS}
226- ${LIB_NAME_cryptopp}
227- leveldb
228- snappy
229- crc32c
230- "${DEPS_INSTALL_ROOT} /lib/libjsonrpccpp-client.a"
231- "${DEPS_INSTALL_ROOT} /lib/libjsonrpccpp-server.a"
232- "${DEPS_INSTALL_ROOT} /lib/libmicrohttpd.a"
233- "${DEPS_INSTALL_ROOT} /lib/libjsonrpccpp-stub.a"
234- "${DEPS_INSTALL_ROOT} /lib/libjsonrpccpp-common.a"
235- "${DEPS_INSTALL_ROOT} /lib/libzmq.a"
236- "${DEPS_INSTALL_ROOT} /lib/libsodium.a"
237- "${DEPS_INSTALL_ROOT} /lib/libcryptopp.a"
238- gmp
239- gcov
240- gnutls
241- gcrypt
242- "${DEPS_INSTALL_ROOT} /lib/libjsoncpp.a"
243- "${DEPS_INSTALL_ROOT} /lib/libssl.a"
244- "${DEPS_INSTALL_ROOT} /lib/libcrypto.a"
245- "${DEPS_INSTALL_ROOT} /lib/libcurl.a"
246- "${DEPS_INSTALL_ROOT} /lib/libssl.a"
247- "${DEPS_INSTALL_ROOT} /lib/libcrypto.a"
248- dl
249- z
250- pthread
251- idn2
252- blake3
253- "${DEPS_INSTALL_ROOT} /lib/libquicwebtransport.a"
254- "${DEPS_INSTALL_ROOT} /lib/libproxygenhttpserver.a"
255- "${DEPS_INSTALL_ROOT} /lib/libproxygen.a"
256- "${DEPS_INSTALL_ROOT} /lib/libmvfst_exception.a"
257- "${DEPS_INSTALL_ROOT} /lib/libwangle.a"
258- "${DEPS_INSTALL_ROOT} /lib/libflatbuffers.a"
259- "${DEPS_INSTALL_ROOT} /lib/libfizz.a"
260- "${DEPS_INSTALL_ROOT} /lib/libfolly.a"
261- "${DEPS_INSTALL_ROOT} /lib/libboost_context.a"
262- "${DEPS_INSTALL_ROOT} /lib/libevent.a"
263- "${DEPS_INSTALL_ROOT} /lib/libz.a"
264- "${DEPS_INSTALL_ROOT} /lib/libzstd.a"
265- "${DEPS_INSTALL_ROOT} /lib/libdouble-conversion.a"
266- "${DEPS_INSTALL_ROOT} /lib/libglog.a"
267- "${DEPS_INSTALL_ROOT} /lib/libgflags.a"
268- "${DEPS_INSTALL_ROOT} /lib/liblzma.a"
269- "${DEPS_INSTALL_ROOT} /lib/libfmt.a"
270- te
231+ backtrace
232+ Threads::Threads
233+ ${BOOST_LIBS_FOR_CONSENSUS}
234+ ${LIB_NAME_cryptopp}
235+ leveldb
236+ snappy
237+ crc32c
238+ "${DEPS_INSTALL_ROOT} /lib/libjsonrpccpp-client.a"
239+ "${DEPS_INSTALL_ROOT} /lib/libjsonrpccpp-server.a"
240+ "${DEPS_INSTALL_ROOT} /lib/libmicrohttpd.a"
241+ "${DEPS_INSTALL_ROOT} /lib/libjsonrpccpp-stub.a"
242+ "${DEPS_INSTALL_ROOT} /lib/libjsonrpccpp-common.a"
243+ "${DEPS_INSTALL_ROOT} /lib/libzmq.a"
244+ "${DEPS_INSTALL_ROOT} /lib/libsodium.a"
245+ "${DEPS_INSTALL_ROOT} /lib/libcryptopp.a"
246+ gmp
247+ gcov
248+ gnutls
249+ gcrypt
250+ "${DEPS_INSTALL_ROOT} /lib/libjsoncpp.a"
251+ "${DEPS_INSTALL_ROOT} /lib/libcurl.a"
252+ dl
253+ pthread
254+ idn2
255+ blake3
256+ "${DEPS_INSTALL_ROOT} /lib/libquicwebtransport.a"
257+ "${DEPS_INSTALL_ROOT} /lib/libproxygenhttpserver.a"
258+ "${DEPS_INSTALL_ROOT} /lib/libproxygen.a"
259+ "${DEPS_INSTALL_ROOT} /lib/libmvfst_exception.a"
260+ "${DEPS_INSTALL_ROOT} /lib/libwangle.a"
261+ "${DEPS_INSTALL_ROOT} /lib/libflatbuffers.a"
262+ "${DEPS_INSTALL_ROOT} /lib/libfizz.a"
263+ "${DEPS_INSTALL_ROOT} /lib/libfolly.a"
264+ "${DEPS_INSTALL_ROOT} /lib/liblzma.a"
265+ "${DEPS_INSTALL_ROOT} /lib/libz.a"
266+ "${DEPS_INSTALL_ROOT} /lib/libzstd.a"
267+ "${DEPS_INSTALL_ROOT} /lib/libboost_context.a"
268+ "${DEPS_INSTALL_ROOT} /lib/libevent.a"
269+ "${DEPS_INSTALL_ROOT} /lib/libdouble-conversion.a"
270+ "${DEPS_INSTALL_ROOT} /lib/libglog.a"
271+ "${DEPS_INSTALL_ROOT} /lib/libgflags.a"
272+ "${DEPS_INSTALL_ROOT} /lib/libfmt.a"
273+ "${DEPS_INSTALL_ROOT} /lib/libssl.a"
274+ "${DEPS_INSTALL_ROOT} /lib/libcrypto.a"
275+ te
271276)
272277if (CMAKE_PROJECT_NAME STREQUAL "consensus" )
273278 SET (LINK_LIBRARIES ${LINK_LIBRARIES} "${DEPS_INSTALL_ROOT} /lib/libsecp256k1.a" )
274279else ()
275280 SET (LINK_LIBRARIES ${LINK_LIBRARIES} Secp256k1)
276281endif ()
277282
278- # consensus library
283+ ###################################
284+ # consensus dependencies #
285+ ###################################
279286
280- add_library (consensus STATIC ${SRC_FILES} )
287+ add_library (consensus_dependencies INTERFACE )
288+ target_link_libraries ( consensus_dependencies INTERFACE ${LINK_LIBRARIES} )
281289
282- target_compile_options (consensus PRIVATE -Wno-error=unused-variable )
290+ ###################################
291+ # consensus library #
292+ ###################################
283293
284- target_link_libraries (consensus PRIVATE ${LINK_LIBRARIES} PUBLIC bls )
294+ add_library (consensus STATIC ${SRC_FILES} )
295+ target_compile_options (consensus PRIVATE -Wno-error=unused-variable )
296+ target_link_libraries (consensus PUBLIC consensus_dependencies PUBLIC bls )
297+
298+ ###################################
299+ # consensus executables #
300+ ###################################
301+
302+ # Build a consensus wrapper to have both consensus exposed code + all
303+ # consensus dependencies
304+ add_library (consensus_full INTERFACE )
305+ target_link_libraries (consensus_full INTERFACE
306+ "-Wl,--start-group" # makes ld/lld rescan archives until all cross-archive symbols resolve.
307+ consensus consensus_dependencies
308+ "-Wl,--end-group"
309+ )
285310
286- # consensus test agent
311+ # ---------------------------------
312+ # consensusd - the main consensus node executable
313+ # ---------------------------------
287314
288315add_executable (consensusd Consensusd.h Consensusd.cpp )
289-
290316target_compile_options (consensusd PRIVATE -Wno-error=unused-variable )
291317
292318# # libgoogle-perftools-dev
@@ -295,11 +321,14 @@ target_compile_options(consensusd PRIVATE -Wno-error=unused-variable)
295321# # sudo apt-get install -qq -yy libgoogle-perftools-dev
296322# target_link_libraries(consensusd consensus tcmalloc)
297323# else ()
298- target_link_libraries (consensusd consensus )
324+ target_link_libraries (consensusd consensus_full )
299325# endif ()
300326
301327
302- ### consensust executable
328+ # ---------------------------------
329+ # consensust - the main consensus unit
330+ # tests executable
331+ # ---------------------------------
303332
304333# Automatically discover all test source files in the unittests directory and its subdirectories.
305334file (GLOB_RECURSE ALL_TEST_SOURCES "unittests/*.cpp" )
@@ -328,9 +357,11 @@ add_executable(consensust
328357 ${TEST_SOURCES}
329358)
330359
331- target_link_libraries (consensust PRIVATE consensus )
360+ target_link_libraries (consensust PRIVATE consensus_full )
332361
333362target_compile_options (consensust PRIVATE -Wno-error=unused-variable )
363+ # force catch2 macros to be prefixed with CATCH_ to avoid conflicts
364+ target_compile_definitions (consensust PRIVATE CATCH_CONFIG_PREFIX_ALL )
334365
335366# # libgoogle-perftools-dev
336367# if (CMAKE_PROJECT_NAME STREQUAL "consensus")
0 commit comments