Skip to content

Commit 0fa7933

Browse files
googlewaltcopybara-github
authored andcommitted
Stop adding linking info to ObjcProvider in objc_common
PiperOrigin-RevId: 549133680 Change-Id: I36016634e72f5dc0eacf61d32c2b66437693d9ca
1 parent 95bb643 commit 0fa7933

File tree

12 files changed

+48
-533
lines changed

12 files changed

+48
-533
lines changed

src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -648,8 +648,7 @@ private ObjcCommon common(
648648
.addDeps(propagatedDeps)
649649
.addCcLinkingContexts(additionalDepCcInfos)
650650
.addObjcProviders(additionalDepObjcProviders)
651-
.setIntermediateArtifacts(intermediateArtifacts)
652-
.setAlwayslink(false);
651+
.setIntermediateArtifacts(intermediateArtifacts);
653652

654653
return commonBuilder.build();
655654
}

src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java

Lines changed: 7 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,13 @@
1414

1515
package com.google.devtools.build.lib.rules.objc;
1616

17-
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.CC_LIBRARY;
18-
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.FORCE_LOAD_LIBRARY;
19-
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.IMPORTED_LIBRARY;
2017
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.J2OBJC_LIBRARY;
21-
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LIBRARY;
2218
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.MODULE_MAP;
23-
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.SDK_DYLIB;
24-
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.SDK_FRAMEWORK;
2519
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.SOURCE;
2620
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.UMBRELLA_HEADER;
27-
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.WEAK_SDK_FRAMEWORK;
2821
import static com.google.devtools.build.lib.rules.objc.ObjcRuleClasses.HEADERS;
2922
import static com.google.devtools.build.lib.rules.objc.ObjcRuleClasses.OBJECT_FILE_SOURCES;
3023

31-
import com.google.common.base.Function;
3224
import com.google.common.base.Optional;
3325
import com.google.common.base.Preconditions;
3426
import com.google.common.collect.ImmutableList;
@@ -39,15 +31,11 @@
3931
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
4032
import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
4133
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
42-
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
43-
import com.google.devtools.build.lib.packages.BuiltinProvider;
44-
import com.google.devtools.build.lib.packages.Info;
4534
import com.google.devtools.build.lib.rules.apple.AppleToolchain;
4635
import com.google.devtools.build.lib.rules.cpp.CcCompilationContext;
4736
import com.google.devtools.build.lib.rules.cpp.CcInfo;
4837
import com.google.devtools.build.lib.rules.cpp.CcLinkingContext;
4938
import com.google.devtools.build.lib.rules.cpp.CppModuleMap;
50-
import com.google.devtools.build.lib.rules.cpp.LibraryToLink;
5139
import com.google.devtools.build.lib.util.FileType;
5240
import com.google.devtools.build.lib.vfs.PathFragment;
5341
import com.google.errorprone.annotations.CanIgnoreReturnValue;
@@ -100,18 +88,12 @@ static class Builder {
10088
private Iterable<ObjcProvider> objcProviders = ImmutableList.of();
10189
private Iterable<PathFragment> includes = ImmutableList.of();
10290
private IntermediateArtifacts intermediateArtifacts;
103-
private boolean alwayslink;
10491
private boolean hasModuleMap;
105-
private Iterable<Artifact> extraImportLibraries = ImmutableList.of();
10692
private final List<CcCompilationContext> ccCompilationContexts = new ArrayList<>();
10793
private final List<CcLinkingContext> ccLinkingContexts = new ArrayList<>();
10894
private final List<CcCompilationContext> directCCompilationContexts = new ArrayList<>();
10995
private final List<CcCompilationContext> implementationCcCompilationContexts =
11096
new ArrayList<>();
111-
// List of CcLinkingContext to be merged into ObjcProvider, to be done for deps that don't have
112-
// ObjcProviders.
113-
// TODO(b/171413861): remove after objc link info migration.
114-
private final List<CcLinkingContext> ccLinkingContextsForMerging = new ArrayList<>();
11597

11698
private static final ImmutableSet<String> J2OBJC_SUPPORTED_RULES =
11799
ImmutableSet.of("java_import", "java_library", "java_proto_library", "proto_library");
@@ -198,15 +180,14 @@ Builder addDeps(List<? extends TransitiveInfoCollection> deps) {
198180
ImmutableList.Builder<CcInfo> ccInfos = ImmutableList.builder();
199181

200182
for (TransitiveInfoCollection dep : deps) {
201-
if (dep.get(ObjcProvider.STARLARK_CONSTRUCTOR) != null) {
202-
addAnyProviders(objcProviders, dep, ObjcProvider.STARLARK_CONSTRUCTOR);
203-
} else {
204-
// We only use CcInfo's linking info if there is no ObjcProvider. This is required so
205-
// that objc_library archives do not get treated as if they are from cc targets.
206-
addAnyContexts(
207-
ccLinkingContextsForMerging, dep, CcInfo.PROVIDER, CcInfo::getCcLinkingContext);
183+
ObjcProvider objcProvider = dep.get(ObjcProvider.STARLARK_CONSTRUCTOR);
184+
if (objcProvider != null) {
185+
objcProviders.add(objcProvider);
186+
}
187+
CcInfo ccInfo = dep.get(CcInfo.PROVIDER);
188+
if (ccInfo != null) {
189+
ccInfos.add(ccInfo);
208190
}
209-
addAnyProviders(ccInfos, dep, CcInfo.PROVIDER);
210191
}
211192

212193
addObjcProviders(objcProviders.build());
@@ -215,31 +196,6 @@ Builder addDeps(List<? extends TransitiveInfoCollection> deps) {
215196
return this;
216197
}
217198

218-
@CanIgnoreReturnValue
219-
private static <T extends Info> ImmutableList.Builder<T> addAnyProviders(
220-
ImmutableList.Builder<T> listBuilder,
221-
TransitiveInfoCollection collection,
222-
BuiltinProvider<T> providerClass) {
223-
T provider = collection.get(providerClass);
224-
if (provider != null) {
225-
listBuilder.add(provider);
226-
}
227-
return listBuilder;
228-
}
229-
230-
@CanIgnoreReturnValue
231-
private static <T extends Info, U> List<U> addAnyContexts(
232-
List<U> list,
233-
TransitiveInfoCollection collection,
234-
BuiltinProvider<T> providerClass,
235-
Function<T, U> getContext) {
236-
T provider = collection.get(providerClass);
237-
if (provider != null) {
238-
list.add(getContext.apply(provider));
239-
}
240-
return list;
241-
}
242-
243199
/**
244200
* Add providers which will be exposed both to the declaring rule and to any dependers on the
245201
* declaring rule.
@@ -272,12 +228,6 @@ Builder setIntermediateArtifacts(IntermediateArtifacts intermediateArtifacts) {
272228
return this;
273229
}
274230

275-
@CanIgnoreReturnValue
276-
Builder setAlwayslink(boolean alwayslink) {
277-
this.alwayslink = alwayslink;
278-
return this;
279-
}
280-
281231
/**
282232
* Specifies that this target has a clang module map. This should be called if this target
283233
* compiles sources or exposes headers for other targets to use. Note that this does not add the
@@ -299,16 +249,13 @@ ObjcCommon build() {
299249
ImmutableList.copyOf(this.directCCompilationContexts);
300250
ImmutableList<CcCompilationContext> implementationCcCompilationContexts =
301251
ImmutableList.copyOf(this.implementationCcCompilationContexts);
302-
ImmutableList<CcLinkingContext> ccLinkingContextsForMerging =
303-
ImmutableList.copyOf(this.ccLinkingContextsForMerging);
304252

305253
ObjcCompilationContext.Builder objcCompilationContextBuilder =
306254
ObjcCompilationContext.builder();
307255

308256
ObjcProvider.Builder objcProvider = new ObjcProvider.Builder();
309257

310258
objcProvider
311-
.addAll(IMPORTED_LIBRARY, extraImportLibraries)
312259
.addTransitiveAndPropagate(objcProviders);
313260

314261
objcCompilationContextBuilder
@@ -320,24 +267,12 @@ ObjcCommon build() {
320267
.addCcCompilationContexts(ccCompilationContexts)
321268
.addImplementationCcCompilationContexts(implementationCcCompilationContexts);
322269

323-
for (CcLinkingContext ccLinkingContext : ccLinkingContextsForMerging) {
324-
objcProvider.addTransitiveAndPropagate(
325-
CC_LIBRARY,
326-
NestedSetBuilder.<LibraryToLink>linkOrder()
327-
.addTransitive(ccLinkingContext.getLibraries())
328-
.build());
329-
}
330-
331270
if (compilationAttributes.isPresent()) {
332271
CompilationAttributes attributes = compilationAttributes.get();
333272
PathFragment usrIncludeDir = PathFragment.create(AppleToolchain.sdkDir() + "/usr/include/");
334273
Iterable<PathFragment> sdkIncludes =
335274
Iterables.transform(
336275
attributes.sdkIncludes().toList(), (p) -> usrIncludeDir.getRelative(p));
337-
objcProvider
338-
.addAll(SDK_FRAMEWORK, attributes.sdkFrameworks())
339-
.addAll(WEAK_SDK_FRAMEWORK, attributes.weakSdkFrameworks())
340-
.addAll(SDK_DYLIB, attributes.sdkDylibs());
341276
objcCompilationContextBuilder
342277
.addPublicHeaders(filterFileset(attributes.hdrs().toList()))
343278
.addPublicTextualHeaders(filterFileset(attributes.textualHdrs().toList()))
@@ -356,7 +291,6 @@ ObjcCommon build() {
356291
FileType.except(artifacts.getSrcs(), OBJECT_FILE_SOURCES),
357292
artifacts.getNonArcSrcs());
358293
objcProvider
359-
.addAll(LIBRARY, artifacts.getArchive().asSet())
360294
.addAll(SOURCE, allSources)
361295
.addAllDirect(SOURCE, allSources);
362296
objcCompilationContextBuilder.addPublicHeaders(
@@ -370,17 +304,6 @@ ObjcCommon build() {
370304
}
371305
}
372306

373-
if (alwayslink) {
374-
for (CompilationArtifacts artifacts : compilationArtifacts.asSet()) {
375-
for (Artifact archive : artifacts.getArchive().asSet()) {
376-
objcProvider.add(FORCE_LOAD_LIBRARY, archive);
377-
}
378-
}
379-
for (Artifact archive : extraImportLibraries) {
380-
objcProvider.add(FORCE_LOAD_LIBRARY, archive);
381-
}
382-
}
383-
384307
if (hasModuleMap) {
385308
CppModuleMap moduleMap = intermediateArtifacts.swiftModuleMap();
386309
Optional<Artifact> umbrellaHeader = moduleMap.getUmbrellaHeader();

src/main/starlark/builtins_bzl/common/objc/compilation_support.bzl

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ def _build_common_variables(
4343
implementation_deps = [],
4444
extra_disabled_features = [],
4545
extra_enabled_features = [],
46-
extra_import_libraries = [],
4746
attr_linkopts = [],
4847
alwayslink = False,
4948
has_module_map = False,
@@ -66,9 +65,7 @@ def _build_common_variables(
6665
deps = deps,
6766
implementation_deps = implementation_deps,
6867
intermediate_artifacts = intermediate_artifacts,
69-
alwayslink = alwayslink,
7068
has_module_map = has_module_map,
71-
extra_import_libraries = extra_import_libraries,
7269
attr_linkopts = attr_linkopts,
7370
direct_cc_compilation_contexts = direct_cc_compilation_contexts,
7471
)

src/main/starlark/builtins_bzl/common/objc/j2objc_aspect.bzl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -448,10 +448,8 @@ def _common(
448448
intermediate_artifacts = intermediate_artifacts,
449449
includes = header_search_paths,
450450
compilation_attributes = None,
451-
extra_import_libraries = [],
452451
implementation_deps = [],
453452
attr_linkopts = [],
454-
alwayslink = False,
455453
is_aspect = True,
456454
)
457455

0 commit comments

Comments
 (0)