Skip to content

Commit ebc221d

Browse files
authored
Split libraries (#1000)
* make two libs POP_LIB and BFI_LIB * update
1 parent 194694f commit ebc221d

File tree

11 files changed

+101
-39
lines changed

11 files changed

+101
-39
lines changed

CMakeLists.txt

+10-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ option(WITH_TRACER "Build with `tracy` tracer enabled" OFF)
6969
option(WITH_BACKWARD "If ON, any failure will print stacktrace (only in Debug mode)" ON)
7070

7171

72-
set(LIB_NAME veriblock-pop-cpp)
72+
set(LIB_NAME veriblock)
73+
set(POP_LIB_NAME "${LIB_NAME}-pop-cpp")
74+
set(BFI_LIB_NAME "${LIB_NAME}-bfi-cpp")
7375
project(${LIB_NAME} LANGUAGES C CXX)
7476

7577
include(FetchContent)
@@ -213,6 +215,13 @@ if(WITH_PYPOPTOOLS)
213215
add_subdirectory(pypoptools)
214216
endif()
215217

218+
if(SHARED)
219+
set(BUILD SHARED)
220+
else()
221+
set(BUILD STATIC)
222+
endif()
223+
message(STATUS "BUILD=${BUILD}")
224+
216225
message(STATUS "ALT_HASH_SIZE=${ALT_HASH_SIZE}")
217226
message(STATUS "CLANG_TIDY=${CLANG_TIDY}")
218227
message(STATUS "ASAN=${ASAN}")

benchmark/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ function(addbenchmark name)
99
target_link_libraries(${_target}
1010
benchmark::benchmark
1111
Threads::Threads
12-
${LIB_NAME}
12+
${POP_LIB_NAME}
1313
)
1414
endfunction()
1515

cmake/lib.pc.in

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@
22
includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@
33

4-
Name: @LIB_NAME@
4+
Name: @POP_LIB_NAME@
55
Description: Libraries for leveraging VeriBlock Proof-Of-Proof blockchain technology.
66
Version: @PROJECT_VERSION@
77
URL: https://github.com/VeriBlock/alt-integration-cpp
8-
Libs: -L${libdir} -l@LIB_NAME@ @VBK_DEPENDENCIES_LIBS@ -lstdc++ -lm @SANITIZERS_LIBS@
8+
Libs: -L${libdir} -l@POP_LIB_NAME@ @VBK_DEPENDENCIES_LIBS@ -lstdc++ -lm @SANITIZERS_LIBS@
99
Cflags: -I${includedir} @SANITIZERS_CFLAGS@ @ADDITIONAL_CFLAGS@

fuzz/fuzz.cmake

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ function(fuzz_add_cov_flags target)
2222
endfunction()
2323

2424

25-
fuzz_add_cov_flags(${LIB_NAME})
25+
fuzz_add_cov_flags(${POP_LIB_NAME})
2626

2727

2828
add_custom_target(fuzz
@@ -31,7 +31,7 @@ add_custom_target(fuzz
3131
)
3232
add_custom_command(
3333
OUTPUT fuzz_targets
34-
DEPENDS ${LIB_NAME}
34+
DEPENDS ${POP_LIB_NAME}
3535
COMMAND ;
3636
)
3737
set_source_files_properties(fuzz_targets PROPERTIES SYMBOLIC "true")
@@ -81,7 +81,7 @@ function(add_fuzz FUZZ_TARGET)
8181
CXX_STANDARD 17
8282
CXX_STANDARD_REQUIRED TRUE
8383
)
84-
target_link_libraries(${FUZZ_TARGET} PUBLIC ${LIB_NAME})
84+
target_link_libraries(${FUZZ_TARGET} PUBLIC ${POP_LIB_NAME})
8585
target_compile_options(${FUZZ_TARGET} PUBLIC
8686
-fsanitize=${fuzzers}
8787
-g

pypoptools/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@ add_subdirectory(pypoptesting)
2121
add_custom_target(install_pypoptools
2222
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
2323
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/setup.py install --user
24-
DEPENDS ${LIB_NAME}
24+
DEPENDS ${POP_LIB_NAME}
2525
COMMENT "Installing pypoptools..."
2626
)

pypoptools/pypopminer/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ add_library(pypopminer MODULE
2424
target_link_libraries(pypopminer
2525
${Boost_LIBRARIES}
2626
${PYTHON_LIBRARIES}
27-
${LIB_NAME}
27+
${POP_LIB_NAME}
2828
)
2929

3030
set_target_properties(pypopminer PROPERTIES

src/bfi/CMakeLists.txt

+59
Original file line numberDiff line numberDiff line change
@@ -1 +1,60 @@
11
add_subdirectory(veriblock)
2+
3+
set(SOURCES
4+
dummy.cpp
5+
)
6+
7+
add_library(${BFI_LIB_NAME} ${BUILD} ${SOURCES})
8+
enable_clang_tidy(${BFI_LIB_NAME})
9+
10+
target_link_libraries(${BFI_LIB_NAME} ${POP_LIB_NAME})
11+
12+
set_target_properties(${BFI_LIB_NAME} PROPERTIES
13+
VERSION ${VERSION}
14+
SOVERSION ${MAJOR_VERSION}
15+
INTERFACE_${BFI_LIB_NAME}_MAJOR_VERSION ${MAJOR_VERSION}
16+
)
17+
set_property(
18+
TARGET ${BFI_LIB_NAME}
19+
APPEND PROPERTY
20+
COMPATIBLE_INTERFACE_STRING MAJOR_VERSION
21+
)
22+
23+
# make install is not defined with FUZZING=ON
24+
if(NOT FUZZING)
25+
install(TARGETS ${BFI_LIB_NAME}
26+
EXPORT ${BFI_LIB_NAME}Config
27+
COMPONENT devel
28+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
29+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
30+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
31+
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
32+
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
33+
FRAMEWORK DESTINATION ${CMAKE_INSTALL_PREFIX}
34+
)
35+
install(
36+
DIRECTORY ${CMAKE_SOURCE_DIR}/include/veriblock
37+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
38+
)
39+
install(
40+
EXPORT ${BFI_LIB_NAME}Config
41+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${BFI_LIB_NAME}
42+
)
43+
export(
44+
TARGETS ${BFI_LIB_NAME}
45+
FILE ${BFI_LIB_NAME}Config.cmake
46+
)
47+
endif()
48+
49+
target_include_directories(${BFI_LIB_NAME}
50+
INTERFACE
51+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
52+
$<INSTALL_INTERFACE:include>
53+
)
54+
55+
56+
enable_asan_on_target(${BFI_LIB_NAME})
57+
enable_tsan_on_target(${BFI_LIB_NAME})
58+
enable_ubsan_on_target(${BFI_LIB_NAME})
59+
enable_werror(${BFI_LIB_NAME})
60+
enable_stacktrace_on_target(${BFI_LIB_NAME})

src/bfi/dummy.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#include <veriblock/pop/entities/coin.hpp>

src/pop/CMakeLists.txt

+20-27
Original file line numberDiff line numberDiff line change
@@ -87,20 +87,13 @@ if(VERIBLOCK_POP_LOGGER_ENABLED)
8787
list(APPEND SOURCES logger.cpp)
8888
endif()
8989

90-
if(SHARED)
91-
set(BUILD SHARED)
92-
else()
93-
set(BUILD STATIC)
94-
endif()
95-
message(STATUS "BUILD=${BUILD}")
96-
97-
add_library(${LIB_NAME} ${BUILD} ${SOURCES})
98-
enable_clang_tidy(${LIB_NAME})
90+
add_library(${POP_LIB_NAME} ${BUILD} ${SOURCES})
91+
enable_clang_tidy(${POP_LIB_NAME})
9992

10093
if(WITH_TRACER)
10194
add_compile_definitions(TRACY_ON_DEMAND)
102-
target_sources(${LIB_NAME} PRIVATE $<TARGET_OBJECTS:tracy>)
103-
target_link_libraries(${LIB_NAME} PUBLIC dl)
95+
target_sources(${POP_LIB_NAME} PRIVATE $<TARGET_OBJECTS:tracy>)
96+
target_link_libraries(${POP_LIB_NAME} PUBLIC dl)
10497
set(ADDITIONAL_CFLAGS -DTRACY_ENABLE=1)
10598
if(UNIX)
10699
set(VBK_DEPENDENCIES_LIBS ${VBK_DEPENDENCIES_LIBS} -ldl)
@@ -109,21 +102,21 @@ if(WITH_TRACER)
109102
endif()
110103
endif()
111104

112-
set_target_properties(${LIB_NAME} PROPERTIES
105+
set_target_properties(${POP_LIB_NAME} PROPERTIES
113106
VERSION ${VERSION}
114107
SOVERSION ${MAJOR_VERSION}
115-
INTERFACE_${LIB_NAME}_MAJOR_VERSION ${MAJOR_VERSION}
108+
INTERFACE_${POP_LIB_NAME}_MAJOR_VERSION ${MAJOR_VERSION}
116109
)
117110
set_property(
118-
TARGET ${LIB_NAME}
111+
TARGET ${POP_LIB_NAME}
119112
APPEND PROPERTY
120113
COMPATIBLE_INTERFACE_STRING MAJOR_VERSION
121114
)
122115

123116
# make install is not defined with FUZZING=ON
124117
if(NOT FUZZING)
125-
install(TARGETS ${LIB_NAME}
126-
EXPORT ${LIB_NAME}Config
118+
install(TARGETS ${POP_LIB_NAME}
119+
EXPORT ${POP_LIB_NAME}Config
127120
COMPONENT devel
128121
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
129122
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
@@ -137,15 +130,15 @@ if(NOT FUZZING)
137130
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
138131
)
139132
install(
140-
EXPORT ${LIB_NAME}Config
141-
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${LIB_NAME}
133+
EXPORT ${POP_LIB_NAME}Config
134+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${POP_LIB_NAME}
142135
)
143136
export(
144-
TARGETS ${LIB_NAME}
145-
FILE ${LIB_NAME}Config.cmake
137+
TARGETS ${POP_LIB_NAME}
138+
FILE ${POP_LIB_NAME}Config.cmake
146139
)
147140
endif()
148-
target_include_directories(${LIB_NAME}
141+
target_include_directories(${POP_LIB_NAME}
149142
INTERFACE
150143
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
151144
$<INSTALL_INTERFACE:include>
@@ -166,14 +159,14 @@ endif()
166159

167160
string(REPLACE ";" " " VBK_DEPENDENCIES_LIBS "${VBK_DEPENDENCIES_LIBS}")
168161

169-
set(configured_pc ${CMAKE_BINARY_DIR}/${LIB_NAME}.pc)
162+
set(configured_pc ${CMAKE_BINARY_DIR}/${POP_LIB_NAME}.pc)
170163
configure_file("${CMAKE_SOURCE_DIR}/cmake/lib.pc.in" "${configured_pc}" @ONLY)
171164
install(FILES "${configured_pc}"
172165
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
173166

174167

175-
enable_asan_on_target(${LIB_NAME})
176-
enable_tsan_on_target(${LIB_NAME})
177-
enable_ubsan_on_target(${LIB_NAME})
178-
enable_werror(${LIB_NAME})
179-
enable_stacktrace_on_target(${LIB_NAME})
168+
enable_asan_on_target(${POP_LIB_NAME})
169+
enable_tsan_on_target(${POP_LIB_NAME})
170+
enable_ubsan_on_target(${POP_LIB_NAME})
171+
enable_werror(${POP_LIB_NAME})
172+
enable_stacktrace_on_target(${POP_LIB_NAME})

test/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
link_libraries(${LIB_NAME})
1+
link_libraries(${POP_LIB_NAME})
22
include_directories(${CMAKE_CURRENT_LIST_DIR})
33
include_directories(${CMAKE_BINARY_DIR}/include)
44

tools/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
add_executable(filetoheader EXCLUDE_FROM_ALL filetoheader.cpp)
22
add_executable(build_payouts_table EXCLUDE_FROM_ALL build_payouts_table.cpp)
3-
target_link_libraries(build_payouts_table ${LIB_NAME})
3+
target_link_libraries(build_payouts_table ${POP_LIB_NAME})
44

55
add_executable(build_seedhash_epochs build_seedhash_epochs.cpp)
6-
target_link_libraries(build_seedhash_epochs ${LIB_NAME})
6+
target_link_libraries(build_seedhash_epochs ${POP_LIB_NAME})

0 commit comments

Comments
 (0)