diff options
author | 2017-01-31 20:23:00 +0000 | |
---|---|---|
committer | 2017-02-01 08:55:26 +0000 | |
commit | 92721884c5e7b990552d444588cb00dd6ebfe2a4 (patch) | |
tree | 9840a38a4ab7e528e7ac5b0d153969942dc42e24 /src/main/java/com/google/devtools/build/lib/rules | |
parent | 45da6c7b9775abe83057add6f20162adeb5ca76c (diff) |
Remove apple_dynamic_library rule.
--
PiperOrigin-RevId: 146150539
MOS_MIGRATED_REVID=146150539
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
3 files changed, 0 insertions, 186 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java index 432c405741..86620b4f2d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java @@ -86,7 +86,6 @@ public class AppleConfiguration extends BuildConfiguration.Fragment { public static final ImmutableList<String> APPLE_CROSSTOOL_RULE_CLASSES = ImmutableList.of( "apple_binary", - "apple_dynamic_library", "apple_static_library", "apple_watch_extension_binary", "experimental_objc_library", diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicLibrary.java deleted file mode 100644 index 9704fa9831..0000000000 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicLibrary.java +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2016 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.objc; - -import static com.google.devtools.build.lib.rules.objc.ObjcProvider.MULTI_ARCH_DYNAMIC_LIBRARIES; -import static com.google.devtools.build.lib.rules.objc.ObjcRuleClasses.DylibDependingRule.DYLIBS_ATTR_NAME; - -import com.google.common.collect.ImmutableListMultimap; -import com.google.common.collect.ImmutableSet; -import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.analysis.ConfiguredTarget; -import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; -import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder; -import com.google.devtools.build.lib.analysis.RuleContext; -import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; -import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; -import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; -import com.google.devtools.build.lib.rules.apple.AppleConfiguration; -import com.google.devtools.build.lib.rules.apple.Platform; -import com.google.devtools.build.lib.rules.apple.Platform.PlatformType; -import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider; -import com.google.devtools.build.lib.rules.objc.CompilationSupport.ExtraLinkArgs; - -import java.util.Map; -import java.util.Set; - -/** - * Implementation for the "apple_dynamic_library" rule. - */ -public class AppleDynamicLibrary implements RuleConfiguredTargetFactory { - - @Override - public final ConfiguredTarget create(RuleContext ruleContext) - throws InterruptedException, RuleErrorException { - PlatformType platformType = MultiArchSplitTransitionProvider.getPlatformType(ruleContext); - AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class); - - Platform platform = appleConfiguration.getMultiArchPlatform(platformType); - ImmutableListMultimap<BuildConfiguration, ObjcProvider> configurationToNonPropagatedObjcMap = - ruleContext.getPrerequisitesByConfiguration("non_propagated_deps", Mode.SPLIT, - ObjcProvider.class); - ImmutableListMultimap<BuildConfiguration, TransitiveInfoCollection> configToDepsCollectionMap = - ruleContext.getPrerequisitesByConfiguration("deps", Mode.SPLIT); - Iterable<ObjcProvider> dylibProviders = - ruleContext.getPrerequisites(DYLIBS_ATTR_NAME, Mode.TARGET, ObjcProvider.class); - Iterable<ObjcProtoProvider> dylibProtoProviders = - ruleContext.getPrerequisites(DYLIBS_ATTR_NAME, Mode.TARGET, ObjcProtoProvider.class); - Set<BuildConfiguration> childConfigurations = getChildConfigurations(ruleContext); - Artifact outputArtifact = - ObjcRuleClasses.intermediateArtifacts(ruleContext).combinedArchitectureDylib(); - - MultiArchBinarySupport multiArchBinarySupport = new MultiArchBinarySupport(ruleContext); - - Map<BuildConfiguration, ObjcProvider> objcProviderByDepConfiguration = - multiArchBinarySupport.objcProviderByDepConfiguration( - childConfigurations, - configToDepsCollectionMap, - configurationToNonPropagatedObjcMap, - dylibProviders, - dylibProtoProviders); - - multiArchBinarySupport.registerActions( - platform, - new ExtraLinkArgs("-dynamiclib"), - objcProviderByDepConfiguration, - ImmutableSet.<Artifact>of(), - configToDepsCollectionMap, - outputArtifact); - - NestedSetBuilder<Artifact> filesToBuild = - NestedSetBuilder.<Artifact>stableOrder().add(outputArtifact); - RuleConfiguredTargetBuilder targetBuilder = - ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build()); - - ObjcProvider.Builder objcProviderBuilder = new ObjcProvider.Builder(); - for (ObjcProvider objcProvider : objcProviderByDepConfiguration.values()) { - objcProviderBuilder.addTransitiveAndPropagate(objcProvider); - } - objcProviderBuilder.add(MULTI_ARCH_DYNAMIC_LIBRARIES, outputArtifact); - - targetBuilder.addProvider(ObjcProvider.class, objcProviderBuilder.build()); - return targetBuilder.build(); - } - - private Set<BuildConfiguration> getChildConfigurations(RuleContext ruleContext) { - // This is currently a hack to obtain all child configurations regardless of the attribute - // values of this rule -- this rule does not currently use the actual info provided by - // this attribute. b/28403953 tracks cc toolchain usage. - ImmutableListMultimap<BuildConfiguration, CcToolchainProvider> configToProvider = - ruleContext.getPrerequisitesByConfiguration(":cc_toolchain", Mode.SPLIT, - CcToolchainProvider.class); - - return configToProvider.keySet(); - } -} diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicLibraryRule.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicLibraryRule.java deleted file mode 100644 index dfd276dcce..0000000000 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicLibraryRule.java +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2016 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.objc; - -import static com.google.devtools.build.lib.packages.ImplicitOutputsFunction.fromTemplates; - -import com.google.devtools.build.lib.analysis.BaseRuleClasses; -import com.google.devtools.build.lib.analysis.RuleDefinition; -import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; -import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplicitOutputsFunction; -import com.google.devtools.build.lib.packages.RuleClass; -import com.google.devtools.build.lib.packages.RuleClass.Builder; -import com.google.devtools.build.lib.rules.apple.AppleConfiguration; - -/** - * Rule definition for apple_dynamic_library. - */ -// TODO(b/33077308): Remove this rule. -public class AppleDynamicLibraryRule implements RuleDefinition { - - /** - * Template for the fat dynamic library output (using Apple's "lipo" tool to combine dynamic - * libraries of multiple architectures). - */ - private static final SafeImplicitOutputsFunction LIPO_DYLIB = fromTemplates("%{name}_lipo.dylib"); - - @Override - public RuleClass build(Builder builder, RuleDefinitionEnvironment env) { - MultiArchSplitTransitionProvider splitTransitionProvider = - new MultiArchSplitTransitionProvider(); - return builder - .requiresConfigurationFragments( - ObjcConfiguration.class, J2ObjcConfiguration.class, AppleConfiguration.class) - .override(builder.copy("deps").cfg(splitTransitionProvider)) - .override(builder.copy("non_propagated_deps").cfg(splitTransitionProvider)) - /*<!-- #BLAZE_RULE(apple_dynamic_library).IMPLICIT_OUTPUTS --> - <ul> - <li><code><var>name</var>_lipo.dylib</code>: the 'lipo'ed potentially multi-architecture - dynamic library. All transitive dependencies and <code>srcs</code> are linked.</li> - </ul> - <!-- #END_BLAZE_RULE.IMPLICIT_OUTPUTS -->*/ - .setImplicitOutputsFunction(LIPO_DYLIB) - .cfg(AppleCrosstoolTransition.APPLE_CROSSTOOL_TRANSITION) - .build(); - } - - @Override - public Metadata getMetadata() { - return RuleDefinition.Metadata.builder() - .name("apple_dynamic_library") - .factoryClass(AppleDynamicLibrary.class) - .ancestors(BaseRuleClasses.BaseRule.class, ObjcRuleClasses.LinkingRule.class, - ObjcRuleClasses.MultiArchPlatformRule.class, ObjcRuleClasses.SimulatorRule.class, - ObjcRuleClasses.DylibDependingRule.class) - .build(); - } -} - -/*<!-- #BLAZE_RULE (NAME = apple_dynamic_library, TYPE = BINARY, FAMILY = Objective-C) --> - -<p> This rule is deprecated. Please use apple_binary with binary_type = "dylib" instead. </p> - -${IMPLICIT_OUTPUTS} - -<!-- #END_BLAZE_RULE -->*/ |