• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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