Skip to content

Commit

Permalink
C++: Completely removes CcLinkParamsStore and AbstractCcLinkParamsStore
Browse files Browse the repository at this point in the history
CcLinkParams are stored individually in CcLinkingInfo.

RELNOTES:none
PiperOrigin-RevId: 211975640
  • Loading branch information
oquenchil authored and Copybara-Service committed Sep 7, 2018
1 parent 236e6ed commit e6709cc
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 244 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ public static final class Builder {

// TODO(plf): Ideally the two booleans above are removed from this Builder. We would pass the
// specific instances of CcLinkParams that are needed from transitive dependencies instead of
// calling the convenience methods that dig them out from the CcLinkParamsStore using these
// calling the convenience methods that dig them out from the CcLinkingInfo using these
// booleans.
private boolean linkingStaticallyLinkSharedSet;

Expand Down Expand Up @@ -270,8 +270,8 @@ public Builder addTransitiveTargets(Iterable<? extends TransitiveInfoCollection>
/**
* Includes link parameters from a dependency target.
*
* <p>The target should implement {@link CcLinkParamsStore}. If it does not, the method does not
* do anything.
* <p>The target should implement {@link CcLinkingInfo}. If it does not, the method does not do
* anything.
*/
public Builder addTransitiveTarget(TransitiveInfoCollection target) {
CcLinkingInfo ccLinkingInfo = target.get(CcLinkingInfo.PROVIDER);
Expand Down Expand Up @@ -409,7 +409,7 @@ public Builder addNonCodeInputs(Iterable<Artifact> nonCodeInputs) {
/** Processes typical dependencies of a C/C++ library. */
public Builder addCcLibrary(RuleContext context) {
addTransitiveTargets(
context.getPrerequisites("deps", Mode.TARGET), CcLinkParamsStore.TO_LINK_PARAMS);
context.getPrerequisites("deps", Mode.TARGET), x -> x.get(CcLinkingInfo.PROVIDER));
return this;
}
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -109,33 +109,43 @@ protected CcLinkingInfo createInstanceFromSkylark(
.setDynamicModeParamsForExecutable(CcLinkParams.EMPTY)
.build();

private final CcLinkParamsStore ccLinkParamsStore;
private final CcLinkParams staticModeParamsForExecutable;
private final CcLinkParams staticModeParamsForDynamicLibrary;
private final CcLinkParams dynamicModeParamsForExecutable;
private final CcLinkParams dynamicModeParamsForDynamicLibrary;

@AutoCodec.Instantiator
@VisibleForSerialization
CcLinkingInfo(CcLinkParamsStore ccLinkParamsStore) {
CcLinkingInfo(
CcLinkParams staticModeParamsForExecutable,
CcLinkParams staticModeParamsForDynamicLibrary,
CcLinkParams dynamicModeParamsForExecutable,
CcLinkParams dynamicModeParamsForDynamicLibrary) {
super(PROVIDER);
this.ccLinkParamsStore = ccLinkParamsStore;
}

@Override
public CcLinkParams getStaticModeParamsForDynamicLibrary() {
return ccLinkParamsStore.get(/* linkingStatically= */ true, /* linkShared= */ true);
this.staticModeParamsForExecutable = staticModeParamsForExecutable;
this.staticModeParamsForDynamicLibrary = staticModeParamsForDynamicLibrary;
this.dynamicModeParamsForExecutable = dynamicModeParamsForExecutable;
this.dynamicModeParamsForDynamicLibrary = dynamicModeParamsForDynamicLibrary;
}

@Override
public CcLinkParams getStaticModeParamsForExecutable() {
return ccLinkParamsStore.get(/* linkingStatically= */ true, /* linkShared= */ false);
return staticModeParamsForExecutable;
}

@Override
public CcLinkParams getDynamicModeParamsForDynamicLibrary() {
return ccLinkParamsStore.get(/* linkingStatically= */ false, /* linkShared= */ true);
public CcLinkParams getStaticModeParamsForDynamicLibrary() {
return staticModeParamsForDynamicLibrary;
}

@Override
public CcLinkParams getDynamicModeParamsForExecutable() {
return ccLinkParamsStore.get(/* linkingStatically= */ false, /* linkShared= */ false);
return dynamicModeParamsForExecutable;
}

@Override
public CcLinkParams getDynamicModeParamsForDynamicLibrary() {
return dynamicModeParamsForDynamicLibrary;
}

public static CcLinkingInfo merge(Collection<CcLinkingInfo> ccLinkingInfos) {
Expand Down Expand Up @@ -213,17 +223,15 @@ public Builder setDynamicModeParamsForExecutable(CcLinkParams ccLinkParams) {
}

public CcLinkingInfo build() {
Preconditions.checkNotNull(staticModeParamsForDynamicLibrary);
Preconditions.checkNotNull(staticModeParamsForExecutable);
Preconditions.checkNotNull(dynamicModeParamsForDynamicLibrary);
Preconditions.checkNotNull(staticModeParamsForDynamicLibrary);
Preconditions.checkNotNull(dynamicModeParamsForExecutable);
CcLinkParamsStore ccLinkParamsStore =
new CcLinkParamsStore(
staticModeParamsForDynamicLibrary,
staticModeParamsForExecutable,
dynamicModeParamsForDynamicLibrary,
dynamicModeParamsForExecutable);
return new CcLinkingInfo(ccLinkParamsStore);
Preconditions.checkNotNull(dynamicModeParamsForDynamicLibrary);
return new CcLinkingInfo(
staticModeParamsForExecutable,
staticModeParamsForDynamicLibrary,
dynamicModeParamsForExecutable,
dynamicModeParamsForDynamicLibrary);
}
}

Expand All @@ -236,14 +244,22 @@ public boolean equals(Object otherObject) {
if (this == other) {
return true;
}
if (!this.ccLinkParamsStore.equals(other.ccLinkParamsStore)) {
if (!this.staticModeParamsForExecutable.equals(other.staticModeParamsForExecutable)
|| !this.staticModeParamsForDynamicLibrary.equals(other.staticModeParamsForDynamicLibrary)
|| !this.dynamicModeParamsForExecutable.equals(other.dynamicModeParamsForExecutable)
|| !this.dynamicModeParamsForDynamicLibrary.equals(
other.dynamicModeParamsForDynamicLibrary)) {
return false;
}
return true;
}

@Override
public int hashCode() {
return Objects.hashCode(ccLinkParamsStore);
return Objects.hashCode(
staticModeParamsForExecutable,
staticModeParamsForDynamicLibrary,
dynamicModeParamsForExecutable,
dynamicModeParamsForDynamicLibrary);
}
}

0 comments on commit e6709cc

Please sign in to comment.