diff options
author | 2016-08-11 20:04:57 +0000 | |
---|---|---|
committer | 2016-08-12 08:52:51 +0000 | |
commit | 7e33704e7546bb676e9052089c30f1dd625fd082 (patch) | |
tree | a078ba5aed70f69ccbbb6d0ea42453737ebcdd5d /src/main/java/com/google/devtools/build/lib/rules/apple | |
parent | 2427f8d056d143fd3ef3f8b36ffb56cf498d64bc (diff) |
Implement objc archiving in the crosstool. This involves a few steps:
1) In ExperimentalObjcLibrary, if static linking is required, signal CcLibraryHelper to create a static link action and pass in the necessary variables/link action input.
2) Add a new link type (Link.LinkTargetType.OBJC_STATIC_LIBRARY). This involves changes to Link and LinkCommandLine.
3) For this new link type, implement static linking the OSX CROSSTOOL. Also add tools in the crosstool package that point at libtool, which performs the archiving.
--
MOS_MIGRATED_REVID=130022410
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/apple')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java | 14 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/apple/cpp/BUILD | 2 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java index 656c8dfc84..3982e688f5 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java @@ -14,13 +14,16 @@ package com.google.devtools.build.lib.rules.apple.cpp; import com.google.common.collect.ImmutableMap; +import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.analysis.AnalysisUtils; import com.google.devtools.build.lib.analysis.RuleContext; +import com.google.devtools.build.lib.collect.nestedset.NestedSet; +import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; import com.google.devtools.build.lib.rules.apple.AppleToolchain; import com.google.devtools.build.lib.rules.apple.DottedVersion; import com.google.devtools.build.lib.rules.apple.Platform; import com.google.devtools.build.lib.rules.cpp.CcToolchain; - import java.util.Map; /** @@ -68,4 +71,13 @@ public class AppleCcToolchain extends CcToolchain { AppleToolchain.platformDeveloperFrameworkDir(appleConfiguration)) .build(); } + + @Override + protected NestedSet<Artifact> fullInputsForLink( + RuleContext ruleContext, NestedSet<Artifact> link) { + return NestedSetBuilder.<Artifact>stableOrder() + .addTransitive(link) + .addTransitive(AnalysisUtils.getMiddlemanFor(ruleContext, ":libc_top")) + .build(); + } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/BUILD b/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/BUILD index cbfb7f3906..a0177e65b5 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/BUILD +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/BUILD @@ -10,7 +10,9 @@ java_library( srcs = glob(["*.java"]), deps = [ "//src/main/java/com/google/devtools/build/lib:build-base", + "//src/main/java/com/google/devtools/build/lib:collect", "//src/main/java/com/google/devtools/build/lib:packages-internal", + "//src/main/java/com/google/devtools/build/lib/actions", "//src/main/java/com/google/devtools/build/lib/rules/apple", "//src/main/java/com/google/devtools/build/lib/rules/cpp", "//src/main/protobuf:xcodegen_java_proto", |