summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2018-11-16 16:19:07 +0000
committerAdrian Prantl <aprantl@apple.com>2018-11-16 16:19:07 +0000
commitd1b33162b56606daede57e59594b92038b9a5d7c (patch)
tree66cfabb9b55ee9c243f41f1c73a24594b2bc7ae8
parent5ebd2a785ef0f105f4d65ea73ce58c16720a3839 (diff)
downloadbcm5719-llvm-d1b33162b56606daede57e59594b92038b9a5d7c.tar.gz
bcm5719-llvm-d1b33162b56606daede57e59594b92038b9a5d7c.zip
Makefile.rules: Use a shared clang module cache directory.
Just to be safe, up until now each test used its own Clang module cache directory. Since the compiler within one testsuite doesn't change it is just as safe to share a clang module directory inside the LLDB test build directory. This saves us from compiling tens of gigabytes of redundant Darwin and Foundation .pcm files and also speeds up running the test suite quite significantly. rdar://problem/36002081 Differential Revision: https://reviews.llvm.org/D54601 llvm-svn: 347056
-rw-r--r--lldb/lit/lit.cfg.py11
-rw-r--r--lldb/packages/Python/lldbsuite/test/make/Makefile.rules10
2 files changed, 19 insertions, 2 deletions
diff --git a/lldb/lit/lit.cfg.py b/lldb/lit/lit.cfg.py
index 9b78ba35c16..86cc9022101 100644
--- a/lldb/lit/lit.cfg.py
+++ b/lldb/lit/lit.cfg.py
@@ -4,9 +4,9 @@ import os
import sys
import re
import platform
+import shutil
import subprocess
-
import lit.util
import lit.formats
from lit.llvm import llvm_config
@@ -124,3 +124,12 @@ llvm_config.feature_config(
('--build-mode', {'DEBUG': 'debug'}),
('--targets-built', calculate_arch_features)
])
+
+# 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 i in ['module-cache-clang']:
+ cachedir = os.path.join(config.llvm_obj_root, 'lldb-test-build.noindex', i)
+ if os.path.isdir(cachedir):
+ print("Deleting module cache at %s."%cachedir)
+ shutil.rmtree(cachedir)
diff --git a/lldb/packages/Python/lldbsuite/test/make/Makefile.rules b/lldb/packages/Python/lldbsuite/test/make/Makefile.rules
index 89906516685..dfe573c89d7 100644
--- a/lldb/packages/Python/lldbsuite/test/make/Makefile.rules
+++ b/lldb/packages/Python/lldbsuite/test/make/Makefile.rules
@@ -33,7 +33,6 @@ BUILDDIR := $(shell pwd)
THIS_FILE_DIR := $(shell dirname $(lastword $(MAKEFILE_LIST)))/
LLDB_BASE_DIR := $(THIS_FILE_DIR)../../../../../
-
#----------------------------------------------------------------------
# If OS is not defined, use 'uname -s' to determine the OS name.
#
@@ -253,7 +252,16 @@ ifeq "$(MAKE_DWO)" "YES"
CFLAGS += -gsplit-dwarf
endif
+# Use a shared module cache when building in the default test build directory.
+ifeq "$(findstring lldb-test-build.noindex, $(BUILDDIR))" ""
CLANG_MODULE_CACHE_DIR := $(BUILDDIR)/module-cache
+else
+CLANG_MODULE_CACHE_DIR := $(shell echo "$(BUILDDIR)" | sed 's/lldb-test-build.noindex.*/lldb-test-build.noindex\/module-cache-clang/')
+endif
+
+ifeq "$(CLANG_MODULE_CACHE_DIR)" ""
+$(error failed to set the shared clang module cache dir)
+endif
MANDATORY_MODULE_BUILD_CFLAGS := -fmodules -gmodules -fmodules-cache-path=$(CLANG_MODULE_CACHE_DIR)
OpenPOWER on IntegriCloud