Add new builtin API to cc compilation.
PiperOrigin-RevId: 452753853
Change-Id: If04119ae55f6b5108b30fa0cd600a16800f21423
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
index ccf424a..74c69ea 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
@@ -116,6 +116,7 @@
Object purpose,
Object grepIncludes,
Object coptsFilter,
+ Object separateModuleHeaders,
StarlarkThread thread)
throws EvalException, InterruptedException {
return compile(
@@ -156,6 +157,7 @@
language,
purpose,
coptsFilter,
+ separateModuleHeaders,
thread);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
index 3a97e6c..cc694d5 100755
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
@@ -2021,6 +2021,7 @@
Object languageObject,
Object purposeObject,
Object coptsFilterObject,
+ Object separateModuleHeadersObject,
StarlarkThread thread)
throws EvalException, InterruptedException {
if (checkObjectsBound(
@@ -2034,7 +2035,8 @@
hdrsCheckingModeObject,
implementationCcCompilationContextsObject,
coptsFilterObject,
- starlarkLooseIncludes)) {
+ starlarkLooseIncludes,
+ separateModuleHeadersObject)) {
CcModule.checkPrivateStarlarkificationAllowlist(thread);
}
@@ -2216,6 +2218,10 @@
if (purpose != null) {
helper.setPurpose(purpose);
}
+ ImmutableList<Artifact> separateModuleHeaders =
+ asClassImmutableList(separateModuleHeadersObject);
+ helper.addSeparateModuleHeaders(separateModuleHeaders);
+
try {
RuleContext ruleContext = actions.getRuleContext();
CompilationInfo compilationInfo = helper.compile(ruleContext);
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/BazelCcModuleApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/BazelCcModuleApi.java
index 661f311..181fe1d 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/BazelCcModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp/BazelCcModuleApi.java
@@ -344,6 +344,13 @@
positional = false,
named = true,
defaultValue = "unbound"),
+ @Param(
+ name = "separate_module_headers",
+ documented = false,
+ positional = false,
+ named = true,
+ allowedTypes = {@ParamType(type = Sequence.class)},
+ defaultValue = "unbound"),
})
Tuple compile(
StarlarkActionFactoryT starlarkActionFactoryApi,
@@ -381,6 +388,7 @@
Object purpose,
Object grepIncludes,
Object coptsFilter,
+ Object separateModuleHeaders,
StarlarkThread thread)
throws EvalException, InterruptedException;
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/StarlarkCcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/StarlarkCcCommonTest.java
index fea4a94..130edb8 100755
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/StarlarkCcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/StarlarkCcCommonTest.java
@@ -7040,6 +7040,7 @@
compileCall + "propagate_module_map_to_compile_action = True)",
compileCall + "do_not_generate_module_map = True)",
compileCall + "code_coverage_enabled = True)",
+ compileCall + "separate_module_headers = [])",
compileCall + "hdrs_checking_mode = 'strict')");
scratch.overwriteFile(
"a/BUILD",