[ScopDetection] Require LoadInst base pointers to be hoisted.
[polly-mirror.git] / test / CMakeLists.txt
blobf450676f3543273a32a831ad587cce20433cfc17
1 set(POLLY_TEST_DIRECTORIES
2   "AffineIterator"
3   "ScopInfo"
4   "ScheduleOptimizer"
5   "CodeGen"
6   "OpenMP"
7   "polybench"
8   "vect")
11 set(POLLY_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..")
12 set(POLLY_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/..")
13 set(LLVM_SHLIBEXT "${CMAKE_SHARED_MODULE_SUFFIX}")
15 add_custom_target(check-polly)
16 set_target_properties(check-polly PROPERTIES FOLDER "Polly")
18 if (NOT DEFINED LLVM_MAIN_SRC_DIR)
20   # We are building polly out of tree, adjust the settings.
21   # FIXME: FileCheck is not available in llvm install directory at the moment.
22   set(LLVM_LIT ${LLVM_INSTALL_ROOT}/bin/llvm-lit)
23   if (POLLY_BUNDLED_ISL)
24     set(POLLY_TEST_DEPS LLVMPolly polly-isl-test)
25   endif (POLLY_BUNDLED_ISL)
26   if (POLLY_GTEST_AVAIL)
27     list(APPEND POLLY_TEST_DEPS PollyUnitTests)
28   endif ()
30   set(LLVM_BINARY_DIR "${LLVM_INSTALL_ROOT}")
31   set(LLVM_TOOLS_DIR "${LLVM_INSTALL_ROOT}/bin")
32   set(LLVM_LIBS_DIR "${LLVM_INSTALL_ROOT}/lib")
33   set(POLLY_LIB_DIR "${POLLY_BINARY_DIR}/lib")
35   include(FindPythonInterp)
36   if(PYTHONINTERP_FOUND)
37     option(POLLY_TEST_DISABLE_BAR "Run Polly tests with --no-progress-bar" OFF)
38     set(POLLY_TEST_EXTRA_ARGS)
39     if (MSVC OR XCODE OR POLLY_TEST_DISABLE_BAR)
40       set(POLLY_TEST_EXTRA_ARGS "--no-progress-bar")
41     endif()
43     option(POLLY_TEST_USE_VG "Run Polly tests under Valgrind" OFF)
44     if(POLLY_TEST_USE_VG)
45       set(POLLY_TEST_EXTRA_ARGS ${POLLY_TEST_EXTRA_ARGS} "--vg")
46     endif ()
48     # Parameters required for lit.site.cfg.in
49     set(LLVM_SOURCE_DIR ${LLVM_SOURCE_ROOT})
50     if (CMAKE_CFG_INTDIR STREQUAL ".")
51       set(LLVM_BUILD_MODE ".")
52     else ()
53       set(LLVM_BUILD_MODE "%(build_mode)s")
54     endif ()
55     set(ENABLE_SHARED "1")
56     set(SHLIBDIR "${LLVM_BINARY_DIR}/bin")
57     set(LINK_POLLY_INTO_TOOLS "OFF")
59     configure_file(
60       ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
61       ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg)
63     foreach(testdir ${POLLY_TEST_DIRECTORIES})
64       add_custom_target(polly-test-${testdir}
65         COMMAND ${LLVM_LIT}
66                     --param polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
67                     --param build_config=${CMAKE_CFG_INTDIR}
68                     -sv ${POLLY_TEST_EXTRA_ARGS}
69                     ${CMAKE_CURRENT_BINARY_DIR}/${testdir}
70                     DEPENDS ${POLLY_TEST_DEPS}
71                     COMMENT "Running Polly regression tests in ${testdir}")
72       set_target_properties(polly-test-${testdir} PROPERTIES FOLDER "Polly")
73     endforeach()
75     add_custom_target(check-polly-tests
76       COMMAND ${LLVM_LIT}
77                   --param polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
78                   --param polly_unit_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
79                   --param build_config=${CMAKE_CFG_INTDIR}
80                   -sv ${POLLY_TEST_EXTRA_ARGS}
81                   ${CMAKE_CURRENT_BINARY_DIR}
82                   DEPENDS ${POLLY_TEST_DEPS}
83                   COMMENT "Running Polly regression/unit tests")
84     set_target_properties(check-polly-tests PROPERTIES FOLDER "Polly")
85     add_dependencies(check-polly check-polly-tests)
87     if (POLLY_GTEST_AVAIL)
88       configure_file(
89         ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
90         ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg)
92       add_custom_target(check-polly-unittests
93         COMMAND ${LLVM_LIT}
94                   --param polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
95                   --param build_config=${CMAKE_CFG_INTDIR}
96                   -sv ${POLLY_TEST_EXTRA_ARGS}
97                   ${CMAKE_CURRENT_BINARY_DIR}/Unit
98                   DEPENDS PollyUnitTests
99                   COMMENT "Running Polly unit tests")
100       set_target_properties(check-polly-unittests PROPERTIES FOLDER "Polly")
101     endif ()
102     configure_file(
103       ${CMAKE_CURRENT_SOURCE_DIR}/UnitIsl/lit.site.cfg.in
104       ${CMAKE_CURRENT_BINARY_DIR}/UnitIsl/lit.site.cfg)
107     if (POLLY_BUNDLED_ISL)
108       add_custom_target(check-polly-isl
109         command ${LLVM_LIT}
110                   --param polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/UnitIsl/lit.site.cfg
111                   --param build_config=${CMAKE_CFG_INTDIR}
112                   -sv ${POLLY_TEST_EXTRA_ARGS}
113                   ${CMAKE_CURRENT_BINARY_DIR}
114                   DEPENDS polly-isl-test
115                   COMMENT "Running isl unit tests")
116       set_target_properties(check-polly-isl PROPERTIES FOLDER "Polly")
117     endif (POLLY_BUNDLED_ISL)
118   endif()
120 else (NOT DEFINED LLVM_MAIN_SRC_DIR)
122   set(LLVM_LIT ${LLVM_TOOLS_BINARY_DIR}/llvm-lit)
123   set(POLLY_TEST_DEPS llvm-config opt LLVMPolly FileCheck not)
124   if (POLLY_BUNDLED_ISL)
125     list(APPEND POLLY_TEST_DEPS polly-isl-test)
126   endif()
127   if (POLLY_GTEST_AVAIL)
128     list(APPEND POLLY_TEST_DEPS PollyUnitTests)
129   endif ()
131   set(LLVM_BINARY_DIR "${LLVM_BINARY_DIR}")
132   set(LLVM_TOOLS_DIR "${LLVM_TOOLS_BINARY_DIR}")
133   set(LLVM_LIBS_DIR "${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}")
134   set(POLLY_LIB_DIR "${LLVM_LIBS_DIR}")
136   configure_lit_site_cfg(
137     ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
138     ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg)
140   # Run regression and unit tests
141   add_lit_testsuite(check-polly-tests "Running polly regression tests"
142     ${CMAKE_CURRENT_BINARY_DIR}
143     PARAMS polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
144            polly_unit_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
145     DEPENDS ${POLLY_TEST_DEPS}
146     )
147   set_target_properties(check-polly-tests PROPERTIES FOLDER "Polly")
148   add_dependencies(check-polly check-polly-tests)
150   if (POLLY_GTEST_AVAIL)
151     configure_lit_site_cfg(
152       ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
153       ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
154     )
156     # Run only unit tests
157     add_lit_testsuite(check-polly-unittests "Running polly unit tests only"
158       ${CMAKE_CURRENT_BINARY_DIR}/Unit
159       PARAMS polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
160       DEPENDS PollyUnitTests
161       )
162     set_target_properties(check-polly-unittests PROPERTIES FOLDER "Polly")
163   endif ()
165   configure_file(
166     ${CMAKE_CURRENT_SOURCE_DIR}/UnitIsl/lit.site.cfg.in
167     ${CMAKE_CURRENT_BINARY_DIR}/UnitIsl/lit.site.cfg)
169   if (POLLY_BUNDLED_ISL)
170     add_lit_testsuite(check-polly-isl "Running isl unit tests only"
171       ${CMAKE_CURRENT_BINARY_DIR}/UnitIsl
172       PARAMS polly_site_config=${CMAKE_CURRENT_BINARY_DIR}/UnitIsl/lit.site.cfg
173       DEPENDS polly-isl-test
174       )
175     set_target_properties(check-polly-isl PROPERTIES FOLDER "Polly")
176   endif (POLLY_BUNDLED_ISL)
178   # Run polly-check-format as part of polly-check only if we are compiling with
179   # clang, so clang-format is available.
180   # if (TARGET clang-format) would be preferable, but this target is only added
181   # after Polly, i.e. there is no such target yet at this point. The CMake cache
182   # entry LLVM_TOOL_CLANG_BUILD will only be defined after clang has been
183   # configured at least once, i.e. format will be checked only after a rerun of
184   # CMake's configure.
185   if (LLVM_TOOL_CLANG_BUILD)
186     add_dependencies(check-polly polly-check-format)
187   endif ()
189 endif (NOT DEFINED LLVM_MAIN_SRC_DIR)
191 configure_file(
192   ${CMAKE_CURRENT_SOURCE_DIR}/update_check.py
193   ${CMAKE_CURRENT_BINARY_DIR}/update_check.py)
194 file(COPY ${CMAKE_CURRENT_BINARY_DIR}/update_check.py
195   DESTINATION ${LLVM_TOOLS_DIR}
196   FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ
197   GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
199 # Add a legacy target spelling: polly-test
200 add_custom_target(polly-test)
201 set_target_properties(polly-test PROPERTIES FOLDER "Polly")
202 add_dependencies(polly-test check-polly)