forked from LLNL/Caliper
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
166 lines (147 loc) · 4.39 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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
include_directories("../../src/caliper")
include_directories("../../src/interface/c_fortran")
# build the C/C++ CI test apps
set(CALIPER_CI_CXX_TEST_APPS
ci_test_aggregate
ci_test_basic
ci_test_binding
ci_test_io
ci_test_macros
ci_test_nesting
ci_test_thread)
set(CALIPER_CI_C_TEST_APPS
ci_test_alloc
ci_test_alloc_hooks
ci_test_c_ann
ci_test_c_snapshot
ci_test_channel_api)
set(CALIPER_CI_MPI_TEST_APPS
ci_test_cali_before_mpi
ci_test_collective_output_channel
ci_test_mpi_before_cali
ci_test_mpi_channel_manager)
set(CALIPER_CI_Fortran_TEST_APPS
ci_test_f_ann)
set(CALIPER_CI_Python_TEST_APPS
ci_test_py_ann.py
)
foreach(app ${CALIPER_CI_CXX_TEST_APPS})
add_executable(${app} ${app}.cpp)
target_link_libraries(${app} caliper)
endforeach()
target_link_libraries(ci_test_thread Threads::Threads)
target_link_libraries(ci_test_nesting Threads::Threads)
foreach(app ${CALIPER_CI_C_TEST_APPS})
add_executable(${app} ${app}.c)
set_target_properties(${app} PROPERTIES LINKER_LANGUAGE CXX)
target_compile_features(${app} PRIVATE c_std_99)
target_link_libraries(${app} caliper)
endforeach()
# add symlinks to the python test driver scripts
set(PYTHON_SCRIPTS
test_allocservice.py
test_aggregate.py
test_basictrace.py
test_c_api.py
test_caliquery.py
test_file_io.py
test_json.py
test_log.py
test_loopreport.py
test_monitor.py
test_report.py
test_runtimereport.py
test_spot.py
test_templateservices.py
test_textlog.py
test_thread.py
test_validator.py
calipertest.py)
if (CALIPER_HAVE_CPUINFO)
list(APPEND PYTHON_SCRIPTS test_cpuinfo.py)
endif()
if (CALIPER_HAVE_MEMUSAGE)
list(APPEND PYTHON_SCRIPTS test_memusageservice.py)
endif()
if (CALIPER_HAVE_LIBUNWIND)
list(APPEND PYTHON_SCRIPTS test_callpath.py)
endif()
if (CALIPER_HAVE_GOTCHA)
list(APPEND PYTHON_SCRIPTS
test_alloc_hooks.py
test_ioservice.py
test_pthread.py)
endif()
if (CALIPER_HAVE_PAPI)
list(APPEND PYTHON_SCRIPTS test_papi.py)
endif()
if (CALIPER_HAVE_LIBPFM)
list(APPEND PYTHON_SCRIPTS test_libpfm.py)
endif()
if (CALIPER_HAVE_SAMPLER)
list(APPEND PYTHON_SCRIPTS test_sampler.py)
if (CALIPER_HAVE_LIBDW)
list(APPEND PYTHON_SCRIPTS test_symbollookup.py)
if (CALIPER_HAVE_LIBUNWIND)
list(APPEND PYTHON_SCRIPTS test_samplereport.py)
endif()
endif()
endif()
if (CALIPER_HAVE_OMPT AND CMAKE_VERSION VERSION_GREATER_EQUAL 3.9)
find_package(OpenMP REQUIRED)
add_executable(ci_test_openmp ci_test_openmp.cpp)
target_link_libraries(ci_test_openmp caliper OpenMP::OpenMP_CXX)
list(APPEND PYTHON_SCRIPTS
test_ompt.py)
endif()
if (CALIPER_HAVE_MPI)
foreach(app ${CALIPER_CI_MPI_TEST_APPS})
add_executable(${app} ${app}.cpp)
set(calitest_mpi_include_dirs
${MPI_CXX_INCLUDE_PATH}
${CMAKE_CURRENT_SOURCE_DIR}/../../mpi/include)
target_include_directories(${app} PRIVATE ${calitest_mpi_include_dirs})
target_link_libraries(${app} caliper ${MPI_CXX_LIBRARIES})
endforeach()
if (RUN_MPI_TESTS)
list(APPEND PYTHON_SCRIPTS test_mpi.py)
if (CALIPER_HAVE_TAU)
list(APPEND PYTHON_SCRIPTS test_tau_service.py)
endif()
endif()
endif()
if (WITH_FORTRAN)
foreach(app ${CALIPER_CI_Fortran_TEST_APPS})
add_executable(${app} ${app}.f)
set_source_files_properties(${app}.f PROPERTIES Fortran_FORMAT FREE)
target_link_libraries(${app} caliper)
endforeach()
list(APPEND PYTHON_SCRIPTS test_fortran_api.py)
endif()
if (WITH_PYTHON_BINDINGS)
foreach(file ${CALIPER_CI_Python_TEST_APPS})
# add_custom_target(${file} ALL
# COMMAND ${CMAKE_COMMAND} -E create_symlink
# ${CMAKE_CURRENT_SOURCE_DIR}/${file}
# ${CMAKE_CURRENT_BINARY_DIR}/${file})
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/${file}
${CMAKE_CURRENT_BINARY_DIR}/${file}
@ONLY
)
endforeach()
list(APPEND PYTHON_SCRIPTS test_python_api.py)
endif()
set(DATA_FILES
example_node_info.json)
foreach(file ${PYTHON_SCRIPTS} ${DATA_FILES})
add_custom_target(${file} ALL
COMMAND ${CMAKE_COMMAND} -E create_symlink
${CMAKE_CURRENT_SOURCE_DIR}/${file}
${CMAKE_CURRENT_BINARY_DIR}/${file})
endforeach()
add_test(NAME CI_app_tests COMMAND ${CALI_PYTHON_EXECUTABLE} -B -m unittest discover -p "test_*.py")
# if (WITH_PYTHON_BINDINGS)
# message(STATUS "Adding ${PYPATH_TESTING} to PYTHONPATH for CI_app_tests")
# set_tests_properties(CI_app_tests PROPERTIES ENVIRONMENT "PYTHONPATH=${PYPATH_TESTING}")
# endif()