Skip to content

Commit

Permalink
Merge pull request COVESA#17 from boschglobal/improve/cmake
Browse files Browse the repository at this point in the history
Improve CMake process
  • Loading branch information
nayakned authored Jul 22, 2024
2 parents c4a07d7 + 0f56f02 commit f59ad83
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 42 deletions.
53 changes: 15 additions & 38 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,10 @@ project(open1722 VERSION 0.1)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED TRUE)

set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin")
set(LIBRARY_OUTPUT_PATH "${PROJECT_BINARY_DIR}/lib")

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

# PDU parsing library
add_library(open1722pdu SHARED
add_library(open1722pdu SHARED
"src/avtp/CommonHeader.c"
"src/avtp/Crf.c"
"src/avtp/Rvf.c"
Expand All @@ -30,72 +27,52 @@ add_library(open1722pdu SHARED
"src/avtp/cvf/H264.c"
"src/avtp/cvf/Jpeg2000.c"
"src/avtp/cvf/Mjpeg.c")
target_include_directories(open1722pdu PRIVATE "${PROJECT_BINARY_DIR}/include")

# link_directories(lib)
target_include_directories(open1722pdu PRIVATE "include")

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

# Common library accross all examples
add_library(open1722examples STATIC "examples/common/common.c")
target_include_directories(open1722examples PRIVATE
"${PROJECT_BINARY_DIR}/examples"
"${PROJECT_BINARY_DIR}/include")
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
"${PROJECT_BINARY_DIR}/examples"
"${PROJECT_BINARY_DIR}/include")
target_include_directories(aaf-listener PRIVATE "examples" "include")
target_link_libraries(aaf-listener open1722pdu open1722examples)

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

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

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

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

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

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

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

#### Tests ####################################################################
Expand All @@ -114,9 +91,9 @@ 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 "${PROJECT_BINARY_DIR}/include")
target_include_directories(${TEST_TARGET} PRIVATE "include")
target_link_libraries(${TEST_TARGET} open1722pdu cmocka m)
add_test(NAME ${TEST_TARGET} COMMAND "${PROJECT_BINARY_DIR}/bin/${TEST_TARGET}")
add_test(NAME ${TEST_TARGET} COMMAND "${PROJECT_BINARY_DIR}/${TEST_TARGET}")
endforeach()

#### Install ##################################################################
Expand All @@ -132,15 +109,15 @@ install(TARGETS
cvf-listener
cvf-talker
DESTINATION bin)
install(DIRECTORY include/ DESTINATION include)
install(DIRECTORY "include/" DESTINATION include)

#### 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_DIRECTORY "${PROJECT_BINARY_DIR}/release")
# set(CPACK_PACKAGE_DIRECTORY "${PROJECT_BINARY_DIR}/release")
set(CPACK_GENERATOR "TGZ" "DEB")
set(CPACK_SOURCE_GENERATOR "TGZ" "DEB")

Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,9 @@ Alternatively, you can use VS Code to run the provided dev container which takes

The first step to build Open1722 is to generate the Makefile and build the project.
```
$ cd Open1722
$ cmake .
$ mkdir build
$ cd buid
$ cmake ..
$ make
```

Expand Down
6 changes: 5 additions & 1 deletion build_all.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
#!/bin/bash
set -ev

cmake . && make
rm -rf build
mkdir build
cd build
cmake ..
make -j`nproc`
3 changes: 2 additions & 1 deletion test_all.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#!/bin/bash
set -ev

./build_all.sh
./build_all.sh
cd build
make test
# ninja coverage-html

0 comments on commit f59ad83

Please sign in to comment.