aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java34
1 files changed, 21 insertions, 13 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java
index 5f0432ac4a..f35627b6eb 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBase.java
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.FileProvider;
import com.google.devtools.build.lib.analysis.FilesToRunProvider;
import com.google.devtools.build.lib.analysis.MakeVariableExpander.ExpansionException;
+import com.google.devtools.build.lib.analysis.MakeVariableSupplier;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleContext;
@@ -40,6 +41,7 @@ import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.lib.rules.AliasProvider;
import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory;
+import com.google.devtools.build.lib.rules.cpp.CcCommon.CcFlagsSupplier;
import com.google.devtools.build.lib.rules.cpp.CcToolchain;
import com.google.devtools.build.lib.rules.cpp.CppHelper;
import com.google.devtools.build.lib.rules.java.JavaHelper;
@@ -56,7 +58,7 @@ import java.util.regex.Pattern;
public abstract class GenRuleBase implements RuleConfiguredTargetFactory {
private static final Pattern CROSSTOOL_MAKE_VARIABLE =
- Pattern.compile("\\$\\((CC|AR|NM|OBJCOPY|STRIP|GCOVTOOL|CC_FLAGS)\\)");
+ Pattern.compile("\\$\\((CC|CC_FLAGS|AR|NM|OBJCOPY|STRIP|GCOVTOOL)\\)");
private static final Pattern JDK_MAKE_VARIABLE =
Pattern.compile("\\$\\((JAVABASE|JAVA)\\)");
@@ -278,7 +280,11 @@ public abstract class GenRuleBase implements RuleConfiguredTargetFactory {
*/
protected CommandResolverContext createCommandResolverContext(RuleContext ruleContext,
NestedSet<Artifact> resolvedSrcs, NestedSet<Artifact> filesToBuild) {
- return new CommandResolverContext(ruleContext, resolvedSrcs, filesToBuild);
+ return new CommandResolverContext(
+ ruleContext,
+ resolvedSrcs,
+ filesToBuild,
+ ImmutableList.of(new CcFlagsSupplier(ruleContext)));
}
/**
@@ -297,11 +303,13 @@ public abstract class GenRuleBase implements RuleConfiguredTargetFactory {
public CommandResolverContext(
RuleContext ruleContext,
NestedSet<Artifact> resolvedSrcs,
- NestedSet<Artifact> filesToBuild) {
+ NestedSet<Artifact> filesToBuild,
+ Iterable<? extends MakeVariableSupplier> makeVariableSuppliers) {
super(
ruleContext.getMakeVariables(makeVariableAttributes),
ruleContext.getRule().getPackage(),
- ruleContext.getConfiguration());
+ ruleContext.getConfiguration(),
+ makeVariableSuppliers);
this.ruleContext = ruleContext;
this.resolvedSrcs = resolvedSrcs;
this.filesToBuild = filesToBuild;
@@ -312,16 +320,16 @@ public abstract class GenRuleBase implements RuleConfiguredTargetFactory {
}
@Override
- public String lookupMakeVariable(String name) throws ExpansionException {
- if (name.equals("SRCS")) {
+ public String lookupMakeVariable(String variableName) throws ExpansionException {
+ if (variableName.equals("SRCS")) {
return Artifact.joinExecPaths(" ", resolvedSrcs);
- } else if (name.equals("<")) {
+ } else if (variableName.equals("<")) {
return expandSingletonArtifact(resolvedSrcs, "$<", "input file");
- } else if (name.equals("OUTS")) {
+ } else if (variableName.equals("OUTS")) {
return Artifact.joinExecPaths(" ", filesToBuild);
- } else if (name.equals("@")) {
+ } else if (variableName.equals("@")) {
return expandSingletonArtifact(filesToBuild, "$@", "output file");
- } else if (name.equals("@D")) {
+ } else if (variableName.equals("@D")) {
// The output directory. If there is only one filename in outs,
// this expands to the directory containing that file. If there are
// multiple filenames, this variable instead expands to the
@@ -348,14 +356,14 @@ public abstract class GenRuleBase implements RuleConfiguredTargetFactory {
ruleContext.getRule().getLabel().getPackageIdentifier().getSourceRoot();
return dir.getRelative(relPath).getPathString();
}
- } else if (JDK_MAKE_VARIABLE.matcher("$(" + name + ")").find()) {
+ } else if (JDK_MAKE_VARIABLE.matcher("$(" + variableName + ")").find()) {
return new ConfigurationMakeVariableContext(
ruleContext.getMakeVariables(makeVariableAttributes),
ruleContext.getTarget().getPackage(),
ruleContext.getHostConfiguration())
- .lookupMakeVariable(name);
+ .lookupMakeVariable(variableName);
} else {
- return super.lookupMakeVariable(name);
+ return super.lookupMakeVariable(variableName);
}
}