diff options
author | Cal Peyser <cpeyser@google.com> | 2017-03-13 22:17:39 +0000 |
---|---|---|
committer | Yun Peng <pcloudy@google.com> | 2017-03-14 08:53:17 +0000 |
commit | e3e0a0630f37e07ae50466fb8aa4eb4496744d15 (patch) | |
tree | b62b8ba6503d3e3331c606c2aed3fdbead789466 /src/main | |
parent | f26031d442ae777fb8a89e499074b236d5c6f881 (diff) |
Implement coverage support for experimental_objc_library
--
PiperOrigin-RevId: 149997687
MOS_MIGRATED_REVID=149997687
Diffstat (limited to 'src/main')
3 files changed, 24 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java index a8427fad95..d5b6c8564c 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java @@ -1232,7 +1232,14 @@ public class CppCompileAction extends AbstractAction } @Override - public String getMnemonic() { return "CppCompile"; } + public String getMnemonic() { + if (CppFileTypes.OBJC_SOURCE.matches(sourceFile.getExecPath()) + || CppFileTypes.OBJCPP_SOURCE.matches(sourceFile.getExecPath())) { + return "ObjcCompile"; + } else { + return "CppCompile"; + } + } @Override public String describeKey() { diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java index 81cb9ed82b..612d81d285 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CrosstoolCompilationSupport.java @@ -74,6 +74,11 @@ public class CrosstoolCompilationSupport extends CompilationSupport { private static final String OBJC_MODULE_FEATURE_NAME = "use_objc_modules"; private static final String NO_ENABLE_MODULES_FEATURE_NAME = "no_enable_modules"; private static final String DEAD_STRIP_FEATURE_NAME = "dead_strip"; + private static final String RUN_COVERAGE_FEATURE_NAME = "run_coverage"; + /** Produce artifacts for coverage in llvm coverage mapping format. */ + private static final String LLVM_COVERAGE_MAP_FORMAT = "llvm_coverage_map_format"; + /** Produce artifacts for coverage in gcc coverage mapping format. */ + private static final String GCC_COVERAGE_MAP_FORMAT = "gcc_coverage_map_format"; private static final Iterable<String> ACTIVATED_ACTIONS = ImmutableList.of( @@ -376,6 +381,14 @@ public class CrosstoolCompilationSupport extends CompilationSupport { && ruleContext.getPrerequisiteArtifact("pch", Mode.TARGET) != null) { activatedCrosstoolSelectables.add("pch"); } + if (configuration.isCodeCoverageEnabled()) { + activatedCrosstoolSelectables.add(RUN_COVERAGE_FEATURE_NAME); + } + if (configuration.isLLVMCoverageMapFormatEnabled()) { + activatedCrosstoolSelectables.add(LLVM_COVERAGE_MAP_FORMAT); + } else { + activatedCrosstoolSelectables.add(GCC_COVERAGE_MAP_FORMAT); + } return configuration .getFragment(CppConfiguration.class) .getFeatures() diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ExperimentalObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ExperimentalObjcLibrary.java index b58e842312..3a7ef77809 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ExperimentalObjcLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ExperimentalObjcLibrary.java @@ -24,6 +24,7 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider; import com.google.devtools.build.lib.rules.objc.ObjcCommon.ResourceAttributes; +import com.google.devtools.build.lib.rules.test.InstrumentedFilesProvider; import com.google.devtools.build.lib.syntax.Type; /** Implementation for experimental_objc_library. */ @@ -86,6 +87,8 @@ public class ExperimentalObjcLibrary implements RuleConfiguredTargetFactory { .addProvider(ObjcProvider.class, common.getObjcProvider()) .addProvider(J2ObjcEntryClassProvider.class, j2ObjcEntryClassProvider) .addProvider(J2ObjcMappingFileProvider.class, j2ObjcMappingFileProvider) + .addProvider(InstrumentedFilesProvider.class, + compilationSupport.getInstrumentedFilesProvider(common)) .addProvider( CcLinkParamsProvider.class, new CcLinkParamsProvider(new ObjcLibraryCcLinkParamsStore(common))) |