aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2015-04-01 17:25:19 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2015-04-01 17:49:44 +0000
commite9029d4613d98c17e05236a0058164bb8787f94b (patch)
tree4eab0f2c6123c387f1130b32668d56fe49d1d010 /src/main/java/com/google/devtools/build/lib/rules/objc
parenta5cdb19e83160d60de562c1e0ae7638d4152b88b (diff)
--instrumentation_filter now works with Objective C.
Added "-Tests$" to the default instrumentation_filter, this is the typical pattern for Objective C. All sources are included in ObjcCommon.SOURCE. Sources from targets which match the current instrumentation_filter are included in ObjcCommon.INSTRUMENTED_SOURCE. GCNOs are added to ObjcCommon.GCNO iff the source they originate from is included in from a target which matches the instrumentation_filter. RELNOTES: --instrumentation_filter now works with Objective C coverage. -- MOS_MIGRATED_REVID=90076465
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/ObjcCommon.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java5
2 files changed, 12 insertions, 1 deletions
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 50a080f26d..c485cd6cc8 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
@@ -29,6 +29,7 @@ import static com.google.devtools.build.lib.rules.objc.ObjcProvider.GENERAL_RESO
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.HEADER;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.IMPORTED_LIBRARY;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.INCLUDE;
+import static com.google.devtools.build.lib.rules.objc.ObjcProvider.INSTRUMENTED_SOURCE;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LIBRARY;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LINKED_BINARY;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.SDK_DYLIB;
@@ -62,6 +63,7 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.packages.Type;
import com.google.devtools.build.lib.rules.cpp.CcCommon;
import com.google.devtools.build.lib.util.FileType;
+import com.google.devtools.build.lib.util.RegexFilter;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.HashSet;
@@ -379,8 +381,12 @@ public final class ObjcCommon {
Iterables.concat(artifacts.getSrcs(), artifacts.getNonArcSrcs());
objcProvider.addAll(LIBRARY, artifacts.getArchive().asSet());
objcProvider.addAll(SOURCE, allSources);
- if (context.getConfiguration().isCodeCoverageEnabled()) {
+ BuildConfiguration configuration = context.getConfiguration();
+ RegexFilter filter = configuration.getInstrumentationFilter();
+ if (configuration.isCodeCoverageEnabled()
+ && filter.isIncluded(context.getLabel().toString())) {
for (Artifact source : allSources) {
+ objcProvider.add(INSTRUMENTED_SOURCE, source);
objcProvider.add(GCNO, intermediateArtifacts.gcnoFile(source));
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
index e559ab4e35..12692ba011 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
@@ -83,6 +83,11 @@ public final class ObjcProvider implements TransitiveInfoProvider {
public static final Key<Artifact> SOURCE = new Key<>(STABLE_ORDER);
/**
+ * Contains all coverage instrumented source files.
+ */
+ public static final Key<Artifact> INSTRUMENTED_SOURCE = new Key<>(STABLE_ORDER);
+
+ /**
* Contains all .gcno files one for every source file if in coverage mode.
* It contains information to reconstruct the basic block graphs and assign source line numbers
* to blocks.