blob: a2fa55ca42d3a9498f1341a26bce36d2630d418b [file] [log] [blame]
// Copyright (C) 2021 The Android Open Source Project
//
// 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 {
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "art_license"
// to get the below license kinds:
// SPDX-license-identifier-Apache-2.0
default_applicable_licenses: ["art_license"],
}
// TODO: b/319697968 - Remove the conditional logic and let art-bootclasspath-fragment always
// depend on the exportable stubs once metalava fully supports flagged api handling.
soong_config_module_type {
name: "art_bootclasspath_fragment_soong_config_defaults",
module_type: "java_defaults",
config_namespace: "ANDROID",
bool_variables: [
"release_hidden_api_exportable_stubs",
],
properties: [
"core_platform_api.stub_libs",
],
}
art_bootclasspath_fragment_soong_config_defaults {
name: "art-bootclasspath-fragment-soong-config-defaults",
soong_config_variables: {
release_hidden_api_exportable_stubs: {
// When "RELEASE_HIDDEN_API_EXPORTABLE_STUBS" build flag is set,
// depend on the exportable stubs
core_platform_api: {
stub_libs: [
// Core platform (aka. module_lib) stubs for all the non-coverage contents.
"art.module.public.api.stubs.exportable.module_lib",
],
},
conditions_default: {
// When "RELEASE_HIDDEN_API_EXPORTABLE_STUBS" build flag is not set,
// depend on the everything stubs
core_platform_api: {
stub_libs: [
// Core platform (aka. module_lib) stubs for all the non-coverage contents.
"art.module.public.api.stubs.module_lib",
],
},
},
},
},
}
// Encapsulate the contributions made by the com.android.art to the bootclasspath.
bootclasspath_fragment {
name: "art-bootclasspath-fragment",
defaults: [
"art-bootclasspath-fragment-soong-config-defaults",
],
image_name: "art",
// Must match the ART_APEX_JARS set in build/make/core/envsetup.mk
contents: [
"core-oj",
"core-libart",
"okhttp",
"bouncycastle",
"apache-xml",
],
api: {
stub_libs: [
// Stubs for the core-oj and core-libart. The other modules do not
// have any public API.
"art.module.public.api",
],
},
// Additional properties to append when coverage is enabled, i.e. when
// EMMA_INSTRUMENT_FRAMEWORK=true
coverage: {
contents: [
"jacocoagent",
],
api: {
stub_libs: [
// Stubs for the jacocoagent.
"jacoco-stubs",
],
},
hidden_api: {
// Additional packages provided by jacoagent
package_prefixes: [
"com.vladium.emma.rt",
"org.jacoco",
"org.objectweb.asm",
],
},
},
visibility: [
"//art/build/apex",
"//art/build/sdk",
],
apex_available: [
"com.android.art",
"com.android.art.debug",
],
hidden_api: {
blocked: ["hiddenapi/hiddenapi-blocked.txt"],
max_target_o_low_priority: ["hiddenapi/hiddenapi-max-target-o-low-priority.txt"],
unsupported_packages: ["hiddenapi/hiddenapi-unsupported-packages.txt"],
// This module does not contain any split packages.
split_packages: [],
// The following packages currently only contain classes from this
// bootclasspath_fragment but some of their sub-packages contain classes
// from other bootckasspath modules. Packages should only be listed here
// when necessary for legacy purposes, new packages should match a
// package prefix.
single_packages: [
"android.system",
],
// The following packages and all their subpackages currently only
// contain classes from this bootclasspath_fragment. Listing a package
// here won't prevent other bootclasspath modules from adding classes in
// any of those packages but it will prevent them from adding those
// classes into an API surface, e.g. public, system, etc.. Doing so will
// result in a build failure due to inconsistent flags.
package_prefixes: [
"android.compat",
"android.crypto.hpke",
"com.android.okhttp",
"com.android.org.bouncycastle",
"com.android.org.kxml2",
"com.sun",
"dalvik",
"java",
"javax.annotation",
"javax.crypto",
"javax.net",
"javax.security",
"javax.sql",
"javax.xml",
"jdk",
"libcore",
"org.apache.harmony",
"org.apache.xalan",
"org.apache.xml",
"org.apache.xpath",
"org.json",
"org.w3c",
"org.xml",
"org.xmlpull",
"sun",
],
},
}
// Encapsulate the contributions made by the com.android.art to the systemserverclasspath.
systemserverclasspath_fragment {
name: "art-systemserverclasspath-fragment",
contents: ["service-art"],
apex_available: [
"com.android.art",
"com.android.art.debug",
],
}