diff options
author | 2018-06-12 11:12:24 -0700 | |
---|---|---|
committer | 2018-06-12 11:13:38 -0700 | |
commit | 967eebbc8b0cbaa01b281dbad1f14c2f30742195 (patch) | |
tree | 7caa9db1b8b032cdc3da0728418ebc8fd20257f0 /src/main/java/com/google/devtools/build | |
parent | fe785e107d0f05bf8529d1460e017cbf5de184ec (diff) |
Add skylarkbuildapi bootstraps for apple, cpp, platform, and testing packages
RELNOTES: None.
PiperOrigin-RevId: 200246780
Diffstat (limited to 'src/main/java/com/google/devtools/build')
10 files changed, 152 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD index b3723d09f4..ceb0f5b6b9 100644 --- a/src/main/java/com/google/devtools/build/lib/BUILD +++ b/src/main/java/com/google/devtools/build/lib/BUILD @@ -653,6 +653,8 @@ java_library( "//src/main/java/com/google/devtools/build/lib/rules/objc", "//src/main/java/com/google/devtools/build/lib/rules/platform", "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec", + "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple", + "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp", "//src/main/java/com/google/devtools/build/lib/vfs", "//src/main/java/com/google/devtools/build/skyframe", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/CcRules.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/CcRules.java index b8067877b4..f4efdad6a6 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/CcRules.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/CcRules.java @@ -37,6 +37,7 @@ import com.google.devtools.build.lib.rules.cpp.CpuTransformer; import com.google.devtools.build.lib.rules.cpp.FdoPrefetchHintsRule; import com.google.devtools.build.lib.rules.cpp.FdoProfileRule; import com.google.devtools.build.lib.rules.platform.PlatformRules; +import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcBootstrap; /** * Rules for C++ support in Bazel. @@ -50,8 +51,6 @@ public class CcRules implements RuleSet { @Override public void init(ConfiguredRuleClassProvider.Builder builder) { - builder.addSkylarkAccessibleTopLevels("cc_common", CcModule.INSTANCE); - builder.addConfig(CppOptions.class, new CppConfigurationLoader(CpuTransformer.IDENTITY)); builder.addBuildInfoFactory(new CppBuildInfo()); @@ -75,6 +74,8 @@ public class CcRules implements RuleSet { builder.addRuleDefinition(new CcIncludeScanningRule()); builder.addRuleDefinition(new FdoProfileRule()); builder.addRuleDefinition(new FdoPrefetchHintsRule()); + + builder.addSkylarkBootstrap(new CcBootstrap(new CcModule())); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/ObjcRules.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/ObjcRules.java index 712327040d..7807d6811f 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/ObjcRules.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/ObjcRules.java @@ -45,6 +45,7 @@ import com.google.devtools.build.lib.rules.objc.ObjcLibraryRule; import com.google.devtools.build.lib.rules.objc.ObjcProtoAspect; import com.google.devtools.build.lib.rules.objc.ObjcProtoLibraryRule; import com.google.devtools.build.lib.rules.objc.ObjcRuleClasses; +import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleBootstrap; /** * Rules for Objective-C support in Bazel. @@ -65,8 +66,6 @@ public class ObjcRules implements RuleSet { ObjcProtoAspect objcProtoAspect = new ObjcProtoAspect(); builder.addBuildInfoFactory(new ObjcBuildInfoFactory()); - builder.addSkylarkAccessibleTopLevels( - "apple_common", new AppleSkylarkCommon(objcProtoAspect)); builder.addConfig(ObjcCommandLineOptions.class, new ObjcConfigurationLoader()); builder.addConfig(AppleCommandLineOptions.class, new AppleConfiguration.Loader()); @@ -105,6 +104,8 @@ public class ObjcRules implements RuleSet { builder.addRuleDefinition(new XcodeConfigRule()); builder.addRuleDefinition(new XcodeConfigAliasRule()); builder.addRuleDefinition(new XcodeVersionRule()); + + builder.addSkylarkBootstrap(new AppleBootstrap(new AppleSkylarkCommon(objcProtoAspect))); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java index 3971d9766f..d6b450debd 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java @@ -20,7 +20,6 @@ import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcModuleApi; /** A module that contains Skylark utilities for C++ support. */ public class CcModule implements CcModuleApi { - public static final CcModule INSTANCE = new CcModule(); @Override public Provider getCcToolchainProvider() { diff --git a/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformRules.java b/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformRules.java index f535fccbdc..770cb955b1 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformRules.java +++ b/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformRules.java @@ -19,6 +19,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.RuleSe import com.google.devtools.build.lib.analysis.PlatformConfigurationLoader; import com.google.devtools.build.lib.analysis.PlatformOptions; import com.google.devtools.build.lib.rules.core.CoreRules; +import com.google.devtools.build.lib.skylarkbuildapi.platform.PlatformBootstrap; /** * Rules for supporting different platforms in Bazel. @@ -42,7 +43,7 @@ public class PlatformRules implements RuleSet { builder.addRuleDefinition(new ToolchainRule()); - builder.addSkylarkAccessibleTopLevels("platform_common", new PlatformCommon()); + builder.addSkylarkBootstrap(new PlatformBootstrap(new PlatformCommon())); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestingSupportRules.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestingSupportRules.java index 26a1d52826..80698956b3 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/test/TestingSupportRules.java +++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestingSupportRules.java @@ -17,6 +17,7 @@ import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.RuleSet; import com.google.devtools.build.lib.rules.core.CoreRules; +import com.google.devtools.build.lib.skylarkbuildapi.test.TestingBootstrap; /** Rules exposing testing infrastructure to Skylark */ public final class TestingSupportRules implements RuleSet { @@ -28,7 +29,7 @@ public final class TestingSupportRules implements RuleSet { @Override public void init(ConfiguredRuleClassProvider.Builder builder) { - builder.addSkylarkAccessibleTopLevels("testing", new SkylarkTestingModule()); + builder.addSkylarkBootstrap(new TestingBootstrap(new SkylarkTestingModule())); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleBootstrap.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleBootstrap.java new file mode 100644 index 0000000000..2f34f6d862 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple/AppleBootstrap.java @@ -0,0 +1,35 @@ +// 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.apple; + +import com.google.common.collect.ImmutableMap; +import com.google.devtools.build.lib.skylarkbuildapi.Bootstrap; + +/** + * {@link Bootstrap} for skylark objects related to apple rules. + */ +public class AppleBootstrap implements Bootstrap { + + private final AppleCommonApi<?, ?, ?, ?> appleCommon; + + public AppleBootstrap(AppleCommonApi<?, ?, ?, ?> appleCommon) { + this.appleCommon = appleCommon; + } + + @Override + public void addBindingsToBuilder(ImmutableMap.Builder<String, Object> builder) { + builder.put("apple_common", appleCommon); + } +} diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcBootstrap.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcBootstrap.java new file mode 100644 index 0000000000..4286d3dbe2 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcBootstrap.java @@ -0,0 +1,35 @@ +// 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.cpp; + +import com.google.common.collect.ImmutableMap; +import com.google.devtools.build.lib.skylarkbuildapi.Bootstrap; + +/** + * {@link Bootstrap} for skylark objects related to cpp rules. + */ +public class CcBootstrap implements Bootstrap { + + private final CcModuleApi ccModule; + + public CcBootstrap(CcModuleApi ccModule) { + this.ccModule = ccModule; + } + + @Override + public void addBindingsToBuilder(ImmutableMap.Builder<String, Object> builder) { + builder.put("cc_common", ccModule); + } +} diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformBootstrap.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformBootstrap.java new file mode 100644 index 0000000000..2f5d01c353 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformBootstrap.java @@ -0,0 +1,35 @@ +// 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.platform; + +import com.google.common.collect.ImmutableMap; +import com.google.devtools.build.lib.skylarkbuildapi.Bootstrap; + +/** + * {@link Bootstrap} for skylark objects related to platforms. + */ +public class PlatformBootstrap implements Bootstrap { + + private final PlatformCommonApi platformCommon; + + public PlatformBootstrap(PlatformCommonApi platformCommon) { + this.platformCommon = platformCommon; + } + + @Override + public void addBindingsToBuilder(ImmutableMap.Builder<String, Object> builder) { + builder.put("platform_common", platformCommon); + } +} diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestingBootstrap.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestingBootstrap.java new file mode 100644 index 0000000000..40607aaa5f --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/TestingBootstrap.java @@ -0,0 +1,35 @@ +// 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.test; + +import com.google.common.collect.ImmutableMap; +import com.google.devtools.build.lib.skylarkbuildapi.Bootstrap; + +/** + * {@link Bootstrap} for skylark objects related to testing. + */ +public class TestingBootstrap implements Bootstrap { + + private final TestingModuleApi testingModule; + + public TestingBootstrap(TestingModuleApi testingModule) { + this.testingModule = testingModule; + } + + @Override + public void addBindingsToBuilder(ImmutableMap.Builder<String, Object> builder) { + builder.put("testing", testingModule); + } +} |