diff options
author | 2018-08-06 03:05:29 -0700 | |
---|---|---|
committer | 2018-08-06 03:07:21 -0700 | |
commit | 7a3e39fc20f1fba810d8023ff1608e39f501492a (patch) | |
tree | 1b72979d65a670d0bd1c5b4aa459314a5e82e76b /src/main/java/com/google/devtools/build/lib/rules/cpp | |
parent | ad7b61286e29364d6c7e386f218c6c3b0530bfdc (diff) |
C++: Removes calls to setCcLinkparamsStore of CcLinkingInfo.Builder
This is in preparation for deleting CcLinkParamsStore. Not all calls to
setCcLinkparamsStore have been removed in this CL.
RELNOTES:none
PiperOrigin-RevId: 207516944
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingInfo.java | 78 |
1 files changed, 63 insertions, 15 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingInfo.java index 4157930c5c..123a824302 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingInfo.java @@ -86,22 +86,19 @@ public final class CcLinkingInfo extends NativeInfo implements CcLinkingInfoApi CcLinkParams dynamicModeParamsForExecutable = (CcLinkParams) nullIfNone(args[i++]); CcRunfiles ccRunfiles = (CcRunfiles) nullIfNone(args[i++]); CcLinkingInfo.Builder ccLinkingInfoBuilder = CcLinkingInfo.Builder.create(); - if (staticModeParamsForDynamicLibrary != null) { - if (staticModeParamsForExecutable == null - || dynamicModeParamsForDynamicLibrary == null - || dynamicModeParamsForExecutable == null) { - throw new EvalException( - loc, - "Every CcLinkParams parameter must be passed to CcLinkingInfo " - + "if one of them is passed."); - } - ccLinkingInfoBuilder.setCcLinkParamsStore( - new CcLinkParamsStore( - staticModeParamsForDynamicLibrary, - staticModeParamsForExecutable, - dynamicModeParamsForDynamicLibrary, - dynamicModeParamsForExecutable)); + if (staticModeParamsForDynamicLibrary == null + || staticModeParamsForExecutable == null + || dynamicModeParamsForDynamicLibrary == null + || dynamicModeParamsForExecutable == null) { + throw new EvalException( + loc, "Every CcLinkParams parameter must be passed to CcLinkingInfo."); } + ccLinkingInfoBuilder.setCcLinkParamsStore( + new CcLinkParamsStore( + staticModeParamsForDynamicLibrary, + staticModeParamsForExecutable, + dynamicModeParamsForDynamicLibrary, + dynamicModeParamsForExecutable)); // TODO(plf): The CcDynamicLibrariesForRuntime provider can be removed perhaps. Do not // add to the API until we know for sure. The CcRunfiles provider is already in the API // at the time of this comment (cl/200184914). Perhaps it can be removed but Skylark rules @@ -187,6 +184,10 @@ public final class CcLinkingInfo extends NativeInfo implements CcLinkingInfoApi /** A Builder for {@link CcLinkingInfo}. */ public static class Builder { CcLinkParamsStore ccLinkParamsStore; + CcLinkParams staticModeParamsForDynamicLibrary; + CcLinkParams staticModeParamsForExecutable; + CcLinkParams dynamicModeParamsForDynamicLibrary; + CcLinkParams dynamicModeParamsForExecutable; CcRunfiles ccRunfiles; CcDynamicLibrariesForRuntime ccDynamicLibrariesForRuntime; @@ -194,8 +195,15 @@ public final class CcLinkingInfo extends NativeInfo implements CcLinkingInfoApi return new CcLinkingInfo.Builder(); } + @Deprecated + // TODO(b/111781390): Use individual setters for each flavor of CcLinkParams. Not all call sites + // are being refactored at once. Work in progress. public Builder setCcLinkParamsStore(CcLinkParamsStore ccLinkParamsStore) { Preconditions.checkState(this.ccLinkParamsStore == null); + Preconditions.checkState(this.staticModeParamsForDynamicLibrary == null); + Preconditions.checkState(this.staticModeParamsForExecutable == null); + Preconditions.checkState(this.dynamicModeParamsForDynamicLibrary == null); + Preconditions.checkState(this.dynamicModeParamsForExecutable == null); this.ccLinkParamsStore = ccLinkParamsStore; return this; } @@ -213,7 +221,47 @@ public final class CcLinkingInfo extends NativeInfo implements CcLinkingInfoApi return this; } + public Builder setStaticModeParamsForDynamicLibrary(CcLinkParams ccLinkParams) { + Preconditions.checkState( + this.staticModeParamsForDynamicLibrary == null && ccLinkParamsStore == null); + this.staticModeParamsForDynamicLibrary = ccLinkParams; + return this; + } + + public Builder setStaticModeParamsForExecutable(CcLinkParams ccLinkParams) { + Preconditions.checkState( + this.staticModeParamsForExecutable == null && ccLinkParamsStore == null); + this.staticModeParamsForExecutable = ccLinkParams; + return this; + } + + public Builder setDynamicModeParamsForDynamicLibrary(CcLinkParams ccLinkParams) { + Preconditions.checkState( + this.dynamicModeParamsForDynamicLibrary == null && ccLinkParamsStore == null); + this.dynamicModeParamsForDynamicLibrary = ccLinkParams; + return this; + } + + public Builder setDynamicModeParamsForExecutable(CcLinkParams ccLinkParams) { + Preconditions.checkState( + this.dynamicModeParamsForExecutable == null && ccLinkParamsStore == null); + this.dynamicModeParamsForExecutable = ccLinkParams; + return this; + } + public CcLinkingInfo build() { + if (ccLinkParamsStore == null) { + Preconditions.checkNotNull(staticModeParamsForDynamicLibrary); + Preconditions.checkNotNull(staticModeParamsForExecutable); + Preconditions.checkNotNull(dynamicModeParamsForDynamicLibrary); + Preconditions.checkNotNull(dynamicModeParamsForExecutable); + ccLinkParamsStore = + new CcLinkParamsStore( + staticModeParamsForDynamicLibrary, + staticModeParamsForExecutable, + dynamicModeParamsForDynamicLibrary, + dynamicModeParamsForExecutable); + } return new CcLinkingInfo(ccLinkParamsStore, ccRunfiles, ccDynamicLibrariesForRuntime); } } |