diff options
author | 2017-02-14 21:21:02 +0000 | |
---|---|---|
committer | 2017-02-15 10:04:33 +0000 | |
commit | d6e66308ae5014bc737789248a8eab73c4b7db51 (patch) | |
tree | 582735b0a0e2d46502b7f93db0f78ebc51a410e3 /src/main/java | |
parent | fee192875bf8bd0923953bf4f71e9b5561e2f224 (diff) |
Avoid putting objc linkopts and copts in Set, as their order and duplicate-args need to be preserved.
(Example: "-iquote foo -iquote bar" is a legitimate series of flags)
--
PiperOrigin-RevId: 147512419
MOS_MIGRATED_REVID=147512419
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/CompilationAttributes.java | 32 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/ObjcVariablesExtension.java | 9 |
2 files changed, 18 insertions, 23 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationAttributes.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationAttributes.java index bbb0493f64..4120af16fb 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationAttributes.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationAttributes.java @@ -47,8 +47,8 @@ final class CompilationAttributes { private final NestedSetBuilder<Artifact> textualHdrs = NestedSetBuilder.stableOrder(); private final NestedSetBuilder<PathFragment> includes = NestedSetBuilder.stableOrder(); private final NestedSetBuilder<PathFragment> sdkIncludes = NestedSetBuilder.stableOrder(); - private final NestedSetBuilder<String> copts = NestedSetBuilder.stableOrder(); - private final NestedSetBuilder<String> linkopts = NestedSetBuilder.stableOrder(); + private final ImmutableList.Builder<String> copts = ImmutableList.builder(); + private final ImmutableList.Builder<String> linkopts = ImmutableList.builder(); private final NestedSetBuilder<CppModuleMap> moduleMapsForDirectDeps = NestedSetBuilder.stableOrder(); private final NestedSetBuilder<SdkFramework> sdkFrameworks = NestedSetBuilder.stableOrder(); @@ -107,16 +107,16 @@ final class CompilationAttributes { /** * Adds compile-time options. */ - public Builder addCopts(NestedSet<String> copts) { - this.copts.addTransitive(copts); + public Builder addCopts(Iterable<String> copts) { + this.copts.addAll(copts); return this; } /** * Adds link-time options. */ - public Builder addLinkopts(NestedSet<String> linkopts) { - this.linkopts.addTransitive(linkopts); + public Builder addLinkopts(Iterable<String> linkopts) { + this.linkopts.addAll(linkopts); return this; } @@ -256,15 +256,11 @@ final class CompilationAttributes { private static void addCompileOptionsFromRuleContext(Builder builder, RuleContext ruleContext) { if (ruleContext.attributes().has("copts", Type.STRING_LIST)) { - NestedSetBuilder<String> copts = NestedSetBuilder.stableOrder(); - copts.addAll(ruleContext.getTokenizedStringListAttr("copts")); - builder.addCopts(copts.build()); + builder.addCopts(ruleContext.getTokenizedStringListAttr("copts")); } if (ruleContext.attributes().has("linkopts", Type.STRING_LIST)) { - NestedSetBuilder<String> linkopts = NestedSetBuilder.stableOrder(); - linkopts.addAll(ruleContext.getTokenizedStringListAttr("linkopts")); - builder.addLinkopts(linkopts.build()); + builder.addLinkopts(ruleContext.getTokenizedStringListAttr("linkopts")); } } @@ -313,8 +309,8 @@ final class CompilationAttributes { private final NestedSet<SdkFramework> weakSdkFrameworks; private final NestedSet<String> sdkDylibs; private final Optional<PathFragment> packageFragment; - private final NestedSet<String> copts; - private final NestedSet<String> linkopts; + private final ImmutableList<String> copts; + private final ImmutableList<String> linkopts; private final NestedSet<CppModuleMap> moduleMapsForDirectDeps; private final boolean enableModules; @@ -327,8 +323,8 @@ final class CompilationAttributes { NestedSet<SdkFramework> weakSdkFrameworks, NestedSet<String> sdkDylibs, Optional<PathFragment> packageFragment, - NestedSet<String> copts, - NestedSet<String> linkopts, + ImmutableList<String> copts, + ImmutableList<String> linkopts, NestedSet<CppModuleMap> moduleMapsForDirectDeps, boolean enableModules) { this.hdrs = hdrs; @@ -419,14 +415,14 @@ final class CompilationAttributes { /** * Returns the compile-time options. */ - public NestedSet<String> copts() { + public ImmutableList<String> copts() { return this.copts; } /** * Returns the link-time options. */ - public NestedSet<String> linkopts() { + public ImmutableList<String> linkopts() { return this.linkopts; } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcVariablesExtension.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcVariablesExtension.java index 9910608a9d..990dc9c3ce 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcVariablesExtension.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcVariablesExtension.java @@ -24,7 +24,6 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; -import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.packages.BuildType; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures; @@ -67,7 +66,7 @@ class ObjcVariablesExtension implements VariablesExtension { private final Set<String> frameworkNames; private final ImmutableList<String> libraryNames; private final ImmutableSet<Artifact> forceLoadArtifacts; - private final NestedSet<String> attributeLinkopts; + private final ImmutableList<String> attributeLinkopts; private final ImmutableSet<VariableCategory> activeVariableCategories; private ObjcVariablesExtension( @@ -80,7 +79,7 @@ class ObjcVariablesExtension implements VariablesExtension { Set<String> frameworkNames, ImmutableList<String> libraryNames, ImmutableSet<Artifact> forceLoadArtifacts, - NestedSet<String> attributeLinkopts, + ImmutableList<String> attributeLinkopts, ImmutableSet<VariableCategory> activeVariableCategories) { this.ruleContext = ruleContext; this.objcProvider = objcProvider; @@ -204,7 +203,7 @@ class ObjcVariablesExtension implements VariablesExtension { private Set<String> frameworkNames; private ImmutableSet<Artifact> forceLoadArtifacts; private ImmutableList<String> libraryNames; - private NestedSet<String> attributeLinkopts; + private ImmutableList<String> attributeLinkopts; private final ImmutableSet.Builder<VariableCategory> activeVariableCategoriesBuilder = ImmutableSet.builder(); @@ -264,7 +263,7 @@ class ObjcVariablesExtension implements VariablesExtension { } /** Sets linkopts arising from rule attributes. */ - public Builder setAttributeLinkopts(NestedSet<String> attributeLinkopts) { + public Builder setAttributeLinkopts(ImmutableList<String> attributeLinkopts) { this.attributeLinkopts = Preconditions.checkNotNull(attributeLinkopts); return this; } |