summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/packages/Python/lldbsuite/test/configuration.py4
-rw-r--r--lldb/packages/Python/lldbsuite/test/dotest.py15
-rw-r--r--lldb/packages/Python/lldbsuite/test/dotest_args.py11
-rw-r--r--lldb/packages/Python/lldbsuite/test/lldbtest.py2
-rw-r--r--lldb/packages/Python/lldbsuite/test/make/Makefile.rules8
-rw-r--r--lldb/packages/Python/lldbsuite/test/plugins/builder_base.py14
-rw-r--r--lldb/test/API/lit.cfg14
-rw-r--r--lldb/test/API/lit.site.cfg.in5
-rw-r--r--lldb/test/CMakeLists.txt8
-rw-r--r--lldb/test/Shell/lit.cfg.py6
-rw-r--r--lldb/test/Shell/lit.site.cfg.py.in6
11 files changed, 65 insertions, 28 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/configuration.py b/lldb/packages/Python/lldbsuite/test/configuration.py
index 8bd17feacb1..494af7e2acd 100644
--- a/lldb/packages/Python/lldbsuite/test/configuration.py
+++ b/lldb/packages/Python/lldbsuite/test/configuration.py
@@ -107,7 +107,9 @@ lldb_platform_working_dir = None
test_build_dir = None
# The clang module cache directory used by lldb.
-module_cache_dir = None
+lldb_module_cache_dir = None
+# The clang module cache directory used by clang.
+clang_module_cache_dir = None
# The only directory to scan for tests. If multiple test directories are
# specified, and an exclusive test subdirectory is specified, the latter option
diff --git a/lldb/packages/Python/lldbsuite/test/dotest.py b/lldb/packages/Python/lldbsuite/test/dotest.py
index 652a02e5ed6..7b5414ee32d 100644
--- a/lldb/packages/Python/lldbsuite/test/dotest.py
+++ b/lldb/packages/Python/lldbsuite/test/dotest.py
@@ -426,11 +426,18 @@ def parseOptionsAndInitTestdirs():
configuration.lldb_platform_working_dir = args.lldb_platform_working_dir
if args.test_build_dir:
configuration.test_build_dir = args.test_build_dir
- if args.module_cache_dir:
- configuration.module_cache_dir = args.module_cache_dir
+ if args.lldb_module_cache_dir:
+ configuration.lldb_module_cache_dir = args.lldb_module_cache_dir
else:
- configuration.module_cache_dir = os.path.join(configuration.test_build_dir,
- 'module-cache-lldb')
+ configuration.lldb_module_cache_dir = os.path.join(
+ configuration.test_build_dir, 'module-cache-lldb')
+ if args.clang_module_cache_dir:
+ configuration.clang_module_cache_dir = args.clang_module_cache_dir
+ else:
+ configuration.clang_module_cache_dir = os.path.join(
+ configuration.test_build_dir, 'module-cache-clang')
+
+ os.environ['CLANG_MODULE_CACHE_DIR'] = configuration.clang_module_cache_dir
# Gather all the dirs passed on the command line.
if len(args.args) > 0:
diff --git a/lldb/packages/Python/lldbsuite/test/dotest_args.py b/lldb/packages/Python/lldbsuite/test/dotest_args.py
index 4922f27c7bf..fd77c7dc88f 100644
--- a/lldb/packages/Python/lldbsuite/test/dotest_args.py
+++ b/lldb/packages/Python/lldbsuite/test/dotest_args.py
@@ -150,10 +150,15 @@ def create_parser():
default='lldb-test-build.noindex',
help='The root build directory for the tests. It will be removed before running.')
group.add_argument(
- '--module-cache-dir',
- dest='module_cache_dir',
+ '--lldb-module-cache-dir',
+ dest='lldb_module_cache_dir',
metavar='The clang module cache directory used by LLDB',
- help='The clang module cache directory used by LLDB. This is not the one used by the makefiles. Defaults to <test build directory>/module-cache-lldb.')
+ help='The clang module cache directory used by LLDB. Defaults to <test build directory>/module-cache-lldb.')
+ group.add_argument(
+ '--clang-module-cache-dir',
+ dest='clang_module_cache_dir',
+ metavar='The clang module cache directory used by Clang',
+ help='The clang module cache directory used in the Make files by Clang while building tests. Defaults to <test build directory>/module-cache-clang.')
# Configuration options
group = parser.add_argument_group('Remote platform options')
diff --git a/lldb/packages/Python/lldbsuite/test/lldbtest.py b/lldb/packages/Python/lldbsuite/test/lldbtest.py
index 313823b47f6..34e6aa8f460 100644
--- a/lldb/packages/Python/lldbsuite/test/lldbtest.py
+++ b/lldb/packages/Python/lldbsuite/test/lldbtest.py
@@ -696,7 +696,7 @@ class Base(unittest2.TestCase):
"settings set plugin.process.gdb-remote.packet-timeout 60",
'settings set symbols.clang-modules-cache-path "{}"'.format(
- configuration.module_cache_dir),
+ configuration.lldb_module_cache_dir),
"settings set use-color false",
]
# Make sure that a sanitizer LLDB's environment doesn't get passed on.
diff --git a/lldb/packages/Python/lldbsuite/test/make/Makefile.rules b/lldb/packages/Python/lldbsuite/test/make/Makefile.rules
index 378e9ec99ba..c8b01845c95 100644
--- a/lldb/packages/Python/lldbsuite/test/make/Makefile.rules
+++ b/lldb/packages/Python/lldbsuite/test/make/Makefile.rules
@@ -313,14 +313,6 @@ ifeq "$(MAKE_DWO)" "YES"
CFLAGS += -gsplit-dwarf
endif
-# Use a shared module cache when building in the default test build directory.
-CLANG_MODULE_CACHE_DIR := $(shell echo "$(BUILDDIR)" | sed $(QUOTE)s/lldb-test-build.noindex.*/lldb-test-build.noindex\/module-cache-clang/$(QUOTE))
-
-ifeq "$(findstring lldb-test-build.noindex, $(BUILDDIR))" ""
-CLANG_MODULE_CACHE_DIR := $(BUILDDIR)/module-cache
-$(warning failed to set the shared clang module cache dir)
-endif
-
MODULE_BASE_FLAGS := -fmodules -gmodules -fmodules-cache-path=$(CLANG_MODULE_CACHE_DIR)
MANDATORY_MODULE_BUILD_CFLAGS := $(MODULE_BASE_FLAGS) -gmodules
# Build flags for building with C++ modules.
diff --git a/lldb/packages/Python/lldbsuite/test/plugins/builder_base.py b/lldb/packages/Python/lldbsuite/test/plugins/builder_base.py
index e5ef5276616..aede03da14c 100644
--- a/lldb/packages/Python/lldbsuite/test/plugins/builder_base.py
+++ b/lldb/packages/Python/lldbsuite/test/plugins/builder_base.py
@@ -122,6 +122,16 @@ def getSDKRootSpec():
return "SDKROOT={}".format(os.environ["SDKROOT"])
return "";
+def getModuleCacheSpec():
+ """
+ Helper function to return the key-value string to specify the clang
+ module cache used for the make system.
+ """
+ if "CLANG_MODULE_CACHE_DIR" in os.environ:
+ return "CLANG_MODULE_CACHE_DIR={}".format(
+ os.environ["CLANG_MODULE_CACHE_DIR"])
+ return "";
+
def getCmdLine(d):
"""
Helper function to return a properly formatted command line argument(s)
@@ -168,6 +178,7 @@ def buildDefault(
getCCSpec(compiler),
getDsymutilSpec(),
getSDKRootSpec(),
+ getModuleCacheSpec(),
getCmdLine(dictionary)])
runBuildCommands(commands, sender=sender)
@@ -191,6 +202,7 @@ def buildDwarf(
getCCSpec(compiler),
getDsymutilSpec(),
getSDKRootSpec(),
+ getModuleCacheSpec(),
getCmdLine(dictionary)])
runBuildCommands(commands, sender=sender)
@@ -214,6 +226,7 @@ def buildDwo(
getCCSpec(compiler),
getDsymutilSpec(),
getSDKRootSpec(),
+ getModuleCacheSpec(),
getCmdLine(dictionary)])
runBuildCommands(commands, sender=sender)
@@ -237,6 +250,7 @@ def buildGModules(
getCCSpec(compiler),
getDsymutilSpec(),
getSDKRootSpec(),
+ getModuleCacheSpec(),
getCmdLine(dictionary)])
lldbtest.system(commands, sender=sender)
diff --git a/lldb/test/API/lit.cfg b/lldb/test/API/lit.cfg
index bb9e3aaaaa4..26286ed5c50 100644
--- a/lldb/test/API/lit.cfg
+++ b/lldb/test/API/lit.cfg
@@ -5,6 +5,7 @@
import os
import platform
import shlex
+import shutil
import lit.formats
@@ -52,6 +53,14 @@ if config.shared_libs:
lit_config.warning("unable to inject shared library path on '{}'".format(
platform.system()))
+# Clean the module caches in the test build directory. This is necessary in an
+# incremental build whenever clang changes underneath, so doing it once per
+# lit.py invocation is close enough.
+for cachedir in [config.clang_module_cache, config.lldb_module_cache]:
+ if os.path.isdir(cachedir):
+ print("Deleting module cache at %s."%cachedir)
+ shutil.rmtree(cachedir)
+
# Build dotest command.
dotest_cmd = [config.dotest_path]
dotest_cmd.extend(config.dotest_args_str.split(';'))
@@ -70,7 +79,10 @@ if config.lldb_build_directory:
dotest_cmd += ['--build-dir', config.lldb_build_directory]
if config.lldb_module_cache:
- dotest_cmd += ['--module-cache-dir', config.lldb_module_cache]
+ dotest_cmd += ['--lldb-module-cache-dir', config.lldb_module_cache]
+
+if config.clang_module_cache:
+ dotest_cmd += ['--clang-module-cache-dir', config.clang_module_cache]
# Load LLDB test format.
sys.path.append(os.path.join(config.lldb_src_root, "test", "API"))
diff --git a/lldb/test/API/lit.site.cfg.in b/lldb/test/API/lit.site.cfg.in
index 883bc403300..2f2956c002b 100644
--- a/lldb/test/API/lit.site.cfg.in
+++ b/lldb/test/API/lit.site.cfg.in
@@ -17,13 +17,14 @@ config.shared_libs = @LLVM_ENABLE_SHARED_LIBS@
config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
config.target_triple = "@TARGET_TRIPLE@"
config.lldb_build_directory = "@LLDB_TEST_BUILD_DIRECTORY@"
-config.lldb_module_cache = "@LLDB_TEST_MODULE_CACHE_LLDB@"
-config.clang_module_cache = "@LLDB_TEST_MODULE_CACHE_CLANG@"
config.python_executable = "@PYTHON_EXECUTABLE@"
config.dotest_path = "@LLDB_SOURCE_DIR@/test/API/dotest.py"
config.dotest_args_str = "@LLDB_DOTEST_ARGS@"
config.lldb_disable_python = @LLDB_DISABLE_PYTHON@
config.dotest_lit_args_str = None
+# The API tests use their own module caches.
+config.lldb_module_cache = os.path.join("@LLDB_TEST_MODULE_CACHE_LLDB@", "lldb-api")
+config.clang_module_cache = os.path.join("@LLDB_TEST_MODULE_CACHE_CLANG@", "lldb-api")
# Additional dotest arguments can be passed to lit by providing a
# semicolon-separates list: --param dotest-args="arg;arg".
diff --git a/lldb/test/CMakeLists.txt b/lldb/test/CMakeLists.txt
index ae834124a2a..33e6b13184f 100644
--- a/lldb/test/CMakeLists.txt
+++ b/lldb/test/CMakeLists.txt
@@ -3,6 +3,12 @@
add_subdirectory(API)
+# Configure and create module cache directories.
+set(LLDB_TEST_MODULE_CACHE_LLDB "${LLDB_TEST_BUILD_DIRECTORY}/module-cache-lldb" CACHE PATH "The Clang module cache used by the Clang embedded in LLDB while running tests.")
+set(LLDB_TEST_MODULE_CACHE_CLANG "${LLDB_TEST_BUILD_DIRECTORY}/module-cache-clang" CACHE PATH "The Clang module cache used by the Clang while building tests.")
+file(MAKE_DIRECTORY ${LLDB_TEST_MODULE_CACHE_LLDB})
+file(MAKE_DIRECTORY ${LLDB_TEST_MODULE_CACHE_CLANG})
+
# LLVM_BUILD_MODE is used in lit.site.cfg
if (CMAKE_CFG_INTDIR STREQUAL ".")
set(LLVM_BUILD_MODE ".")
@@ -17,8 +23,6 @@ endif()
get_property(LLDB_DOTEST_ARGS GLOBAL PROPERTY LLDB_DOTEST_ARGS_PROPERTY)
set(dotest_args_replacement ${LLVM_BUILD_MODE})
-set(LLDB_TEST_MODULE_CACHE_LLDB "${LLDB_TEST_BUILD_DIRECTORY}/module-cache-lldb" CACHE PATH "The Clang module cache used by the Clang embedded in LLDB while running tests.")
-set(LLDB_TEST_MODULE_CACHE_CLANG "${LLDB_TEST_BUILD_DIRECTORY}/module-cache-clang" CACHE PATH "The Clang module cache used by the Clang while building tests.")
if(LLDB_BUILT_STANDALONE)
# In paths to our build-tree, replace CMAKE_CFG_INTDIR with our configuration name placeholder.
diff --git a/lldb/test/Shell/lit.cfg.py b/lldb/test/Shell/lit.cfg.py
index 3503e956922..6f0ca673237 100644
--- a/lldb/test/Shell/lit.cfg.py
+++ b/lldb/test/Shell/lit.cfg.py
@@ -69,9 +69,9 @@ llvm_config.feature_config(
# incremental build whenever clang changes underneath, so doing it once per
# lit.py invocation is close enough.
for cachedir in [config.clang_module_cache, config.lldb_module_cache]:
- if os.path.isdir(cachedir):
- print("Deleting module cache at %s."%cachedir)
- shutil.rmtree(cachedir)
+ if os.path.isdir(cachedir):
+ print("Deleting module cache at %s."%cachedir)
+ shutil.rmtree(cachedir)
# Set a default per-test timeout of 10 minutes. Setting a timeout per test
# requires that killProcessAndChildren() is supported on the platform and
diff --git a/lldb/test/Shell/lit.site.cfg.py.in b/lldb/test/Shell/lit.site.cfg.py.in
index 459d5604541..39990a408b0 100644
--- a/lldb/test/Shell/lit.site.cfg.py.in
+++ b/lldb/test/Shell/lit.site.cfg.py.in
@@ -20,8 +20,9 @@ config.host_triple = "@LLVM_HOST_TRIPLE@"
config.lldb_bitness = 64 if @LLDB_IS_64_BITS@ else 32
config.lldb_disable_python = @LLDB_DISABLE_PYTHON@
config.lldb_build_directory = "@LLDB_TEST_BUILD_DIRECTORY@"
-config.lldb_module_cache = "@LLDB_TEST_MODULE_CACHE_LLDB@"
-config.clang_module_cache = "@LLDB_TEST_MODULE_CACHE_CLANG@"
+# The shell tests use their own module caches.
+config.lldb_module_cache = os.path.join("@LLDB_TEST_MODULE_CACHE_LLDB@", "lldb-shell")
+config.clang_module_cache = os.path.join("@LLDB_TEST_MODULE_CACHE_CLANG@", "lldb-shell")
# 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.
@@ -32,7 +33,6 @@ try:
config.lldb_libs_dir = config.lldb_libs_dir % lit_config.params
config.lldb_tools_dir = config.lldb_tools_dir % lit_config.params
config.lldb_lit_tools_dir = config.lldb_lit_tools_dir % lit_config.params
-
except KeyError as e:
key, = e.args
lit_config.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key,key))
OpenPOWER on IntegriCloud