summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilip Pfaffe <philip.pfaffe@gmail.com>2017-07-11 11:37:35 +0000
committerPhilip Pfaffe <philip.pfaffe@gmail.com>2017-07-11 11:37:35 +0000
commit54df93d60eab2b7ac0e7494eea63c77cf11c3571 (patch)
tree1ad7441bc1a0ea994f961da905bf4b1cf846054e
parentd99c406e3d39b747566f6a5b4bd30f71cf46759a (diff)
downloadbcm5719-llvm-54df93d60eab2b7ac0e7494eea63c77cf11c3571.tar.gz
bcm5719-llvm-54df93d60eab2b7ac0e7494eea63c77cf11c3571.zip
[Polly][CMake] Skip unit-tests in lit if gtest is not available
Summary: There is a bug in the current lit configurations for the unittests. If gtest is not available, the site-config for the unit tests won't be generated. Because lit recurses through the test directory, the lit configuration for the unit tests will be discovered nevertheless, leading to a fatal error in lit. This patch semi-gracefully skips the unittests if gtest is not available. As a result, running lit now prints this: `warning: test suite 'Polly-Unit' contained no test`. If people think that this is too annoying, the alternative would be to pick apart the test directory, so that the lit testsuite discovery will always only find one configuration. In fact, both of these things could be combined. While it's certainly nice that running a single lit command runs all the tests, I suppose people use the `check-polly` make target over lit most of the time, so the difference might not be noticed. Reviewers: Meinersbur, grosser Reviewed By: grosser Subscribers: mgorny, bollu, pollydev, llvm-commits Tags: #polly Differential Revision: https://reviews.llvm.org/D34053 llvm-svn: 307651
-rw-r--r--polly/CMakeLists.txt1
-rw-r--r--polly/test/CMakeLists.txt10
-rw-r--r--polly/test/Unit/lit.cfg3
-rw-r--r--polly/test/Unit/lit.site.cfg.in1
4 files changed, 10 insertions, 5 deletions
diff --git a/polly/CMakeLists.txt b/polly/CMakeLists.txt
index 8fee92e7187..9ddc0f7ff81 100644
--- a/polly/CMakeLists.txt
+++ b/polly/CMakeLists.txt
@@ -24,6 +24,7 @@ if (NOT DEFINED LLVM_MAIN_SRC_DIR)
endif()
# Enable unit tests if available.
+ set(POLLY_GTEST_AVAIL 0)
set(UNITTEST_DIR ${LLVM_SOURCE_ROOT}/utils/unittest)
if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h)
# The build tree already exports the gtest target, which we can reuse
diff --git a/polly/test/CMakeLists.txt b/polly/test/CMakeLists.txt
index 4843d01e77d..85b36a92e42 100644
--- a/polly/test/CMakeLists.txt
+++ b/polly/test/CMakeLists.txt
@@ -62,12 +62,12 @@ add_lit_testsuite(check-polly-tests "Running polly regression tests"
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
- )
+configure_lit_site_cfg(
+ ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.in
+ ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg
+ )
+if (POLLY_GTEST_AVAIL)
# Run only unit tests
add_lit_testsuite(check-polly-unittests "Running polly unit tests only"
${CMAKE_CURRENT_BINARY_DIR}/Unit
diff --git a/polly/test/Unit/lit.cfg b/polly/test/Unit/lit.cfg
index ebdfc04fa0c..9ac67f3acf4 100644
--- a/polly/test/Unit/lit.cfg
+++ b/polly/test/Unit/lit.cfg
@@ -11,6 +11,9 @@ import lit.util
# name: The name of this test suite.
config.name = 'Polly-Unit'
+if not config.has_unittests:
+ raise SystemExit
+
# suffixes: A list of file extensions to treat as test files.
config.suffixes = []
diff --git a/polly/test/Unit/lit.site.cfg.in b/polly/test/Unit/lit.site.cfg.in
index 0a7f536bd81..930fef5884f 100644
--- a/polly/test/Unit/lit.site.cfg.in
+++ b/polly/test/Unit/lit.site.cfg.in
@@ -14,6 +14,7 @@ config.shlibdir = "@SHLIBDIR@"
config.target_triple = "@TARGET_TRIPLE@"
config.enable_gpgpu_codegen = "@GPU_CODEGEN@"
config.link_polly_into_tools = "@LINK_POLLY_INTO_TOOLS@"
+config.has_unittests = @POLLY_GTEST_AVAIL@
# Support substitution of the tools_dir, libs_dirs, and build_mode with user
# parameters. This is used when we can't determine the tool dir at
OpenPOWER on IntegriCloud