// 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.XcodeProductType.LIBRARY_STATIC; 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.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMap; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider; import com.google.devtools.build.lib.rules.objc.ObjcCommon.ResourceAttributes; import com.google.devtools.build.lib.syntax.Type; /** Implementation for experimental_objc_library. */ public class ExperimentalObjcLibrary implements RuleConfiguredTargetFactory { @Override public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException, RuleErrorException { return configureExperimentalObjcLibrary(ruleContext); } /** * Returns a configured target using the given context as an experimental_objc_library. * *
Implemented outside of {@link RuleClass.ConfiguredTargetFactory#create} so as to allow
* experimental analysis of objc_library targets as experimental_objc_library.
*/
public static ConfiguredTarget configureExperimentalObjcLibrary(RuleContext ruleContext)
throws InterruptedException, RuleErrorException {
validateAttributes(ruleContext);
CompilationArtifacts compilationArtifacts =
CompilationSupport.compilationArtifacts(ruleContext);
CompilationSupport compilationSupport = new CompilationSupport(ruleContext);
ObjcCommon common = common(ruleContext);
CrosstoolSupport crosstoolSupport = new CrosstoolSupport(ruleContext, common.getObjcProvider());
TransitiveInfoProviderMap compilationProviders;
if (compilationArtifacts.getArchive().isPresent()) {
compilationProviders = crosstoolSupport.registerCompileAndArchiveActions(common);
} else {
compilationProviders = crosstoolSupport.registerCompileActions(common);
}
crosstoolSupport.registerFullyLinkAction(common);
NestedSetBuilder