@@ -6,11 +6,38 @@ set(CMAKE_CXX_STANDARD 20)
66set (CMAKE_CXX_STANDARD_REQUIRED ON )
77set (CMAKE_CXX_SCAN_FOR_MODULES OFF )
88
9+ set (SPARROW_IPC_COMPILE_DEFINITIONS "" CACHE STRING "List of public compile definitions of the sparrow-ipc target" )
10+
911# Build options
1012# =============
13+
14+ OPTION (SPARROW_IPC_BUILD_SHARED "Build sparrow-ipc as a shared library" ON )
15+
16+ if (SPARROW_IPC_BUILD_SHARED)
17+ message (STATUS "🔧 Build shared library" )
18+ set (SPARROW_IPC_LIBRARY_TYPE SHARED)
19+ else ()
20+ message (STATUS "🔧 Build static library" )
21+ set (SPARROW_IPC_LIBRARY_TYPE STATIC )
22+ list (APPEND SPARROW_IPC_COMPILE_DEFINITIONS SPARROW_IPC_STATIC_LIB)
23+ endif ()
24+
1125OPTION (BUILD_TESTS "Build sparrow-ipc test suite" OFF )
1226MESSAGE (STATUS "🔧 Build tests: ${BUILD_TESTS} " )
1327
28+ set (SPARROW_IPC_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /include )
29+ set (SPARROW_IPC_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /src)
30+
31+ set (SPARROW_IPC_HEADERS
32+ # config
33+ ${SPARROW_IPC_INCLUDE_DIR} /config/config.hpp
34+ ${SPARROW_IPC_INCLUDE_DIR} /sparrow-ipc.hpp
35+ )
36+
37+ set (SPARROW_IPC_SRC
38+ ${SPARROW_IPC_SOURCE_DIR} /sparrow-ipc.cpp
39+ )
40+
1441set (SCHEMA_DIR ${CMAKE_BINARY_DIR} /format)
1542set (FLATBUFFERS_GENERATED_DIR ${CMAKE_BINARY_DIR} /generated )
1643
@@ -73,9 +100,11 @@ add_dependencies(flatbuffers_interface generate_flatbuffers_headers)
73100find_package (FlatBuffers CONFIG REQUIRED)
74101find_package (sparrow CONFIG REQUIRED)
75102
76- # TODO Handle shared/static build later (after more code is available)
77- add_library (sparrow-ipc STATIC src/sparrow-ipc.cpp)
78- target_link_libraries (sparrow-ipc PRIVATE flatbuffers_interface flatbuffers::flatbuffers sparrow)
103+ add_library (sparrow-ipc ${SPARROW_IPC_LIBRARY_TYPE} ${SPARROW_IPC_SRC} ${SPARROW_IPC_HEADERS} )
104+ target_compile_definitions (sparrow-ipc PUBLIC ${SPARROW_IPC_COMPILE_DEFINITIONS} )
105+ target_include_directories (sparrow-ipc PUBLIC ${SPARROW_IPC_INCLUDE_DIR} PRIVATE ${SPARROW_IPC_SOURCE_DIR} )
106+ target_link_libraries (sparrow-ipc PRIVATE flatbuffers_interface)
107+ target_link_libraries (sparrow-ipc PUBLIC flatbuffers::flatbuffers sparrow::sparrow)
79108
80109add_dependencies (sparrow-ipc generate_flatbuffers_headers)
81110
0 commit comments