diff options
author | 2017-09-29 08:59:44 -0400 | |
---|---|---|
committer | 2017-09-29 12:14:52 -0400 | |
commit | 078601363a2b814ce20c24ec0451e70214b92078 (patch) | |
tree | 8e264a50882957c3a623d079aa2b0987dfef214f /src/main/java/com/google/devtools/build/lib/rules/cpp | |
parent | 3dc2f544d8362091ed33c1c486d64d201e65ee7e (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')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java | 6 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java | 29 |
2 files changed, 18 insertions, 17 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java index 36278ef9c9..2bd0e14767 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java @@ -353,7 +353,7 @@ public final class CcCommon { if (!ruleContext.getRule().isAttrDefined(NO_COPTS_ATTRIBUTE, Type.STRING)) { return null; } - String nocoptsAttr = ruleContext.expandedMakeVariables(NO_COPTS_ATTRIBUTE); + String nocoptsAttr = ruleContext.getExpander().expand(NO_COPTS_ATTRIBUTE); try { return Pattern.compile(nocoptsAttr); } catch (PatternSyntaxException e) { @@ -388,7 +388,7 @@ public final class CcCommon { */ public List<String> getDefines() { List<String> defines = new ArrayList<>(); - for (String define : ruleContext.expandedMakeVariablesList(DEFINES_ATTRIBUTE)) { + for (String define : ruleContext.getExpander().list(DEFINES_ATTRIBUTE)) { List<String> tokens = new ArrayList<>(); try { ShellUtils.tokenize(tokens, define); @@ -447,7 +447,7 @@ public final class CcCommon { List<PathFragment> result = new ArrayList<>(); PackageIdentifier packageIdentifier = ruleContext.getLabel().getPackageIdentifier(); PathFragment packageFragment = packageIdentifier.getPathUnderExecRoot(); - for (String includesAttr : ruleContext.expandedMakeVariablesList("includes")) { + for (String includesAttr : ruleContext.getExpander().list("includes")) { if (includesAttr.startsWith("/")) { ruleContext.attributeWarning("includes", "ignoring invalid absolute path '" + includesAttr + "'"); 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, |