Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,23 @@ jobs:
test -f build/libdmosi.a
echo "✓ libdmosi.a created successfully with DMOSI_DONT_IMPLEMENT_DMOD_API=ON"

- name: Clean for module mode build
run: |
rm -rf build

- name: Configure CMake (DMOD_MODULE mode)
run: |
mkdir -p build
cd build
cmake -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DDMOD_MODE=DMOD_MODULE ..

- name: Build (DMOD_MODULE mode)
run: |
cd build
make -j$(nproc)

- name: Verify module mode build (no static library)
run: |
test ! -f build/libdmosi.a
echo "✓ libdmosi.a not created in DMOD_MODULE mode (expected)"

64 changes: 39 additions & 25 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -51,41 +51,55 @@ else()
message(STATUS "dmod target already exists, skipping FetchContent")
endif()

include(${DMOD_DIR}/paths.cmake)

# ======================================================================
# DMOD OSI Library
# DMOD OSI Interface Library
# ======================================================================
set(MODULE_NAME dmosi)
add_library(${MODULE_NAME} STATIC
src/dmosi.c
)

target_compile_definitions(${MODULE_NAME}
PRIVATE
$<$<BOOL:${DMOSI_DONT_IMPLEMENT_DMOD_API}>:DMOSI_DONT_IMPLEMENT_DMOD_API>
$<$<BOOL:${DMOSI_DONT_IMPLEMENT_DMOD_API_MUTEX}>:DMOSI_DONT_IMPLEMENT_DMOD_API_MUTEX>
$<$<BOOL:${DMOSI_DONT_IMPLEMENT_DMOD_API_ENV}>:DMOSI_DONT_IMPLEMENT_DMOD_API_ENV>
$<$<BOOL:${DMOSI_DONT_IMPLEMENT_DMOD_API_PROC}>:DMOSI_DONT_IMPLEMENT_DMOD_API_PROC>
$<$<BOOL:${DMOSI_DONT_IMPLEMENT_DMOD_API_TIME}>:DMOSI_DONT_IMPLEMENT_DMOD_API_TIME>
DMOSI_VERSION="${PROJECT_VERSION}"
add_library(dmosi_if INTERFACE)
target_include_directories(dmosi_if
INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}/include
)

target_include_directories(${MODULE_NAME}
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/include
)
# ======================================================================
# DMOD OSI Library (system mode only)
# ======================================================================
if(DMOD_SYSTEM)
add_library(${MODULE_NAME} STATIC
src/dmosi.c
)

target_link_libraries(${MODULE_NAME}
PRIVATE
dmod_inc
target_compile_definitions(${MODULE_NAME}
PRIVATE
$<$<BOOL:${DMOSI_DONT_IMPLEMENT_DMOD_API}>:DMOSI_DONT_IMPLEMENT_DMOD_API>
$<$<BOOL:${DMOSI_DONT_IMPLEMENT_DMOD_API_MUTEX}>:DMOSI_DONT_IMPLEMENT_DMOD_API_MUTEX>
$<$<BOOL:${DMOSI_DONT_IMPLEMENT_DMOD_API_ENV}>:DMOSI_DONT_IMPLEMENT_DMOD_API_ENV>
$<$<BOOL:${DMOSI_DONT_IMPLEMENT_DMOD_API_PROC}>:DMOSI_DONT_IMPLEMENT_DMOD_API_PROC>
$<$<BOOL:${DMOSI_DONT_IMPLEMENT_DMOD_API_TIME}>:DMOSI_DONT_IMPLEMENT_DMOD_API_TIME>
DMOSI_VERSION="${PROJECT_VERSION}"
)

# Enable coverage for dmosi library if requested
if(ENABLE_COVERAGE)
target_compile_options(${MODULE_NAME} PRIVATE --coverage)
target_link_options(${MODULE_NAME} PRIVATE --coverage)
endif()
target_include_directories(${MODULE_NAME}
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/include
)

target_link_libraries(${MODULE_NAME}
PRIVATE
dmod_inc
)

# Enable coverage for dmosi library if requested
if(ENABLE_COVERAGE)
target_compile_options(${MODULE_NAME} PRIVATE --coverage)
target_link_options(${MODULE_NAME} PRIVATE --coverage)
endif()

create_library_makefile(${MODULE_NAME})
create_library_makefile(${MODULE_NAME})
endif()

# ======================================================================
# Tests
Expand Down