diff options
-rw-r--r-- | CMake/RunTests/CMakeLists.txt | 17 | ||||
-rw-r--r-- | test/CMakeLists.txt | 44 |
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 |