Skip to content

Commit fa8ab8c

Browse files
committed
Add shared build
1 parent ef40f9c commit fa8ab8c

File tree

3 files changed

+44
-4
lines changed

3 files changed

+44
-4
lines changed

.github/workflows/linux.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ defaults:
1111
shell: bash -l -eo pipefail {0}
1212

1313
jobs:
14-
build:
14+
build_linux:
1515
runs-on: ubuntu-latest
1616
steps:
1717
- name: Checkout repository

CMakeLists.txt

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,37 @@ set(CMAKE_CXX_STANDARD 20)
66
set(CMAKE_CXX_STANDARD_REQUIRED ON)
77
set(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+
1125
OPTION(BUILD_TESTS "Build sparrow-ipc test suite" OFF)
1226
MESSAGE(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+
)
35+
36+
set(SPARROW_IPC_SRC
37+
${SPARROW_IPC_SOURCE_DIR}/sparrow-ipc.cpp
38+
)
39+
1440
set(SCHEMA_DIR ${CMAKE_BINARY_DIR}/format)
1541
set(FLATBUFFERS_GENERATED_DIR ${CMAKE_BINARY_DIR}/generated)
1642

@@ -73,9 +99,10 @@ add_dependencies(flatbuffers_interface generate_flatbuffers_headers)
7399
find_package(FlatBuffers CONFIG REQUIRED)
74100
find_package(sparrow CONFIG REQUIRED)
75101

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)
102+
add_library(sparrow-ipc ${SPARROW_IPC_LIBRARY_TYPE} ${SPARROW_IPC_SRC} ${SPARROW_IPC_HEADERS})
103+
target_compile_definitions(sparrow-ipc PUBLIC ${SPARROW_IPC_COMPILE_DEFINITIONS})
104+
target_include_directories(sparrow-ipc PUBLIC ${SPARROW_IPC_INCLUDE_DIR} PRIVATE ${SPARROW_IPC_SOURCE_DIR} )
105+
target_link_libraries(sparrow-ipc PRIVATE flatbuffers_interface PUBLIC flatbuffers::flatbuffers sparrow)
79106

80107
add_dependencies(sparrow-ipc generate_flatbuffers_headers)
81108

include/config/config.hpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#pragma once
2+
3+
#if defined(_WIN32)
4+
# if defined(SPARROW_IPC_STATIC_LIB)
5+
# define SPARROW_IPC_API
6+
# elif defined(SPARROW_IPC_EXPORTS)
7+
# define SPARROW_IPC_API __declspec(dllexport)
8+
# else
9+
# define SPARROW_IPC_API __declspec(dllimport)
10+
# endif
11+
#else
12+
# define SPARROW_IPC_API __attribute__((visibility("default")))
13+
#endif

0 commit comments

Comments
 (0)