-
Notifications
You must be signed in to change notification settings - Fork 10.8k
/
CMakeLists.txt
191 lines (163 loc) · 7.08 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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
set(POLLY_TEST_DIRECTORIES
"AffineIterator"
"ScopInfo"
"ScheduleOptimizer"
"CodeGen"
"OpenMP"
"polybench"
"vect")
set(POLLY_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..")
set(POLLY_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/..")
set(LLVM_SHLIBEXT "${CMAKE_SHARED_MODULE_SUFFIX}")
add_custom_target(check-polly)
set_target_properties(check-polly PROPERTIES FOLDER "Polly")
if (NOT DEFINED LLVM_MAIN_SRC_DIR)
# We are building polly out of tree, adjust the settings.
# FIXME: FileCheck is not available in llvm install directory at the moment.
set(LLVM_LIT ${LLVM_INSTALL_ROOT}/bin/llvm-lit)
set(POLLY_TEST_DEPS LLVMPolly)
if (POLLY_GTEST_AVAIL)
list(APPEND POLLY_TEST_DEPS PollyUnitTests)
endif ()
set(LLVM_BINARY_DIR "${LLVM_INSTALL_ROOT}")
set(LLVM_TOOLS_DIR "${LLVM_INSTALL_ROOT}/bin")
set(LLVM_LIBS_DIR "${LLVM_INSTALL_ROOT}/lib")
set(POLLY_LIB_DIR "${POLLY_BINARY_DIR}/lib")
include(FindPythonInterp)
if(PYTHONINTERP_FOUND)
option(POLLY_TEST_DISABLE_BAR "Run Polly tests with --no-progress-bar" OFF)
set(POLLY_TEST_EXTRA_ARGS)
if (MSVC OR XCODE OR POLLY_TEST_DISABLE_BAR)
set(POLLY_TEST_EXTRA_ARGS "--no-progress-bar")
endif()
option(POLLY_TEST_USE_VG "Run Polly tests under Valgrind" OFF)
if(POLLY_TEST_USE_VG)
set(POLLY_TEST_EXTRA_ARGS ${POLLY_TEST_EXTRA_ARGS} "--vg")
endif ()
# Parameters required for lit.site.cfg.in
set(LLVM_SOURCE_DIR ${LLVM_SOURCE_ROOT})
if (CMAKE_CFG_INTDIR STREQUAL ".")
set(LLVM_BUILD_MODE ".")
else ()
set(LLVM_BUILD_MODE "%(build_mode)s")
endif ()
set(ENABLE_SHARED "1")
set(SHLIBDIR "${LLVM_BINARY_DIR}/bin")
set(LINK_POLLY_INTO_TOOLS "OFF")
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg)
foreach(testdir ${POLLY_TEST_DIRECTORIES})
add_custom_target(polly-test-${testdir}
COMMAND ${LLVM_LIT}
--param polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
--param build_config=${CMAKE_CFG_INTDIR}
-sv ${POLLY_TEST_EXTRA_ARGS}
${CMAKE_CURRENT_BINARY_DIR}/${testdir}
DEPENDS ${POLLY_TEST_DEPS}
COMMENT "Running Polly regression tests in ${testdir}")
set_target_properties(polly-test-${testdir} PROPERTIES FOLDER "Polly")
endforeach()
add_custom_target(check-polly-tests
COMMAND ${LLVM_LIT}
--param polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
--param polly_unit_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
--param build_config=${CMAKE_CFG_INTDIR}
-sv ${POLLY_TEST_EXTRA_ARGS}
${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${POLLY_TEST_DEPS}
COMMENT "Running Polly regression/unit tests")
set_target_properties(check-polly-tests PROPERTIES FOLDER "Polly")
add_dependencies(check-polly check-polly-tests)
if (POLLY_GTEST_AVAIL)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg)
add_custom_target(check-polly-unittests
COMMAND ${LLVM_LIT}
--param polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
--param build_config=${CMAKE_CFG_INTDIR}
-sv ${POLLY_TEST_EXTRA_ARGS}
${CMAKE_CURRENT_BINARY_DIR}/Unit
DEPENDS PollyUnitTests
COMMENT "Running Polly unit tests")
set_target_properties(check-polly-unittests PROPERTIES FOLDER "Polly")
endif ()
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/UnitIsl/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/UnitIsl/lit.site.cfg)
add_custom_target(check-polly-isl
command ${LLVM_LIT}
--param polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/UnitIsl/lit.site.cfg
--param build_config=${CMAKE_CFG_INTDIR}
-sv ${POLLY_TEST_EXTRA_ARGS}
${CMAKE_CURRENT_BINARY_DIR}
DEPENDS polly-isl-test
COMMENT "Running isl unit tests")
endif()
else (NOT DEFINED LLVM_MAIN_SRC_DIR)
set(LLVM_LIT ${LLVM_TOOLS_BINARY_DIR}/llvm-lit)
set(POLLY_TEST_DEPS llvm-config opt LLVMPolly FileCheck not)
if (POLLY_GTEST_AVAIL)
list(APPEND POLLY_TEST_DEPS PollyUnitTests)
endif ()
set(LLVM_BINARY_DIR "${LLVM_BINARY_DIR}")
set(LLVM_TOOLS_DIR "${LLVM_TOOLS_BINARY_DIR}")
set(LLVM_LIBS_DIR "${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}")
set(POLLY_LIB_DIR "${LLVM_LIBS_DIR}")
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg)
# Run regression and unit tests
add_lit_testsuite(check-polly-tests "Running polly regression tests"
${CMAKE_CURRENT_BINARY_DIR}
PARAMS polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
polly_unit_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
DEPENDS ${POLLY_TEST_DEPS}
)
set_target_properties(check-polly-tests PROPERTIES FOLDER "Polly")
add_dependencies(check-polly check-polly-tests)
if (POLLY_GTEST_AVAIL)
configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
)
# Run only unit tests
add_lit_testsuite(check-polly-unittests "Running polly unit tests only"
${CMAKE_CURRENT_BINARY_DIR}/Unit
PARAMS polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
DEPENDS PollyUnitTests
)
set_target_properties(check-polly-unittests PROPERTIES FOLDER "Polly")
endif ()
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/UnitIsl/lit.site.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/UnitIsl/lit.site.cfg)
add_lit_testsuite(check-polly-isl "Running isl unit tests only"
${CMAKE_CURRENT_BINARY_DIR}/UnitIsl
PARAMS polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/UnitIsl/lit.site.cfg
DEPENDS polly-isl-test
)
set_target_properties(check-polly-isl PROPERTIES FOLDER "Polly")
# Run polly-check-format as part of polly-check only if we are compiling with
# clang, so clang-format is available.
# if (TARGET clang-format) would be preferable, but this target is only added
# after Polly, i.e. there is no such target yet at this point. The CMake cache
# entry LLVM_TOOL_CLANG_BUILD will only be defined after clang has been
# configured at least once, i.e. format will be checked only after a rerun of
# CMake's configure.
if (LLVM_TOOL_CLANG_BUILD)
add_dependencies(check-polly polly-check-format)
endif ()
endif (NOT DEFINED LLVM_MAIN_SRC_DIR)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/update_check.py
${CMAKE_CURRENT_BINARY_DIR}/update_check.py)
file(COPY ${CMAKE_CURRENT_BINARY_DIR}/update_check.py
DESTINATION ${LLVM_TOOLS_DIR}
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ
GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
# Add a legacy target spelling: polly-test
add_custom_target(polly-test)
set_target_properties(polly-test PROPERTIES FOLDER "Polly")
add_dependencies(polly-test check-polly)