aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar hlopko <hlopko@google.com>2017-11-24 07:26:00 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-11-24 07:27:28 -0800
commit967e910170fc497813f89a7aaa1d872540079ddf (patch)
treefb416c56db55804560d059c73ee8bb220aa5d249 /src/main/java/com/google/devtools
parenta6ed4c01d374bcf98bf39c1efc12a0f4f20fe313 (diff)
Remove useless abstractions in C++ rules after internal cleanup
RELNOTES: PiperOrigin-RevId: 176844836
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java83
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/util/PatternWithEquality.java41
6 files changed, 22 insertions, 156 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java
index 0751ec8826..b67e4ab043 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java
@@ -14,8 +14,6 @@
package com.google.devtools.build.lib.bazel.rules.cpp;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
@@ -27,10 +25,8 @@ import com.google.devtools.build.lib.rules.cpp.CppCompileActionContext;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration.HeadersCheckingMode;
import com.google.devtools.build.lib.rules.cpp.CppSemantics;
-import com.google.devtools.build.lib.rules.cpp.FeatureSpecification;
import com.google.devtools.build.lib.rules.cpp.IncludeProcessing;
import com.google.devtools.build.lib.rules.cpp.NoProcessing;
-import com.google.devtools.build.lib.vfs.PathFragment;
/**
* C++ compilation semantics.
@@ -45,25 +41,15 @@ public class BazelCppSemantics implements CppSemantics {
}
@Override
- public PathFragment getEffectiveSourcePath(Artifact source) {
- return source.getRootRelativePath();
- }
-
- @Override
public void finalizeCompileActionBuilder(
- RuleContext ruleContext,
- CppCompileActionBuilder actionBuilder,
- FeatureSpecification featureSpecification,
- Predicate<String> coptsFilter,
- ImmutableSet<String> features) {
+ RuleContext ruleContext, CppCompileActionBuilder actionBuilder) {
actionBuilder
.setCppConfiguration(ruleContext.getFragment(CppConfiguration.class))
.setActionContext(CppCompileActionContext.class)
// Because Bazel does not support include scanning, we need the entire crosstool filegroup,
// including header files, as opposed to just the "compile" filegroup.
.addTransitiveMandatoryInputs(actionBuilder.getToolchain().getCrosstool())
- .setShouldScanIncludes(false)
- .setCoptsFilter(coptsFilter);
+ .setShouldScanIncludes(false);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
index 87a04c9f7f..37db5839fe 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
@@ -1667,7 +1667,6 @@ public class CcToolchainFeatures implements Serializable {
*/
@Immutable
public static class FeatureConfiguration {
- private final FeatureSpecification featureSpecification;
private final ImmutableSet<String> enabledFeatureNames;
private final Iterable<Feature> enabledFeatures;
private final ImmutableSet<String> enabledActionConfigActionNames;
@@ -1694,7 +1693,6 @@ public class CcToolchainFeatures implements Serializable {
Iterable<Feature> enabledFeatures,
Iterable<ActionConfig> enabledActionConfigs,
ImmutableMap<String, ActionConfig> actionConfigByActionName) {
- this.featureSpecification = featureSpecification;
this.enabledFeatures = enabledFeatures;
this.actionConfigByActionName = actionConfigByActionName;
@@ -1787,10 +1785,6 @@ public class CcToolchainFeatures implements Serializable {
ActionConfig actionConfig = actionConfigByActionName.get(actionName);
return actionConfig.getTool(enabledFeatureNames);
}
-
- public FeatureSpecification getFeatureSpecification() {
- return featureSpecification;
- }
}
/** All artifact name patterns defined in this feature configuration. */
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 a28de87f26..ce582c3dde 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
@@ -424,8 +424,7 @@ public final class CppModel {
*/
public Artifact getHeaderModule(Artifact moduleMapArtifact) {
PathFragment objectDir = CppHelper.getObjDirectory(ruleContext.getLabel());
- PathFragment outputName = objectDir.getRelative(
- semantics.getEffectiveSourcePath(moduleMapArtifact));
+ PathFragment outputName = objectDir.getRelative(moduleMapArtifact.getRootRelativePath());
return ruleContext.getRelatedArtifact(outputName, ".pcm");
}
@@ -434,8 +433,7 @@ public final class CppModel {
*/
public Artifact getPicHeaderModule(Artifact moduleMapArtifact) {
PathFragment objectDir = CppHelper.getObjDirectory(ruleContext.getLabel());
- PathFragment outputName = objectDir.getRelative(
- semantics.getEffectiveSourcePath(moduleMapArtifact));
+ PathFragment outputName = objectDir.getRelative(moduleMapArtifact.getRootRelativePath());
return ruleContext.getRelatedArtifact(outputName, ".pic.pcm");
}
@@ -711,8 +709,8 @@ public final class CppModel {
for (CppSource source : sourceFiles) {
Artifact sourceArtifact = source.getSource();
Label sourceLabel = source.getLabel();
- String outputName = FileSystemUtils.removeExtension(
- semantics.getEffectiveSourcePath(sourceArtifact)).getPathString();
+ String outputName =
+ FileSystemUtils.removeExtension(sourceArtifact.getRootRelativePath()).getPathString();
CppCompileActionBuilder builder = initializeCompileAction(sourceArtifact);
builder.setSemantics(semantics);
@@ -805,12 +803,7 @@ public final class CppModel {
/* ltoIndexingFile= */ null,
builder.getContext().getCppModuleMap(),
/* sourceSpecificBuildVariables= */ ImmutableMap.of());
- semantics.finalizeCompileActionBuilder(
- ruleContext,
- builder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ semantics.finalizeCompileActionBuilder(ruleContext, builder);
CppCompileAction compileAction = builder.buildOrThrowRuleError(ruleContext);
env.registerAction(compileAction);
Artifact tokenFile = compileAction.getOutputFile();
@@ -825,7 +818,7 @@ public final class CppModel {
// If we find one, support needs to be added here.
return;
}
- String outputName = semantics.getEffectiveSourcePath(module).getPathString();
+ String outputName = module.getRootRelativePath().getPathString();
// TODO(djasper): Make this less hacky after refactoring how the PIC/noPIC actions are created.
boolean pic = module.getFilename().contains(".pic.");
@@ -835,7 +828,7 @@ public final class CppModel {
builder.setPicMode(pic);
builder.setOutputs(
ruleContext, ArtifactCategory.OBJECT_FILE, outputName, isGenerateDotdFile(module));
- PathFragment ccRelativeName = semantics.getEffectiveSourcePath(module);
+ PathFragment ccRelativeName = module.getRootRelativePath();
String gcnoFileName =
CppHelper.getArtifactNameForCategory(
@@ -869,12 +862,7 @@ public final class CppModel {
builder.setGcnoFile(gcnoFile);
builder.setDwoFile(dwoFile);
- semantics.finalizeCompileActionBuilder(
- ruleContext,
- builder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ semantics.finalizeCompileActionBuilder(ruleContext, builder);
CppCompileAction compileAction = builder.buildOrThrowRuleError(ruleContext);
AnalysisEnvironment env = ruleContext.getAnalysisEnvironment();
env.registerAction(compileAction);
@@ -899,8 +887,7 @@ public final class CppModel {
// - it creates a header module (.pcm file).
return createSourceAction(
Label.parseAbsoluteUnchecked(cppModuleMap.getName()),
- FileSystemUtils.removeExtension(semantics.getEffectiveSourcePath(moduleMapArtifact))
- .getPathString(),
+ FileSystemUtils.removeExtension(moduleMapArtifact.getRootRelativePath()).getPathString(),
result,
env,
moduleMapArtifact,
@@ -940,12 +927,7 @@ public final class CppModel {
/* ltoIndexingFile= */ null,
builder.getContext().getCppModuleMap(),
/* sourceSpecificBuildVariables= */ ImmutableMap.of());
- semantics.finalizeCompileActionBuilder(
- ruleContext,
- builder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ semantics.finalizeCompileActionBuilder(ruleContext, builder);
CppCompileAction compileAction = builder.buildOrThrowRuleError(ruleContext);
env.registerAction(compileAction);
Artifact tokenFile = compileAction.getOutputFile();
@@ -968,7 +950,7 @@ public final class CppModel {
Map<String, String> sourceSpecificBuildVariables)
throws RuleErrorException {
ImmutableList.Builder<Artifact> directOutputs = new ImmutableList.Builder<>();
- PathFragment ccRelativeName = semantics.getEffectiveSourcePath(sourceArtifact);
+ PathFragment ccRelativeName = sourceArtifact.getRootRelativePath();
if (CppHelper.isLipoOptimization(cppConfiguration, ccToolchain)) {
// TODO(bazel-team): we shouldn't be needing this, merging context with the binary
// is a superset of necessary information.
@@ -1043,12 +1025,7 @@ public final class CppModel {
picBuilder.setDwoFile(dwoFile);
picBuilder.setLtoIndexingFile(ltoIndexingFile);
- semantics.finalizeCompileActionBuilder(
- ruleContext,
- picBuilder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ semantics.finalizeCompileActionBuilder(ruleContext, picBuilder);
CppCompileAction picAction = picBuilder.buildOrThrowRuleError(ruleContext);
env.registerAction(picAction);
directOutputs.add(picAction.getOutputFile());
@@ -1116,12 +1093,7 @@ public final class CppModel {
builder.setDwoFile(noPicDwoFile);
builder.setLtoIndexingFile(ltoIndexingFile);
- semantics.finalizeCompileActionBuilder(
- ruleContext,
- builder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ semantics.finalizeCompileActionBuilder(ruleContext, builder);
CppCompileAction compileAction = builder.buildOrThrowRuleError(ruleContext);
env.registerAction(compileAction);
Artifact objectFile = compileAction.getOutputFile();
@@ -1162,12 +1134,7 @@ public final class CppModel {
/* ltoIndexingFile= */ null,
builder.getContext().getCppModuleMap(),
source.getBuildVariables());
- semantics.finalizeCompileActionBuilder(
- ruleContext,
- builder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ semantics.finalizeCompileActionBuilder(ruleContext, builder);
// Make sure this builder doesn't reference ruleContext outside of analysis phase.
CppCompileActionTemplate actionTemplate =
new CppCompileActionTemplate(
@@ -1225,12 +1192,7 @@ public final class CppModel {
/* ltoIndexingFile= */ null,
builder.getContext().getCppModuleMap(),
/* sourceSpecificBuildVariables= */ ImmutableMap.of());
- semantics.finalizeCompileActionBuilder(
- ruleContext,
- builder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ semantics.finalizeCompileActionBuilder(ruleContext, builder);
CppCompileAction action = builder.buildOrThrowRuleError(ruleContext);
env.registerAction(action);
if (addObject) {
@@ -1557,6 +1519,7 @@ public final class CppModel {
builder.setSourceFile(source);
builder.setContext(context);
builder.addEnvironment(ccToolchain.getEnvironment());
+ builder.setCoptsFilter(coptsFilter);
return builder;
}
@@ -1615,12 +1578,7 @@ public final class CppModel {
/* ltoIndexingFile= */ null,
builder.getContext().getCppModuleMap(),
/* sourceSpecificBuildVariables= */ ImmutableMap.of());
- semantics.finalizeCompileActionBuilder(
- ruleContext,
- dBuilder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ semantics.finalizeCompileActionBuilder(ruleContext, dBuilder);
CppCompileAction dAction = dBuilder.buildOrThrowRuleError(ruleContext);
ruleContext.registerAction(dAction);
@@ -1638,12 +1596,7 @@ public final class CppModel {
/* ltoIndexingFile= */ null,
builder.getContext().getCppModuleMap(),
/* sourceSpecificBuildVariables= */ ImmutableMap.of());
- semantics.finalizeCompileActionBuilder(
- ruleContext,
- sdBuilder,
- featureConfiguration.getFeatureSpecification(),
- coptsFilter,
- features);
+ semantics.finalizeCompileActionBuilder(ruleContext, sdBuilder);
CppCompileAction sdAction = sdBuilder.buildOrThrowRuleError(ruleContext);
ruleContext.registerAction(sdAction);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java
index 3331cb1e0f..688f5f1ed1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java
@@ -14,24 +14,15 @@
package com.google.devtools.build.lib.rules.cpp;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration.HeadersCheckingMode;
-import com.google.devtools.build.lib.vfs.PathFragment;
/**
* Pluggable C++ compilation semantics.
*/
public interface CppSemantics {
- /**
- * Returns the "effective source path" of a source file.
- *
- * <p>It is used, among other things, for computing the output path.
- */
- PathFragment getEffectiveSourcePath(Artifact source);
/**
* Called before a C++ compile action is built.
@@ -39,12 +30,7 @@ public interface CppSemantics {
* <p>Gives the semantics implementation the opportunity to change compile actions at the last
* minute.
*/
- void finalizeCompileActionBuilder(
- RuleContext ruleContext,
- CppCompileActionBuilder actionBuilder,
- FeatureSpecification featureSpecification,
- Predicate<String> coptsFilter,
- ImmutableSet<String> features);
+ void finalizeCompileActionBuilder(RuleContext ruleContext, CppCompileActionBuilder actionBuilder);
/**
* Called before {@link CppCompilationContext}s are finalized.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java
index c26180792b..267bb5caab 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java
@@ -18,7 +18,6 @@ import static com.google.devtools.build.lib.rules.objc.ObjcProvider.DYNAMIC_FRAM
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.HEADER;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.STATIC_FRAMEWORK_FILE;
-import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
@@ -32,7 +31,6 @@ import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration.HeadersCheckingMode;
import com.google.devtools.build.lib.rules.cpp.CppFileTypes;
import com.google.devtools.build.lib.rules.cpp.CppSemantics;
-import com.google.devtools.build.lib.rules.cpp.FeatureSpecification;
import com.google.devtools.build.lib.rules.cpp.HeaderDiscovery.DotdPruningMode;
import com.google.devtools.build.lib.rules.cpp.IncludeProcessing;
import com.google.devtools.build.lib.util.FileTypeSet;
@@ -90,17 +88,8 @@ public class ObjcCppSemantics implements CppSemantics {
}
@Override
- public PathFragment getEffectiveSourcePath(Artifact source) {
- return source.getRootRelativePath();
- }
-
- @Override
public void finalizeCompileActionBuilder(
- RuleContext ruleContext,
- CppCompileActionBuilder actionBuilder,
- FeatureSpecification featureSpecification,
- Predicate<String> coptsFilter,
- ImmutableSet<String> features) {
+ RuleContext ruleContext, CppCompileActionBuilder actionBuilder) {
actionBuilder
.setCppConfiguration(ruleContext.getFragment(CppConfiguration.class))
.setActionContext(CppCompileActionContext.class)
@@ -108,7 +97,6 @@ public class ObjcCppSemantics implements CppSemantics {
// including header files, as opposed to just the "compile" filegroup.
.addTransitiveMandatoryInputs(actionBuilder.getToolchain().getCrosstool())
.setShouldScanIncludes(false)
- .setCoptsFilter(coptsFilter)
.addTransitiveMandatoryInputs(objcProvider.get(STATIC_FRAMEWORK_FILE))
.addTransitiveMandatoryInputs(objcProvider.get(DYNAMIC_FRAMEWORK_FILE));
diff --git a/src/main/java/com/google/devtools/build/lib/util/PatternWithEquality.java b/src/main/java/com/google/devtools/build/lib/util/PatternWithEquality.java
deleted file mode 100644
index fa0cb2279c..0000000000
--- a/src/main/java/com/google/devtools/build/lib/util/PatternWithEquality.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2015 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package com.google.devtools.build.lib.util;
-
-import com.google.common.base.Preconditions;
-import java.util.regex.Pattern;
-
-/**
- * Shim to work around the issue that {@link Pattern} doesn't implement equality. Treats pattern as
- * a {@link String} for equality-checking purposes. Thus, if two PatternWithEquality objects are
- * equal, their internal Pattern objects are necessarily equal, although the converse does not hold.
- */
-public final class PatternWithEquality {
- public final Pattern pattern;
-
- public PatternWithEquality(Pattern pattern) {
- this.pattern = Preconditions.checkNotNull(pattern);
- }
-
- @Override
- public int hashCode() {
- return pattern.toString().hashCode();
- }
-
- @Override
- public boolean equals(Object other) {
- return (other instanceof PatternWithEquality)
- && pattern.toString().equals(((PatternWithEquality) other).pattern.toString());
- }
-}