]> granicus.if.org Git - llvm/commitdiff
Revert "[lit] Avoid copying llvm/utils/lit/tests/Inputs with lit site configs"
authorReid Kleckner <rnk@google.com>
Wed, 2 Aug 2017 17:16:25 +0000 (17:16 +0000)
committerReid Kleckner <rnk@google.com>
Wed, 2 Aug 2017 17:16:25 +0000 (17:16 +0000)
This reverts r309602, check-lit still leaves Output directories in the
source directory.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@309833 91177308-0d34-0410-b5e6-96231b3b80d8

CMakeLists.txt
utils/lit/CMakeLists.txt [new file with mode: 0644]
utils/lit/tests/CMakeLists.txt [deleted file]
utils/lit/tests/Inputs/lit.site.cfg.in [deleted file]
utils/lit/tests/lit.site.cfg.in

index 647dbc007a2aecb7b1426ca878096b719861ce81..c2ce41761b48c75002f1963efd6f32f2b6d39fec 100644 (file)
@@ -897,7 +897,7 @@ if( LLVM_INCLUDE_TESTS )
       NO_INSTALL
       ALWAYS_CLEAN)
   endif()
-  add_subdirectory(utils/lit/tests)
+  add_subdirectory(utils/lit)
   add_subdirectory(test)
   add_subdirectory(unittests)
   if( LLVM_INCLUDE_UTILS )
diff --git a/utils/lit/CMakeLists.txt b/utils/lit/CMakeLists.txt
new file mode 100644 (file)
index 0000000..d1b91a0
--- /dev/null
@@ -0,0 +1,27 @@
+# The configured file is not placed in the correct location
+# until the tests are run as we need to copy it into
+# a copy of the tests folder
+configure_file("tests/lit.site.cfg.in" "lit.site.cfg" @ONLY)
+
+# Lit's test suite creates output files next to the sources which makes the
+# source tree dirty. This is undesirable because we do out of source builds.
+# To work around this the tests and the configuration file are copied into the
+# build directory just before running them. The tests are not copied over at
+# configure time (i.e. `file(COPY ...)`) because this could lead to stale
+# tests being run.
+add_custom_target(prepare-check-lit
+  COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_CURRENT_BINARY_DIR}/tests"
+  COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/tests" "${CMAKE_CURRENT_BINARY_DIR}/tests"
+  COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg" "${CMAKE_CURRENT_BINARY_DIR}/tests"
+  COMMENT "Preparing lit tests"
+)
+
+# Add rules for lit's own test suite
+add_lit_testsuite(check-lit "Running lit's tests"
+  ${CMAKE_CURRENT_BINARY_DIR}
+  DEPENDS "FileCheck" "not" "prepare-check-lit"
+)
+
+# For IDEs
+set_target_properties(check-lit PROPERTIES FOLDER "Tests")
+set_target_properties(prepare-check-lit PROPERTIES FOLDER "Tests")
diff --git a/utils/lit/tests/CMakeLists.txt b/utils/lit/tests/CMakeLists.txt
deleted file mode 100644 (file)
index f63fd90..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-# The configured file is not placed in the correct location
-# until the tests are run as we need to copy it into
-# a copy of the tests folder
-configure_file("lit.site.cfg.in" "lit.site.cfg" @ONLY)
-
-# For every lit.cfg in the Inputs tree, create a lit.site.cfg that points at
-# the tests back in the source directory. Running the tests this way keeps the
-# temporary output files in the build directory.
-file(GLOB inputs_suites "Inputs/*/lit.cfg")
-foreach(lit_cfg ${inputs_suites})
-  get_filename_component(LIT_TEST_SRC_DIR "${lit_cfg}" DIRECTORY)
-  file(RELATIVE_PATH LIT_TEST_BIN_DIR "${CMAKE_CURRENT_SOURCE_DIR}" "${LIT_TEST_SRC_DIR}")
-  set(LIT_TEST_BIN_DIR "${CMAKE_CURRENT_BINARY_DIR}/${LIT_TEST_BIN_DIR}")
-  configure_file("Inputs/lit.site.cfg.in" "${LIT_TEST_BIN_DIR}/lit.site.cfg" @ONLY)
-endforeach()
-
-# Add rules for lit's own test suite
-add_lit_testsuite(check-lit "Running lit's tests"
-  ${CMAKE_CURRENT_BINARY_DIR}
-  DEPENDS "FileCheck" "not"
-)
-
-# For IDEs
-set_target_properties(check-lit PROPERTIES FOLDER "Tests")
diff --git a/utils/lit/tests/Inputs/lit.site.cfg.in b/utils/lit/tests/Inputs/lit.site.cfg.in
deleted file mode 100644 (file)
index f6cd31c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-lit_config.load_config(config, "@LIT_TEST_SRC_DIR@/lit.cfg")
-config.test_source_root = "@LIT_TEST_SRC_DIR@"
-config.test_exec_root = "@LIT_TEST_BIN_DIR@"
index 745c528759ebd74957e7e2f649f4f5bd339c6292..bdc1f58575eaec4fc5cc4a46d94c4b62d911dde5 100644 (file)
@@ -5,6 +5,4 @@ config.llvm_obj_root = "@LLVM_BINARY_DIR@"
 config.llvm_tools_dir = "@LLVM_TOOLS_BINARY_DIR@"
 
 # Let the main config do the real work.
-lit_config.load_config(config, "@LLVM_SOURCE_DIR@/utils/lit/tests/lit.cfg")
-config.test_source_root = "@CMAKE_CURRENT_SOURCE_DIR@"
-config.test_exec_root = "@CMAKE_CURRENT_BINARY_DIR@"
+lit_config.load_config(config, "@LLVM_BINARY_DIR@/utils/lit/tests/lit.cfg")