diff --git a/rules/android_binary/impl.bzl b/rules/android_binary/impl.bzl index d7aea89e8..342647754 100644 --- a/rules/android_binary/impl.bzl +++ b/rules/android_binary/impl.bzl @@ -13,6 +13,10 @@ # limitations under the License. """Implementation.""" +load("@bazel_skylib//rules:common_settings.bzl", "BuildSettingInfo") +load("@rules_java//java/common:java_common.bzl", "java_common") +load("@rules_java//java/common:java_info.bzl", "JavaInfo") +load("@rules_java//java/common:java_plugin_info.bzl", "JavaPluginInfo") load("//providers:providers.bzl", "AndroidDexInfo", "AndroidFeatureFlagSet", "AndroidIdlInfo", "AndroidInstrumentationInfo", "AndroidLibraryResourceClassJarProvider", "AndroidOptimizationInfo", "AndroidPreDexJarInfo", "ApkInfo", "BaselineProfileProvider", "DataBindingV2Info", "ProguardMappingInfo", "StarlarkAndroidDexInfo", "StarlarkAndroidResourcesInfo", "StarlarkApkInfo") load("//rules:acls.bzl", "acls") load("//rules:apk_packaging.bzl", _apk_packaging = "apk_packaging") @@ -38,6 +42,7 @@ load("//rules:proguard.bzl", "proguard") load("//rules:resources.bzl", _resources = "resources") load( "//rules:utils.bzl", + "ANDROID_PIPELINE_TOOLCHAIN_TYPE", "ANDROID_TOOLCHAIN_TYPE", "compilation_mode", "get_android_sdk", @@ -45,10 +50,6 @@ load( "utils", ) load("//rules:visibility.bzl", "PROJECT_VISIBILITY") -load("@rules_java//java/common:java_common.bzl", "java_common") -load("@rules_java//java/common:java_info.bzl", "JavaInfo") -load("@rules_java//java/common:java_plugin_info.bzl", "JavaPluginInfo") -load("@bazel_skylib//rules:common_settings.bzl", "BuildSettingInfo") load(":r8.bzl", "process_r8", "process_resource_shrinking_r8") visibility(PROJECT_VISIBILITY) @@ -1100,7 +1101,7 @@ PROCESSORS = dict( CoverageProcessor = _process_coverage, ) -_PROCESSING_PIPELINE = processing_pipeline.make_processing_pipeline( +PROCESSING_PIPELINE = processing_pipeline.make_processing_pipeline( processors = PROCESSORS, finalize = finalize, ) @@ -1115,4 +1116,8 @@ def impl(ctx): A list of providers. """ java_package = java.resolve_package_from_label(ctx.label, ctx.attr.custom_package) - return processing_pipeline.run(ctx, java_package, _PROCESSING_PIPELINE) + pipeline = PROCESSING_PIPELINE + tt = ctx.toolchains[ANDROID_PIPELINE_TOOLCHAIN_TYPE] + if tt: + pipeline = tt.binary + return processing_pipeline.run(ctx, java_package, pipeline) diff --git a/rules/android_binary/rule.bzl b/rules/android_binary/rule.bzl index 9b2d9968d..e922526ad 100644 --- a/rules/android_binary/rule.bzl +++ b/rules/android_binary/rule.bzl @@ -13,15 +13,15 @@ # limitations under the License. """Starlark Android Binary for Android Rules.""" +load("@rules_java//java/common:java_info.bzl", "JavaInfo") load("//providers:providers.bzl", "ApkInfo") load("//rules:acls.bzl", "acls") load( "//rules:attrs.bzl", _attrs = "attrs", ) -load("//rules:utils.bzl", "ANDROID_SDK_TOOLCHAIN_TYPE") +load("//rules:utils.bzl", "ANDROID_PIPELINE_TOOLCHAIN_TYPE", "ANDROID_SDK_TOOLCHAIN_TYPE", "ANDROID_TOOLCHAIN_TYPE") load("//rules:visibility.bzl", "PROJECT_VISIBILITY") -load("@rules_java//java/common:java_info.bzl", "JavaInfo") load(":attrs.bzl", "ATTRS") load(":impl.bzl", "impl") @@ -74,7 +74,11 @@ def make_rule( implementation = implementation, provides = provides, toolchains = [ - "//toolchains/android:toolchain_type", + config_common.toolchain_type( + ANDROID_PIPELINE_TOOLCHAIN_TYPE, + mandatory = False, + ), + ANDROID_TOOLCHAIN_TYPE, ANDROID_SDK_TOOLCHAIN_TYPE, "@bazel_tools//tools/jdk:toolchain_type", ] + additional_toolchains, diff --git a/rules/android_library/impl.bzl b/rules/android_library/impl.bzl index 3d4497a43..c9a22066d 100644 --- a/rules/android_library/impl.bzl +++ b/rules/android_library/impl.bzl @@ -13,6 +13,11 @@ # limitations under the License. """Implementation.""" +load("@rules_cc//cc/common:cc_common.bzl", "cc_common") +load("@rules_cc//cc/common:cc_info.bzl", "CcInfo") +load("@rules_java//java/common:java_info.bzl", "JavaInfo") +load("@rules_java//java/common:java_plugin_info.bzl", "JavaPluginInfo") +load("@rules_java//java/common:proguard_spec_info.bzl", "ProguardSpecInfo") load("//providers:providers.bzl", "AndroidCcLinkParamsInfo", "AndroidIdlInfo", "AndroidLibraryAarInfo", "AndroidLintRulesInfo", "AndroidNativeLibsInfo", "BaselineProfileProvider", "DataBindingV2Info", "StarlarkAndroidResourcesInfo", "StarlarkApkInfo") load("//rules:acls.bzl", "acls") load("//rules:attrs.bzl", _attrs = "attrs") @@ -28,14 +33,9 @@ load( ) load("//rules:proguard.bzl", _proguard = "proguard") load("//rules:resources.bzl", _resources = "resources") -load("//rules:utils.bzl", "get_android_sdk", "get_android_toolchain", "log", "utils") +load("//rules:utils.bzl", "ANDROID_PIPELINE_TOOLCHAIN_TYPE", "get_android_sdk", "get_android_toolchain", "log", "utils") load("//rules:visibility.bzl", "PROJECT_VISIBILITY") load("//rules/flags:flags.bzl", _flags = "flags") -load("@rules_cc//cc/common:cc_common.bzl", "cc_common") -load("@rules_cc//cc/common:cc_info.bzl", "CcInfo") -load("@rules_java//java/common:java_info.bzl", "JavaInfo") -load("@rules_java//java/common:java_plugin_info.bzl", "JavaPluginInfo") -load("@rules_java//java/common:proguard_spec_info.bzl", "ProguardSpecInfo") visibility(PROJECT_VISIBILITY) @@ -585,7 +585,7 @@ def finalize( ]) return providers -_PROCESSING_PIPELINE = processing_pipeline.make_processing_pipeline( +PROCESSING_PIPELINE = processing_pipeline.make_processing_pipeline( processors = PROCESSORS, finalize = finalize, ) @@ -600,4 +600,8 @@ def impl(ctx): A legacy struct provider. """ java_package = _java.resolve_package_from_label(ctx.label, ctx.attr.custom_package) - return processing_pipeline.run(ctx, java_package, _PROCESSING_PIPELINE) + pipeline = PROCESSING_PIPELINE + tt = ctx.toolchains[ANDROID_PIPELINE_TOOLCHAIN_TYPE] + if tt: + pipeline = tt.library + return processing_pipeline.run(ctx, java_package, pipeline) diff --git a/rules/android_library/rule.bzl b/rules/android_library/rule.bzl index 4b3c53272..212338931 100644 --- a/rules/android_library/rule.bzl +++ b/rules/android_library/rule.bzl @@ -13,14 +13,14 @@ # limitations under the License. """android_library rule.""" +load("@rules_java//java/common:java_info.bzl", "JavaInfo") load("//providers:providers.bzl", "AndroidCcLinkParamsInfo", "AndroidIdeInfo", "AndroidIdlInfo", "AndroidLibraryResourceClassJarProvider", "AndroidNativeLibsInfo") load( "//rules:attrs.bzl", _attrs = "attrs", ) -load("//rules:utils.bzl", "ANDROID_SDK_TOOLCHAIN_TYPE") +load("//rules:utils.bzl", "ANDROID_PIPELINE_TOOLCHAIN_TYPE", "ANDROID_SDK_TOOLCHAIN_TYPE") load("//rules:visibility.bzl", "PROJECT_VISIBILITY") -load("@rules_java//java/common:java_info.bzl", "JavaInfo") load(":attrs.bzl", _ATTRS = "ATTRS") load(":impl.bzl", _impl = "impl") @@ -172,6 +172,10 @@ def make_rule( toolchains = [ "//toolchains/android:toolchain_type", "@bazel_tools//tools/jdk:toolchain_type", + config_common.toolchain_type( + ANDROID_PIPELINE_TOOLCHAIN_TYPE, + mandatory = False, + ), ANDROID_SDK_TOOLCHAIN_TYPE, ] + additional_toolchains, _skylark_testable = True, diff --git a/rules/utils.bzl b/rules/utils.bzl index d0f5b555d..2082df01f 100644 --- a/rules/utils.bzl +++ b/rules/utils.bzl @@ -20,6 +20,7 @@ visibility(PROJECT_VISIBILITY) ANDROID_TOOLCHAIN_TYPE = Label("//toolchains/android:toolchain_type") ANDROID_SDK_TOOLCHAIN_TYPE = Label("//toolchains/android_sdk:toolchain_type") +ANDROID_PIPELINE_TOOLCHAIN_TYPE = Label("//toolchains/pipeline:toolchain_type") _CUU = "\033[A" _EL = "\033[K" diff --git a/toolchains/pipeline/BUILD.bazel b/toolchains/pipeline/BUILD.bazel new file mode 100644 index 000000000..c6d09a29f --- /dev/null +++ b/toolchains/pipeline/BUILD.bazel @@ -0,0 +1,4 @@ +toolchain_type( + name = "toolchain_type", + visibility = ["//visibility:public"], +) diff --git a/toolchains/pipeline/toolchain.bzl b/toolchains/pipeline/toolchain.bzl new file mode 100644 index 000000000..6a07b355c --- /dev/null +++ b/toolchains/pipeline/toolchain.bzl @@ -0,0 +1,21 @@ +load( + "//rules/android_binary:impl.bzl", + binary_pipeline = "PROCESSING_PIPELINE", +) +load( + "//rules/android_library:impl.bzl", + library_pipeline = "PROCESSING_PIPELINE", +) + +def _impl(ctx): + return [ + platform_common.ToolchainInfo( + library = library_pipeline, + binary = binary_pipeline, + ), + ] + +android_toolchain = rule( + implementation = _impl, + attrs = {}, +)