Export shared and static libraries
This commit is contained in:
@@ -46,15 +46,25 @@ if(HAS_ARM_NEON)
|
||||
endif()
|
||||
|
||||
add_library(${PROJECT_NAME} SHARED ConflictSet.cpp)
|
||||
target_compile_options(conflict_set PRIVATE -fPIC -fno-exceptions
|
||||
-fvisibility=hidden)
|
||||
target_link_options(conflict_set PRIVATE $<$<NOT:$<CONFIG:Debug>>:
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE -fPIC -fno-exceptions
|
||||
-fvisibility=hidden)
|
||||
target_link_options(${PROJECT_NAME} PRIVATE $<$<NOT:$<CONFIG:Debug>>:
|
||||
-nodefaultlibs -lc>)
|
||||
|
||||
add_library(${PROJECT_NAME}_static STATIC ConflictSet.cpp)
|
||||
target_compile_options(conflict_set_static PRIVATE -fno-exceptions
|
||||
-fvisibility=hidden)
|
||||
add_custom_command(
|
||||
TARGET conflict_set_static
|
||||
POST_BUILD
|
||||
COMMAND
|
||||
${CMAKE_OBJCOPY} --keep-global-symbols=${CMAKE_SOURCE_DIR}/symbols.txt
|
||||
$<TARGET_FILE:${PROJECT_NAME}_static>)
|
||||
|
||||
if(NOT APPLE)
|
||||
target_link_options(
|
||||
conflict_set PRIVATE
|
||||
"LINKER:--version-script=${CMAKE_CURRENT_SOURCE_DIR}/linker.map")
|
||||
${PROJECT_NAME} PRIVATE
|
||||
"LINKER:-export-symbols=${CMAKE_CURRENT_SOURCE_DIR}/linker.map")
|
||||
endif()
|
||||
|
||||
set(TEST_FLAGS -Wall -Wextra -Wpedantic -Wunreachable-code -UNDEBUG)
|
||||
@@ -105,7 +115,7 @@ endforeach()
|
||||
# c90
|
||||
add_executable(conflict_set_c_api_test conflict_set_c_api_test.c)
|
||||
target_compile_options(conflict_set_c_api_test PRIVATE ${TEST_FLAGS})
|
||||
target_link_libraries(conflict_set_c_api_test PRIVATE conflict_set)
|
||||
target_link_libraries(conflict_set_c_api_test PRIVATE ${PROJECT_NAME})
|
||||
set_property(TARGET conflict_set_c_api_test PROPERTY C_STANDARD 90)
|
||||
set_property(TARGET conflict_set_c_api_test PROPERTY C_STANDARD_REQUIRED ON)
|
||||
add_test(NAME conflict_set_c_api_test COMMAND conflict_set_c_api_test)
|
||||
@@ -113,7 +123,7 @@ add_test(NAME conflict_set_c_api_test COMMAND conflict_set_c_api_test)
|
||||
# c++98
|
||||
add_executable(conflict_set_cxx_api_test conflict_set_cxx_api_test.cpp)
|
||||
target_compile_options(conflict_set_cxx_api_test PRIVATE ${TEST_FLAGS})
|
||||
target_link_libraries(conflict_set_cxx_api_test PRIVATE conflict_set)
|
||||
target_link_libraries(conflict_set_cxx_api_test PRIVATE ${PROJECT_NAME})
|
||||
set_property(TARGET conflict_set_c_api_test PROPERTY CXX_STANDARD 98)
|
||||
set_property(TARGET conflict_set_c_api_test PROPERTY CXX_STANDARD_REQUIRED ON)
|
||||
add_test(NAME conflict_set_cxx_api_test COMMAND conflict_set_cxx_api_test)
|
||||
@@ -127,12 +137,17 @@ target_include_directories(
|
||||
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}>)
|
||||
|
||||
target_include_directories(
|
||||
${PROJECT_NAME}_static
|
||||
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}>)
|
||||
|
||||
set_target_properties(
|
||||
${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION}
|
||||
SOVERSION ${PROJECT_VERSION_MAJOR})
|
||||
|
||||
install(
|
||||
TARGETS ${PROJECT_NAME}
|
||||
TARGETS ${PROJECT_NAME} ${PROJECT_NAME}_static
|
||||
EXPORT ConflictSetConfig
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
@@ -140,4 +155,5 @@ install(
|
||||
install(DIRECTORY include/
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
|
||||
|
||||
install(EXPORT ConflictSetConfig DESTINATION share/ConflictSet/cmake)
|
||||
install(EXPORT ConflictSetConfig
|
||||
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/ConflictSet/cmake)
|
||||
|
@@ -1042,7 +1042,9 @@ struct Iterator {
|
||||
int cmp;
|
||||
};
|
||||
|
||||
namespace {
|
||||
std::string_view getSearchPath(Arena &arena, Node *n);
|
||||
}
|
||||
|
||||
Iterator lastLeq(Node *n, const std::span<const uint8_t> key) {
|
||||
auto remaining = key;
|
||||
@@ -1111,8 +1113,10 @@ void insert(Node **self_, std::span<const uint8_t> key, int64_t writeVersion) {
|
||||
}
|
||||
}
|
||||
|
||||
namespace {
|
||||
std::string printable(std::string_view key);
|
||||
std::string printable(const Key &key);
|
||||
} // namespace
|
||||
|
||||
struct __attribute__((visibility("hidden"))) ConflictSet::Impl {
|
||||
void check(const ReadRange *reads, Result *result, int count) const {
|
||||
@@ -1248,6 +1252,8 @@ __attribute__((__visibility__("default"))) void ConflictSet_destroy(void *cs) {
|
||||
}
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
std::string printable(std::string_view key) {
|
||||
std::string result;
|
||||
for (uint8_t c : key) {
|
||||
@@ -1385,6 +1391,8 @@ bool checkCorrectness(Node *node, ReferenceImpl &refImpl) {
|
||||
|
||||
return success;
|
||||
}
|
||||
} // namespace
|
||||
|
||||
namespace std {
|
||||
void __throw_length_error(const char *) { __builtin_unreachable(); }
|
||||
} // namespace std
|
||||
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
global:
|
||||
*ConflictSet*;
|
||||
local:
|
||||
*;
|
||||
};
|
||||
|
Reference in New Issue
Block a user