blob: 8e998426685b22995214662863593981d99925d9 [file] [log] [blame]
package {
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "frameworks_base_license"
// to get the below license kinds:
// SPDX-license-identifier-Apache-2.0
default_applicable_licenses: ["frameworks_base_license"],
// OWNER: g/ravenwood
// Bug component: 25698
default_team: "trendy_team_ravenwood",
}
filegroup {
name: "ravenwood-common-policies",
srcs: [
"texts/ravenwood-common-policies.txt",
],
visibility: ["//visibility:private"],
}
filegroup {
name: "ravenwood-services-policies",
srcs: [
"texts/ravenwood-services-policies.txt",
],
visibility: ["//visibility:private"],
}
filegroup {
name: "ravenwood-framework-policies",
srcs: [
"texts/ravenwood-framework-policies.txt",
],
visibility: ["//visibility:private"],
}
filegroup {
name: "ravenwood-standard-options",
srcs: [
"texts/ravenwood-standard-options.txt",
],
visibility: ["//visibility:private"],
}
filegroup {
name: "ravenwood-annotation-allowed-classes",
srcs: [
"texts/ravenwood-annotation-allowed-classes.txt",
],
visibility: ["//visibility:private"],
}
// This and the next module contain the same classes with different implementations.
// "ravenwood-runtime-common-device" will be statically linked in device side tests.
// "ravenwood-runtime-common-ravenwood" will only exist in ravenwood-runtime, which will take
// precedence even if the test jar (accidentally) contains "ravenwood-runtime-common-device".
// "ravenwood-runtime-common" uses it to detect if the rutime is Ravenwood or not.
java_library {
name: "ravenwood-runtime-common-ravenwood",
host_supported: true,
sdk_version: "core_current",
srcs: [
"runtime-common-ravenwood-src/**/*.java",
],
visibility: [
// Some tests need to access the utilities.
":__subpackages__",
],
}
java_library {
name: "ravenwood-runtime-common-device",
host_supported: true,
sdk_version: "core_current",
srcs: [
"runtime-common-device-src/**/*.java",
],
visibility: ["//visibility:private"],
}
java_library {
name: "ravenwood-runtime-common",
host_supported: true,
sdk_version: "core_current",
srcs: [
"runtime-common-src/**/*.java",
],
libs: [
"ravenwood-runtime-common-ravenwood",
],
static_libs: [
"framework-annotations-lib", // should it be "libs" instead?
],
visibility: ["//visibility:private"],
}
java_library_host {
name: "ravenwood-helper-libcore-runtime.host",
srcs: [
"runtime-helper-src/libcore-fake/**/*.java",
],
libs: [
"app-compat-annotations",
],
static_libs: [
"ravenwood-runtime-common",
],
visibility: ["//visibility:private"],
}
java_host_for_device {
name: "ravenwood-helper-libcore-runtime",
libs: [
"ravenwood-helper-libcore-runtime.host",
],
visibility: ["//visibility:private"],
}
java_library {
name: "ravenwood-helper-framework-runtime",
srcs: [
"runtime-helper-src/framework/**/*.java",
],
static_libs: [
"ravenwood-runtime-common",
"androidx.annotation_annotation",
],
libs: [
"framework-minus-apex.ravenwood",
"framework-configinfrastructure.ravenwood",
"ravenwood-helper-libcore-runtime",
],
sdk_version: "core_current",
visibility: ["//visibility:private"],
}
// Combine ravenwood-helper-*-runtime and create a single library, which we include
// in the ravenwood runtime.
// We do it this way rather than including the individual jars in the runtime, because
// for some reason we couldn't include a java_host_for_device module in the ravenwood runtime.
java_library {
name: "ravenwood-helper-runtime",
defaults: ["ravenwood-internal-only-visibility-java"],
static_libs: [
"ravenwood-helper-framework-runtime",
"ravenwood-helper-libcore-runtime",
],
}
java_library {
name: "ravenwood-junit-impl",
srcs: [
"junit-src/**/*.java",
"junit-impl-src/**/*.java",
],
static_libs: [
"androidx.test.monitor-for-device",
"ravenwood-runtime-common",
],
libs: [
"android.test.mock.impl",
"framework-minus-apex.ravenwood",
"ravenwood-framework",
"services.core.ravenwood",
"junit",
"framework-annotations-lib",
"ravenwood-helper-framework-runtime",
"ravenwood-helper-libcore-runtime",
"hoststubgen-helper-runtime.ravenwood",
"mockito-ravenwood-prebuilt",
],
visibility: [":__subpackages__"],
jarjar_rules: ":ravenwood-services-jarjar-rules",
}
java_device_for_host {
name: "ravenwood-junit-impl-for-ravenizer",
libs: [
"ravenwood-junit-impl",
],
visibility: [":__subpackages__"],
}
// Carefully compiles against only module_current to support tests that
// want to verify they're unbundled. The "impl" library above is what
// ships inside the Ravenwood environment to actually drive any API
// access to implementation details.
// We can't use test_current here because this library needs to be statically
// linked to mainline tests as well, which can't use test APIs because they
// need to be able to run on multiple API levels.
java_library {
name: "ravenwood-junit",
srcs: [
"junit-src/**/*.java",
"junit-stub-src/**/*.java",
"junit-flag-src/**/*.java",
],
sdk_version: "module_current",
static_libs: [
"ravenwood-runtime-common",
"ravenwood-runtime-common-device",
],
libs: [
"junit",
"flag-junit",
"framework-annotations-lib",
],
visibility: ["//visibility:public"],
}
// Library used to publish a handful of `android.ravenwood` APIs into
// the Ravenwood BCP; we don't want to publish these APIs into the BCP
// on physical devices, which is why this is a separate library
java_library {
name: "ravenwood-framework",
srcs: [
"framework-src/**/*.java",
],
libs: [
"framework-minus-apex.ravenwood",
],
sdk_version: "core_current",
visibility: ["//visibility:public"],
}
java_host_for_device {
name: "androidx.test.monitor-for-device",
libs: [
"androidx.test.monitor-for-host",
],
}
java_device_for_host {
name: "androidx.test.monitor-for-host",
libs: [
"androidx.test.monitor",
],
}
filegroup {
name: "ravenwood-framework-jarjar-rules",
srcs: ["texts/ravenwood-framework-jarjar-rules.txt"],
visibility: ["//frameworks/base"],
}
filegroup {
name: "ravenwood-services-jarjar-rules",
srcs: ["texts/ravenwood-services-jarjar-rules.txt"],
visibility: ["//frameworks/base"],
}
cc_defaults {
name: "ravenwood_jni_defaults",
cflags: [
"-Wall",
"-Werror",
"-Wno-unused-parameter",
"-Wthread-safety",
],
static_libs: [
"libnativehelper_jvm",
],
shared_libs: [
"liblog",
],
visibility: ["//visibility:private"],
}
// We need this as a separate library because we need to overload the
// sysprop symbols before libbase is loaded into the process
cc_library_host_shared {
name: "libravenwood_initializer",
defaults: ["ravenwood_jni_defaults"],
srcs: ["runtime-jni/ravenwood_initializer.cpp"],
}
cc_library_host_shared {
name: "libravenwood_runtime",
defaults: ["ravenwood_jni_defaults"],
srcs: [
"runtime-jni/ravenwood_runtime.cpp",
"runtime-jni/ravenwood_os_constants.cpp",
],
shared_libs: [
"libbase",
"libutils",
"libcutils",
],
}
// For collecting the *stats.csv files in a known directory under out/host/linux-x86/testcases/.
// The "test" just shows the available stats filenames.
sh_test_host {
name: "ravenwood-stats-checker",
src: "scripts/ravenwood-stats-checker.sh",
test_suites: ["general-tests"],
device_common_data: [
":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_stats.csv}",
":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_apis.csv}",
":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_keep_all.txt}",
":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_dump.txt}",
":services.core.ravenwood-base{hoststubgen_services.core_stats.csv}",
":services.core.ravenwood-base{hoststubgen_services.core_apis.csv}",
":services.core.ravenwood-base{hoststubgen_services.core_keep_all.txt}",
":services.core.ravenwood-base{hoststubgen_services.core_dump.txt}",
":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_stats.csv}",
":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_apis.csv}",
":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_keep_all.txt}",
":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_dump.txt}",
":framework-statsd.ravenwood-base{framework-statsd_stats.csv}",
":framework-statsd.ravenwood-base{framework-statsd_apis.csv}",
":framework-statsd.ravenwood-base{framework-statsd_keep_all.txt}",
":framework-statsd.ravenwood-base{framework-statsd_dump.txt}",
],
}
java_library {
name: "services.fakes.ravenwood-jarjar",
installable: false,
srcs: [":services.fakes-sources"],
libs: [
"ravenwood-framework",
"services.core.ravenwood",
],
jarjar_rules: ":ravenwood-services-jarjar-rules",
visibility: ["//visibility:private"],
}
java_library {
name: "mockito-ravenwood-prebuilt",
installable: false,
static_libs: [
"mockito-robolectric-prebuilt",
],
}
java_library {
name: "inline-mockito-ravenwood-prebuilt",
installable: false,
static_libs: [
"inline-mockito-robolectric-prebuilt",
],
}
// We define our own version of platform_compat_config's here, because:
// - The original version (e.g. "framework-platform-compat-config) is built from
// the output file of the device side jar, rather than the host jar, meaning
// they're slow to build because they depend on D8/R8 output.
// - The original services one ("services-platform-compat-config") is built from services.jar,
// which includes service.permission, which is very slow to rebuild because of kotlin.
//
// Because we're re-defining the same compat-IDs that are defined elsewhere,
// they should all have `include_in_merged_xml: false`. Otherwise, generating
// merged_compat_config.xml would fail due to duplicate IDs.
//
// These module names must end with "compat-config" because these will be used as the filename,
// and at runtime, we only loads files that match `*compat-config.xml`.
platform_compat_config {
name: "ravenwood-framework-platform-compat-config",
src: ":framework-minus-apex-for-host",
include_in_merged_xml: false,
visibility: ["//visibility:private"],
}
platform_compat_config {
name: "ravenwood-services.core-platform-compat-config",
src: ":services.core-for-host",
include_in_merged_xml: false,
visibility: ["//visibility:private"],
}
filegroup {
name: "ravenwood-data",
device_common_srcs: [
":system-build.prop",
":framework-res",
":ravenwood-empty-res",
":ravenwood-framework-platform-compat-config",
":ravenwood-services.core-platform-compat-config",
"texts/ravenwood-build.prop",
],
device_first_srcs: [
":apex_icu.dat",
],
visibility: ["//visibility:private"],
}
// Keep in sync with build/make/target/product/generic/Android.bp
filegroup {
name: "ravenwood-fonts",
device_common_srcs: [
":AndroidClock.ttf",
":CarroisGothicSC-Regular.ttf",
":ComingSoon.ttf",
":CutiveMono.ttf",
":DancingScript-Regular.ttf",
":DroidSansMono.ttf",
":NotoColorEmoji.ttf",
":NotoColorEmojiFlags.ttf",
":NotoNaskhArabic-Bold.ttf",
":NotoNaskhArabic-Regular.ttf",
":NotoNaskhArabicUI-Bold.ttf",
":NotoNaskhArabicUI-Regular.ttf",
":NotoSansAdlam-VF.ttf",
":NotoSansAhom-Regular.otf",
":NotoSansAnatolianHieroglyphs-Regular.otf",
":NotoSansArmenian-VF.ttf",
":NotoSansAvestan-Regular.ttf",
":NotoSansBalinese-Regular.ttf",
":NotoSansBamum-Regular.ttf",
":NotoSansBassaVah-Regular.otf",
":NotoSansBatak-Regular.ttf",
":NotoSansBengali-VF.ttf",
":NotoSansBengaliUI-VF.ttf",
":NotoSansBhaiksuki-Regular.otf",
":NotoSansBrahmi-Regular.ttf",
":NotoSansBuginese-Regular.ttf",
":NotoSansBuhid-Regular.ttf",
":NotoSansCJK-Regular.ttc",
":NotoSansCanadianAboriginal-Regular.ttf",
":NotoSansCarian-Regular.ttf",
":NotoSansChakma-Regular.otf",
":NotoSansCham-Bold.ttf",
":NotoSansCham-Regular.ttf",
":NotoSansCherokee-Regular.ttf",
":NotoSansCoptic-Regular.ttf",
":NotoSansCuneiform-Regular.ttf",
":NotoSansCypriot-Regular.ttf",
":NotoSansDeseret-Regular.ttf",
":NotoSansDevanagari-VF.ttf",
":NotoSansDevanagariUI-VF.ttf",
":NotoSansEgyptianHieroglyphs-Regular.ttf",
":NotoSansElbasan-Regular.otf",
":NotoSansEthiopic-VF.ttf",
":NotoSansGeorgian-VF.ttf",
":NotoSansGlagolitic-Regular.ttf",
":NotoSansGothic-Regular.ttf",
":NotoSansGrantha-Regular.ttf",
":NotoSansGujarati-Bold.ttf",
":NotoSansGujarati-Regular.ttf",
":NotoSansGujaratiUI-Bold.ttf",
":NotoSansGujaratiUI-Regular.ttf",
":NotoSansGunjalaGondi-Regular.otf",
":NotoSansGurmukhi-VF.ttf",
":NotoSansGurmukhiUI-VF.ttf",
":NotoSansHanifiRohingya-Regular.otf",
":NotoSansHanunoo-Regular.ttf",
":NotoSansHatran-Regular.otf",
":NotoSansHebrew-Bold.ttf",
":NotoSansHebrew-Regular.ttf",
":NotoSansImperialAramaic-Regular.ttf",
":NotoSansInscriptionalPahlavi-Regular.ttf",
":NotoSansInscriptionalParthian-Regular.ttf",
":NotoSansJavanese-Regular.otf",
":NotoSansKaithi-Regular.ttf",
":NotoSansKannada-VF.ttf",
":NotoSansKannadaUI-VF.ttf",
":NotoSansKayahLi-Regular.ttf",
":NotoSansKharoshthi-Regular.ttf",
":NotoSansKhmer-VF.ttf",
":NotoSansKhmerUI-Bold.ttf",
":NotoSansKhmerUI-Regular.ttf",
":NotoSansKhojki-Regular.otf",
":NotoSansLao-Bold.ttf",
":NotoSansLao-Regular.ttf",
":NotoSansLaoUI-Bold.ttf",
":NotoSansLaoUI-Regular.ttf",
":NotoSansLepcha-Regular.ttf",
":NotoSansLimbu-Regular.ttf",
":NotoSansLinearA-Regular.otf",
":NotoSansLinearB-Regular.ttf",
":NotoSansLisu-Regular.ttf",
":NotoSansLycian-Regular.ttf",
":NotoSansLydian-Regular.ttf",
":NotoSansMalayalam-VF.ttf",
":NotoSansMalayalamUI-VF.ttf",
":NotoSansMandaic-Regular.ttf",
":NotoSansManichaean-Regular.otf",
":NotoSansMarchen-Regular.otf",
":NotoSansMasaramGondi-Regular.otf",
":NotoSansMedefaidrin-VF.ttf",
":NotoSansMeeteiMayek-Regular.ttf",
":NotoSansMeroitic-Regular.otf",
":NotoSansMiao-Regular.otf",
":NotoSansModi-Regular.ttf",
":NotoSansMongolian-Regular.ttf",
":NotoSansMro-Regular.otf",
":NotoSansMultani-Regular.otf",
":NotoSansMyanmar-Bold.otf",
":NotoSansMyanmar-Medium.otf",
":NotoSansMyanmar-Regular.otf",
":NotoSansMyanmarUI-Bold.otf",
":NotoSansMyanmarUI-Medium.otf",
":NotoSansMyanmarUI-Regular.otf",
":NotoSansNKo-Regular.ttf",
":NotoSansNabataean-Regular.otf",
":NotoSansNewTaiLue-Regular.ttf",
":NotoSansNewa-Regular.otf",
":NotoSansOgham-Regular.ttf",
":NotoSansOlChiki-Regular.ttf",
":NotoSansOldItalic-Regular.ttf",
":NotoSansOldNorthArabian-Regular.otf",
":NotoSansOldPermic-Regular.otf",
":NotoSansOldPersian-Regular.ttf",
":NotoSansOldSouthArabian-Regular.ttf",
":NotoSansOldTurkic-Regular.ttf",
":NotoSansOriya-Bold.ttf",
":NotoSansOriya-Regular.ttf",
":NotoSansOriyaUI-Bold.ttf",
":NotoSansOriyaUI-Regular.ttf",
":NotoSansOsage-Regular.ttf",
":NotoSansOsmanya-Regular.ttf",
":NotoSansPahawhHmong-Regular.otf",
":NotoSansPalmyrene-Regular.otf",
":NotoSansPauCinHau-Regular.otf",
":NotoSansPhagsPa-Regular.ttf",
":NotoSansPhoenician-Regular.ttf",
":NotoSansRejang-Regular.ttf",
":NotoSansRunic-Regular.ttf",
":NotoSansSamaritan-Regular.ttf",
":NotoSansSaurashtra-Regular.ttf",
":NotoSansSharada-Regular.otf",
":NotoSansShavian-Regular.ttf",
":NotoSansSinhala-VF.ttf",
":NotoSansSinhalaUI-VF.ttf",
":NotoSansSoraSompeng-Regular.otf",
":NotoSansSoyombo-VF.ttf",
":NotoSansSundanese-Regular.ttf",
":NotoSansSylotiNagri-Regular.ttf",
":NotoSansSymbols-Regular-Subsetted.ttf",
":NotoSansSymbols-Regular-Subsetted2.ttf",
":NotoSansSyriacEastern-Regular.ttf",
":NotoSansSyriacEstrangela-Regular.ttf",
":NotoSansSyriacWestern-Regular.ttf",
":NotoSansTagalog-Regular.ttf",
":NotoSansTagbanwa-Regular.ttf",
":NotoSansTaiLe-Regular.ttf",
":NotoSansTaiTham-Regular.ttf",
":NotoSansTaiViet-Regular.ttf",
":NotoSansTakri-VF.ttf",
":NotoSansTamil-VF.ttf",
":NotoSansTamilUI-VF.ttf",
":NotoSansTelugu-VF.ttf",
":NotoSansTeluguUI-VF.ttf",
":NotoSansThaana-Bold.ttf",
":NotoSansThaana-Regular.ttf",
":NotoSansThai-Bold.ttf",
":NotoSansThai-Regular.ttf",
":NotoSansThaiUI-Bold.ttf",
":NotoSansThaiUI-Regular.ttf",
":NotoSansTifinagh-Regular.otf",
":NotoSansUgaritic-Regular.ttf",
":NotoSansVai-Regular.ttf",
":NotoSansWancho-Regular.otf",
":NotoSansWarangCiti-Regular.otf",
":NotoSansYi-Regular.ttf",
":NotoSerif-Bold.ttf",
":NotoSerif-BoldItalic.ttf",
":NotoSerif-Italic.ttf",
":NotoSerif-Regular.ttf",
":NotoSerifArmenian-VF.ttf",
":NotoSerifBengali-VF.ttf",
":NotoSerifCJK-Regular.ttc",
":NotoSerifDevanagari-VF.ttf",
":NotoSerifDogra-Regular.ttf",
":NotoSerifEthiopic-VF.ttf",
":NotoSerifGeorgian-VF.ttf",
":NotoSerifGujarati-VF.ttf",
":NotoSerifGurmukhi-VF.ttf",
":NotoSerifHebrew-Bold.ttf",
":NotoSerifHebrew-Regular.ttf",
":NotoSerifHentaigana.ttf",
":NotoSerifKannada-VF.ttf",
":NotoSerifKhmer-Bold.otf",
":NotoSerifKhmer-Regular.otf",
":NotoSerifLao-Bold.ttf",
":NotoSerifLao-Regular.ttf",
":NotoSerifMalayalam-VF.ttf",
":NotoSerifMyanmar-Bold.otf",
":NotoSerifMyanmar-Regular.otf",
":NotoSerifNyiakengPuachueHmong-VF.ttf",
":NotoSerifSinhala-VF.ttf",
":NotoSerifTamil-VF.ttf",
":NotoSerifTelugu-VF.ttf",
":NotoSerifThai-Bold.ttf",
":NotoSerifThai-Regular.ttf",
":NotoSerifTibetan-VF.ttf",
":NotoSerifYezidi-VF.ttf",
":Roboto-Regular.ttf",
":RobotoFlex-Regular.ttf",
":RobotoStatic-Regular.ttf",
":SourceSansPro-Bold.ttf",
":SourceSansPro-BoldItalic.ttf",
":SourceSansPro-Italic.ttf",
":SourceSansPro-Regular.ttf",
":SourceSansPro-SemiBold.ttf",
":SourceSansPro-SemiBoldItalic.ttf",
],
device_first_srcs: [
":font_fallback.xml",
":fonts.xml",
],
visibility: ["//visibility:private"],
}
// JARs in "ravenwood-runtime" are set to the classpath, sorted alphabetically.
// Rename some of the dependencies to make sure they're included in the intended order.
java_library {
name: "100-framework-minus-apex.ravenwood",
installable: false,
static_libs: ["framework-minus-apex.ravenwood"],
visibility: ["//visibility:private"],
}
java_library {
name: "200-kxml2-android",
installable: false,
static_libs: ["kxml2-android"],
visibility: ["//visibility:private"],
}
java_library {
name: "z00-all-updatable-modules-system-stubs",
installable: false,
static_libs: ["all-updatable-modules-system-stubs-for-host"],
visibility: ["//visibility:private"],
}
android_ravenwood_libgroup {
name: "ravenwood-runtime",
data: [":ravenwood-data"],
fonts: [":ravenwood-fonts"],
libs: [
"100-framework-minus-apex.ravenwood",
"200-kxml2-android",
"ravenwood-runtime-common-ravenwood",
"android.test.mock.ravenwood",
"ravenwood-helper-runtime",
"hoststubgen-helper-runtime.ravenwood",
// Note, when we include other services.* jars, we'll need to add
// platform_compat_config for that module too.
// See ravenwood-services.core-platform-compat-config above.
"services.core.ravenwood-jarjar",
"services.fakes.ravenwood-jarjar",
// ICU
"core-icu4j-for-host.ravenwood",
"icu4j-icudata-jarjar",
"icu4j-icutzdata-jarjar",
// DeviceConfig
"framework-configinfrastructure.ravenwood",
// StatsD
"framework-statsd.ravenwood",
// Provide runtime versions of utils linked in below
"junit",
"truth",
"flag-junit",
"ravenwood-framework",
"ravenwood-junit-impl",
"mockito-ravenwood-prebuilt",
"inline-mockito-ravenwood-prebuilt",
// It's a stub, so it should be towards the end.
"z00-all-updatable-modules-system-stubs",
],
jni_libs: [
// Libraries has to be loaded in the following order
"libravenwood_initializer",
"libravenwood_runtime",
"libandroid_runtime",
],
}
android_ravenwood_libgroup {
name: "ravenwood-utils",
libs: [
"junit",
"truth",
"flag-junit",
"ravenwood-framework",
"ravenwood-junit",
"mockito-ravenwood-prebuilt",
"inline-mockito-ravenwood-prebuilt",
],
}
build = [
"Framework.bp",
]