aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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