| // 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 "frameworks_base_license" |
| // to get the below license kinds: |
| // SPDX-license-identifier-Apache-2.0 |
| // SPDX-license-identifier-MIT |
| // SPDX-license-identifier-Unicode-DFS |
| default_applicable_licenses: ["frameworks_base_license"], |
| } |
| |
| soong_config_module_type { |
| name: "custom_platform_bootclasspath", |
| module_type: "platform_bootclasspath", |
| config_namespace: "bootclasspath", |
| bool_variables: [ |
| "car_bootclasspath_fragment", |
| "nfc_apex_bootclasspath_fragment", |
| "release_crashrecovery_module", |
| ], |
| properties: [ |
| "fragments", |
| ], |
| } |
| |
| // This module provides access to information Soong has related to the |
| // whole platform bootclasspath. Currently, that information is provided solely |
| // through configuration but additional information will be added here. |
| // |
| // This will provide support for the following: |
| // * Hidden API processing for those parts of the bootclasspath that are not |
| // part of an APEX. |
| // * Compatibility checking to ensure that the hidden API bits encoded into the |
| // dex files by the modularized hidden API processing is compatible with the |
| // runtimes of earlier releases which expect the bits to have been computed |
| // over the entirety of the bootclasspath in one go not separately. |
| // * Dexpreopting apps and other libraries not on the platform bootclasspath. |
| // * Generating and installing the appropriate files to the device which will |
| // allow it to generate the bootclasspath related environment variables |
| // dynamically. |
| // |
| // This module needs to be present in the build for the above processing to be |
| // done correctly. |
| custom_platform_bootclasspath { |
| name: "platform-bootclasspath", |
| |
| // The bootclasspath_fragments that contribute to the platform |
| // bootclasspath. |
| fragments: [ |
| { |
| apex: "com.android.adservices", |
| module: "com.android.adservices-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.appsearch", |
| module: "com.android.appsearch-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.art", |
| module: "art-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.btservices", |
| module: "com.android.btservices-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.configinfrastructure", |
| module: "com.android.configinfrastructure-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.conscrypt", |
| module: "com.android.conscrypt-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.devicelock", |
| module: "com.android.devicelock-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.healthfitness", |
| module: "com.android.healthfitness-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.i18n", |
| module: "i18n-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.ipsec", |
| module: "com.android.ipsec-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.media", |
| module: "com.android.media-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.mediaprovider", |
| module: "com.android.mediaprovider-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.ondevicepersonalization", |
| module: "com.android.ondevicepersonalization-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.os.statsd", |
| module: "com.android.os.statsd-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.permission", |
| module: "com.android.permission-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.profiling", |
| module: "com.android.profiling-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.scheduling", |
| module: "com.android.scheduling-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.sdkext", |
| module: "com.android.sdkext-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.tethering", |
| module: "com.android.tethering-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.uwb", |
| module: "com.android.uwb-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.wifi", |
| module: "com.android.wifi-bootclasspath-fragment", |
| }, |
| { |
| apex: "com.android.virt", |
| module: "com.android.virt-bootclasspath-fragment", |
| }, |
| ], |
| |
| soong_config_variables: { |
| car_bootclasspath_fragment: { |
| fragments: [ |
| // only used for auto |
| { |
| apex: "com.android.car.framework", |
| module: "com.android.car.framework-bootclasspath-fragment", |
| }, |
| ], |
| }, |
| nfc_apex_bootclasspath_fragment: { |
| fragments: [ |
| // only used if NFC mainline is enabled. |
| { |
| apex: "com.android.nfcservices", |
| module: "com.android.nfcservices-bootclasspath-fragment", |
| }, |
| ], |
| }, |
| release_crashrecovery_module: { |
| fragments: [ |
| // only used when crashrecovery is enabled |
| { |
| apex: "com.android.crashrecovery", |
| module: "com.android.crashrecovery-bootclasspath-fragment", |
| }, |
| ], |
| }, |
| }, |
| |
| // Additional information needed by hidden api processing. |
| hidden_api: { |
| unsupported: [ |
| "hiddenapi/hiddenapi-unsupported.txt", |
| ], |
| removed: [ |
| ":combined-removed-dex", |
| ], |
| max_target_r_low_priority: [ |
| "hiddenapi/hiddenapi-max-target-r-loprio.txt", |
| ], |
| max_target_q: [ |
| "hiddenapi/hiddenapi-max-target-q.txt", |
| ], |
| max_target_p: [ |
| "hiddenapi/hiddenapi-max-target-p.txt", |
| ], |
| max_target_o_low_priority: [ |
| "hiddenapi/hiddenapi-max-target-o.txt", |
| ], |
| unsupported_packages: [ |
| "hiddenapi/hiddenapi-unsupported-packages.txt", |
| ], |
| }, |
| |
| dists: [ |
| { |
| targets: ["droidcore"], |
| tag: "hiddenapi-flags.csv", |
| }, |
| { |
| targets: ["droidcore"], |
| tag: "hiddenapi-index.csv", |
| }, |
| { |
| targets: ["droidcore"], |
| tag: "hiddenapi-metadata.csv", |
| // Legacy name |
| dest: "hiddenapi-unsupported.csv", |
| }, |
| ], |
| |
| required: [ |
| "platform-systemserverclasspath", |
| ], |
| } |
| |
| genrule { // This module exists to make the srcjar output available to Make. |
| name: "platform-bootclasspath.srcjar", |
| srcs: [":platform-bootclasspath{.srcjar}"], |
| out: ["platform-bootclasspath.srcjar"], |
| cmd: "cp $(in) $(out)", |
| } |
| |
| platform_systemserverclasspath { |
| name: "platform-systemserverclasspath", |
| } |