11cmake_minimum_required (VERSION 3.15)
2- project (thermal_simd_dispatcher C)
2+ project (thermal_simd_dispatcher VERSION 0.1.0 LANGUAGES C)
33set (CMAKE_C_STANDARD 11)
44
55set (THERMAL_SIMD_DISPATCHER_CPU_FLAGS "-msse4.1" CACHE STRING "CPU-specific compiler flags for thermal_simd" )
66
7- add_library (thermal_simd_core STATIC
7+ include (CTest)
8+
9+ file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /include /thermal/simd)
10+ configure_file (
11+ ${CMAKE_CURRENT_SOURCE_DIR} /include /thermal/simd/version .h.in
12+ ${CMAKE_CURRENT_BINARY_DIR} /include /thermal/simd/version .h
13+ @ONLY
14+ )
15+
16+ set (THERMAL_SIMD_CORE_SOURCES
817 src/config_parser.c
918 src/statistics.c
1019 src/thermal_config.c
@@ -13,28 +22,66 @@ add_library(thermal_simd_core STATIC
1322 src/thermal_perf.c
1423 src/thermal_signals.c
1524)
16- target_include_directories (thermal_simd_core PUBLIC src)
25+
26+ add_library (thermal_simd_core STATIC ${THERMAL_SIMD_CORE_SOURCES} )
27+ target_include_directories (thermal_simd_core
28+ PUBLIC
29+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
30+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} /include >
31+ $<INSTALL_INTERFACE:include >
32+ PRIVATE
33+ ${CMAKE_CURRENT_SOURCE_DIR} /src
34+ )
1735
1836add_executable (thermal_simd src/thermal_simd.c)
1937target_compile_options (thermal_simd PRIVATE -O2 -pthread -fPIC -mno-avx ${THERMAL_SIMD_DISPATCHER_CPU_FLAGS} )
2038target_link_libraries (thermal_simd PRIVATE thermal_simd_core pthread)
2139
22- enable_testing ()
23-
24- add_executable (test_config_parser tests/test_config_parser.c)
25- target_link_libraries (test_config_parser PRIVATE thermal_simd_core)
26- target_compile_options (test_config_parser PRIVATE -Wall -Wextra)
27- add_test (NAME config_parser COMMAND test_config_parser)
28-
29- add_executable (test_statistics tests/test_statistics.c)
30- target_link_libraries (test_statistics PRIVATE thermal_simd_core)
31- target_compile_options (test_statistics PRIVATE -Wall -Wextra)
32- add_test (NAME statistics COMMAND test_statistics)
33-
34- add_executable (test_thermal_simd
35- tests/test_thermal_simd.c
36- src/thermal_simd.c)
37- target_compile_definitions (test_thermal_simd PRIVATE TSD_ENABLE_TESTS)
38- target_link_libraries (test_thermal_simd PRIVATE thermal_simd_core pthread)
39- target_compile_options (test_thermal_simd PRIVATE -Wall -Wextra -O1 -pthread -fPIC)
40- add_test (NAME thermal_simd COMMAND test_thermal_simd)
40+ if (BUILD_TESTING)
41+ add_library (thermal_simd_core_tests STATIC ${THERMAL_SIMD_CORE_SOURCES} )
42+ target_include_directories (thermal_simd_core_tests
43+ PUBLIC
44+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
45+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} /include >
46+ PRIVATE
47+ ${CMAKE_CURRENT_SOURCE_DIR} /src
48+ )
49+ target_compile_definitions (thermal_simd_core_tests PRIVATE TSD_ENABLE_TESTS)
50+
51+ add_executable (test_config_parser tests/test_config_parser.c)
52+ target_link_libraries (test_config_parser PRIVATE thermal_simd_core_tests)
53+ target_compile_options (test_config_parser PRIVATE -Wall -Wextra)
54+ add_test (NAME config_parser COMMAND test_config_parser)
55+
56+ add_executable (test_statistics tests/test_statistics.c)
57+ target_link_libraries (test_statistics PRIVATE thermal_simd_core_tests)
58+ target_compile_options (test_statistics PRIVATE -Wall -Wextra)
59+ add_test (NAME statistics COMMAND test_statistics)
60+
61+ add_executable (test_thermal_simd
62+ tests/test_thermal_simd.c
63+ src/thermal_simd.c)
64+ target_compile_definitions (test_thermal_simd PRIVATE TSD_ENABLE_TESTS)
65+ target_link_libraries (test_thermal_simd PRIVATE thermal_simd_core_tests pthread)
66+ target_compile_options (test_thermal_simd PRIVATE -Wall -Wextra -O1 -pthread -fPIC)
67+ target_include_directories (test_thermal_simd PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} /src)
68+ add_test (NAME thermal_simd COMMAND test_thermal_simd)
69+ endif ()
70+
71+ install (TARGETS thermal_simd_core
72+ EXPORT thermal_simd_dispatcherTargets
73+ ARCHIVE DESTINATION lib
74+ LIBRARY DESTINATION lib
75+ RUNTIME DESTINATION bin)
76+
77+ install (DIRECTORY include /
78+ DESTINATION include
79+ FILES_MATCHING PATTERN "*.h"
80+ PATTERN "*.in" EXCLUDE )
81+
82+ install (FILES ${CMAKE_CURRENT_BINARY_DIR} /include /thermal/simd/version .h
83+ DESTINATION include /thermal/simd)
84+
85+ install (EXPORT thermal_simd_dispatcherTargets
86+ NAMESPACE thermal::
87+ DESTINATION lib/cmake/thermal_simd_dispatcher)
0 commit comments