aboutsummaryrefslogtreecommitdiff
path: root/scripts/llvm.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/llvm.py')
-rw-r--r--scripts/llvm.py44
1 files changed, 42 insertions, 2 deletions
diff --git a/scripts/llvm.py b/scripts/llvm.py
index 53ffd89..bdeae85 100644
--- a/scripts/llvm.py
+++ b/scripts/llvm.py
@@ -200,6 +200,9 @@ def build_and_test(args):
stage1BuildFlags = args.stage1BuildFlags
stage2BuildDir = args.stage2
+ stage2Subprojs = args.stage2Subprojs
+ stage2Defs = cmake_flags_from_args(args.stage2Defs)
+ stage2BuildFlags = args.stage2BuildFlags
enableTestSuite = args.enableTestSuite
sandboxDir = args.sandbox
@@ -229,6 +232,13 @@ def build_and_test(args):
testedBuildDir = stage1BuildDir
if stage2BuildDir is not None:
+ if stage2Subprojs:
+ toAdd = list(set(stage2Subprojs) - set(stage1Subprojs))
+ toRemove = list(set(stage1Subprojs) - set(stage2Subprojs))
+ sourceConfig.update(
+ subproj_to_repo_map(toAdd, proj, llvmRepos, args.dry),
+ toRemove)
+
if not dryRun and not os.path.exists(stage2BuildDir):
os.makedirs(stage2BuildDir)
@@ -238,11 +248,11 @@ def build_and_test(args):
# TODO: Make sure clang is actually built in this config (preferably
# before reaching this point)
buildConfig2.cmake(
- [
+ stage2Defs + [
"-DCMAKE_C_COMPILER={}/bin/clang".format(stage1BuildDir),
"-DCMAKE_CXX_COMPILER={}/bin/clang++".format(stage1BuildDir)],
"Ninja")
- buildConfig2.build()
+ buildConfig2.build(stage2BuildFlags)
testedBuildDir = stage2BuildDir
if enableTestSuite:
@@ -518,6 +528,36 @@ buildAndTest.add_argument(
dest='stage2',
help="Path to the build directory for stage 2.")
buildAndTest.add_argument(
+ '--stage2-subproject',
+ dest='stage2Subprojs',
+ metavar='SUBPROJ',
+ choices=valid_subprojects,
+ default=[],
+ action='append',
+ help="Subprojects to enable for stage 2 of the build. Can be passed "
+ "multiple times. Valid values for the subproject are: {}. "
+ "If this is a 2-stage build, the same subprojects will be used for "
+ "both stages unless other subprojects are explicitly requested for "
+ "stage 2.".format(" ".join(valid_subprojects)))
+buildAndTest.add_argument(
+ '--stage2-cmake-def',
+ dest='stage2Defs',
+ metavar='VAR=VALUE',
+ default=[],
+ action='append',
+ help="Additional CMake definitions for stage 2, e.g. "
+ "CMAKE_BUILD_TYPE=Release. Can be passed multiple times. "
+ "The -D is added automatically.")
+buildAndTest.add_argument(
+ '--stage2-build-flag',
+ dest='stage2BuildFlags',
+ metavar='FLAG',
+ default=[],
+ action='append',
+ help="Additional flags for the stage 2 build command (e.g. targets to "
+ "build). Can be passed multiple times. If your flag starts with "
+ "a '-', use '--stage2-build-flag=-FLAG' to pass it.")
+buildAndTest.add_argument(
"--enable-test-suite",
dest='enableTestSuite',
action='store_true',