1// Copyright (C) 2021 The Android Open Source Project 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package { 16 // See: http://go/android-license-faq 17 // A large-scale-change added 'default_applicable_licenses' to import 18 // all of the 'license_kinds' from "frameworks_base_license" 19 // to get the below license kinds: 20 // SPDX-license-identifier-Apache-2.0 21 // SPDX-license-identifier-MIT 22 // SPDX-license-identifier-Unicode-DFS 23 default_applicable_licenses: ["frameworks_base_license"], 24} 25 26soong_config_module_type { 27 name: "custom_platform_bootclasspath", 28 module_type: "platform_bootclasspath", 29 config_namespace: "AUTO", 30 bool_variables: [ 31 "car_bootclasspath_fragment", 32 ], 33 properties: [ 34 "fragments", 35 ], 36} 37 38// This module provides access to information Soong has related to the 39// whole platform bootclasspath. Currently, that information is provided solely 40// through configuration but additional information will be added here. 41// 42// This will provide support for the following: 43// * Hidden API processing for those parts of the bootclasspath that are not 44// part of an APEX. 45// * Compatibility checking to ensure that the hidden API bits encoded into the 46// dex files by the modularized hidden API processing is compatible with the 47// runtimes of earlier releases which expect the bits to have been computed 48// over the entirety of the bootclasspath in one go not separately. 49// * Dexpreopting apps and other libraries not on the platform bootclasspath. 50// * Generating and installing the appropriate files to the device which will 51// allow it to generate the bootclasspath related environment variables 52// dynamically. 53// 54// This module needs to be present in the build for the above processing to be 55// done correctly. 56custom_platform_bootclasspath { 57 name: "platform-bootclasspath", 58 59 // The bootclasspath_fragments that contribute to the platform 60 // bootclasspath. 61 fragments: [ 62 { 63 apex: "com.android.adservices", 64 module: "com.android.adservices-bootclasspath-fragment", 65 }, 66 { 67 apex: "com.android.appsearch", 68 module: "com.android.appsearch-bootclasspath-fragment", 69 }, 70 { 71 apex: "com.android.art", 72 module: "art-bootclasspath-fragment", 73 }, 74 { 75 apex: "com.android.btservices", 76 module: "com.android.btservices-bootclasspath-fragment", 77 }, 78 { 79 apex: "com.android.configinfrastructure", 80 module: "com.android.configinfrastructure-bootclasspath-fragment", 81 }, 82 { 83 apex: "com.android.conscrypt", 84 module: "com.android.conscrypt-bootclasspath-fragment", 85 }, 86 { 87 apex: "com.android.devicelock", 88 module: "com.android.devicelock-bootclasspath-fragment", 89 }, 90 { 91 apex: "com.android.healthfitness", 92 module: "com.android.healthfitness-bootclasspath-fragment", 93 }, 94 { 95 apex: "com.android.i18n", 96 module: "i18n-bootclasspath-fragment", 97 }, 98 { 99 apex: "com.android.ipsec", 100 module: "com.android.ipsec-bootclasspath-fragment", 101 }, 102 { 103 apex: "com.android.media", 104 module: "com.android.media-bootclasspath-fragment", 105 }, 106 { 107 apex: "com.android.mediaprovider", 108 module: "com.android.mediaprovider-bootclasspath-fragment", 109 }, 110 { 111 apex: "com.android.ondevicepersonalization", 112 module: "com.android.ondevicepersonalization-bootclasspath-fragment", 113 }, 114 { 115 apex: "com.android.os.statsd", 116 module: "com.android.os.statsd-bootclasspath-fragment", 117 }, 118 { 119 apex: "com.android.permission", 120 module: "com.android.permission-bootclasspath-fragment", 121 }, 122 { 123 apex: "com.android.scheduling", 124 module: "com.android.scheduling-bootclasspath-fragment", 125 }, 126 { 127 apex: "com.android.sdkext", 128 module: "com.android.sdkext-bootclasspath-fragment", 129 }, 130 { 131 apex: "com.android.tethering", 132 module: "com.android.tethering-bootclasspath-fragment", 133 }, 134 { 135 apex: "com.android.uwb", 136 module: "com.android.uwb-bootclasspath-fragment", 137 }, 138 { 139 apex: "com.android.wifi", 140 module: "com.android.wifi-bootclasspath-fragment", 141 }, 142 { 143 apex: "com.android.virt", 144 module: "com.android.virt-bootclasspath-fragment", 145 }, 146 ], 147 148 soong_config_variables: { 149 car_bootclasspath_fragment: { 150 fragments: [ 151 // only used for auto 152 { 153 apex: "com.android.car.framework", 154 module: "com.android.car.framework-bootclasspath-fragment", 155 }, 156 ], 157 }, 158 }, 159 160 // Additional information needed by hidden api processing. 161 hidden_api: { 162 unsupported: [ 163 "hiddenapi/hiddenapi-unsupported.txt", 164 ], 165 removed: [ 166 ":combined-removed-dex", 167 ], 168 max_target_r_low_priority: [ 169 "hiddenapi/hiddenapi-max-target-r-loprio.txt", 170 ], 171 max_target_q: [ 172 "hiddenapi/hiddenapi-max-target-q.txt", 173 ], 174 max_target_p: [ 175 "hiddenapi/hiddenapi-max-target-p.txt", 176 ], 177 max_target_o_low_priority: [ 178 "hiddenapi/hiddenapi-max-target-o.txt", 179 ], 180 unsupported_packages: [ 181 "hiddenapi/hiddenapi-unsupported-packages.txt", 182 ], 183 }, 184 185 dists: [ 186 { 187 targets: ["droidcore"], 188 tag: "hiddenapi-flags.csv", 189 }, 190 { 191 targets: ["droidcore"], 192 tag: "hiddenapi-index.csv", 193 }, 194 { 195 targets: ["droidcore"], 196 tag: "hiddenapi-metadata.csv", 197 // Legacy name 198 dest: "hiddenapi-unsupported.csv", 199 }, 200 ], 201 202 required: [ 203 "platform-systemserverclasspath", 204 ], 205} 206 207platform_systemserverclasspath { 208 name: "platform-systemserverclasspath", 209} 210