aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-06-05 16:26:18 +0000
committerDouglas Gregor <dgregor@apple.com>2009-06-05 16:26:18 +0000
commitf5dba388e7d4a725b7ac9a7000bfdf0c2da9a36a (patch)
tree29f284c3cbb3fa175fb704c368b99613fe2fb699
parenteb357b67b46f4aa48719c03749bc2c8668124a78 (diff)
Clean up Clang regression testing in CMake, so that we get more
logical output when running all of the Clang regression tests at once. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72947 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--CMake/RunTests/CMakeLists.txt17
-rw-r--r--test/CMakeLists.txt44
2 files changed, 38 insertions, 23 deletions
diff --git a/CMake/RunTests/CMakeLists.txt b/CMake/RunTests/CMakeLists.txt
index 726603fe46..fe838ef2ad 100644
--- a/CMake/RunTests/CMakeLists.txt
+++ b/CMake/RunTests/CMakeLists.txt
@@ -6,7 +6,7 @@
# CLANG_TEST_RUNNER: The TestRunner.sh shell script, which is used to test
# Clang.
#
-# CLANG_TEST_GLOB_PATTERN: Set to a GLOB pattern to identify the kind of
+# CLANG_TEST_GLOB_PATTERNS: Set to a GLOB pattern to identify the kind of
# tests, e.g., *.cpp for C++ tests.
#
# LLVM_TOOLS_PATH: The directory where the Clang and LLVM tool
@@ -27,17 +27,24 @@ macro(compute_test_name var filename)
set(${var} "${test_lastpath}-${test_name}")
endmacro()
-# FIXME: Total hack!
+# FIXME: This is a hack to make sure that there is a proper "clean" target.
+# There must be a better way.
file(WRITE dummy.c "int dummy() { return 0; }")
add_library(dummy dummy.c)
+set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "dummy.c")
+# Set the path appropriately
set(PATH $ENV{PATH})
set(PATH "${LLVM_TOOLS_PATH}:${LLVM_SCRIPTS_PATH}:${PATH}")
-message(STATUS "Globbing for tests with ${CLANG_TEST_GLOB_PATTERN}")
-file(GLOB_RECURSE tests ${CLANG_TEST_GLOB_PATTERN})
+
+# Find the test files
+string(REPLACE ":" ";" CLANG_TEST_GLOB_PATTERNS ${CLANG_TEST_GLOB_PATTERNS})
+separate_arguments(CLANG_TEST_GLOB_PATTERNS)
+file(GLOB_RECURSE tests ${CLANG_TEST_GLOB_PATTERNS})
+
+# Add individual tests for each file we found.
foreach(test ${tests})
compute_test_name(testname ${test})
- message(STATUS "Adding test ${testname} with file ${test}")
add_test(${testname} ${CLANG_TEST_RUNNER} ${test})
set_tests_properties(${testname} PROPERTIES
ENVIRONMENT "PATH=${PATH}")
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index c64ca896a1..cdf45712c3 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -4,26 +4,33 @@ mark_as_advanced(CLANG_TEST_RUNNER)
get_target_property(LLVM_TOOLS_PATH clang RUNTIME_OUTPUT_DIRECTORY)
-add_custom_target(clang-test COMMENT "Running Clang regression tests")
+macro(add_clang_test_suite language target)
+ set(PATTERNS)
+ foreach (extension ${ARGN})
+ set(PATTERNS "${PATTERNS}:${CMAKE_CURRENT_SOURCE_DIR}/*.${extension}")
+ endforeach()
-macro(add_clang_test_suite language target extension)
-add_custom_target(${target}
- ${CMAKE_CTEST_COMMAND}
- --build-and-test
- ${LLVM_SOURCE_DIR}/tools/clang/CMake/RunTests
- ${CMAKE_CURRENT_BINARY_DIR}/${target}
- --build-generator ${CMAKE_GENERATOR}
- --build-makeprogram ${CMAKE_MAKE_PROGRAM}
- --build-project ClangTest
- --build-target test
- --build-options
- "-DCLANG_TEST_RUNNER=${CLANG_TEST_RUNNER}"
- "-DCLANG_TEST_GLOB_PATTERN=${CMAKE_CURRENT_SOURCE_DIR}/*.${extension}"
- "-DLLVM_TOOLS_PATH=${LLVM_TOOLS_PATH}"
- "-DLLVM_SCRIPTS_PATH=${LLVM_SOURCE_DIR}/test/Scripts"
- COMMENT "Running Clang ${language} regression tests")
+ if (${language} STREQUAL "ALL")
+ set(TEST_COMMENT "Running Clang regression tests")
+ else()
+ set(TEST_COMMENT "Running Clang ${language} regression tests")
+ endif ()
- add_dependencies(clang-test ${target})
+ add_custom_target(${target}
+ ${CMAKE_CTEST_COMMAND}
+ --build-and-test
+ ${LLVM_SOURCE_DIR}/tools/clang/CMake/RunTests
+ ${CMAKE_CURRENT_BINARY_DIR}/${target}
+ --build-generator ${CMAKE_GENERATOR}
+ --build-makeprogram ${CMAKE_MAKE_PROGRAM}
+ --build-project ClangTest
+ --build-target test
+ --build-options
+ "-DCLANG_TEST_RUNNER=${CLANG_TEST_RUNNER}"
+ "-DCLANG_TEST_GLOB_PATTERNS=${PATTERNS}"
+ "-DLLVM_TOOLS_PATH=${LLVM_TOOLS_PATH}"
+ "-DLLVM_SCRIPTS_PATH=${LLVM_SOURCE_DIR}/test/Scripts"
+ COMMENT ${TEST_COMMENT})
endmacro(add_clang_test_suite)
add_clang_test_suite(C clang-test-c c)
@@ -31,3 +38,4 @@ add_clang_test_suite(Objective-C clang-test-objc m)
add_clang_test_suite(C++ clang-test-cxx cpp)
add_clang_test_suite(Objective-C++ clang-test-objcxx mm)
add_clang_test_suite(Assembler clang-test-asm S)
+add_clang_test_suite(ALL clang-test c m cpp mm S) \ No newline at end of file