summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam McCall <sam.mccall@gmail.com>2019-05-02 08:00:39 +0000
committerSam McCall <sam.mccall@gmail.com>2019-05-02 08:00:39 +0000
commit751390fed3acfb505bcdac365797ec894dde862f (patch)
tree481a0bdb1886c38d7f9ea4a8eee4cb04840ce0b7
parent16d12822f7799c5bed71ace1e293141675743336 (diff)
[clangd] Restore conventional names for lit configs, and .in/.py split. Fix build_mode indirection.
git-svn-id: https://llvm.org/svn/llvm-project/clang-tools-extra/trunk@359763 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--clangd/test/CMakeLists.txt14
-rw-r--r--clangd/test/lit.cfg.in30
-rw-r--r--clangd/test/lit.cfg.py19
-rw-r--r--clangd/test/lit.site.cfg.py.in28
-rw-r--r--clangd/unittests/CMakeLists.txt4
-rw-r--r--clangd/unittests/lit.cfg.py (renamed from clangd/unittests/lit.cfg.in)10
-rw-r--r--clangd/unittests/lit.site.cfg.py.in11
7 files changed, 76 insertions, 40 deletions
diff --git a/clangd/test/CMakeLists.txt b/clangd/test/CMakeLists.txt
index 139300f1..bbb582f1 100644
--- a/clangd/test/CMakeLists.txt
+++ b/clangd/test/CMakeLists.txt
@@ -1,3 +1,13 @@
+# Set CLANG_TOOLS_DIR to buildtree/bin, or buildtree/%(build_mode)s/bin if the
+# location is dynamic. The latter must be interpolated by lit configs.
+# FIXME: this is duplicated in many places.
+if (CMAKE_CFG_INTDIR STREQUAL ".")
+ set(LLVM_BUILD_MODE ".")
+else ()
+ set(LLVM_BUILD_MODE "%(build_mode)s")
+endif ()
+string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR})
+
set(CLANGD_TEST_DEPS
clangd
ClangdTests
@@ -18,8 +28,8 @@ foreach(dep FileCheck count not)
endforeach()
configure_lit_site_cfg(
- ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.in
- ${CMAKE_CURRENT_BINARY_DIR}/lit.cfg)
+ ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
+ ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py)
add_lit_testsuite(check-clangd "Running the Clangd regression tests"
${CMAKE_CURRENT_BINARY_DIR}/../unittests;${CMAKE_CURRENT_BINARY_DIR}
diff --git a/clangd/test/lit.cfg.in b/clangd/test/lit.cfg.in
deleted file mode 100644
index 9340b876..00000000
--- a/clangd/test/lit.cfg.in
+++ /dev/null
@@ -1,30 +0,0 @@
-@LIT_SITE_CFG_IN_HEADER@
-
-import lit.llvm
-import lit.formats
-
-# Reuse clang configuration (PATH setup, etc).
-config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
-config.clang_tools_dir = "@CLANG_TOOLS_DIR@"
-config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
-config.clang_libs_dir = "@CLANG_LIBS_DIR@"
-config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
-config.target_triple = "@TARGET_TRIPLE@"
-config.host_triple = "@LLVM_HOST_TRIPLE@"
-lit.llvm.initialize(lit_config, config)
-lit.llvm.llvm_config.use_clang()
-
-config.name = 'Clangd'
-config.suffixes = ['.test']
-config.excludes = ['Inputs']
-config.test_format = lit.formats.ShTest(not lit.llvm.llvm_config.use_lit_shell)
-config.test_source_root = "@CMAKE_CURRENT_SOURCE_DIR@"
-config.test_exec_root = "@CMAKE_CURRENT_BINARY_DIR@"
-
-# Clangd-specific lit environment.
-config.substitutions.append(('%clangd-benchmark-dir',
- "@CMAKE_CURRENT_BINARY_DIR@/../benchmarks"))
-
-if @CLANGD_BUILD_XPC@:
- config.available_features.add('clangd-xpc-support')
-
diff --git a/clangd/test/lit.cfg.py b/clangd/test/lit.cfg.py
new file mode 100644
index 00000000..5030ca35
--- /dev/null
+++ b/clangd/test/lit.cfg.py
@@ -0,0 +1,19 @@
+import lit.llvm
+
+lit.llvm.initialize(lit_config, config)
+lit.llvm.llvm_config.use_clang()
+
+config.name = 'Clangd'
+config.suffixes = ['.test']
+config.excludes = ['Inputs']
+config.test_format = lit.formats.ShTest(not lit.llvm.llvm_config.use_lit_shell)
+config.test_source_root = config.clangd_source_dir + "/test"
+config.test_exec_root = config.clangd_binary_dir + "/test"
+
+# Clangd-specific lit environment.
+config.substitutions.append(('%clangd-benchmark-dir',
+ config.clangd_binary_dir + "/benchmarks"))
+
+if config.clangd_build_xpc:
+ config.available_features.add('clangd-xpc-support')
+
diff --git a/clangd/test/lit.site.cfg.py.in b/clangd/test/lit.site.cfg.py.in
new file mode 100644
index 00000000..0a8301f3
--- /dev/null
+++ b/clangd/test/lit.site.cfg.py.in
@@ -0,0 +1,28 @@
+@LIT_SITE_CFG_IN_HEADER@
+
+# Variables needed for common clang config.
+config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
+config.clang_tools_dir = "@CLANG_TOOLS_DIR@"
+config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
+config.clang_libs_dir = "@CLANG_LIBS_DIR@"
+config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
+config.target_triple = "@TARGET_TRIPLE@"
+config.host_triple = "@LLVM_HOST_TRIPLE@"
+
+# Support substitution of the tools and libs dirs with user parameters. This is
+# used when we can't determine the tool dir at configuration time.
+try:
+ config.clang_tools_dir = config.clang_tools_dir % lit_config.params
+ config.llvm_tools_dir = config.llvm_tools_dir % lit_config.params
+ config.llvm_libs_dir = config.llvm_libs_dir % lit_config.params
+except KeyError:
+ e = sys.exc_info()[1]
+ key, = e.args
+ lit_config.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key,key))
+
+config.clangd_source_dir = "@CMAKE_CURRENT_SOURCE_DIR@/.."
+config.clangd_binary_dir = "@CMAKE_CURRENT_BINARY_DIR@/.."
+config.clangd_build_xpc = @CLANGD_BUILD_XPC@
+
+# Delegate logic to lit.cfg.py.
+lit_config.load_config(config, "@CMAKE_CURRENT_SOURCE_DIR@/lit.cfg.py")
diff --git a/clangd/unittests/CMakeLists.txt b/clangd/unittests/CMakeLists.txt
index 0db99368..96b1d360 100644
--- a/clangd/unittests/CMakeLists.txt
+++ b/clangd/unittests/CMakeLists.txt
@@ -93,5 +93,5 @@ if (CLANGD_BUILD_XPC)
endif ()
configure_lit_site_cfg(
- ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.in
- ${CMAKE_CURRENT_BINARY_DIR}/lit.cfg)
+ ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
+ ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py)
diff --git a/clangd/unittests/lit.cfg.in b/clangd/unittests/lit.cfg.py
index 14f365e2..754835e6 100644
--- a/clangd/unittests/lit.cfg.in
+++ b/clangd/unittests/lit.cfg.py
@@ -1,14 +1,11 @@
-@LIT_SITE_CFG_IN_HEADER@
-# This is a shim to run the gtest unittests in ../unittests using lit.
-
import lit.formats
config.name = "Clangd Unit Tests"
config.test_format = lit.formats.GoogleTest('.', 'Tests')
-config.test_source_root = "@CMAKE_CURRENT_BINARY_DIR@"
-config.test_exec_root = "@CMAKE_CURRENT_BINARY_DIR@"
+config.test_source_root = config.clangd_binary_dir + "/unittests"
+config.test_exec_root = config.clangd_binary_dir + "/unittests"
# Point the dynamic loader at dynamic libraries in 'lib'.
-# XXX: it seems every project has a copy of this logic. Move it somewhere.
+# FIXME: it seems every project has a copy of this logic. Move it somewhere.
import platform
if platform.system() == 'Darwin':
shlibpath_var = 'DYLD_LIBRARY_PATH'
@@ -21,3 +18,4 @@ config.environment[shlibpath_var] = os.path.pathsep.join((
config.environment.get(shlibpath_var,'')))
+
diff --git a/clangd/unittests/lit.site.cfg.py.in b/clangd/unittests/lit.site.cfg.py.in
new file mode 100644
index 00000000..3fdf084a
--- /dev/null
+++ b/clangd/unittests/lit.site.cfg.py.in
@@ -0,0 +1,11 @@
+@LIT_SITE_CFG_IN_HEADER@
+# This is a shim to run the gtest unittests in ../unittests using lit.
+
+config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
+config.shlibdir = "@SHLIBDIR@"
+
+config.clangd_source_dir = "@CMAKE_CURRENT_SOURCE_DIR@/.."
+config.clangd_binary_dir = "@CMAKE_CURRENT_BINARY_DIR@/.."
+
+# Delegate logic to lit.cfg.py.
+lit_config.load_config(config, "@CMAKE_CURRENT_SOURCE_DIR@/lit.cfg.py")