diff options
Diffstat (limited to 'src')
5 files changed, 62 insertions, 127 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java index df328fb93f..f11e80ae0b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java @@ -756,7 +756,7 @@ public final class CcToolchainProvider extends ToolchainInfo { * Returns link options for the specified flag list, combined with universal options for all * shared libraries (regardless of link staticness). */ - ImmutableList<String> getSharedLibraryLinkOptions(FlagList flags) { + ImmutableList<String> getSharedLibraryLinkOptions(ImmutableList<String> flags) { return toolchainInfo.getSharedLibraryLinkOptions(flags); } @@ -799,33 +799,29 @@ public final class CcToolchainProvider extends ToolchainInfo { } /** Returns linker flags for fully statically linked outputs. */ - FlagList getLegacyFullyStaticLinkFlags(CompilationMode compilationMode, LipoMode lipoMode) { - return new FlagList( - configureAllLegacyLinkOptions(compilationMode, lipoMode, LinkingMode.LEGACY_FULLY_STATIC), - ImmutableList.<String>of()); + ImmutableList<String> getLegacyFullyStaticLinkFlags( + CompilationMode compilationMode, LipoMode lipoMode) { + return configureAllLegacyLinkOptions( + compilationMode, lipoMode, LinkingMode.LEGACY_FULLY_STATIC); } /** Returns linker flags for mostly static linked outputs. */ - FlagList getLegacyMostlyStaticLinkFlags(CompilationMode compilationMode, LipoMode lipoMode) { - return new FlagList( - configureAllLegacyLinkOptions(compilationMode, lipoMode, LinkingMode.STATIC), - ImmutableList.<String>of()); + ImmutableList<String> getLegacyMostlyStaticLinkFlags( + CompilationMode compilationMode, LipoMode lipoMode) { + return configureAllLegacyLinkOptions(compilationMode, lipoMode, LinkingMode.STATIC); } /** Returns linker flags for mostly static shared linked outputs. */ - FlagList getLegacyMostlyStaticSharedLinkFlags( + ImmutableList<String> getLegacyMostlyStaticSharedLinkFlags( CompilationMode compilationMode, LipoMode lipoMode) { - return new FlagList( - configureAllLegacyLinkOptions( - compilationMode, lipoMode, LinkingMode.LEGACY_MOSTLY_STATIC_LIBRARIES), - ImmutableList.<String>of()); + return configureAllLegacyLinkOptions( + compilationMode, lipoMode, LinkingMode.LEGACY_MOSTLY_STATIC_LIBRARIES); } /** Returns linker flags for artifacts that are not fully or mostly statically linked. */ - FlagList getLegacyDynamicLinkFlags(CompilationMode compilationMode, LipoMode lipoMode) { - return new FlagList( - configureAllLegacyLinkOptions(compilationMode, lipoMode, LinkingMode.DYNAMIC), - ImmutableList.of()); + ImmutableList<String> getLegacyDynamicLinkFlags( + CompilationMode compilationMode, LipoMode lipoMode) { + return configureAllLegacyLinkOptions(compilationMode, lipoMode, LinkingMode.DYNAMIC); } /** diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java index 9b1417f003..a1721ca642 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java @@ -173,14 +173,14 @@ public final class CppConfiguration extends BuildConfiguration.Fragment { private final PathFragment nonConfiguredSysroot; private final Label sysrootLabel; - private final FlagList compilerFlags; - private final FlagList cxxFlags; - private final FlagList unfilteredCompilerFlags; + private final ImmutableList<String> compilerFlags; + private final ImmutableList<String> cxxFlags; + private final ImmutableList<String> unfilteredCompilerFlags; private final ImmutableList<String> cOptions; - private final FlagList mostlyStaticLinkFlags; - private final FlagList mostlyStaticSharedLinkFlags; - private final FlagList dynamicLinkFlags; + private final ImmutableList<String> mostlyStaticLinkFlags; + private final ImmutableList<String> mostlyStaticSharedLinkFlags; + private final ImmutableList<String> dynamicLinkFlags; private final ImmutableList<String> copts; private final ImmutableList<String> cxxopts; @@ -227,12 +227,15 @@ public final class CppConfiguration extends BuildConfiguration.Fragment { coptsBuilder.add("-fasynchronous-unwind-tables"); coptsBuilder.add("-DNO_FRAME_POINTER"); } + coptsBuilder.addAll(cppOptions.coptList); - ImmutableList.Builder<String> cxxOptsBuilder = + ImmutableList<String> cxxOpts = ImmutableList.<String>builder() .addAll(cppToolchainInfo.getCxxFlags()) .addAll(cppToolchainInfo.getCxxFlagsByCompilationMode().get(compilationMode)) - .addAll(cppToolchainInfo.getLipoCxxFlags().get(cppOptions.getLipoMode())); + .addAll(cppToolchainInfo.getLipoCxxFlags().get(cppOptions.getLipoMode())) + .addAll(cppOptions.cxxoptList) + .build(); ImmutableList.Builder<String> linkoptsBuilder = ImmutableList.builder(); linkoptsBuilder.addAll(cppOptions.linkoptList); @@ -260,25 +263,16 @@ public final class CppConfiguration extends BuildConfiguration.Fragment { ? cppToolchainInfo.getDefaultSysroot() : params.sysrootLabel.getPackageFragment(), params.sysrootLabel, - new FlagList(coptsBuilder.build(), ImmutableList.copyOf(cppOptions.coptList)), - new FlagList(cxxOptsBuilder.build(), ImmutableList.copyOf(cppOptions.cxxoptList)), - new FlagList( - ImmutableList.copyOf(toolchain.getUnfilteredCxxFlagList()), ImmutableList.of()), + coptsBuilder.build(), + cxxOpts, + ImmutableList.copyOf(toolchain.getUnfilteredCxxFlagList()), ImmutableList.copyOf(cppOptions.conlyoptList), - new FlagList( - cppToolchainInfo.configureAllLegacyLinkOptions( - compilationMode, cppOptions.getLipoMode(), LinkingMode.STATIC), - ImmutableList.of()), - new FlagList( - cppToolchainInfo.configureAllLegacyLinkOptions( - compilationMode, - cppOptions.getLipoMode(), - LinkingMode.LEGACY_MOSTLY_STATIC_LIBRARIES), - ImmutableList.of()), - new FlagList( - cppToolchainInfo.configureAllLegacyLinkOptions( - compilationMode, cppOptions.getLipoMode(), LinkingMode.DYNAMIC), - ImmutableList.of()), + cppToolchainInfo.configureAllLegacyLinkOptions( + compilationMode, cppOptions.getLipoMode(), LinkingMode.STATIC), + cppToolchainInfo.configureAllLegacyLinkOptions( + compilationMode, cppOptions.getLipoMode(), LinkingMode.LEGACY_MOSTLY_STATIC_LIBRARIES), + cppToolchainInfo.configureAllLegacyLinkOptions( + compilationMode, cppOptions.getLipoMode(), LinkingMode.DYNAMIC), ImmutableList.copyOf(cppOptions.coptList), ImmutableList.copyOf(cppOptions.cxxoptList), linkoptsBuilder.build(), @@ -309,13 +303,13 @@ public final class CppConfiguration extends BuildConfiguration.Fragment { Label stlLabel, PathFragment nonConfiguredSysroot, Label sysrootLabel, - FlagList compilerFlags, - FlagList cxxFlags, - FlagList unfilteredCompilerFlags, + ImmutableList<String> compilerFlags, + ImmutableList<String> cxxFlags, + ImmutableList<String> unfilteredCompilerFlags, ImmutableList<String> cOptions, - FlagList mostlyStaticLinkFlags, - FlagList mostlyStaticSharedLinkFlags, - FlagList dynamicLinkFlags, + ImmutableList<String> mostlyStaticLinkFlags, + ImmutableList<String> mostlyStaticSharedLinkFlags, + ImmutableList<String> dynamicLinkFlags, ImmutableList<String> copts, ImmutableList<String> cxxopts, ImmutableList<String> linkOptions, @@ -575,7 +569,7 @@ public final class CppConfiguration extends BuildConfiguration.Fragment { ) @Deprecated public ImmutableList<String> getCompilerOptions(Iterable<String> featuresNotUsedAnymore) { - return compilerFlags.evaluate(); + return compilerFlags; } /** @@ -610,7 +604,7 @@ public final class CppConfiguration extends BuildConfiguration.Fragment { ) @Deprecated public ImmutableList<String> getCxxOptions(Iterable<String> featuresNotUsedAnymore) { - return cxxFlags.evaluate(); + return cxxFlags; } /** @@ -642,11 +636,11 @@ public final class CppConfiguration extends BuildConfiguration.Fragment { @Deprecated ImmutableList<String> getUnfilteredCompilerOptionsDoNotUse(@Nullable PathFragment sysroot) { if (sysroot == null) { - return unfilteredCompilerFlags.evaluate(); + return unfilteredCompilerFlags; } return ImmutableList.<String>builder() .add("--sysroot=" + sysroot) - .addAll(unfilteredCompilerFlags.evaluate()) + .addAll(unfilteredCompilerFlags) .build(); } @@ -763,7 +757,7 @@ public final class CppConfiguration extends BuildConfiguration.Fragment { ? mostlyStaticSharedLinkFlags : dynamicLinkFlags); } else { - return mostlyStaticLinkFlags.evaluate(); + return mostlyStaticLinkFlags; } } @@ -790,7 +784,7 @@ public final class CppConfiguration extends BuildConfiguration.Fragment { if (sharedLib) { return getSharedLibraryLinkOptions(dynamicLinkFlags); } else { - return dynamicLinkFlags.evaluate(); + return dynamicLinkFlags; } } @@ -801,7 +795,7 @@ public final class CppConfiguration extends BuildConfiguration.Fragment { * <p>Deprecated: Use {@link CcToolchainProvider#getSharedLibraryLinkOptions} */ // TODO(b/64384912): Migrate skylark dependants and delete. - private ImmutableList<String> getSharedLibraryLinkOptions(FlagList flags) { + private ImmutableList<String> getSharedLibraryLinkOptions(ImmutableList<String> flags) { return cppToolchainInfo.getSharedLibraryLinkOptions(flags); } 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 b22ec96649..a192983cb0 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 @@ -258,9 +258,8 @@ public class CppHelper { toolchain.getLegacyMostlyStaticLinkFlags( config.getCompilationMode(), config.getLipoMode())); } else { - return toolchain - .getLegacyFullyStaticLinkFlags(config.getCompilationMode(), config.getLipoMode()) - .evaluate(); + return toolchain.getLegacyFullyStaticLinkFlags( + config.getCompilationMode(), config.getLipoMode()); } } @@ -285,9 +284,8 @@ public class CppHelper { : toolchain.getLegacyDynamicLinkFlags( config.getCompilationMode(), config.getLipoMode())); } else { - return toolchain - .getLegacyMostlyStaticLinkFlags(config.getCompilationMode(), config.getLipoMode()) - .evaluate(); + return toolchain.getLegacyMostlyStaticLinkFlags( + config.getCompilationMode(), config.getLipoMode()); } } @@ -307,9 +305,7 @@ public class CppHelper { return toolchain.getSharedLibraryLinkOptions( toolchain.getLegacyDynamicLinkFlags(config.getCompilationMode(), config.getLipoMode())); } else { - return toolchain - .getLegacyDynamicLinkFlags(config.getCompilationMode(), config.getLipoMode()) - .evaluate(); + return toolchain.getLegacyDynamicLinkFlags(config.getCompilationMode(), config.getLipoMode()); } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java index f9aa787622..88c06ad67e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppToolchainInfo.java @@ -77,7 +77,7 @@ public final class CppToolchainInfo { private final String targetLibc; private final String hostSystemName; - private final FlagList dynamicLibraryLinkFlags; + private final ImmutableList<String> dynamicLibraryLinkFlags; private final ImmutableList<String> legacyLinkOptions; private final ImmutableListMultimap<LinkingMode, String> legacyLinkOptionsFromLinkingMode; private final ImmutableListMultimap<LipoMode, String> legacyLinkOptionsFromLipoMode; @@ -103,7 +103,7 @@ public final class CppToolchainInfo { private final ImmutableListMultimap<LipoMode, String> lipoCFlags; private final ImmutableListMultimap<LipoMode, String> lipoCxxFlags; - private final FlagList unfilteredCompilerFlags; + private final ImmutableList<String> unfilteredCompilerFlags; private final boolean supportsFission; private final boolean supportsStartEndLib; @@ -182,9 +182,7 @@ public final class CppToolchainInfo { defaultSysroot, toolchain.getTargetLibc(), toolchain.getHostSystemName(), - new FlagList( - ImmutableList.copyOf(toolchain.getDynamicLibraryLinkerFlagList()), - ImmutableList.of()), + ImmutableList.copyOf(toolchain.getDynamicLibraryLinkerFlagList()), ImmutableList.copyOf(toolchain.getLinkerFlagList()), linkOptionsFromLinkingModeBuilder.build(), computeLinkOptionsFromLipoMode(toolchain), @@ -211,8 +209,7 @@ public final class CppToolchainInfo { cxxFlagsBuilder.build(), lipoCFlagsBuilder.build(), lipoCxxFlagsBuilder.build(), - new FlagList( - ImmutableList.copyOf(toolchain.getUnfilteredCxxFlagList()), ImmutableList.of()), + ImmutableList.copyOf(toolchain.getUnfilteredCxxFlagList()), toolchain.getSupportsFission(), toolchain.getSupportsStartEndLib(), toolchain.getSupportsEmbeddedRuntimes(), @@ -242,7 +239,7 @@ public final class CppToolchainInfo { PathFragment runtimeSysroot, String targetLibc, String hostSystemName, - FlagList dynamicLibraryLinkFlags, + ImmutableList<String> dynamicLibraryLinkFlags, ImmutableList<String> legacyLinkOptions, ImmutableListMultimap<LinkingMode, String> legacyLinkOptionsFromLinkingMode, ImmutableListMultimap<LipoMode, String> legacyLinkOptionsFromLipoMode, @@ -263,7 +260,7 @@ public final class CppToolchainInfo { ImmutableListMultimap<CompilationMode, String> cxxFlagsByCompilationMode, ImmutableListMultimap<LipoMode, String> lipoCFlags, ImmutableListMultimap<LipoMode, String> lipoCxxFlags, - FlagList unfilteredCompilerFlags, + ImmutableList<String> unfilteredCompilerFlags, boolean supportsFission, boolean supportsStartEndLib, boolean supportsEmbeddedRuntimes, @@ -642,11 +639,8 @@ public final class CppToolchainInfo { * Returns link options for the specified flag list, combined with universal options for all * shared libraries (regardless of link staticness). */ - ImmutableList<String> getSharedLibraryLinkOptions(FlagList flags) { - return ImmutableList.<String>builder() - .addAll(flags.evaluate()) - .addAll(dynamicLibraryLinkFlags.evaluate()) - .build(); + ImmutableList<String> getSharedLibraryLinkOptions(ImmutableList<String> flags) { + return ImmutableList.<String>builder().addAll(flags).addAll(dynamicLibraryLinkFlags).build(); } /** @@ -755,11 +749,11 @@ public final class CppToolchainInfo { /** Returns unfiltered compiler options for C++ from this toolchain. */ public ImmutableList<String> getUnfilteredCompilerOptions(@Nullable PathFragment sysroot) { if (sysroot == null) { - return unfilteredCompilerFlags.evaluate(); + return unfilteredCompilerFlags; } return ImmutableList.<String>builder() .add("--sysroot=" + sysroot) - .addAll(unfilteredCompilerFlags.evaluate()) + .addAll(unfilteredCompilerFlags) .build(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FlagList.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FlagList.java deleted file mode 100644 index 7fbdc308fe..0000000000 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FlagList.java +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2017 The Bazel Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.google.devtools.build.lib.rules.cpp; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.ImmutableList; -import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; -import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; -import java.io.Serializable; - -/** Represents a list of c++ tool flags. */ -@AutoCodec -@Immutable -public class FlagList implements Serializable { - private final ImmutableList<String> prefixFlags; - private final ImmutableList<String> suffixFlags; - - @AutoCodec.Instantiator - FlagList( - ImmutableList<String> prefixFlags, - ImmutableList<String> suffixFlags) { - this.prefixFlags = prefixFlags; - this.suffixFlags = suffixFlags; - } - - @VisibleForTesting - ImmutableList<String> evaluate() { - ImmutableList.Builder<String> result = ImmutableList.builder(); - result.addAll(prefixFlags); - result.addAll(suffixFlags); - return result.build(); - } -} |