diff options
author | Rumou Duan <rduan@google.com> | 2015-08-18 16:12:29 +0000 |
---|---|---|
committer | Lukacs Berki <lberki@google.com> | 2015-08-20 14:45:43 +0000 |
commit | 28fe4daaa5a9cac9c0442ba1f49e2a672029055c (patch) | |
tree | 8fb9fb50f2cec3f46a1f71297fdde4ba16ad61b2 /src/main/java/com/google/devtools | |
parent | ee082d0cff29d4cd1694bc280a8db161d785df81 (diff) |
--
MOS_MIGRATED_REVID=100930529
Diffstat (limited to 'src/main/java/com/google/devtools')
3 files changed, 28 insertions, 15 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java index a934f09b26..c76f35baa2 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java @@ -642,19 +642,21 @@ final class CompilationSupport { } for (J2ObjcSource j2ObjcSource : j2ObjcSources) { - J2ObjcSource sourceToCompile = - j2ObjcSource.getSourceType() == SourceType.JAVA && stripJ2ObjcDeadCode - ? j2ObjcSource.toPrunedSource(ruleContext) - : j2ObjcSource; - IntermediateArtifacts intermediateArtifacts = - ObjcRuleClasses.j2objcIntermediateArtifacts(ruleContext, sourceToCompile); - CompilationArtifacts compilationArtifact = new CompilationArtifacts.Builder() - .addNonArcSrcs(sourceToCompile.getObjcSrcs()) - .setIntermediateArtifacts(intermediateArtifacts) - .setPchFile(Optional.<Artifact>absent()) - .build(); - registerCompileAndArchiveActions(compilationArtifact, intermediateArtifacts, objcProvider, - ruleContext.getConfiguration().isCodeCoverageEnabled()); + if (j2ObjcSource.hasSourceFiles()) { + J2ObjcSource sourceToCompile = + j2ObjcSource.getSourceType() == SourceType.JAVA && stripJ2ObjcDeadCode + ? j2ObjcSource.toPrunedSource(ruleContext) + : j2ObjcSource; + IntermediateArtifacts intermediateArtifacts = + ObjcRuleClasses.j2objcIntermediateArtifacts(ruleContext, sourceToCompile); + CompilationArtifacts compilationArtifact = new CompilationArtifacts.Builder() + .addNonArcSrcs(sourceToCompile.getObjcSrcs()) + .setIntermediateArtifacts(intermediateArtifacts) + .setPchFile(Optional.<Artifact>absent()) + .build(); + registerCompileAndArchiveActions(compilationArtifact, intermediateArtifacts, objcProvider, + ruleContext.getConfiguration().isCodeCoverageEnabled()); + } } return this; @@ -668,7 +670,8 @@ final class CompilationSupport { NestedSet<Artifact> j2ObjcHeaderMappingFiles = provider.getHeaderMappingFiles(); for (J2ObjcSource j2ObjcSource : j2ObjcSources) { - if (j2ObjcSource.getSourceType() == SourceType.JAVA) { + if (j2ObjcSource.getSourceType() == SourceType.JAVA + && j2ObjcSource.hasSourceFiles()) { Iterable<Artifact> sourceArtifacts = j2ObjcSource.getObjcSrcs(); Iterable<Artifact> prunedSourceArtifacts = j2ObjcSource.toPrunedSource(ruleContext).getObjcSrcs(); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcSource.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcSource.java index b1e7a42ca6..6e1872935e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcSource.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcSource.java @@ -16,6 +16,7 @@ package com.google.devtools.build.lib.rules.objc; import com.google.common.base.Objects; import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; import com.google.common.collect.Iterators; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.RuleContext; @@ -137,6 +138,13 @@ public class J2ObjcSource { return sourceType; } + /** + * Returns whether this {@link J2ObjcSource} contains any ObjC source (.m, .mm) files. + */ + public boolean hasSourceFiles() { + return !Iterables.isEmpty(objcSrcs); + } + @Override public final boolean equals(Object other) { if (!(other instanceof J2ObjcSource)) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java index e7129e5215..ad32d2e36b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java @@ -106,7 +106,9 @@ public class ObjcRuleClasses { // TODO(bazel-team): Refactor the code to stop flattening the nested set here. for (J2ObjcSource j2ObjcSource : J2ObjcSrcsProvider.buildFrom(ruleContext).getSrcs()) { - j2objcLibraries.add(j2objcIntermediateArtifacts(ruleContext, j2ObjcSource).archive()); + if (j2ObjcSource.hasSourceFiles()) { + j2objcLibraries.add(j2objcIntermediateArtifacts(ruleContext, j2ObjcSource).archive()); + } } return j2objcLibraries.build(); |