Expose cc_common.create_cc_launcher_info
This allows Starlark rules to be used as C++ launchers for internal rules that support launchers.
RELNOTES: None.
PiperOrigin-RevId: 251921489
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaRuleClasses.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaRuleClasses.java
index 7929467..16fb5a6 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaRuleClasses.java
@@ -41,6 +41,7 @@
import com.google.devtools.build.lib.packages.RuleClass.PackageNameConstraint;
import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier;
import com.google.devtools.build.lib.packages.TriState;
+import com.google.devtools.build.lib.rules.cpp.CcBinary.CcLauncherInfo;
import com.google.devtools.build.lib.rules.cpp.CcInfo;
import com.google.devtools.build.lib.rules.java.JavaInfo;
import com.google.devtools.build.lib.rules.java.JavaRuleClasses.IjarBaseRule;
@@ -429,7 +430,8 @@
.add(
attr("launcher", LABEL)
.allowedFileTypes(FileTypeSet.NO_FILE)
- .allowedRuleClasses("cc_binary"))
+ .mandatoryProviders(
+ SkylarkProviderIdentifier.forKey(CcLauncherInfo.PROVIDER.getKey())))
.add(attr(":java_launcher", LABEL).value(JavaSemantics.JAVA_LAUNCHER)) // blaze flag
.add(
attr("$launcher", LABEL)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
index 69067a6..6ec918f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
@@ -64,6 +64,8 @@
import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext.LinkOptions;
import com.google.devtools.build.lib.rules.cpp.Link.LinkTargetType;
import com.google.devtools.build.lib.rules.cpp.Link.LinkingMode;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.util.Pair;
@@ -106,8 +108,21 @@
*/
public static final String DYNAMIC_LINK_TEST_SRCS = "dynamic_link_test_srcs";
- /** Provider for native deps launchers. DO NOT USE. */
- @Deprecated
+ /**
+ * Provider that signals that rules that use launchers can use this target as the launcher.
+ *
+ * @deprecated This is google internal provider and it will be replaced with a more generally
+ * useful provider in Bazel. Do not use to implement support for launchers in new rules. It's
+ * only supported to be used in existing rules (PyBinary, JavaBinary, JavaTest).
+ */
+ @Deprecated()
+ @SkylarkModule(
+ name = "CcLauncherInfo",
+ documented = false,
+ doc =
+ "Provider that signals that rules that use launchers can use this target as "
+ + "the launcher.",
+ category = SkylarkModuleCategory.TOP_LEVEL_TYPE)
public static class CcLauncherInfo extends NativeInfo {
private static final String RESTRICTION_ERROR_MESSAGE =
"This provider is restricted to native.java_binary, native.py_binary and native.java_test. "