aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar Sergio Campama <kaipi@google.com>2017-03-09 23:32:26 +0000
committerGravatar Vladimir Moskva <vladmos@google.com>2017-03-10 10:28:19 +0000
commit48e1d5b86c5c32e8b9023518254ac9023c26082f (patch)
treef41875d34fd5eba911c75bcbbdcf830649100f1e /src/main
parent1ac5b786f2fb361a92ef8582f5e06e0891c832d8 (diff)
Adds linkmaps to the AppleDebugOutputsProvider for them to be consumed by dependents.
-- PiperOrigin-RevId: 149702529 MOS_MIGRATED_REVID=149702529
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java7
5 files changed, 35 insertions, 9 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
index f26c1ec44b..658285b6c8 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -125,7 +125,6 @@ import com.google.devtools.build.lib.rules.java.JvmConfigurationLoader;
import com.google.devtools.build.lib.rules.java.ProguardLibraryRule;
import com.google.devtools.build.lib.rules.java.proto.JavaProtoSkylarkCommon;
import com.google.devtools.build.lib.rules.objc.AppleBinaryRule;
-import com.google.devtools.build.lib.rules.objc.AppleDebugOutputsProvider;
import com.google.devtools.build.lib.rules.objc.AppleSkylarkCommon;
import com.google.devtools.build.lib.rules.objc.AppleStaticLibraryRule;
import com.google.devtools.build.lib.rules.objc.AppleWatch1ExtensionRule;
@@ -633,9 +632,6 @@ public class BazelRuleClassProvider {
ObjcProvider.OBJC_SKYLARK_PROVIDER_NAME, ObjcProvider.class);
builder.registerSkylarkProvider(
XcTestAppProvider.XCTEST_APP_SKYLARK_PROVIDER_NAME, XcTestAppProvider.class);
- builder.registerSkylarkProvider(
- AppleDebugOutputsProvider.SKYLARK_PROVIDER.getName(),
- AppleDebugOutputsProvider.class);
builder.addSkylarkAccessibleTopLevels("apple_common", new AppleSkylarkCommon());
builder.addConfig(ObjcCommandLineOptions.class, new ObjcConfigurationLoader());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
index d96d196951..a76d2c509a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
@@ -188,9 +188,13 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
Artifact dsymBinary = intermediateArtifacts.dsymSymbol(DsymOutputType.APP);
builder.addOutput(arch, OutputType.DSYM_BINARY, dsymBinary);
}
+ if (childObjcConfig.generateLinkmap()) {
+ Artifact linkmap = intermediateArtifacts.linkmap();
+ builder.addOutput(arch, OutputType.LINKMAP, linkmap);
+ }
}
- targetBuilder.addProvider(AppleDebugOutputsProvider.class, builder.build());
+ targetBuilder.addNativeDeclaredProvider(builder.build());
return targetBuilder.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java
index 9484a50498..b2cc573f2e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java
@@ -49,7 +49,10 @@ public final class AppleDebugOutputsProvider extends SkylarkClassObject
BITCODE_SYMBOLS,
/** A single-architecture DWARF binary with debug symbols. */
- DSYM_BINARY;
+ DSYM_BINARY,
+
+ /** A single-architecture linkmap. */
+ LINKMAP;
@Override
public String toString() {
@@ -57,8 +60,12 @@ public final class AppleDebugOutputsProvider extends SkylarkClassObject
}
}
- public static final ClassObjectConstructor SKYLARK_PROVIDER =
- new NativeClassObjectConstructor("AppleDebugOutputs") { };
+ /** Skylark name for the AppleDebugOutputsProvider. */
+ public static final String SKYLARK_NAME = "AppleDebugOutputs";
+
+ /** Skylark constructor and identifier for AppleDebugOutputsProvider. */
+ public static final ClassObjectConstructor SKYLARK_CONSTRUCTOR =
+ new NativeClassObjectConstructor(SKYLARK_NAME) { };
/**
* Creates a new provider instance.
@@ -76,7 +83,7 @@ public final class AppleDebugOutputsProvider extends SkylarkClassObject
* </ul>
*/
private AppleDebugOutputsProvider(ImmutableMap<String, ImmutableMap<String, Artifact>> map) {
- super(SKYLARK_PROVIDER, ImmutableMap.<String, Object>of("outputs_map", map));
+ super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of("outputs_map", map));
}
/** A builder for {@link AppleDebugOutputsProvider}. */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java
index fd9b10bbf0..6bd9554cf9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java
@@ -143,6 +143,18 @@ public class AppleSkylarkCommon {
}
@SkylarkCallable(
+ name = AppleDebugOutputsProvider.SKYLARK_NAME,
+ doc =
+ "Returns the provider constructor for AppleDebugOutputsProvider. If a target propagates "
+ + "the AppleDebugOutputsProvider provider, use this as the key with which to retrieve "
+ + "it.",
+ structField = true
+ )
+ public ClassObjectConstructor getAppleDebugOutputsConstructor() {
+ return AppleDebugOutputsProvider.SKYLARK_CONSTRUCTOR;
+ }
+
+ @SkylarkCallable(
name = AppleLoadableBundleBinaryProvider.SKYLARK_NAME,
doc =
"Returns the provider constructor for AppleLoadableBundleBinaryProvider. If a target "
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 ba36850c0c..ec93b71ada 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
@@ -188,6 +188,13 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment {
return generateDsym;
}
+ /**
+ * Returns whether linkmap generation is enabled.
+ */
+ @SkylarkCallable(
+ name = "generate_linkmap",
+ doc = "Whether to generate linkmap artifacts.",
+ structField = true)
public boolean generateLinkmap() {
return generateLinkmap;
}