aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/skydoc
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-06-28 12:32:46 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-28 12:33:55 -0700
commit030448ab0570d04c450b8531215411809307481e (patch)
tree9c5118c833a58306b915fd21118c70a8955cc274 /src/main/java/com/google/devtools/build/skydoc
parent358c5157508bf3a867da68c9523352edd5607e60 (diff)
Add rudimentary apple-related classes to fakebuildapi.
These fakes won't behave at all like real implementations at this time. In fact, invoking some of their methods (or accessing their fields) may result in an error. This serves, however, as the initial check-in which can be iterated on and improved later. RELNOTES: None. PiperOrigin-RevId: 202525168
Diffstat (limited to 'src/main/java/com/google/devtools/build/skydoc')
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/BUILD3
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/SkydocMain.java4
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java27
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAspect.java27
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSplitTransitionProvider.java22
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/BUILD26
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleCommon.java155
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleDynamicFrameworkInfo.java63
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleStaticLibraryInfo.java68
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleToolchain.java42
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeDottedVersion.java37
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeObjcProvider.java242
12 files changed, 716 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/skydoc/BUILD b/src/main/java/com/google/devtools/build/skydoc/BUILD
index d3bcf4b101..b80bfab727 100644
--- a/src/main/java/com/google/devtools/build/skydoc/BUILD
+++ b/src/main/java/com/google/devtools/build/skydoc/BUILD
@@ -16,6 +16,7 @@ filegroup(
name = "srcs",
srcs = glob(["**"]) + [
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi:srcs",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple:srcs",
"//src/main/java/com/google/devtools/build/skydoc/rendering:srcs",
],
)
@@ -35,8 +36,10 @@ java_library(
"//src/main/java/com/google/devtools/build/lib:events",
"//src/main/java/com/google/devtools/build/lib:syntax",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple",
"//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple",
"//src/main/java/com/google/devtools/build/skydoc/rendering",
"//third_party:guava",
"//third_party:jsr305",
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 1d9043f8b7..6a5628368e 100644
--- a/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
+++ b/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
@@ -19,6 +19,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.skylarkbuildapi.TopLevelBootstrap;
+import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleBootstrap;
import com.google.devtools.build.lib.syntax.BaseFunction;
import com.google.devtools.build.lib.syntax.BuildFileAST;
import com.google.devtools.build.lib.syntax.Environment;
@@ -38,6 +39,7 @@ import com.google.devtools.build.skydoc.fakebuildapi.FakeSkylarkCommandLineApi;
import com.google.devtools.build.skydoc.fakebuildapi.FakeSkylarkNativeModuleApi;
import com.google.devtools.build.skydoc.fakebuildapi.FakeSkylarkRuleFunctionsApi;
import com.google.devtools.build.skydoc.fakebuildapi.FakeStructApi.FakeStructProviderApi;
+import com.google.devtools.build.skydoc.fakebuildapi.apple.FakeAppleCommon;
import com.google.devtools.build.skydoc.rendering.RuleInfo;
import java.io.IOException;
import java.io.PrintWriter;
@@ -180,12 +182,14 @@ public class SkydocMain {
new FakeOutputGroupInfoProvider(),
new FakeActionsInfoProvider(),
new FakeDefaultInfoProvider());
+ AppleBootstrap appleBootstrap = new AppleBootstrap(new FakeAppleCommon());
ImmutableMap.Builder<String, Object> envBuilder = ImmutableMap.builder();
Runtime.addConstantsToBuilder(envBuilder);
MethodLibrary.addBindingsToBuilder(envBuilder);
topLevelBootstrap.addBindingsToBuilder(envBuilder);
+ appleBootstrap.addBindingsToBuilder(envBuilder);
return GlobalFrame.createForBuiltins(envBuilder.build());
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java
new file mode 100644
index 0000000000..cdf8ef1f6e
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java
@@ -0,0 +1,27 @@
+// 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;
+
+import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+
+/**
+ * Fake implementation of {@link ProviderApi}.
+ */
+public class FakeProviderApi implements ProviderApi {
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAspect.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAspect.java
new file mode 100644
index 0000000000..7cd6e108c3
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAspect.java
@@ -0,0 +1,27 @@
+// 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;
+
+import com.google.devtools.build.lib.skylarkbuildapi.SkylarkAspectApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+
+/**
+ * Fake implementation of {@link SkylarkAspectApi}.
+ */
+public class FakeSkylarkAspect implements SkylarkAspectApi {
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSplitTransitionProvider.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSplitTransitionProvider.java
new file mode 100644
index 0000000000..3d76190adc
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSplitTransitionProvider.java
@@ -0,0 +1,22 @@
+// 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;
+
+import com.google.devtools.build.lib.skylarkbuildapi.SplitTransitionProviderApi;
+
+/**
+ * Fake implementation of {@link SplitTransitionProviderApi}.
+ */
+public class FakeSplitTransitionProvider implements SplitTransitionProviderApi {}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/BUILD
new file mode 100644
index 0000000000..25246fd421
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/BUILD
@@ -0,0 +1,26 @@
+package(
+ default_visibility = ["//src:__subpackages__"],
+)
+
+licenses(["notice"]) # Apache 2.0
+
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+)
+
+java_library(
+ name = "apple",
+ srcs = glob(["*.java"]),
+ deps = [
+ "//src/main/java/com/google/devtools/build/lib:events",
+ "//src/main/java/com/google/devtools/build/lib:skylarkinterface",
+ "//src/main/java/com/google/devtools/build/lib:syntax",
+ "//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/apple",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
+ "//third_party:guava",
+ "//third_party:jsr305",
+ ],
+)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleCommon.java
new file mode 100644
index 0000000000..59a2acfeef
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleCommon.java
@@ -0,0 +1,155 @@
+// 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.apple;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
+import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi;
+import com.google.devtools.build.lib.skylarkbuildapi.SkylarkAspectApi;
+import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
+import com.google.devtools.build.lib.skylarkbuildapi.SplitTransitionProviderApi;
+import com.google.devtools.build.lib.skylarkbuildapi.StructApi;
+import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleCommonApi;
+import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleDynamicFrameworkInfoApi;
+import com.google.devtools.build.lib.skylarkbuildapi.apple.ApplePlatformApi;
+import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleStaticLibraryInfoApi.AppleStaticLibraryInfoProvider;
+import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleToolchainApi;
+import com.google.devtools.build.lib.skylarkbuildapi.apple.DottedVersionApi;
+import com.google.devtools.build.lib.skylarkbuildapi.apple.ObjcProviderApi;
+import com.google.devtools.build.lib.skylarkbuildapi.apple.XcodeConfigProviderApi;
+import com.google.devtools.build.lib.syntax.Environment;
+import com.google.devtools.build.lib.syntax.SkylarkDict;
+import com.google.devtools.build.skydoc.fakebuildapi.FakeProviderApi;
+import com.google.devtools.build.skydoc.fakebuildapi.FakeSkylarkAspect;
+import com.google.devtools.build.skydoc.fakebuildapi.FakeSplitTransitionProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.FakeStructApi;
+import com.google.devtools.build.skydoc.fakebuildapi.apple.FakeAppleStaticLibraryInfo.FakeAppleStaticLibraryInfoProvider;
+
+/**
+ * Fake implementation of {@link AppleCommonApi}.
+ */
+public class FakeAppleCommon implements AppleCommonApi<
+ FileApi,
+ ObjcProviderApi<?>,
+ XcodeConfigProviderApi<?, ?>,
+ ApplePlatformApi> {
+
+ @Override
+ public AppleToolchainApi<?> getAppleToolchain() {
+ return new FakeAppleToolchain();
+ }
+
+ @Override
+ public StructApi getPlatformTypeStruct() {
+ return new FakeStructApi();
+ }
+
+ @Override
+ public StructApi getPlatformStruct() {
+ return new FakeStructApi();
+ }
+
+ @Override
+ public ProviderApi getXcodeVersionPropertiesConstructor() {
+ return new FakeProviderApi();
+ }
+
+ @Override
+ public ProviderApi getXcodeVersionConfigConstructor() {
+ return new FakeProviderApi();
+ }
+
+ @Override
+ public ProviderApi getObjcProviderConstructor() {
+ return new FakeProviderApi();
+ }
+
+ @Override
+ public ProviderApi getAppleDynamicFrameworkConstructor() {
+ return new FakeProviderApi();
+ }
+
+ @Override
+ public ProviderApi getAppleDylibBinaryConstructor() {
+ return new FakeProviderApi();
+ }
+
+ @Override
+ public ProviderApi getAppleExecutableBinaryConstructor() {
+ return new FakeProviderApi();
+ }
+
+ @Override
+ public AppleStaticLibraryInfoProvider<?, ?> getAppleStaticLibraryProvider() {
+ return new FakeAppleStaticLibraryInfoProvider();
+ }
+
+ @Override
+ public ProviderApi getAppleDebugOutputsConstructor() {
+ return new FakeProviderApi();
+ }
+
+ @Override
+ public ProviderApi getAppleLoadableBundleBinaryConstructor() {
+ return new FakeProviderApi();
+ }
+
+ @Override
+ public SplitTransitionProviderApi getMultiArchSplitProvider() {
+ return new FakeSplitTransitionProvider();
+ }
+
+ @Override
+ public StructApi linkMultiArchBinary(
+ SkylarkRuleContextApi skylarkRuleContext, Environment environment) {
+ return new FakeStructApi();
+ }
+
+ @Override
+ public DottedVersionApi<?> dottedVersion(String version) {
+ return new FakeDottedVersion();
+ }
+
+ @Override
+ public SkylarkAspectApi getObjcProtoAspect() {
+ return new FakeSkylarkAspect();
+ }
+
+ @Override
+ public AppleDynamicFrameworkInfoApi<?, ?> newDynamicFrameworkProvider(FileApi dylibBinary,
+ ObjcProviderApi<?> depsObjcProvider, Object dynamicFrameworkDirs,
+ Object dynamicFrameworkFiles) {
+ return new FakeAppleDynamicFrameworkInfo();
+ }
+
+ @Override
+ public ObjcProviderApi<?> newObjcProvider(Boolean usesSwift, SkylarkDict<?, ?> kwargs,
+ Environment environment) {
+ return new FakeObjcProvider();
+ }
+
+ @Override
+ public ImmutableMap<String, String> getTargetAppleEnvironment(
+ XcodeConfigProviderApi<?, ?> xcodeConfig,
+ ApplePlatformApi platform) {
+ return ImmutableMap.of();
+ }
+
+ @Override
+ public ImmutableMap<String, String> getAppleHostSystemEnv(
+ XcodeConfigProviderApi<?, ?> xcodeConfig) {
+ return ImmutableMap.of();
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleDynamicFrameworkInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleDynamicFrameworkInfo.java
new file mode 100644
index 0000000000..fc9f236554
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleDynamicFrameworkInfo.java
@@ -0,0 +1,63 @@
+// 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.apple;
+
+import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
+import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleDynamicFrameworkInfoApi;
+import com.google.devtools.build.lib.skylarkbuildapi.apple.ObjcProviderApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.EvalException;
+
+/**
+ * Fake implementation of {@link AppleDynamicFrameworkInfoApi}.
+ */
+public class FakeAppleDynamicFrameworkInfo
+ implements AppleDynamicFrameworkInfoApi<Object, FileApi> {
+
+ @Override
+ public NestedSet<Object> getDynamicFrameworkDirs() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> getDynamicFrameworkFiles() {
+ return null;
+ }
+
+ @Override
+ public FileApi getAppleDylibBinary() {
+ return null;
+ }
+
+ @Override
+ public ObjcProviderApi<FileApi> getDepsObjcProvider() {
+ return new FakeObjcProvider();
+ }
+
+ @Override
+ public String toProto(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public String toJson(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleStaticLibraryInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleStaticLibraryInfo.java
new file mode 100644
index 0000000000..bc246bb8b3
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleStaticLibraryInfo.java
@@ -0,0 +1,68 @@
+// 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.apple;
+
+import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
+import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleStaticLibraryInfoApi;
+import com.google.devtools.build.lib.skylarkbuildapi.apple.ObjcProviderApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.EvalException;
+
+/**
+ * Fake implementation of {@link AppleStaticLibraryInfoApi}.
+ */
+public class FakeAppleStaticLibraryInfo implements AppleStaticLibraryInfoApi {
+
+ @Override
+ public FileApi getMultiArchArchive() {
+ return null;
+ }
+
+ @Override
+ public ObjcProviderApi<?> getDepsObjcProvider() {
+ return null;
+ }
+
+ @Override
+ public String toProto(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public String toJson(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+
+ /**
+ * Fake implementation of {@link AppleStaticLibraryInfoProvider}.
+ */
+ public static class FakeAppleStaticLibraryInfoProvider
+ implements AppleStaticLibraryInfoProvider<FileApi, ObjcProviderApi<FileApi>> {
+
+ @Override
+ public AppleStaticLibraryInfoApi appleStaticLibrary(FileApi archive,
+ ObjcProviderApi<FileApi> objcProvider)
+ throws EvalException {
+ return new FakeAppleStaticLibraryInfo();
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleToolchain.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleToolchain.java
new file mode 100644
index 0000000000..95c4344a9e
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleToolchain.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.apple;
+
+import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleConfigurationApi;
+import com.google.devtools.build.lib.skylarkbuildapi.apple.ApplePlatformTypeApi;
+import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleToolchainApi;
+
+/**
+ * Fake implementation of {@link AppleToolchainApi}.
+ */
+public class FakeAppleToolchain
+ implements AppleToolchainApi<AppleConfigurationApi<ApplePlatformTypeApi>> {
+
+ @Override
+ public String sdkDirConstant() {
+ return "";
+ }
+
+ @Override
+ public String developerDirConstant() {
+ return "";
+ }
+
+ @Override
+ public String platformFrameworkDirFromConfig(
+ AppleConfigurationApi<ApplePlatformTypeApi> configuration) {
+ return "";
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeDottedVersion.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeDottedVersion.java
new file mode 100644
index 0000000000..6ef2fe5a32
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeDottedVersion.java
@@ -0,0 +1,37 @@
+// 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.apple;
+
+import com.google.devtools.build.lib.skylarkbuildapi.apple.DottedVersionApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+
+/**
+ * Fake implementation of {@link DottedVersionApi}.
+ */
+public class FakeDottedVersion implements DottedVersionApi<FakeDottedVersion> {
+
+ @Override
+ public int compareTo_skylark(FakeDottedVersion other) {
+ return 0;
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+
+ @Override
+ public int compareTo(FakeDottedVersion o) {
+ return 0;
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeObjcProvider.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeObjcProvider.java
new file mode 100644
index 0000000000..b5dcbf4fe6
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeObjcProvider.java
@@ -0,0 +1,242 @@
+// 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.apple;
+
+import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
+import com.google.devtools.build.lib.skylarkbuildapi.apple.ObjcProviderApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
+
+/**
+ * Fake implementation of {@link ObjcProviderApi}.
+ */
+public class FakeObjcProvider implements ObjcProviderApi<FileApi> {
+
+ @Override
+ public NestedSet<FileApi> assetCatalog() {
+ return null;
+ }
+
+ @Override
+ public SkylarkNestedSet bundleFile() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<String> define() {
+ return null;
+ }
+
+ @Override
+ public SkylarkNestedSet dynamicFrameworkDir() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> dynamicFrameworkFile() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> debugSymbols() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> debugSymbolsPlist() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> exportedDebugArtifacts() {
+ return null;
+ }
+
+ @Override
+ public SkylarkNestedSet frameworkSearchPathOnly() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> forceLoadLibrary() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> header() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> importedLibrary() {
+ return null;
+ }
+
+ @Override
+ public SkylarkNestedSet include() {
+ return null;
+ }
+
+ @Override
+ public SkylarkNestedSet includeSystem() {
+ return null;
+ }
+
+ @Override
+ public SkylarkNestedSet iquote() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> j2objcLibrary() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> jreLibrary() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> library() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> linkInputs() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> linkedBinary() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> linkmapFile() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<String> linkopt() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> mergeZip() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> moduleMap() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> multiArchDynamicLibraries() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> multiArchLinkedArchives() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> multiArchLinkedBinaries() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> rootMergeZip() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<String> sdkDylib() {
+ return null;
+ }
+
+ @Override
+ public SkylarkNestedSet sdkFramework() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> source() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> staticFrameworkFile() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> storyboard() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> strings() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> umbrellaHeader() {
+ return null;
+ }
+
+ @Override
+ public SkylarkNestedSet weakSdkFramework() {
+ return null;
+ }
+
+ @Override
+ public SkylarkNestedSet xcassetsDir() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> xcdatamodel() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> xib() {
+ return null;
+ }
+
+ @Override
+ public SkylarkNestedSet getStaticFrameworkDirsForSkylark() {
+ return null;
+ }
+
+ @Override
+ public String toProto(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public String toJson(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+}