@@ -16,11 +16,30 @@ set(CMAKE_CXX_STANDARD 17)
1616set (CMAKE_CXX_STANDARD_REQUIRED ON )
1717set (CMAKE_CXX_EXTENSIONS OFF )
1818
19- set (LIB_SOURCES
20- src/aborting_malloc.c
21- src/line_sender.c
22- src/mem_writer.c
23- src/utf8.c)
19+ option (
20+ BUILD_SHARED_LIBS
21+ "Build shared library dependencies instead of static."
22+ OFF )
23+
24+ # Build static and dynamic lib written in Rust by invoking `cargo`.
25+ # Imports `questdb_client` target.
26+ add_subdirectory (corrosion)
27+ corrosion_import_crate(
28+ MANIFEST_PATH Cargo.toml
29+ FEATURES ffi
30+ LINK_AS C)
31+ target_include_directories (
32+ questdb_client INTERFACE
33+ ${CMAKE_CURRENT_SOURCE_DIR} /include )
34+ if (WIN32 )
35+ set_target_properties (
36+ questdb_client-shared
37+ PROPERTIES
38+ DEFINE_SYMBOL "LINESENDER_DYN_LIB" )
39+ target_link_libraries (
40+ questdb_client-shared
41+ INTERFACE wsock32 ws2_32)
42+ endif (WIN32 )
2443
2544function (set_compile_flags TARGET_NAME)
2645 if (MSVC )
@@ -43,86 +62,42 @@ function(set_compile_flags TARGET_NAME)
4362 endif ()
4463endfunction ()
4564
46- # Shared Library
47- add_library (
48- c_questdb_client SHARED
49- ${LIB_SOURCES} )
50- target_include_directories (
51- c_questdb_client
52- PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} /include )
53- set_compile_flags(c_questdb_client)
54- target_compile_definitions (
55- c_questdb_client
56- PUBLIC
57- LINESENDER_DYN_LIB)
58- if (WIN32 )
59- set_target_properties (
60- c_questdb_client
61- PROPERTIES
62- DEFINE_SYMBOL "LINESENDER_EXPORTS" )
63- target_link_libraries (c_questdb_client wsock32 ws2_32)
64- endif (WIN32 )
65- if (UNIX )
66- target_compile_options (
67- c_questdb_client PRIVATE
68- -fvisibility=hidden)
69- endif (UNIX )
70-
71- # Static Library
72- add_library (
73- c_questdb_client_static STATIC
74- ${LIB_SOURCES} )
75- target_include_directories (
76- c_questdb_client_static
77- PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} /include )
78- set_compile_flags(c_questdb_client_static)
79- if (WIN32 )
80- target_link_libraries (c_questdb_client_static wsock32 ws2_32)
81- endif (WIN32 )
82-
83- # Static Library w/ -fPIC
84- if (UNIX )
85- add_library (
86- c_questdb_client_static_pic STATIC
87- ${LIB_SOURCES} )
88- set_property (
89- TARGET c_questdb_client_static_pic
90- PROPERTY POSITION_INDEPENDENT_CODE ON )
91- target_include_directories (
92- c_questdb_client_static_pic
93- PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} /include )
94- set_compile_flags(c_questdb_client_static_pic)
95- endif (UNIX )
96-
9765# Examples
9866add_executable (
9967 line_sender_c_example
10068 examples/line_sender_c_example.c)
10169target_link_libraries (
10270 line_sender_c_example
103- c_questdb_client_static) # example depending on static lib.
71+ questdb_client)
10472add_executable (
10573 line_sender_cpp_example
10674 examples/line_sender_cpp_example.cpp)
10775target_link_libraries (
10876 line_sender_cpp_example
109- c_questdb_client) # example depending on dynamic lib.
77+ questdb_client)
11078
111- # Unit test binary.
112- add_executable (
79+ # Unit test binaries.
80+ function (compile_test TARGET_NAME)
81+ list (POP_FRONT ARGV) # compile_test
82+ add_executable (
83+ ${TARGET_NAME}
84+ ${ARGV} )
85+ target_link_libraries (
86+ ${TARGET_NAME}
87+ questdb_client)
88+ target_include_directories (
89+ ${TARGET_NAME}
90+ PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} /include )
91+ set_compile_flags(${TARGET_NAME} )
92+ add_test (
93+ NAME ${TARGET_NAME}
94+ COMMAND ${TARGET_NAME} )
95+ endfunction ()
96+
97+ compile_test(
11398 test_line_sender
11499 test /mock_server.cpp
115100 test /test_line_sender.cpp)
116- target_link_libraries (
117- test_line_sender
118- c_questdb_client_static)
119- target_include_directories (
120- test_line_sender
121- PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} /include )
122- set_compile_flags(test_line_sender)
123- add_test (
124- NAME test_line_sender
125- COMMAND test_line_sender)
126101
127102# System testing Python3 script.
128103# This will download the latest QuestDB instance from Github,
0 commit comments