Add --incompatible_objc_alwayslink_by_default
Currently a no-op, this flag will be used to control the default behavior for
`alwayslink` on `objc_library` and `objc_import`. The value is then exposed
on the `objc` fragment.
PiperOrigin-RevId: 516547341
Change-Id: Ieb43112ece5f0c9ee2b0350bbcf734a9dac3ff68
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java
index 58139b9..9168b12 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java
@@ -192,6 +192,17 @@
+ "objc_import.")
public boolean incompatibleDisallowSdkFrameworksAttributes;
+ @Option(
+ name = "incompatible_objc_alwayslink_by_default",
+ defaultValue = "false",
+ documentationCategory = OptionDocumentationCategory.STARLARK_SEMANTICS,
+ effectTags = {OptionEffectTag.BUILD_FILE_SEMANTICS},
+ metadataTags = {OptionMetadataTag.INCOMPATIBLE_CHANGE},
+ help =
+ "If true, make the default value true for alwayslink attributes in objc_library and"
+ + " objc_import.")
+ public boolean incompatibleObjcAlwayslinkByDefault;
+
/** @deprecated delete when we are sure it's not used anywhere. */
@Deprecated
@Option(
@@ -213,6 +224,7 @@
incompatibleAvoidHardcodedObjcCompilationFlags;
exec.incompatibleObjcLinkingInfoMigration = incompatibleObjcLinkingInfoMigration;
exec.incompatibleDisallowSdkFrameworksAttributes = incompatibleDisallowSdkFrameworksAttributes;
+ exec.incompatibleObjcAlwayslinkByDefault = incompatibleObjcAlwayslinkByDefault;
return exec;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
index 90b9880..085ce95 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java
@@ -68,6 +68,7 @@
private final boolean avoidHardcodedCompilationFlags;
private final boolean linkingInfoMigration;
private final boolean disallowSdkFrameworksAttributes;
+ private final boolean alwayslinkByDefault;
public ObjcConfiguration(BuildOptions buildOptions) {
CoreOptions options = buildOptions.get(CoreOptions.class);
@@ -93,6 +94,7 @@
objcOptions.incompatibleAvoidHardcodedObjcCompilationFlags;
this.linkingInfoMigration = objcOptions.incompatibleObjcLinkingInfoMigration;
this.disallowSdkFrameworksAttributes = objcOptions.incompatibleDisallowSdkFrameworksAttributes;
+ this.alwayslinkByDefault = objcOptions.incompatibleObjcAlwayslinkByDefault;
}
/**
@@ -236,4 +238,10 @@
public boolean disallowSdkFrameworksAttributes() {
return disallowSdkFrameworksAttributes;
}
+
+ /** Returns whether objc_library and objc_import should default to alwayslink=True. */
+ @Override
+ public boolean alwayslinkByDefault() {
+ return alwayslinkByDefault;
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ObjcConfigurationApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ObjcConfigurationApi.java
index 4fe48ba..6d104f5 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ObjcConfigurationApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple/ObjcConfigurationApi.java
@@ -140,4 +140,10 @@
structField = true,
doc = "Returns whether sdk_frameworks and weak_sdk_frameworks are disallowed attributes.")
boolean disallowSdkFrameworksAttributes();
+
+ @StarlarkMethod(
+ name = "alwayslink_by_default",
+ structField = true,
+ doc = "Returns whether objc_library and objc_import should default to alwayslink=True.")
+ boolean alwayslinkByDefault();
}