From 57c62db33ed51b7e263d18996ea8656dc31722bb Mon Sep 17 00:00:00 2001 From: Victor Gaydov Date: Fri, 2 Dec 2022 16:30:58 +0400 Subject: [PATCH 1/2] CMake improvements --- .github/workflows/{build-openfec.yml => build.yml} | 5 +++++ CMakeLists.txt | 14 +++++++++++--- applis/eperftool/CMakeLists.txt | 8 ++++++-- .../simple_client_server/CMakeLists.txt | 10 +++++++--- pc/CMakeLists.txt | 6 +++++- src/CMakeLists.txt | 5 +++++ tests/CMakeLists.txt | 6 +++--- tools/descr_stats_v1.2/CMakeLists.txt | 2 -- 8 files changed, 42 insertions(+), 14 deletions(-) rename .github/workflows/{build-openfec.yml => build.yml} (94%) diff --git a/.github/workflows/build-openfec.yml b/.github/workflows/build.yml similarity index 94% rename from .github/workflows/build-openfec.yml rename to .github/workflows/build.yml index 730aa60..b36ef6d 100644 --- a/.github/workflows/build-openfec.yml +++ b/.github/workflows/build.yml @@ -43,6 +43,11 @@ jobs: cd build make -j2 + - name: Run tests + run: | + cd build + make test + release: runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/v') diff --git a/CMakeLists.txt b/CMakeLists.txt index c1629d2..b3f46e3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,8 @@ -cmake_minimum_required(VERSION 3.0.2) +if(CMAKE_MAJOR_VERSION LESS 3) + cmake_minimum_required(VERSION 2.6) +else() + cmake_minimum_required(VERSION 2.8.12) +endif() ##project project(openfec C) @@ -39,13 +43,17 @@ message(STATUS "Optimization level ${OPTIMIZE}") endif (DEBUG STREQUAL "ON") -set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE}) -set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE}) +set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE} + CACHE STRING "output path for libraries") +set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE} + CACHE STRING "output path for executables") MARK_AS_ADVANCED( LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH ) +option(INSTALL_DEVTOOLS "install developer tools into the system" OFF) + link_directories(${LIBRARY_OUTPUT_PATH}) add_subdirectory(pc) diff --git a/applis/eperftool/CMakeLists.txt b/applis/eperftool/CMakeLists.txt index ca29521..f7966a1 100644 --- a/applis/eperftool/CMakeLists.txt +++ b/applis/eperftool/CMakeLists.txt @@ -1,9 +1,13 @@ file (GLOB eperftool_sources ./*) -set(EPERFTOOL_BIN ${PROJECT_BINARY_DIR}/applis/eperftool/eperftool CACHE STRING "eperftool dir") +set(EPERFTOOL_BIN ${EXECUTABLE_OUTPUT_PATH}/eperftool CACHE STRING "eperftool exe") add_executable( eperftool ${eperftool_sources}) target_link_libraries( eperftool openfec m) -install(TARGETS eperftool) +if(INSTALL_DEVTOOLS) + install(TARGETS eperftool + RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} + COMPONENT devtools) +endif() diff --git a/applis/howto_examples/simple_client_server/CMakeLists.txt b/applis/howto_examples/simple_client_server/CMakeLists.txt index d3eed50..a215699 100644 --- a/applis/howto_examples/simple_client_server/CMakeLists.txt +++ b/applis/howto_examples/simple_client_server/CMakeLists.txt @@ -1,6 +1,6 @@ file (GLOB simple_server_sources ./simple_server.c) -set(SIMPLE_SERVER_BIN ${PROJECT_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE}/simple_server CACHE STRING "simple_server dir") +set(SIMPLE_SERVER_BIN ${EXECUTABLE_OUTPUT_PATH}/simple_server CACHE STRING "simple_server exe") add_executable(simple_server ${simple_server_sources}) target_link_libraries(simple_server openfec m) @@ -8,9 +8,13 @@ target_link_libraries(simple_server openfec m) file (GLOB simple_client_sources ./simple_client.c) -set(SIMPLE_SERVER_BIN ${PROJECT_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE}/simple_client CACHE STRING "simple_client dir") +set(SIMPLE_SERVER_BIN ${EXECUTABLE_OUTPUT_PATH}/simple_client CACHE STRING "simple_client exe") add_executable(simple_client ${simple_client_sources}) target_link_libraries(simple_client openfec m) -install(TARGETS simple_server simple_client) \ No newline at end of file +if(INSTALL_DEVTOOLS) + install(TARGETS simple_server simple_client + RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} + COMPONENT applis) +endif() diff --git a/pc/CMakeLists.txt b/pc/CMakeLists.txt index e9e2baf..589b91a 100644 --- a/pc/CMakeLists.txt +++ b/pc/CMakeLists.txt @@ -5,7 +5,7 @@ SET(PKG_CONFIG_LIBS "-L\${libdir} -l${PROJECT_NAME}" ) SET(PKG_CONFIG_CFLAGS - "-I\${includedir}/lib_common -I\${includedir}/lib_stable" + "-I\${includedir}/lib_common -I\${includedir}/lib_stable -I\${includedir}/lib_advanced" ) message(STATUS "Configuring \"${CMAKE_SOURCE_BINARY_DIR}/${PROJECT_NAME}.pc\"") @@ -15,3 +15,7 @@ CONFIGURE_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc" @ONLY ) + +install( + FILES "${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc" + DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/pkgconfig) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f92e095..0a547a0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -37,6 +37,11 @@ target_link_libraries(openfec m) install(TARGETS openfec DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}) +install( + DIRECTORY ${PROJECT_SOURCE_DIR}/src/ + DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}/openfec + FILES_MATCHING PATTERN "*.h*") + include(TestBigEndian) test_big_endian(BIG_ENDIAN) if(BIG_ENDIAN) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index ac25678..630d950 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,19 +1,19 @@ # list of dedicated binary tests add_executable(test_create_instance create_instance_test.c) target_link_libraries(test_create_instance openfec m) -add_test("create_instance" ${PROJECT_BINARY_DIR}/tests/test_create_instance) +add_test("create_instance" ${EXECUTABLE_OUTPUT_PATH}/test_create_instance) set_tests_properties ("create_instance" PROPERTIES FAIL_REGULAR_EXPRESSION "ERROR;FAILURE") add_executable(test_encoder_instance encoder_instance_test.c) target_link_libraries(test_encoder_instance openfec m) -add_test("encoder_instance" ${PROJECT_BINARY_DIR}/tests/test_encoder_instance) +add_test("encoder_instance" ${EXECUTABLE_OUTPUT_PATH}/test_encoder_instance) set_tests_properties ("encoder_instance" PROPERTIES FAIL_REGULAR_EXPRESSION "ERROR;FAILURE") add_executable(test_code_params code_params_test.c) target_link_libraries(test_code_params openfec m) -add_test("code_params" ${PROJECT_BINARY_DIR}/tests/test_code_params) +add_test("code_params" ${EXECUTABLE_OUTPUT_PATH}/test_code_params) set_tests_properties ("code_params" PROPERTIES FAIL_REGULAR_EXPRESSION "ERROR;FAILURE") diff --git a/tools/descr_stats_v1.2/CMakeLists.txt b/tools/descr_stats_v1.2/CMakeLists.txt index 471d732..b3732e9 100644 --- a/tools/descr_stats_v1.2/CMakeLists.txt +++ b/tools/descr_stats_v1.2/CMakeLists.txt @@ -4,5 +4,3 @@ set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/perf_eval) add_executable(descr_stats ${descr_stat_sources}) target_link_libraries( descr_stats m) - -install(TARGETS descr_stats) From e081327a26094d615b4332d08b3e93048f41fd7e Mon Sep 17 00:00:00 2001 From: Victor Gaydov Date: Mon, 23 Jan 2023 15:16:58 +0400 Subject: [PATCH 2/2] Update CMakeLists.txt Co-authored-by: David Runge --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b3f46e3..a42c9fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,7 +52,7 @@ MARK_AS_ADVANCED( EXECUTABLE_OUTPUT_PATH ) -option(INSTALL_DEVTOOLS "install developer tools into the system" OFF) +option(INSTALL_DEVTOOLS "install developer tools to the system" OFF) link_directories(${LIBRARY_OUTPUT_PATH})