diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java index 474ea556fc..22ddbbfddf 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java @@ -51,7 +51,6 @@ import com.google.devtools.build.lib.rules.cpp.CcToolchainVariables.VariablesExt import com.google.devtools.build.lib.rules.cpp.CppConfiguration.HeadersCheckingMode; import com.google.devtools.build.lib.skylarkbuildapi.cpp.CompilationInfoApi; import com.google.devtools.build.lib.syntax.SkylarkNestedSet; -import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.util.FileTypeSet; import com.google.devtools.build.lib.util.Pair; import com.google.devtools.build.lib.vfs.FileSystemUtils; @@ -232,6 +231,8 @@ public final class CcCompilationHelper { private boolean generateNoPicAction; private boolean generatePicAction; private boolean allowCoverageInstrumentation = true; + private String stripIncludePrefix = null; + private String includePrefix = null; // TODO(plf): Pull out of class. private CcCompilationContext ccCompilationContext; @@ -705,6 +706,18 @@ public final class CcCompilationHelper { return this; } + /** Sets the include prefix to append to the public headers. */ + public CcCompilationHelper setIncludePrefix(@Nullable String includePrefix) { + this.includePrefix = includePrefix; + return this; + } + + /** Sets the include prefix to remove from the public headers. */ + public CcCompilationHelper setStripIncludePrefix(@Nullable String stripIncludePrefix) { + this.stripIncludePrefix = stripIncludePrefix; + return this; + } + public void setAllowCoverageInstrumentation(boolean allowCoverageInstrumentation) { this.allowCoverageInstrumentation = allowCoverageInstrumentation; } @@ -811,33 +824,23 @@ public final class CcCompilationHelper { } private PublicHeaders computePublicHeaders() { - if (!ruleContext.attributes().has("strip_include_prefix", Type.STRING) - || !ruleContext.attributes().has("include_prefix", Type.STRING)) { - return new PublicHeaders( - ImmutableList.copyOf(Iterables.concat(publicHeaders, nonModuleMapHeaders)), - ImmutableList.copyOf(publicHeaders), - null); - } - PathFragment prefix = null; - if (ruleContext.attributes().isAttributeValueExplicitlySpecified("include_prefix")) { - String prefixAttr = ruleContext.attributes().get("include_prefix", Type.STRING); - prefix = PathFragment.create(prefixAttr); - if (PathFragment.containsUplevelReferences(prefixAttr)) { - ruleContext.attributeError("include_prefix", "should not contain uplevel references"); + if (includePrefix != null) { + prefix = PathFragment.create(includePrefix); + if (PathFragment.containsUplevelReferences(includePrefix)) { + ruleContext.ruleError("include prefix should not contain uplevel references"); } if (prefix.isAbsolute()) { - ruleContext.attributeError("include_prefix", "should be a relative path"); + ruleContext.ruleError("include prefix should be a relative path"); } } PathFragment stripPrefix; - if (ruleContext.attributes().isAttributeValueExplicitlySpecified("strip_include_prefix")) { - String stripPrefixAttr = ruleContext.attributes().get("strip_include_prefix", Type.STRING); - if (PathFragment.containsUplevelReferences(stripPrefixAttr)) { - ruleContext.attributeError("strip_include_prefix", "should not contain uplevel references"); + if (stripIncludePrefix != null) { + if (PathFragment.containsUplevelReferences(stripIncludePrefix)) { + ruleContext.ruleError("strip include prefix should not contain uplevel references"); } - stripPrefix = PathFragment.create(stripPrefixAttr); + stripPrefix = PathFragment.create(stripIncludePrefix); if (stripPrefix.isAbsolute()) { stripPrefix = ruleContext |