forked from brettviren/appfwk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
139 lines (91 loc) · 5.25 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
cmake_minimum_required(VERSION 3.12)
project(appfwk)
set(CMAKE_CXX_STANDARD 17)
find_package(TRACE 3.15.0 REQUIRED)
find_package(nlohmann_json 3.2.0)
if(NOT ${nlohmann_json_FOUND})
message("nlohmann_json NOT FOUND! Downloading single-header from GitHub!")
file(DOWNLOAD https://github.com/nlohmann/json/raw/develop/single_include/nlohmann/json.hpp nlohmann/json.hpp)
include_directories(${CMAKE_BINARY_DIR})
endif()
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_NO_BOOST_CMAKE ON)
set(BUILD_SHARED_LIBS ON)
find_package(Boost 1.70.0 COMPONENTS unit_test_framework program_options REQUIRED)
if(EXISTS $ENV{CETLIB_LIB})
# UPS
include_directories($ENV{CETLIB_INC})
include_directories($ENV{CETLIB_EXCEPT_INC})
find_library(CETLIB NAMES libcetlib.so)
find_library(CETLIB_EXCEPT NAMES libcetlib_except.so)
else()
# Spack
find_package(cetlib REQUIRED)
set(CETLIB cetlib)
set(CETLIB_EXCEPT cetlib_except)
endif()
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(${CMAKE_SOURCE_DIR}/ers)
function( point_build_to output_dir )
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${output_dir} PARENT_SCOPE)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${output_dir} PARENT_SCOPE)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${output_dir} PARENT_SCOPE)
endfunction()
point_build_to( apps )
include_directories(${CMAKE_SOURCE_DIR}/appfwk/include)
add_executable(daq_application apps/daq_application.cxx)
target_link_libraries(daq_application appfwk pthread ers ${CETLIB} ${CETLIB_EXCEPT} ${Boost_PROGRAM_OPTIONS_LIBRARY})
point_build_to( doc )
# (No action taken, doc/CMakeLists.txt was empty)
point_build_to( include )
install(DIRECTORY include DESTINATION include)
set(SPACK_ROOT $ENV{SPACK_ROOT})
set(PATH_DIRS ${CMAKE_CURRENT_BINARY_DIR}/scripts:${CMAKE_CURRENT_BINARY_DIR}/apps:${CMAKE_CURRENT_BINARY_DIR}/test)
set(LIB_DIRS ${CMAKE_CURRENT_BINARY_DIR}/src:${CMAKE_CURRENT_BINARY_DIR}/test)
configure_file(scripts/setupForRunning.sh.in scripts/setupForRunning.sh @ONLY)
point_build_to( src )
file(GLOB source_files src/*.cpp)
list(FILTER source_files EXCLUDE REGEX "QueryResponseCommandFacility.cpp")
add_library(appfwk SHARED ${source_files})
target_link_libraries(appfwk ${CETLIB} ${CETLIB_EXCEPT})
add_library(appfwk_QueryResponseCommandFacility_duneCommandFacility src/QueryResponseCommandFacility.cpp)
macro(MakeDataTypeLibraries)
set(oneValueArgs CPPTYPE PREFIX)
cmake_parse_arguments(MAKE_DATATYPE "" "${oneValueArgs}" "" ${ARGN})
configure_file(src/FanOutDAQModule.cpp.in src/${MAKE_DATATYPE_PREFIX}FanOutDAQModule.cpp)
add_library(${MAKE_DATATYPE_PREFIX}FanOutDAQModule_duneDAQModule SHARED src/${MAKE_DATATYPE_PREFIX}FanOutDAQModule.cpp)
endmacro()
MakeDataTypeLibraries(CPPTYPE std::vector<int> PREFIX VectorInt)
MakeDataTypeLibraries(CPPTYPE std::string PREFIX String)
MakeDataTypeLibraries(CPPTYPE dunedaq::appfwk::NonCopyableType PREFIX NonCopyableType)
point_build_to( test )
set(Boost_NO_BOOST_CMAKE ON)
find_package(Boost COMPONENTS program_options REQUIRED)
add_executable(queue_IO_check test/queue_IO_check.cxx)
target_link_libraries(queue_IO_check pthread ${Boost_PROGRAM_OPTIONS_LIBRARY} )
add_library(appfwk_DebugLoggingDAQModule_duneDAQModule test/DebugLoggingDAQModule.cpp)
add_library(appfwk_FakeDataConsumerDAQModule_duneDAQModule test/FakeDataConsumerDAQModule.cpp)
add_library(appfwk_FakeDataProducerDAQModule_duneDAQModule test/FakeDataProducerDAQModule.cpp)
add_executable(echo_test_app test/echo_test_app.cxx)
target_link_libraries(echo_test_app appfwk appfwk_DebugLoggingDAQModule_duneDAQModule pthread ers ${CETLIB} ${CETLIB_EXCEPT} ${Boost_PROGRAM_OPTIONS_LIBRARY})
add_executable(producer_consumer_test_app test/producer_consumer_test_app.cxx)
target_link_libraries(producer_consumer_test_app appfwk appfwk_FakeDataProducerDAQModule_duneDAQModule ers appfwk_FakeDataConsumerDAQModule_duneDAQModule pthread ${CETLIB} ${CETLIB_EXCEPT} ${Boost_PROGRAM_OPTIONS_LIBRARY})
add_executable(daq_sink_source test/daq_sink_source.cxx)
target_link_libraries(daq_sink_source appfwk pthread ers)
file(COPY test/producer_consumer_dynamic_test.json DESTINATION test)
point_build_to( unittest )
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(StdDeQueue_test unittest/StdDeQueue_test.cxx)
add_test(NAME StdDeQueue_test COMMAND StdDeQueue_test)
add_executable(FanOutDAQModule_test unittest/FanOutDAQModule_test.cxx)
target_link_libraries(FanOutDAQModule_test appfwk ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} pthread ers)
target_compile_definitions(FanOutDAQModule_test PRIVATE "BOOST_TEST_DYN_LINK=1")
target_include_directories(FanOutDAQModule_test PRIVATE ${Boost_INCLUDE_DIRS})
add_test(NAME FanOutDAQModule_test COMMAND FanOutDAQModule_test ers)
add_executable(DAQModuleThreadHelper_test unittest/DAQModuleThreadHelper_test.cxx)
target_link_libraries(DAQModuleThreadHelper_test ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} pthread)
target_compile_definitions(DAQModuleThreadHelper_test PRIVATE "BOOST_TEST_DYN_LINK=1")
target_include_directories(DAQModuleThreadHelper_test PRIVATE ${Boost_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/appfwk-base/include)
add_test(NAME DAQModuleThreadHelper_test COMMAND DAQModuleThreadHelper_test)
endif()