aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xscripts/bootstrap/compile.sh1
-rw-r--r--src/BUILD2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/BUILD1
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java10
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java9
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java7
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java17
-rw-r--r--src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java1
-rw-r--r--tools/cpp/BUILD6
-rw-r--r--[-rwxr-xr-x]tools/cpp/build_interface_so (renamed from src/main/tools/build_interface_so)0
22 files changed, 56 insertions, 92 deletions
diff --git a/scripts/bootstrap/compile.sh b/scripts/bootstrap/compile.sh
index cbfb2462bb..03880a2679 100755
--- a/scripts/bootstrap/compile.sh
+++ b/scripts/bootstrap/compile.sh
@@ -295,7 +295,6 @@ function build_jni() {
build_jni "${ARCHIVE_DIR}/_embedded_binaries"
-cp src/main/tools/build_interface_so ${ARCHIVE_DIR}/_embedded_binaries/build_interface_so
cp src/main/tools/jdk.BUILD ${ARCHIVE_DIR}/_embedded_binaries/jdk.BUILD
cp $OUTPUT_DIR/libblaze.jar ${ARCHIVE_DIR}
diff --git a/src/BUILD b/src/BUILD
index d1887a9939..c00823e641 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -28,7 +28,6 @@ filegroup(
"//src/main/tools:build-runfiles",
"//src/main/tools:process-wrapper",
"//src/main/tools:linux-sandbox",
- "//src/main/tools:build_interface_so",
"//tools/osx:xcode-locator",
] + embedded_tools,
outs = ["install_base_key" + suffix],
@@ -190,7 +189,6 @@ genrule(
"//src/main/tools:process-wrapper",
"//src/main/tools:jdk-support",
"//src/main/tools:linux-sandbox",
- "//src/main/tools:build_interface_so",
"//tools/osx:xcode-locator",
":java-version",
],
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java
index 9f9a655069..3c02666474 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java
@@ -91,11 +91,6 @@ public interface AnalysisEnvironment extends ActionRegistry {
Artifact getFilesetArtifact(PathFragment rootRelativePath, Root root);
/**
- * Returns the artifact for the specified tool.
- */
- Artifact getEmbeddedToolArtifact(String embeddedPath);
-
- /**
* Returns the middleman factory associated with the build.
*/
// TODO(bazel-team): remove this method and replace it with delegate methods.
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index 10a9216ae5..1f12d2cc0b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -35,7 +35,6 @@ import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.ArtifactFactory;
import com.google.devtools.build.lib.actions.ArtifactOwner;
import com.google.devtools.build.lib.actions.Root;
-import com.google.devtools.build.lib.analysis.config.BinTools;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
@@ -1083,14 +1082,14 @@ public class BuildView {
@VisibleForTesting
public RuleContext getRuleContextForTesting(
ConfiguredTarget target, StoredEventHandler eventHandler,
- BuildConfigurationCollection configurations, BinTools binTools)
+ BuildConfigurationCollection configurations)
throws EvalException, InvalidConfigurationException, InterruptedException {
BuildConfiguration targetConfig = target.getConfiguration();
CachingAnalysisEnvironment env =
new CachingAnalysisEnvironment(getArtifactFactory(),
new ConfiguredTargetKey(target.getLabel(), targetConfig),
/*isSystemEnv=*/false, targetConfig.extendedSanityChecks(), eventHandler,
- /*skyframeEnv=*/null, targetConfig.isActionsEnabled(), binTools);
+ /*skyframeEnv=*/null, targetConfig.isActionsEnabled());
return getRuleContextForTesting(eventHandler, target, env, configurations);
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java
index 5aed23d0f9..7a768c94ca 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java
@@ -26,7 +26,6 @@ import com.google.devtools.build.lib.actions.Root;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoCollection;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory.BuildInfoKey;
-import com.google.devtools.build.lib.analysis.config.BinTools;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.events.StoredEventHandler;
@@ -82,7 +81,6 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment {
private EventHandler errorEventListener;
private SkyFunction.Environment skyframeEnv;
private Map<Artifact, String> artifacts;
- private final BinTools binTools;
/**
* The list of actions registered by the configured target this analysis environment is
@@ -92,8 +90,8 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment {
public CachingAnalysisEnvironment(ArtifactFactory artifactFactory,
ArtifactOwner owner, boolean isSystemEnv, boolean extendedSanityChecks,
- EventHandler errorEventListener, SkyFunction.Environment env, boolean allowRegisteringActions,
- BinTools binTools) {
+ EventHandler errorEventListener, SkyFunction.Environment env,
+ boolean allowRegisteringActions) {
this.artifactFactory = artifactFactory;
this.owner = Preconditions.checkNotNull(owner);
this.isSystemEnv = isSystemEnv;
@@ -101,7 +99,6 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment {
this.errorEventListener = errorEventListener;
this.skyframeEnv = env;
this.allowRegisteringActions = allowRegisteringActions;
- this.binTools = Preconditions.checkNotNull(binTools);
middlemanFactory = new MiddlemanFactory(artifactFactory, this);
artifacts = new HashMap<>();
}
@@ -250,12 +247,6 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment {
}
@Override
- public Artifact getEmbeddedToolArtifact(String embeddedPath) {
- Preconditions.checkState(enabled);
- return binTools.getEmbeddedArtifact(embeddedPath, artifactFactory);
- }
-
- @Override
public void registerAction(ActionAnalysisMetadata... actions) {
Preconditions.checkState(enabled);
if (allowRegisteringActions) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
index 16408d17ab..5ff16981f1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
@@ -199,8 +199,6 @@ public class CcToolchain implements RuleConfiguredTargetFactory {
"FDO_DIR", cppConfiguration.getFdoInstrument().getPathString()));
}
- Artifact linkDynamicLibraryTool = getLinkDynamicLibraryTool(ruleContext);
-
CcToolchainProvider provider =
new CcToolchainProvider(
cppConfiguration,
@@ -210,6 +208,7 @@ public class CcToolchain implements RuleConfiguredTargetFactory {
strip,
objcopy,
fullInputsForLink(ruleContext, link),
+ ruleContext.getPrerequisiteArtifact("$interface_library_builder", Mode.HOST),
dwp,
libcLink,
staticRuntimeLinkInputs,
@@ -223,7 +222,7 @@ public class CcToolchain implements RuleConfiguredTargetFactory {
getBuildVariables(ruleContext),
getBuiltinIncludes(ruleContext),
coverageEnvironment.build(),
- linkDynamicLibraryTool,
+ ruleContext.getPrerequisiteArtifact("$link_dynamic_library_tool", Mode.HOST),
getEnvironment(ruleContext));
RuleConfiguredTargetBuilder builder =
new RuleConfiguredTargetBuilder(ruleContext)
@@ -269,10 +268,6 @@ public class CcToolchain implements RuleConfiguredTargetFactory {
return builder.build();
}
- private Artifact getLinkDynamicLibraryTool(RuleContext ruleContext) {
- return ruleContext.getPrerequisiteArtifact("$link_dynamic_library_tool", Mode.TARGET);
- }
-
private ImmutableList<Artifact> getBuiltinIncludes(RuleContext ruleContext) {
ImmutableList.Builder<Artifact> result = ImmutableList.builder();
for (Artifact artifact : inputsForLibc(ruleContext)) {
@@ -308,11 +303,8 @@ public class CcToolchain implements RuleConfiguredTargetFactory {
return NestedSetBuilder.<Artifact>stableOrder()
.addTransitive(link)
.addTransitive(AnalysisUtils.getMiddlemanFor(ruleContext, ":libc_top"))
- .add(getLinkDynamicLibraryTool(ruleContext))
- .add(
- ruleContext
- .getAnalysisEnvironment()
- .getEmbeddedToolArtifact(CppRuleClasses.BUILD_INTERFACE_SO))
+ .add(ruleContext.getPrerequisiteArtifact("$interface_library_builder", Mode.HOST))
+ .add(ruleContext.getPrerequisiteArtifact("$link_dynamic_library_tool", Mode.HOST))
.build();
}
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 4145ebdede..8f2f7679fa 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
@@ -43,6 +43,7 @@ public final class CcToolchainProvider implements TransitiveInfoProvider {
NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
+ null,
NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
@@ -66,6 +67,7 @@ public final class CcToolchainProvider implements TransitiveInfoProvider {
private final NestedSet<Artifact> strip;
private final NestedSet<Artifact> objCopy;
private final NestedSet<Artifact> link;
+ private final Artifact interfaceSoBuilder;
private final NestedSet<Artifact> dwp;
private final NestedSet<Artifact> libcLink;
private final NestedSet<Artifact> staticRuntimeLinkInputs;
@@ -90,6 +92,7 @@ public final class CcToolchainProvider implements TransitiveInfoProvider {
NestedSet<Artifact> strip,
NestedSet<Artifact> objCopy,
NestedSet<Artifact> link,
+ Artifact interfaceSoBuilder,
NestedSet<Artifact> dwp,
NestedSet<Artifact> libcLink,
NestedSet<Artifact> staticRuntimeLinkInputs,
@@ -112,6 +115,7 @@ public final class CcToolchainProvider implements TransitiveInfoProvider {
this.strip = Preconditions.checkNotNull(strip);
this.objCopy = Preconditions.checkNotNull(objCopy);
this.link = Preconditions.checkNotNull(link);
+ this.interfaceSoBuilder = interfaceSoBuilder;
this.dwp = Preconditions.checkNotNull(dwp);
this.libcLink = Preconditions.checkNotNull(libcLink);
this.staticRuntimeLinkInputs = Preconditions.checkNotNull(staticRuntimeLinkInputs);
@@ -291,4 +295,11 @@ public final class CcToolchainProvider implements TransitiveInfoProvider {
public Artifact getLinkDynamicLibraryTool() {
return linkDynamicLibraryTool;
}
+
+ /**
+ * Returns the tool that builds interface libraries from dynamic libraries.
+ */
+ public Artifact getInterfaceSoBuilder() {
+ return interfaceSoBuilder;
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java
index 786add8315..877865d9f4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainRule.java
@@ -76,7 +76,14 @@ public final class CcToolchainRule implements RuleDefinition {
.add(attr("supports_param_files", BOOLEAN).value(true))
.add(attr("supports_header_parsing", BOOLEAN).value(false))
.add(
+ attr("$interface_library_builder", LABEL)
+ .cfg(HOST)
+ .singleArtifact()
+ .value(env.getToolsLabel("//tools/cpp:interface_library_builder")))
+ .add(
attr("$link_dynamic_library_tool", LABEL)
+ .cfg(HOST)
+ .singleArtifact()
.value(env.getToolsLabel("//tools/cpp:link_dynamic_library")))
// TODO(bazel-team): Should be using the TARGET configuration.
.add(attr(":libc_top", LABEL).cfg(HOST).value(LIBC_TOP))
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 9441fbe6fd..1db3f3af5e 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
@@ -1281,8 +1281,9 @@ public class CppConfiguration extends BuildConfiguration.Fragment {
}
/**
- * Returns whether build_interface_so can build interface shared objects for this toolchain.
- * Should be true if this toolchain generates ELF objects.
+ * Returns whether this toolchain supports interface shared objects.
+ *
+ * <p>Should be true if this toolchain generates ELF objects.
*/
public boolean supportsInterfaceSharedObjects() {
return supportsInterfaceSharedObjects;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
index d1fed5de30..3e0b716b58 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
@@ -188,7 +188,7 @@ public class CppLinkActionBuilder {
* @param ruleContext the rule that owns the action
* @param output the output artifact
* @param toolchain the C++ toolchain provider
- * @param the C++ FDO optimization support
+ * @param fdoSupport the C++ FDO optimization support
*/
public CppLinkActionBuilder(RuleContext ruleContext, Artifact output,
CcToolchainProvider toolchain, FdoSupport fdoSupport) {
@@ -208,7 +208,7 @@ public class CppLinkActionBuilder {
* @param output the output artifact
* @param configuration build configuration
* @param toolchain C++ toolchain provider
- * @param the C++ FDO optimization support
+ * @param fdoSupport the C++ FDO optimization support
*/
public CppLinkActionBuilder(
RuleContext ruleContext,
@@ -228,7 +228,7 @@ public class CppLinkActionBuilder {
* @param configuration the configuration used to determine the tool chain and the default link
* options
* @param toolchain the C++ toolchain provider
- * @param the C++ FDO optimization support
+ * @param fdoSupport the C++ FDO optimization support
*/
private CppLinkActionBuilder(
@Nullable RuleContext ruleContext,
@@ -258,7 +258,7 @@ public class CppLinkActionBuilder {
* @param linkContext an immutable CppLinkAction.Context from the original builder
* @param configuration build configuration
* @param toolchain the C++ toolchain provider
- * @param the C++ FDO optimization support
+ * @param fdoSupport the C++ FDO optimization support
*/
public CppLinkActionBuilder(
RuleContext ruleContext,
@@ -362,10 +362,6 @@ public class CppLinkActionBuilder {
return this.linkstampOptions;
}
- protected Artifact getInterfaceSoBuilder() {
- return analysisEnvironment.getEmbeddedToolArtifact(CppRuleClasses.BUILD_INTERFACE_SO);
- }
-
/**
* Returns command line options for this link action.
*/
@@ -627,7 +623,7 @@ public class CppLinkActionBuilder {
paramFile,
thinltoParamFile,
PathFragment.EMPTY_FRAGMENT,
- getInterfaceSoBuilder(),
+ toolchain.getInterfaceSoBuilder(),
interfaceOutput);
variablesExtension.addVariables(buildVariablesBuilder);
for (VariablesExtension extraVariablesExtension : variablesExtensions) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java
index bb22ec2036..9ad6ba3fa1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java
@@ -125,11 +125,6 @@ public class CppRuleClasses {
/**
- * Path of the build_interface_so script in the Blaze binary.
- */
- public static final String BUILD_INTERFACE_SO = "build_interface_so";
-
- /**
* A string constant for the parse_headers feature.
*/
public static final String PARSE_HEADERS = "parse_headers";
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
index c84cf2726a..0e2c828d82 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
@@ -40,7 +40,6 @@ import com.google.devtools.build.lib.analysis.LabelAndConfiguration;
import com.google.devtools.build.lib.analysis.ViewCreationFailedException;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory.BuildInfoKey;
-import com.google.devtools.build.lib.analysis.config.BinTools;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
@@ -91,7 +90,6 @@ public final class SkyframeBuildView {
private final ConfiguredTargetFactory factory;
private final ArtifactFactory artifactFactory;
private final SkyframeExecutor skyframeExecutor;
- private final BinTools binTools;
private boolean enableAnalysis = false;
// This hack allows us to see when a configured target has been invalidated, and thus when the set
@@ -126,13 +124,11 @@ public final class SkyframeBuildView {
private boolean skyframeAnalysisWasDiscarded;
public SkyframeBuildView(BlazeDirectories directories,
- SkyframeExecutor skyframeExecutor, BinTools binTools,
- ConfiguredRuleClassProvider ruleClassProvider) {
+ SkyframeExecutor skyframeExecutor, ConfiguredRuleClassProvider ruleClassProvider) {
this.factory = new ConfiguredTargetFactory(ruleClassProvider);
this.artifactFactory = new ArtifactFactory(
directories.getExecRoot().getParentDirectory(), directories.getRelativeOutputPath());
this.skyframeExecutor = skyframeExecutor;
- this.binTools = binTools;
this.ruleClassProvider = ruleClassProvider;
}
@@ -468,7 +464,7 @@ public final class SkyframeBuildView {
boolean allowRegisteringActions = config == null || config.isActionsEnabled();
return new CachingAnalysisEnvironment(
artifactFactory, owner, isSystemEnv, extendedSanityChecks, eventHandler, env,
- allowRegisteringActions, binTools);
+ allowRegisteringActions);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index e587f8f135..1a04d15b8c 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -331,7 +331,6 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
this.skyframeBuildView = new SkyframeBuildView(
directories,
this,
- binTools,
(ConfiguredRuleClassProvider) ruleClassProvider);
this.artifactFactory.set(skyframeBuildView.getArtifactFactory());
this.externalFilesHelper = new ExternalFilesHelper(
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index 7f26b3e773..c7219ae45e 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -49,7 +49,6 @@ filegroup(
testonly = 1,
data = [
"//src/main/tools:build-runfiles",
- "//src/main/tools:build_interface_so",
"//src/main/tools:linux-sandbox",
"//src/main/tools:process-wrapper",
],
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java
index 664a516101..50e591b672 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java
@@ -139,11 +139,6 @@ public final class AnalysisTestUtil {
}
@Override
- public Artifact getEmbeddedToolArtifact(String embeddedPath) {
- return original.getEmbeddedToolArtifact(embeddedPath);
- }
-
- @Override
public MiddlemanFactory getMiddlemanFactory() {
return original.getMiddlemanFactory();
}
@@ -316,11 +311,6 @@ public final class AnalysisTestUtil {
}
@Override
- public Artifact getEmbeddedToolArtifact(String embeddedPath) {
- return null;
- }
-
- @Override
public Artifact getConstantMetadataArtifact(PathFragment rootRelativePath, Root root) {
return null;
}
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index 72b756d59d..0e68cfaac7 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -467,7 +467,7 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
protected CachingAnalysisEnvironment getTestAnalysisEnvironment() {
return new CachingAnalysisEnvironment(view.getArtifactFactory(),
ArtifactOwner.NULL_OWNER, /*isSystemEnv=*/true, /*extendedSanityChecks*/false, reporter,
- /*skyframeEnv=*/ null, /*actionsEnabled=*/true, binTools);
+ /*skyframeEnv=*/ null, /*actionsEnabled=*/true);
}
/**
@@ -567,7 +567,7 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
reporter.handle(e);
}
};
- return view.getRuleContextForTesting(target, eventHandler, masterConfig, binTools);
+ return view.getRuleContextForTesting(target, eventHandler, masterConfig);
}
/**
@@ -1630,11 +1630,6 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
}
@Override
- public Artifact getEmbeddedToolArtifact(String embeddedPath) {
- return null;
- }
-
- @Override
public Artifact getConstantMetadataArtifact(PathFragment rootRelativePath, Root root) {
throw new UnsupportedOperationException();
}
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
index cc063b146a..9eb703cf99 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
@@ -139,6 +139,10 @@ public final class BazelMockCcSupport extends MockCcSupport {
" objcopy_files = ':empty', static_runtime_libs = [':empty'], strip_files = ':empty',",
")",
"filegroup(",
+ " name = 'interface_library_builder',",
+ " srcs = ['build_interface_so'],",
+ ")",
+ "filegroup(",
" name = 'link_dynamic_library',",
" srcs = ['link_dynamic_library.sh'],",
")");
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java
index 1441289562..80dceea4d2 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java
@@ -44,6 +44,7 @@ public abstract class MockCcSupport {
String pathString = artifact.getExecPathString();
return !pathString.startsWith("third_party/crosstool/")
&& !pathString.startsWith("tools/cpp/link_dynamic_library")
+ && !pathString.startsWith("tools/cpp/build_interface_so")
&& !(pathString.contains("/internal/_middlemen") && basename.contains("crosstool"))
&& !pathString.startsWith("_bin/build_interface_so")
&& !pathString.endsWith(".cppmap");
@@ -567,13 +568,19 @@ public abstract class MockCcSupport {
"alias(name='toolchain', actual='//third_party/crosstool')",
"cc_library(name = 'malloc')",
"filegroup(",
+ " name = 'interface_library_builder',",
+ " srcs = ['build_interface_so'],",
+ ")",
+ "filegroup(",
" name = 'link_dynamic_library',",
" srcs = ['link_dynamic_library.sh'],",
")");
if (config.isRealFileSystem()) {
config.linkTool("tools/cpp/link_dynamic_library.sh");
+ config.linkTool("tools/cpp/build_interface_so");
} else {
config.create("tools/cpp/link_dynamic_library.sh", "");
+ config.create("tools/cpp/build_interface_so", "");
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java
index 2b678f0a47..c6cf10c439 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java
@@ -71,11 +71,6 @@ public class CppLinkActionTest extends BuildViewTestCase {
}
@Override
- public Artifact getEmbeddedToolArtifact(String embeddedPath) {
- return scratchArtifact("tools/interface_so_builder");
- }
-
- @Override
public Artifact getDerivedArtifact(PathFragment rootRelativePath, Root root) {
return CppLinkActionTest.this.getDerivedArtifact(
rootRelativePath, root, ActionsTestUtil.NULL_ARTIFACT_OWNER);
@@ -231,7 +226,6 @@ public class CppLinkActionTest extends BuildViewTestCase {
final Artifact dynamicOutputFile = getBinArtifactWithNoOwner(dynamicOutputPath.getPathString());
final Artifact oFile = getSourceArtifact("cc/a.o");
final Artifact oFile2 = getSourceArtifact("cc/a2.o");
- final Artifact interfaceSoBuilder = getBinArtifactWithNoOwner("foo/build_interface_so");
final FeatureConfiguration featureConfiguration = getMockFeatureConfiguration();
ActionTester.runTest(
@@ -246,10 +240,6 @@ public class CppLinkActionTest extends BuildViewTestCase {
(i & 2) == 0 ? dynamicOutputFile : staticOutputFile,
CppHelper.getToolchain(ruleContext, ":cc_toolchain"),
CppHelper.getFdoSupport(ruleContext, ":cc_toolchain").getFdoSupport()) {
- @Override
- protected Artifact getInterfaceSoBuilder() {
- return interfaceSoBuilder;
- }
};
builder.addCompilationInputs(
(i & 1) == 0 ? ImmutableList.of(oFile) : ImmutableList.of(oFile2));
@@ -284,7 +274,6 @@ public class CppLinkActionTest extends BuildViewTestCase {
final Artifact dynamicOutputFile = getBinArtifactWithNoOwner(dynamicOutputPath.getPathString());
final Artifact oFile = getSourceArtifact("cc/a.o");
final Artifact oFile2 = getSourceArtifact("cc/a2.o");
- final Artifact interfaceSoBuilder = getBinArtifactWithNoOwner("foo/build_interface_so");
final FeatureConfiguration featureConfiguration = getMockFeatureConfiguration();
ActionTester.runTest(
@@ -299,10 +288,6 @@ public class CppLinkActionTest extends BuildViewTestCase {
(i & 2) == 0 ? staticOutputFile : dynamicOutputFile,
CppHelper.getToolchain(ruleContext, ":cc_toolchain"),
CppHelper.getFdoSupport(ruleContext, ":cc_toolchain").getFdoSupport()) {
- @Override
- protected Artifact getInterfaceSoBuilder() {
- return interfaceSoBuilder;
- }
};
builder.addCompilationInputs(
(i & 1) == 0 ? ImmutableList.of(oFile) : ImmutableList.of(oFile2));
@@ -533,7 +518,7 @@ public class CppLinkActionTest extends BuildViewTestCase {
assertThat(commandLine).hasSize(6);
assertThat(commandLine.get(0)).endsWith("custom/crosstool/scripts/link_dynamic_library.sh");
assertThat(commandLine.get(1)).isEqualTo("yes");
- assertThat(commandLine.get(2)).isEqualTo("tools/interface_so_builder");
+ assertThat(commandLine.get(2)).endsWith("tools/cpp/build_interface_so");
assertThat(commandLine.get(3)).endsWith("foo.so");
assertThat(commandLine.get(4)).isEqualTo("FakeInterfaceOutput.ifso");
assertThat(commandLine.get(5)).isEqualTo("dynamic_library_linker_tool");
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java b/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java
index 815b4f0889..3f71f6fe42 100644
--- a/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java
+++ b/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java
@@ -31,7 +31,6 @@ public class TestConstants {
* A list of all embedded binaries that go into the regular Bazel binary.
*/
public static final ImmutableList<String> EMBEDDED_TOOLS = ImmutableList.of(
- "build_interface_so",
"build-runfiles",
"linux-sandbox",
"process-wrapper",
diff --git a/tools/cpp/BUILD b/tools/cpp/BUILD
index c7df6cfc70..6dd2a6052f 100644
--- a/tools/cpp/BUILD
+++ b/tools/cpp/BUILD
@@ -190,6 +190,12 @@ filegroup(
)
filegroup(
+ name = "interface_library_builder",
+ srcs = ["build_interface_so"],
+ visibility = ["//visibility:public"],
+)
+
+filegroup(
name = "link_dynamic_library",
srcs = ["link_dynamic_library.sh"],
)
diff --git a/src/main/tools/build_interface_so b/tools/cpp/build_interface_so
index 626e707c6c..626e707c6c 100755..100644
--- a/src/main/tools/build_interface_so
+++ b/tools/cpp/build_interface_so