aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
diff options
context:
space:
mode:
authorGravatar ulfjack <ulfjack@google.com>2017-09-29 08:59:44 -0400
committerGravatar John Cater <jcater@google.com>2017-09-29 12:14:52 -0400
commit078601363a2b814ce20c24ec0451e70214b92078 (patch)
tree8e264a50882957c3a623d079aa2b0987dfef214f /src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
parent3dc2f544d8362091ed33c1c486d64d201e65ee7e (diff)
Move expansion functionality to a new class
Progress on #2475. PiperOrigin-RevId: 170473111
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java29
1 files changed, 15 insertions, 14 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
index e5c871ef8a..6a21ba0b9d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.MiddlemanFactory;
import com.google.devtools.build.lib.actions.ParameterFile;
import com.google.devtools.build.lib.analysis.AnalysisUtils;
+import com.google.devtools.build.lib.analysis.Expander;
import com.google.devtools.build.lib.analysis.FileProvider;
import com.google.devtools.build.lib.analysis.PlatformConfiguration;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
@@ -155,23 +156,22 @@ public class CppHelper {
!ruleContext.getFeatures().contains("no_copts_tokenization");
List<String> tokens = new ArrayList<>();
+ Expander expander = ruleContext.getExpander().withDataExecLocations();
for (String token : input) {
- try {
- // Legacy behavior: tokenize all items.
- if (tokenization) {
- ruleContext.tokenizeAndExpandMakeVars(tokens, attributeName, token);
- } else {
- String exp =
- ruleContext.expandSingleMakeVariable(attributeName, token);
- if (exp != null) {
+ // Legacy behavior: tokenize all items.
+ if (tokenization) {
+ expander.tokenizeAndExpandMakeVars(tokens, attributeName, token);
+ } else {
+ String exp = expander.expandSingleMakeVariable(attributeName, token);
+ if (exp != null) {
+ try {
ShellUtils.tokenize(tokens, exp);
- } else {
- tokens.add(
- ruleContext.expandMakeVariables(attributeName, token));
+ } catch (ShellUtils.TokenizationException e) {
+ ruleContext.attributeError(attributeName, e.getMessage());
}
+ } else {
+ tokens.add(expander.expand(attributeName, token));
}
- } catch (ShellUtils.TokenizationException e) {
- ruleContext.attributeError(attributeName, e.getMessage());
}
}
return ImmutableList.copyOf(tokens);
@@ -202,13 +202,14 @@ public class CppHelper {
public static List<String> expandLinkopts(
RuleContext ruleContext, String attrName, Iterable<String> values) {
List<String> result = new ArrayList<>();
+ Expander expander = ruleContext.getExpander().withDataExecLocations();
for (String value : values) {
if (isLinkoptLabel(value)) {
if (!expandLabel(ruleContext, result, value)) {
ruleContext.attributeError(attrName, "could not resolve label '" + value + "'");
}
} else {
- ruleContext
+ expander
.tokenizeAndExpandMakeVars(
result,
attrName,