Vendor dependencies
Let's see how I like this workflow.
This commit is contained in:
parent
34d1830413
commit
9c435dc440
7500 changed files with 1665121 additions and 99 deletions
208
vendor/cxx/tools/buck/prelude/android/android.bzl
vendored
Normal file
208
vendor/cxx/tools/buck/prelude/android/android.bzl
vendored
Normal file
|
|
@ -0,0 +1,208 @@
|
|||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
#
|
||||
# This source code is licensed under both the MIT license found in the
|
||||
# LICENSE-MIT file in the root directory of this source tree and the Apache
|
||||
# License, Version 2.0 found in the LICENSE-APACHE file in the root directory
|
||||
# of this source tree.
|
||||
|
||||
load("@prelude//:attributes.bzl", "AaptMode", "DuplicateResourceBehaviour", "TargetCpuType")
|
||||
load("@prelude//java:dex_toolchain.bzl", "DexToolchainInfo")
|
||||
load("@prelude//java:java.bzl", "dex_min_sdk_version", "select_java_test_toolchain")
|
||||
load("@prelude//java:java_toolchain.bzl", "JavaPlatformInfo", "JavaTestToolchainInfo", "JavaToolchainInfo")
|
||||
load("@prelude//kotlin:kotlin_toolchain.bzl", "KotlinToolchainInfo")
|
||||
load("@prelude//genrule.bzl", "genrule_attributes")
|
||||
load(":android_apk.bzl", "android_apk_impl")
|
||||
load(":android_build_config.bzl", "android_build_config_impl")
|
||||
load(":android_instrumentation_apk.bzl", "android_instrumentation_apk_impl")
|
||||
load(":android_instrumentation_test.bzl", "android_instrumentation_test_impl")
|
||||
load(":android_library.bzl", "android_library_impl")
|
||||
load(":android_manifest.bzl", "android_manifest_impl")
|
||||
load(":android_prebuilt_aar.bzl", "android_prebuilt_aar_impl")
|
||||
load(":android_resource.bzl", "android_resource_impl")
|
||||
load(":android_toolchain.bzl", "AndroidPlatformInfo", "AndroidToolchainInfo")
|
||||
load(":apk_genrule.bzl", "apk_genrule_impl")
|
||||
load(":configuration.bzl", "cpu_split_transition", "cpu_split_transition_instrumentation_test_apk", "cpu_transition", "do_not_build_only_native_code_transition", "is_building_android_binary_attr")
|
||||
load(":gen_aidl.bzl", "gen_aidl_impl")
|
||||
load(":prebuilt_native_library.bzl", "prebuilt_native_library_impl")
|
||||
load(":robolectric_test.bzl", "robolectric_test_impl")
|
||||
load(":voltron.bzl", "android_app_modularity_impl")
|
||||
|
||||
def android_toolchain():
|
||||
return attrs.toolchain_dep(
|
||||
# FIXME: prelude// should be standalone (not refer to fbcode//)
|
||||
default = "fbcode//buck2/platform/toolchain:android",
|
||||
providers = [
|
||||
AndroidPlatformInfo,
|
||||
AndroidToolchainInfo,
|
||||
],
|
||||
)
|
||||
|
||||
def _dex_toolchain():
|
||||
return attrs.toolchain_dep(
|
||||
# FIXME: prelude// should be standalone (not refer to fbcode//)
|
||||
default = "fbcode//buck2/platform/toolchain:dex_for_android",
|
||||
providers = [
|
||||
DexToolchainInfo,
|
||||
],
|
||||
)
|
||||
|
||||
def java_toolchain_for_android():
|
||||
return attrs.toolchain_dep(
|
||||
# FIXME: prelude// should be standalone (not refer to fbcode//)
|
||||
default = "fbcode//buck2/platform/toolchain:java_for_android",
|
||||
providers = [
|
||||
JavaPlatformInfo,
|
||||
JavaToolchainInfo,
|
||||
],
|
||||
)
|
||||
|
||||
def _kotlin_toolchain():
|
||||
return attrs.toolchain_dep(
|
||||
# FIXME: prelude// should be standalone (not refer to fbcode//)
|
||||
default = "fbcode//buck2/platform/toolchain:kotlin",
|
||||
providers = [
|
||||
KotlinToolchainInfo,
|
||||
],
|
||||
)
|
||||
|
||||
def is_build_only_native_code():
|
||||
return select(
|
||||
{
|
||||
"DEFAULT": False,
|
||||
"fbsource//xplat/buck2/platform/android:build_only_native_code": True,
|
||||
},
|
||||
)
|
||||
|
||||
implemented_rules = {
|
||||
"android_app_modularity": android_app_modularity_impl,
|
||||
"android_binary": android_apk_impl,
|
||||
"android_build_config": android_build_config_impl,
|
||||
"android_instrumentation_apk": android_instrumentation_apk_impl,
|
||||
"android_instrumentation_test": android_instrumentation_test_impl,
|
||||
"android_library": android_library_impl,
|
||||
"android_manifest": android_manifest_impl,
|
||||
"android_prebuilt_aar": android_prebuilt_aar_impl,
|
||||
"android_resource": android_resource_impl,
|
||||
"apk_genrule": apk_genrule_impl,
|
||||
"gen_aidl": gen_aidl_impl,
|
||||
"prebuilt_native_library": prebuilt_native_library_impl,
|
||||
"robolectric_test": robolectric_test_impl,
|
||||
}
|
||||
|
||||
# Can't load `read_bool` here because it will cause circular load.
|
||||
DISABLE_SPLIT_TRANSITIONS = read_config("buck2", "android_td_disable_transitions_hack") in ("True", "true")
|
||||
|
||||
def _transition_dep_wrapper(split_transition_dep, transition_dep):
|
||||
if DISABLE_SPLIT_TRANSITIONS:
|
||||
return transition_dep
|
||||
return split_transition_dep
|
||||
|
||||
extra_attributes = {
|
||||
"android_aar": {
|
||||
"resources_root": attrs.option(attrs.string(), default = None),
|
||||
},
|
||||
"android_app_modularity": {
|
||||
"_android_toolchain": android_toolchain(),
|
||||
},
|
||||
"android_binary": {
|
||||
"aapt_mode": attrs.enum(AaptMode, default = "aapt1"), # Match default in V1
|
||||
"application_module_configs": attrs.dict(key = attrs.string(), value = attrs.list(attrs.transition_dep(cfg = cpu_transition)), sorted = False, default = {}),
|
||||
"build_config_values_file": attrs.option(attrs.one_of(attrs.transition_dep(cfg = cpu_transition), attrs.source()), default = None),
|
||||
"deps": attrs.list(_transition_dep_wrapper(split_transition_dep = attrs.split_transition_dep(cfg = cpu_split_transition), transition_dep = attrs.transition_dep(cfg = cpu_transition)), default = []),
|
||||
"dex_tool": attrs.string(default = "d8"), # Match default in V1
|
||||
"duplicate_resource_behavior": attrs.enum(DuplicateResourceBehaviour, default = "allow_by_default"), # Match default in V1
|
||||
"manifest": attrs.option(attrs.one_of(attrs.transition_dep(cfg = cpu_transition), attrs.source()), default = None),
|
||||
"manifest_skeleton": attrs.option(attrs.one_of(attrs.transition_dep(cfg = cpu_transition), attrs.source()), default = None),
|
||||
"min_sdk_version": attrs.option(attrs.int(), default = None),
|
||||
"module_manifest_skeleton": attrs.option(attrs.one_of(attrs.transition_dep(cfg = cpu_transition), attrs.source()), default = None),
|
||||
"_android_installer": attrs.default_only(attrs.label(
|
||||
# FIXME: prelude// should be standalone (not refer to buck//)
|
||||
default = "buck//src/com/facebook/buck/installer/android:android_installer",
|
||||
)),
|
||||
"_android_toolchain": android_toolchain(),
|
||||
"_dex_toolchain": _dex_toolchain(),
|
||||
"_is_building_android_binary": attrs.default_only(attrs.bool(default = True)),
|
||||
"_java_toolchain": java_toolchain_for_android(),
|
||||
},
|
||||
"android_build_config": {
|
||||
"_android_toolchain": android_toolchain(),
|
||||
"_build_only_native_code": attrs.default_only(attrs.bool(default = is_build_only_native_code())),
|
||||
"_is_building_android_binary": is_building_android_binary_attr(),
|
||||
"_java_toolchain": java_toolchain_for_android(),
|
||||
},
|
||||
"android_instrumentation_apk": {
|
||||
"aapt_mode": attrs.enum(AaptMode, default = "aapt1"), # Match default in V1
|
||||
"apk": attrs.transition_dep(cfg = do_not_build_only_native_code_transition),
|
||||
"cpu_filters": attrs.list(attrs.enum(TargetCpuType), default = []),
|
||||
"deps": attrs.list(_transition_dep_wrapper(split_transition_dep = attrs.split_transition_dep(cfg = cpu_split_transition_instrumentation_test_apk), transition_dep = attrs.transition_dep(cfg = cpu_transition)), default = []),
|
||||
"dex_tool": attrs.string(default = "d8"), # Match default in V1
|
||||
"manifest": attrs.option(attrs.one_of(attrs.transition_dep(cfg = cpu_transition), attrs.source()), default = None),
|
||||
"manifest_skeleton": attrs.option(attrs.one_of(attrs.transition_dep(cfg = cpu_transition), attrs.source()), default = None),
|
||||
"min_sdk_version": attrs.option(attrs.int(), default = None),
|
||||
"_android_toolchain": android_toolchain(),
|
||||
"_dex_toolchain": _dex_toolchain(),
|
||||
"_is_building_android_binary": attrs.default_only(attrs.bool(default = True)),
|
||||
"_java_toolchain": java_toolchain_for_android(),
|
||||
},
|
||||
"android_instrumentation_test": {
|
||||
"_android_toolchain": android_toolchain(),
|
||||
"_java_toolchain": java_toolchain_for_android(),
|
||||
},
|
||||
"android_library": {
|
||||
"resources_root": attrs.option(attrs.string(), default = None),
|
||||
"_android_toolchain": android_toolchain(),
|
||||
"_build_only_native_code": attrs.default_only(attrs.bool(default = is_build_only_native_code())),
|
||||
"_dex_min_sdk_version": attrs.default_only(attrs.option(attrs.int(), default = dex_min_sdk_version())),
|
||||
"_dex_toolchain": _dex_toolchain(),
|
||||
"_is_building_android_binary": is_building_android_binary_attr(),
|
||||
"_java_toolchain": java_toolchain_for_android(),
|
||||
"_kotlin_toolchain": _kotlin_toolchain(),
|
||||
},
|
||||
"android_manifest": {
|
||||
"_android_toolchain": android_toolchain(),
|
||||
},
|
||||
"android_prebuilt_aar": {
|
||||
# Prebuilt jars are quick to build, and often contain third-party code, which in turn is
|
||||
# often a source of annotations and constants. To ease migration to ABI generation from
|
||||
# source without deps, we have them present during ABI gen by default.
|
||||
"required_for_source_only_abi": attrs.bool(default = True),
|
||||
"_android_toolchain": android_toolchain(),
|
||||
"_build_only_native_code": attrs.default_only(attrs.bool(default = is_build_only_native_code())),
|
||||
"_dex_min_sdk_version": attrs.default_only(attrs.option(attrs.int(), default = dex_min_sdk_version())),
|
||||
"_dex_toolchain": _dex_toolchain(),
|
||||
"_java_toolchain": java_toolchain_for_android(),
|
||||
},
|
||||
"android_resource": {
|
||||
"assets": attrs.option(attrs.one_of(attrs.source(allow_directory = True), attrs.dict(key = attrs.string(), value = attrs.source(), sorted = True)), default = None),
|
||||
"project_assets": attrs.option(attrs.source(allow_directory = True), default = None),
|
||||
"project_res": attrs.option(attrs.source(allow_directory = True), default = None),
|
||||
"res": attrs.option(attrs.one_of(attrs.source(allow_directory = True), attrs.dict(key = attrs.string(), value = attrs.source(), sorted = True)), default = None),
|
||||
"_android_toolchain": android_toolchain(),
|
||||
"_build_only_native_code": attrs.default_only(attrs.bool(default = is_build_only_native_code())),
|
||||
},
|
||||
"apk_genrule": genrule_attributes() | {
|
||||
"type": attrs.string(default = "apk"),
|
||||
},
|
||||
"gen_aidl": {
|
||||
"import_paths": attrs.list(attrs.arg(), default = []),
|
||||
"_android_toolchain": android_toolchain(),
|
||||
"_java_toolchain": java_toolchain_for_android(),
|
||||
},
|
||||
"prebuilt_native_library": {
|
||||
"native_libs": attrs.source(allow_directory = True),
|
||||
},
|
||||
"robolectric_test": {
|
||||
"resources_root": attrs.option(attrs.string(), default = None),
|
||||
"robolectric_runtime_dependencies": attrs.list(attrs.source(), default = []),
|
||||
"_android_toolchain": android_toolchain(),
|
||||
"_is_building_android_binary": attrs.default_only(attrs.bool(default = False)),
|
||||
"_java_test_toolchain": attrs.default_only(attrs.exec_dep(
|
||||
default = select_java_test_toolchain(),
|
||||
providers = [
|
||||
JavaTestToolchainInfo,
|
||||
],
|
||||
)),
|
||||
"_java_toolchain": java_toolchain_for_android(),
|
||||
"_kotlin_toolchain": _kotlin_toolchain(),
|
||||
},
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue