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()