Skip to content

Commit

Permalink
Add CMake export configuration
Browse files Browse the repository at this point in the history
Signed-off-by: Adriaan Niess <adriaan.niess@de.bosch.com>
  • Loading branch information
adriaan-niess committed Jul 23, 2024
1 parent f59ad83 commit a8a2d00
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 16 deletions.
58 changes: 42 additions & 16 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
cmake_minimum_required(VERSION 3.20)

project(open1722 VERSION 0.1)
project(Open1722 VERSION 0.1)

set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED TRUE)

#### Libraries ################################################################

# PDU parsing library
add_library(open1722pdu SHARED
add_library(open1722 SHARED
"src/avtp/CommonHeader.c"
"src/avtp/Crf.c"
"src/avtp/Rvf.c"
Expand All @@ -27,7 +26,9 @@ add_library(open1722pdu SHARED
"src/avtp/cvf/H264.c"
"src/avtp/cvf/Jpeg2000.c"
"src/avtp/cvf/Mjpeg.c")
target_include_directories(open1722pdu PRIVATE "include")
target_include_directories(open1722 PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>)

#### Examples #################################################################

Expand All @@ -38,42 +39,42 @@ target_include_directories(open1722examples PRIVATE "examples" "include")
# AAF listener app
add_executable(aaf-listener "examples/aaf/aaf-listener.c")
target_include_directories(aaf-listener PRIVATE "examples" "include")
target_link_libraries(aaf-listener open1722pdu open1722examples)
target_link_libraries(aaf-listener open1722 open1722examples)

# AAF talker app
add_executable(aaf-talker "examples/aaf/aaf-talker.c")
target_include_directories(aaf-talker PRIVATE "examples" "include")
target_link_libraries(aaf-talker open1722pdu open1722examples)
target_link_libraries(aaf-talker open1722 open1722examples)

# CAN talker app
add_executable(acf-can-talker "examples/acf-can/acf-can-talker.c")
target_include_directories(acf-can-talker PRIVATE "examples" "include")
target_link_libraries(acf-can-talker open1722pdu open1722examples)
target_link_libraries(acf-can-talker open1722 open1722examples)

# CAN listener app
add_executable(acf-can-listener "examples/acf-can/acf-can-listener.c")
target_include_directories(acf-can-listener PRIVATE "examples" "include")
target_link_libraries(acf-can-listener open1722pdu open1722examples)
target_link_libraries(acf-can-listener open1722 open1722examples)

# CRF talker app
add_executable(crf-talker "examples/crf/crf-talker.c")
target_include_directories(crf-talker PRIVATE "examples" "include")
target_link_libraries(crf-talker open1722pdu open1722examples m)
target_link_libraries(crf-talker open1722 open1722examples m)

# CRF listener app
add_executable(crf-listener "examples/crf/crf-listener.c")
target_include_directories(crf-listener PRIVATE "examples" "include")
target_link_libraries(crf-listener open1722pdu open1722examples m)
target_link_libraries(crf-listener open1722 open1722examples m)

# CVF talker app
add_executable(cvf-talker "examples/cvf/cvf-talker.c")
target_include_directories(cvf-talker PRIVATE "examples" "include")
target_link_libraries(cvf-talker open1722pdu open1722examples)
target_link_libraries(cvf-talker open1722 open1722examples)

# CVF listener app
add_executable(cvf-listener "examples/cvf/cvf-listener.c")
target_include_directories(cvf-listener PRIVATE "examples" "include")
target_link_libraries(cvf-listener open1722pdu open1722examples)
target_link_libraries(cvf-listener open1722 open1722examples)

#### Tests ####################################################################

Expand All @@ -92,13 +93,13 @@ list(APPEND TEST_TARGETS test-rvf)
foreach(TEST_TARGET IN LISTS TEST_TARGETS)
add_executable(${TEST_TARGET} "unit/${TEST_TARGET}.c")
target_include_directories(${TEST_TARGET} PRIVATE "include")
target_link_libraries(${TEST_TARGET} open1722pdu cmocka m)
target_link_libraries(${TEST_TARGET} open1722 cmocka m)
add_test(NAME ${TEST_TARGET} COMMAND "${PROJECT_BINARY_DIR}/${TEST_TARGET}")
endforeach()

#### Install ##################################################################

install(TARGETS open1722pdu DESTINATION lib)
install(TARGETS open1722 EXPORT Open1722Targets DESTINATION lib)
install(TARGETS
aaf-listener
aaf-talker
Expand All @@ -111,12 +112,37 @@ install(TARGETS
DESTINATION bin)
install(DIRECTORY "include/" DESTINATION include)

#### Export Configuration #####################################################

install(EXPORT Open1722Targets FILE Open1722Targets.cmake DESTINATION lib/cmake/Open1722)

include(CMakePackageConfigHelpers)

configure_package_config_file(
${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/Open1722Config.cmake"
INSTALL_DESTINATION "lib/cmake/Open1722"
NO_SET_AND_CHECK_MACRO
NO_CHECK_REQUIRED_COMPONENTS_MACRO)

write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/Open1722ConfigVersion.cmake
VERSION "${Open1722_VERSION_MAJOR}.${Open1722_VERSION_MINOR}"
COMPATIBILITY AnyNewerVersion)

install(FILES
${CMAKE_CURRENT_BINARY_DIR}/Open1722Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/Open1722ConfigVersion.cmake
DESTINATION lib/cmake/Open1722)

export(EXPORT Open1722Targets FILE ${CMAKE_CURRENT_BINARY_DIR}/Open1722Targets.cmake)

#### Packaging ################################################################

include(InstallRequiredSystemLibraries)
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
set(CPACK_PACKAGE_VERSION_MAJOR "${open1722_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${open1722_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_MAJOR "${Open1722_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${Open1722_VERSION_MINOR}")
# set(CPACK_PACKAGE_DIRECTORY "${PROJECT_BINARY_DIR}/release")
set(CPACK_GENERATOR "TGZ" "DEB")
set(CPACK_SOURCE_GENERATOR "TGZ" "DEB")
Expand Down
3 changes: 3 additions & 0 deletions Config.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
@PACKAGE_INIT@

include("${CMAKE_CURRENT_LIST_DIR}/Open1722Targets.cmake")

0 comments on commit a8a2d00

Please sign in to comment.