From f7bf0cc1fe58969b2c1cee771d9d35c5cd580ae6 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 30 Jun 2018 10:37:49 +0200 Subject: [PATCH] cmake: check if criterion is present --- CMakeLists.txt | 9 ++++-- src/CMakeLists.txt | 2 +- tests/unit/CMakeLists.txt | 59 ++++++++++++++++++++++----------------- 3 files changed, 41 insertions(+), 29 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5b877164a..d924b0a68 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,11 +24,12 @@ cmake_minimum_required(VERSION 3.3) project(VILLASnode C CXX) +# Several CMake settings/defaults set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 11) - +set(CMAKE_THREAD_PREFER_PTHREAD ON) +set(CMAKE_SKIP_INSTALL_RPATH ON) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig:/usr/local/share/pkgconfig") if(APPLE) set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/opt/local/lib/pkgconfig") @@ -85,12 +86,16 @@ check_include_file("sys/mman.h" HAS_MMAN) # Check packages find_package(PkgConfig REQUIRED) +find_package(Threads REQUIRED) find_package(Libwebsockets REQUIRED) find_package(OpenSSL REQUIRED) find_package(CURL REQUIRED) find_package(ProtobufC) find_package(Opal) +set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig:/usr/local/share/pkgconfig") + +pkg_check_modules(CRITERION IMPORTED_TARGET criterion) pkg_check_modules(JANSSON IMPORTED_TARGET REQUIRED jansson) pkg_check_modules(LIBNL3_ROUTE IMPORTED_TARGET libnl-route-3.0) pkg_check_modules(LIBIEC61850 IMPORTED_TARGET libiec61850>=1.2.0) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6f9ad7bc3..3c0fe85dc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -30,12 +30,12 @@ add_executable(villas-test-shmem villas-test-shmem.c) set(SRCS ) if(WITH_IO) - target_link_libraries(villas-pipe PUBLIC pthread) add_executable(villas-test-cmp villas-test-cmp.c) add_executable(villas-convert villas-convert.c) add_executable(villas-pipe villas-pipe.c) add_executable(villas-signal villas-signal.c) + target_link_libraries(villas-pipe PUBLIC Threads::Threads) endif() if(WITH_IO AND WITH_HOOKS) diff --git a/tests/unit/CMakeLists.txt b/tests/unit/CMakeLists.txt index dae9b6414..1bae9350b 100644 --- a/tests/unit/CMakeLists.txt +++ b/tests/unit/CMakeLists.txt @@ -20,31 +20,38 @@ # along with this program. If not, see . ################################################################################### -set(TEST_SRC - advio.c - bitset.c - config_json.c - hist.c - io.c - json.c - kernel.c - list.c - log.c - main.c - mapping.c - memory.c - pool.c - queue.c - queue_signalled.c - task.c - timing.c - utils.c -) +if(CRITERION_FOUND) -add_executable(unit-tests ${TEST_SRC}) -target_link_libraries(unit-tests PUBLIC villas criterion pthread) + set(TEST_SRC + advio.c + bitset.c + config_json.c + hist.c + io.c + json.c + kernel.c + list.c + log.c + main.c + mapping.c + memory.c + pool.c + queue.c + queue_signalled.c + task.c + timing.c + utils.c + ) -add_custom_target(run-unit-tests - COMMAND $ ${CRITERION_OPTS} - DEPENDS unit-tests -) + add_executable(unit-tests ${TEST_SRC}) + target_link_libraries(unit-tests PUBLIC + ${CRITERION_LIBRARIES} + villas + Threads::Threads + ) + + add_custom_target(run-unit-tests + COMMAND $ ${CRITERION_OPTS} + DEPENDS unit-tests + ) +endif()