Expose the JavaCcLinkParamsProvider to Starlark (as JavaCcLinkParamsInfo). This
is necessary for the Android Rules Starlark rewrite. The Starlark API is marked as
"do not use" in a similar way the Android Starlark APIs have been.

RELNOTES: none.
PiperOrigin-RevId: 217652352
diff --git a/src/main/java/com/google/devtools/build/docgen/SymbolFamilies.java b/src/main/java/com/google/devtools/build/docgen/SymbolFamilies.java
index 2c17a20..532f1e5 100644
--- a/src/main/java/com/google/devtools/build/docgen/SymbolFamilies.java
+++ b/src/main/java/com/google/devtools/build/docgen/SymbolFamilies.java
@@ -50,6 +50,7 @@
 import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigGlobalLibrary;
 import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigSkylarkCommon;
 import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcModule;
+import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCcLinkParamsProvider;
 import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCommon;
 import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaInfo.FakeJavaInfoProvider;
 import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaProtoCommon;
@@ -180,7 +181,10 @@
     CcBootstrap ccBootstrap = new CcBootstrap(new FakeCcModule());
     JavaBootstrap javaBootstrap =
         new JavaBootstrap(
-            new FakeJavaCommon(), new FakeJavaInfoProvider(), new FakeJavaProtoCommon());
+            new FakeJavaCommon(),
+            new FakeJavaInfoProvider(),
+            new FakeJavaProtoCommon(),
+            new FakeJavaCcLinkParamsProvider.Provider());
     PlatformBootstrap platformBootstrap = new PlatformBootstrap(new FakePlatformCommon());
     RepositoryBootstrap repositoryBootstrap = new RepositoryBootstrap(new FakeRepositoryModule());
     TestingBootstrap testingBootstrap = new TestingBootstrap(new FakeTestingModule(),
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java
index 75b1ade..3d5a1a3 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java
@@ -28,6 +28,7 @@
 import com.google.devtools.build.lib.rules.core.CoreRules;
 import com.google.devtools.build.lib.rules.extra.ActionListenerRule;
 import com.google.devtools.build.lib.rules.extra.ExtraActionRule;
+import com.google.devtools.build.lib.rules.java.JavaCcLinkParamsProvider;
 import com.google.devtools.build.lib.rules.java.JavaConfigurationLoader;
 import com.google.devtools.build.lib.rules.java.JavaHostRuntimeAliasRule;
 import com.google.devtools.build.lib.rules.java.JavaImportBaseRule;
@@ -84,10 +85,12 @@
     builder.addRuleDefinition(new ExtraActionRule());
     builder.addRuleDefinition(new ActionListenerRule());
 
-    builder.addSkylarkBootstrap(new JavaBootstrap(
-        new JavaSkylarkCommon(BazelJavaSemantics.INSTANCE),
-        JavaInfo.PROVIDER,
-        new JavaProtoSkylarkCommon()));
+    builder.addSkylarkBootstrap(
+        new JavaBootstrap(
+            new JavaSkylarkCommon(BazelJavaSemantics.INSTANCE),
+            JavaInfo.PROVIDER,
+            new JavaProtoSkylarkCommon(),
+            JavaCcLinkParamsProvider.PROVIDER));
 
     try {
       builder.addWorkspaceFileSuffix(
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
index 7d57ef9..863116b 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
@@ -548,7 +548,7 @@
         ImmutableList.<CcLinkingInfo>builder()
             .addAll(AnalysisUtils.getProviders(deps, CcLinkingInfo.PROVIDER))
             .addAll(
-                Streams.stream(AnalysisUtils.getProviders(deps, JavaCcLinkParamsProvider.class))
+                Streams.stream(AnalysisUtils.getProviders(deps, JavaCcLinkParamsProvider.PROVIDER))
                     .map(JavaCcLinkParamsProvider::getCcLinkingInfo)
                     .collect(ImmutableList.toImmutableList()))
             .build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
index 016e05f..4beacf0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
@@ -831,7 +831,7 @@
         ImmutableList.<CcLinkingInfo>builder()
             .add(linkOptsProvider)
             .addAll(
-                Streams.stream(AnalysisUtils.getProviders(deps, JavaCcLinkParamsProvider.class))
+                Streams.stream(AnalysisUtils.getProviders(deps, JavaCcLinkParamsProvider.PROVIDER))
                     .map(JavaCcLinkParamsProvider::getCcLinkingInfo)
                     .collect(ImmutableList.toImmutableList()))
             .addAll(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCcLinkParamsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCcLinkParamsProvider.java
index c808552..64fc1f2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCcLinkParamsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCcLinkParamsProvider.java
@@ -14,24 +14,44 @@
 
 package com.google.devtools.build.lib.rules.java;
 
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
+import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.packages.BuiltinProvider;
+import com.google.devtools.build.lib.packages.Info;
 import com.google.devtools.build.lib.rules.cpp.CcLinkingInfo;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaCcLinkParamsProviderApi;
+import com.google.devtools.build.lib.syntax.EvalException;
 
 /** A target that provides C++ libraries to be linked into Java targets. */
 @Immutable
-@AutoCodec
-public final class JavaCcLinkParamsProvider implements TransitiveInfoProvider {
+public final class JavaCcLinkParamsProvider extends Info
+    implements JavaCcLinkParamsProviderApi<CcLinkingInfo> {
+  public static final String PROVIDER_NAME = "JavaCcLinkParamsInfo";
+  public static final Provider PROVIDER = new Provider();
+
   private final CcLinkingInfo ccLinkingInfo;
 
-  @AutoCodec.VisibleForSerialization
-  @AutoCodec.Instantiator
   public JavaCcLinkParamsProvider(CcLinkingInfo ccLinkingInfo) {
+    super(PROVIDER, Location.BUILTIN);
     this.ccLinkingInfo = ccLinkingInfo;
   }
 
+  @Override
   public CcLinkingInfo getCcLinkingInfo() {
     return ccLinkingInfo;
   }
+
+  /** Provider class for {@link JavaCcLinkParamsProvider} objects. */
+  public static class Provider extends BuiltinProvider<JavaCcLinkParamsProvider>
+      implements JavaCcLinkParamsProviderApi.Provider<CcLinkingInfo> {
+    private Provider() {
+      super(PROVIDER_NAME, JavaCcLinkParamsProvider.class);
+    }
+
+    @Override
+    public JavaCcLinkParamsProviderApi<CcLinkingInfo> createInfo(CcLinkingInfo ccLinkingInfo)
+        throws EvalException {
+      return new JavaCcLinkParamsProvider(ccLinkingInfo);
+    }
+  }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
index 507949a..c472e9a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
@@ -246,7 +246,8 @@
       }
 
       aspect.addProvider(generatedCompilationArgsProvider);
-      aspect.addProvider(createCcLinkingInfo(ruleContext, aspectCommon.getProtoRuntimeDeps()));
+      aspect.addNativeDeclaredProvider(
+          createCcLinkingInfo(ruleContext, aspectCommon.getProtoRuntimeDeps()));
 
       JavaSkylarkApiProvider skylarkApiProvider = JavaSkylarkApiProvider.fromRuleContext();
       aspect
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
index 5031713..87f8277 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
@@ -93,7 +93,7 @@
         .addOutputGroup(OutputGroupInfo.DEFAULT, NestedSetBuilder.<Artifact>emptySet(STABLE_ORDER))
         .addNativeDeclaredProvider(getJavaLiteRuntimeSpec(ruleContext))
         .addNativeDeclaredProvider(javaInfo)
-        .addProvider(createCcLinkingInfo(ruleContext, ImmutableList.of()))
+        .addNativeDeclaredProvider(createCcLinkingInfo(ruleContext, ImmutableList.of()))
         .build();
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
index 15d6349..fd81f4c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
@@ -257,7 +257,8 @@
       }
 
       aspect.addProvider(generatedCompilationArgsProvider);
-      aspect.addProvider(createCcLinkingInfo(ruleContext, aspectCommon.getProtoRuntimeDeps()));
+      aspect.addNativeDeclaredProvider(
+          createCcLinkingInfo(ruleContext, aspectCommon.getProtoRuntimeDeps()));
       JavaSkylarkApiProvider javaSkylarkApiProvider = JavaSkylarkApiProvider.fromRuleContext();
       aspect
           .addSkylarkTransitiveInfo(JavaSkylarkApiProvider.NAME, javaSkylarkApiProvider)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java
index aa84228..d8cbf90 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java
@@ -97,7 +97,7 @@
             .addNativeDeclaredProvider(javaInfo);
 
     if (ruleContext.getFragment(JavaConfiguration.class).jplPropagateCcLinkParamsStore()) {
-      result.addProvider(createCcLinkingInfo(ruleContext, ImmutableList.of()));
+      result.addNativeDeclaredProvider(createCcLinkingInfo(ruleContext, ImmutableList.of()));
     }
 
     return result.build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JplCcLinkParams.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JplCcLinkParams.java
index e63e188..092da05 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JplCcLinkParams.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JplCcLinkParams.java
@@ -44,7 +44,7 @@
     List<JavaCcLinkParamsProvider> providers = new ArrayList<>();
     for (TransitiveInfoCollection t :
         ruleContext.getPrerequisites("deps", RuleConfiguredTarget.Mode.TARGET)) {
-      providers.add(t.getProvider(JavaCcLinkParamsProvider.class));
+      providers.add(t.get(JavaCcLinkParamsProvider.PROVIDER));
     }
     ImmutableList<CcLinkingInfo> ccLinkingInfos =
         ImmutableList.<CcLinkingInfo>builder()
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/BUILD b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/BUILD
index 938435a..3d361ca 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/BUILD
@@ -25,6 +25,7 @@
         "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi",
+        "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp",
         "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
         "//third_party:guava",
         "//third_party:jsr305",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaBootstrap.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaBootstrap.java
index bb65735..3b18a1f 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaBootstrap.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaBootstrap.java
@@ -26,13 +26,17 @@
   private final JavaCommonApi<?, ?, ?, ?, ?> javaCommonApi;
   private final JavaInfoProviderApi javaInfoProviderApi;
   private final JavaProtoCommonApi<?, ?, ?> javaProtoCommonApi;
+  private final JavaCcLinkParamsProviderApi.Provider<?> javaCcLinkParamsProviderApiProvider;
 
-  public JavaBootstrap(JavaCommonApi<?, ?, ?, ?, ?> javaCommonApi,
+  public JavaBootstrap(
+      JavaCommonApi<?, ?, ?, ?, ?> javaCommonApi,
       JavaInfoProviderApi javaInfoProviderApi,
-      JavaProtoCommonApi<?, ?, ?> javaProtoCommonApi) {
+      JavaProtoCommonApi<?, ?, ?> javaProtoCommonApi,
+      JavaCcLinkParamsProviderApi.Provider<?> javaCcLinkParamsProviderApiProvider) {
     this.javaCommonApi = javaCommonApi;
     this.javaInfoProviderApi = javaInfoProviderApi;
     this.javaProtoCommonApi = javaProtoCommonApi;
+    this.javaCcLinkParamsProviderApiProvider = javaCcLinkParamsProviderApiProvider;
   }
 
   @Override
@@ -40,5 +44,6 @@
     builder.put("java_common", javaCommonApi);
     builder.put("JavaInfo", javaInfoProviderApi);
     builder.put("java_proto_common", javaProtoCommonApi);
+    builder.put("java_cc_link_params_info", javaCcLinkParamsProviderApiProvider);
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCcLinkParamsProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCcLinkParamsProviderApi.java
new file mode 100644
index 0000000..d8bd298
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCcLinkParamsProviderApi.java
@@ -0,0 +1,76 @@
+// Copyright 2018 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.skylarkbuildapi.java;
+
+import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi;
+import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcLinkingInfoApi;
+import com.google.devtools.build.lib.skylarkinterface.Param;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.SkylarkSemantics.FlagIdentifier;
+
+/** A target that provides C++ libraries to be linked into Java targets. */
+@SkylarkModule(
+    name = "JavaCcLinkParamsInfo",
+    doc =
+        "Do not use this module. It is intended for migration purposes only. If you depend on it, "
+            + "you will be broken when it is removed."
+            + "Information about the c++ libraries to be linked into Java targets.",
+    documented = true,
+    category = SkylarkModuleCategory.PROVIDER)
+public interface JavaCcLinkParamsProviderApi<CcLinkingInfoApiT extends CcLinkingInfoApi> {
+  /** Name of this info object. */
+  public static String NAME = "JavaCcLinkParamsInfo";
+
+  /** Returns the cc linking info */
+  @SkylarkCallable(
+      name = "cc_linking_info",
+      structField = true,
+      doc = "Returns the CcLinkingInfo provider.",
+      documented = true,
+      enableOnlyWithFlag = FlagIdentifier.EXPERIMENTAL_ENABLE_ANDROID_MIGRATION_APIS)
+  CcLinkingInfoApiT getCcLinkingInfo();
+
+  /** The provider implementing this can construct the JavaCcLinkParamsInfo provider. */
+  @SkylarkModule(
+      name = "Provider",
+      doc =
+          "Do not use this module. It is intended for migration purposes only. If you depend on "
+              + "it, you will be broken when it is removed.",
+      documented = true)
+  public interface Provider<CcLinkingInfoApiT extends CcLinkingInfoApi> extends ProviderApi {
+
+    @SkylarkCallable(
+        name = NAME,
+        doc = "The <code>JavaCcLinkParamsInfo</code> constructor.",
+        documented = true,
+        enableOnlyWithFlag = FlagIdentifier.EXPERIMENTAL_ENABLE_ANDROID_MIGRATION_APIS,
+        parameters = {
+          @Param(
+              name = "store",
+              doc = "The CcLinkingInfo provider.",
+              positional = true,
+              named = false,
+              type = CcLinkingInfoApi.class),
+        },
+        selfCall = true)
+    @SkylarkConstructor(objectType = JavaCcLinkParamsProviderApi.class, receiverNameForDoc = NAME)
+    public JavaCcLinkParamsProviderApi<CcLinkingInfoApiT> createInfo(CcLinkingInfoApiT store)
+        throws EvalException;
+  }
+}
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
index 3605c61..df6e9f9 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
@@ -40,6 +40,8 @@
   public enum FlagIdentifier {
     EXPERIMENTAL_ANALYSIS_TESTING_IMPROVEMENTS(
         SkylarkSemantics::experimentalAnalysisTestingImprovements),
+    EXPERIMENTAL_ENABLE_ANDROID_MIGRATION_APIS(
+        SkylarkSemantics::experimentalEnableAndroidMigrationApis),
     EXPERIMENTAL_PLATFORM_API(SkylarkSemantics::experimentalPlatformsApi),
     INCOMPATIBLE_DISABLE_OBJC_PROVIDER_RESOURCES(
         SkylarkSemantics::incompatibleDisableObjcProviderResources),
diff --git a/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java b/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
index ebb19db..dfc7a4a 100644
--- a/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
+++ b/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
@@ -60,6 +60,7 @@
 import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigGlobalLibrary;
 import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigSkylarkCommon;
 import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcModule;
+import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCcLinkParamsProvider;
 import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCommon;
 import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaInfo.FakeJavaInfoProvider;
 import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaProtoCommon;
@@ -368,9 +369,12 @@
         new ConfigBootstrap(new FakeConfigSkylarkCommon(), new FakeConfigApi(),
             new FakeConfigGlobalLibrary());
     CcBootstrap ccBootstrap = new CcBootstrap(new FakeCcModule());
-    JavaBootstrap javaBootstrap = new JavaBootstrap(new FakeJavaCommon(),
-        new FakeJavaInfoProvider(),
-        new FakeJavaProtoCommon());
+    JavaBootstrap javaBootstrap =
+        new JavaBootstrap(
+            new FakeJavaCommon(),
+            new FakeJavaInfoProvider(),
+            new FakeJavaProtoCommon(),
+            new FakeJavaCcLinkParamsProvider.Provider());
     PlatformBootstrap platformBootstrap = new PlatformBootstrap(new FakePlatformCommon());
     RepositoryBootstrap repositoryBootstrap = new RepositoryBootstrap(new FakeRepositoryModule());
     TestingBootstrap testingBootstrap = new TestingBootstrap(new FakeTestingModule(),
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD
index 37cb809..56ade88 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD
@@ -19,6 +19,7 @@
         "//src/main/java/com/google/devtools/build/lib/cmdline",
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi",
+        "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp",
         "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java",
         "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
         "//third_party:guava",
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCcLinkParamsProvider.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCcLinkParamsProvider.java
new file mode 100644
index 0000000..90c399b
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCcLinkParamsProvider.java
@@ -0,0 +1,42 @@
+// Copyright 2018 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.skydoc.fakebuildapi.java;
+
+import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcLinkingInfoApi;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaCcLinkParamsProviderApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.EvalException;
+
+/** Fake implementation of {@link JavaCcLinkParamsProvider}. */
+public class FakeJavaCcLinkParamsProvider implements JavaCcLinkParamsProviderApi<CcLinkingInfoApi> {
+
+  @Override
+  public CcLinkingInfoApi getCcLinkingInfo() {
+    return null;
+  }
+
+  /** Fake implementation of {@link JavaCcLinkParamsProvider#Provider}. */
+  public static class Provider implements JavaCcLinkParamsProviderApi.Provider<CcLinkingInfoApi> {
+
+    @Override
+    public FakeJavaCcLinkParamsProvider createInfo(CcLinkingInfoApi ccLinkingInfoApi)
+        throws EvalException {
+      return new FakeJavaCcLinkParamsProvider();
+    }
+
+    @Override
+    public void repr(SkylarkPrinter printer) {}
+  }
+}