diff options
author | 2016-04-20 15:23:07 +0000 | |
---|---|---|
committer | 2016-04-21 10:57:43 +0000 | |
commit | dca3b6da89b731151e45e6b73b4ff589667d7b8c (patch) | |
tree | 7a66c4dfd77cb79fd58f41315676e588d90e7bf0 | |
parent | 3c9a2265ea043c52c81951907fbc626b8c03add4 (diff) |
Disable the generating .gcno files for .pcm compile actions. These can conflict
with the .gcno files for the actual .cc files.
--
MOS_MIGRATED_REVID=120338906
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java | 13 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java | 19 |
2 files changed, 25 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java index 8fa9dff936..e09f0b4115 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java @@ -414,7 +414,7 @@ public final class CppModel { // - the compiled source file is the module map // - it creates a header module (.pcm file). createSourceAction(outputName, result, env, moduleMapArtifact, builder, ".pcm", ".pcm.d", - /*addObject=*/false); + /*addObject=*/false, /*enableCoverage=*/false); } for (Pair<Artifact, Label> source : sourceFiles) { @@ -428,7 +428,7 @@ public final class CppModel { createHeaderAction(outputName, result, env, builder); } else { createSourceAction(outputName, result, env, sourceArtifact, builder, ".o", ".d", - /*addObject=*/true); + /*addObject=*/true, isCodeCoverageEnabled()); } } @@ -459,7 +459,8 @@ public final class CppModel { CppCompileActionBuilder builder, String outputExtension, String dependencyFileExtension, - boolean addObject) { + boolean addObject, + boolean enableCoverage) { PathFragment ccRelativeName = semantics.getEffectiveSourcePath(sourceArtifact); if (cppConfiguration.isLipoOptimization()) { // TODO(bazel-team): we shouldn't be needing this, merging context with the binary @@ -484,9 +485,7 @@ public final class CppModel { CppCompileActionBuilder picBuilder = copyAsPicBuilder(builder, outputName, outputExtension, dependencyFileExtension); Artifact gcnoFile = - isCodeCoverageEnabled() - ? ruleContext.getRelatedArtifact(outputName, ".pic.gcno") - : null; + enableCoverage ? ruleContext.getRelatedArtifact(outputName, ".pic.gcno") : null; if (gcnoFile != null) { picBuilder.setGcnoFile(gcnoFile); } @@ -525,7 +524,7 @@ public final class CppModel { .setDotdFile(outputName, dependencyFileExtension); // Create non-PIC compile actions Artifact gcnoFile = - !cppConfiguration.isLipoOptimization() && isCodeCoverageEnabled() + !cppConfiguration.isLipoOptimization() && enableCoverage ? ruleContext.getRelatedArtifact(outputName, ".gcno") : null; if (gcnoFile != null) { diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java index 2a7f5bdab0..ba6700f33f 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java @@ -37,6 +37,7 @@ import com.google.devtools.build.lib.analysis.OutputGroupProvider; import com.google.devtools.build.lib.analysis.util.AnalysisMock; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.packages.util.MockCcSupport; +import com.google.devtools.build.lib.rules.test.InstrumentedFilesProvider; import com.google.devtools.build.lib.testutil.TestConstants; import com.google.devtools.build.lib.util.FileType; import com.google.devtools.build.lib.vfs.PathFragment; @@ -291,6 +292,24 @@ public class CcLibraryConfiguredTargetTest extends BuildViewTestCase { } @Test + public void testCodeCoverage() throws Exception { + AnalysisMock.get() + .ccSupport() + .setupCrosstool(mockToolsConfig, MockCcSupport.HEADER_MODULES_FEATURE_CONFIGURATION); + useConfiguration("--collect_code_coverage"); + ConfiguredTarget x = + scratchConfiguredTarget( + "foo", + "x", + "package(features = ['header_modules'])", + "cc_library(name = 'x', srcs = ['x.cc'])"); + assertThat( + ActionsTestUtil.baseArtifactNames( + x.getProvider(InstrumentedFilesProvider.class).getInstrumentationMetadataFiles())) + .containsExactly("x.pic.gcno"); + } + + @Test public void testDisablingHeaderModulesWhenDependingOnModuleBuildTransitively() throws Exception { AnalysisMock.get() .ccSupport() |