diff options
author | Manuel Klimek <klimek@google.com> | 2016-02-03 21:02:56 +0000 |
---|---|---|
committer | David Chen <dzc@google.com> | 2016-02-03 22:07:18 +0000 |
commit | 2dae2f6b4cd3182a1fbdbd17ef0726aee4bc3b70 (patch) | |
tree | 085e462372b9d4392c76057bceac824e94f6bb44 /src/main/java/com/google/devtools/build/lib/rules/objc | |
parent | c1a6422a42b32c784c8dba0cf6b901c0b5dfbe93 (diff) |
Do not compile source files mentioned in 'hdrs'.
Currently for a library:
cc_library(name='a', hdrs=['a.cc'])
we compile a.cc into a.pic.o and link that into its reverse dependencies.
With this change, a .cc file in hdrs will be treated like a .inc file or
a file in textual_hd...
--
MOS_MIGRATED_REVID=113773418
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/IosFramework.java | 11 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java | 8 |
2 files changed, 14 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosFramework.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosFramework.java index 0c553b2bfb..d60a62f4d9 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosFramework.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosFramework.java @@ -32,9 +32,11 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.actions.SymlinkAction; +import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.rules.apple.DottedVersion; import com.google.devtools.build.lib.rules.cpp.CcCommon; import com.google.devtools.build.lib.rules.objc.ReleaseBundlingSupport.SplitArchTransition.ConfigurationDistinguisher; +import com.google.devtools.build.lib.util.Pair; import com.google.devtools.build.lib.vfs.PathFragment; /** @@ -84,7 +86,8 @@ public class IosFramework extends ReleaseBundlingTargetFactory { IntermediateArtifacts intermediateArtifacts = ObjcRuleClasses.intermediateArtifacts(ruleContext); - ImmutableList<Artifact> headers = ImmutableList.copyOf(CcCommon.getHeaders(ruleContext)); + ImmutableList<Pair<Artifact, Label>> headers = + ImmutableList.copyOf(CcCommon.getHeaders(ruleContext)); ImmutableMap.Builder<Artifact, Artifact> builder = new ImmutableMap.Builder<>(); @@ -94,11 +97,11 @@ public class IosFramework extends ReleaseBundlingTargetFactory { builder.put(intermediateArtifacts.combinedArchitectureBinary(), frameworkBinary); // Create framework headers - for (Artifact header : headers) { + for (Pair<Artifact, Label> header : headers) { Artifact frameworkHeader = - outputArtifact(ruleContext, new PathFragment("Headers/" + header.getFilename())); + outputArtifact(ruleContext, new PathFragment("Headers/" + header.first.getFilename())); - builder.put(header, frameworkHeader); + builder.put(header.first, frameworkHeader); } return builder.build(); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java index b469b22c5c..4b8412ee36 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java @@ -61,6 +61,7 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.BuildType; import com.google.devtools.build.lib.rules.apple.AppleToolchain; import com.google.devtools.build.lib.rules.cpp.CcCommon; @@ -71,6 +72,7 @@ import com.google.devtools.build.lib.rules.cpp.CppModuleMap; import com.google.devtools.build.lib.rules.cpp.CppRunfilesProvider; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.util.FileType; +import com.google.devtools.build.lib.util.Pair; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.PathFragment; @@ -106,7 +108,11 @@ public final class ObjcCommon { if (!ruleContext.attributes().has("hdrs", BuildType.LABEL_LIST)) { return ImmutableList.of(); } - return ImmutableList.copyOf(CcCommon.getHeaders(ruleContext)); + ImmutableList.Builder<Artifact> headers = ImmutableList.builder(); + for (Pair<Artifact, Label> header : CcCommon.getHeaders(ruleContext)) { + headers.add(header.first); + } + return headers.build(); } /** |