xref: /aosp_15_r20/cts/tests/signature/api-check/shared-libs-api/Android.bp (revision b7c941bb3fa97aba169d73cee0bed2de8ac964bf)
1*b7c941bbSAndroid Build Coastguard Worker// Copyright (C) 2019 The Android Open Source Project
2*b7c941bbSAndroid Build Coastguard Worker//
3*b7c941bbSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*b7c941bbSAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*b7c941bbSAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*b7c941bbSAndroid Build Coastguard Worker//
7*b7c941bbSAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
8*b7c941bbSAndroid Build Coastguard Worker//
9*b7c941bbSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*b7c941bbSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*b7c941bbSAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*b7c941bbSAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*b7c941bbSAndroid Build Coastguard Worker// limitations under the License.
14*b7c941bbSAndroid Build Coastguard Worker
15*b7c941bbSAndroid Build Coastguard Workerpackage {
16*b7c941bbSAndroid Build Coastguard Worker    default_team: "trendy_team_updatable_sdk_apis",
17*b7c941bbSAndroid Build Coastguard Worker    // See: http://go/android-license-faq
18*b7c941bbSAndroid Build Coastguard Worker    default_applicable_licenses: ["Android-Apache-2.0"],
19*b7c941bbSAndroid Build Coastguard Worker}
20*b7c941bbSAndroid Build Coastguard Worker
21*b7c941bbSAndroid Build Coastguard Workerjava_library {
22*b7c941bbSAndroid Build Coastguard Worker    name: "cts-api-signature-multilib-test",
23*b7c941bbSAndroid Build Coastguard Worker    srcs: ["src/**/*.java"],
24*b7c941bbSAndroid Build Coastguard Worker    sdk_version: "test_current",
25*b7c941bbSAndroid Build Coastguard Worker    static_libs: [
26*b7c941bbSAndroid Build Coastguard Worker        "cts-api-signature-test",
27*b7c941bbSAndroid Build Coastguard Worker        "compatibility-device-util-axt",
28*b7c941bbSAndroid Build Coastguard Worker        "junit-params",
29*b7c941bbSAndroid Build Coastguard Worker    ],
30*b7c941bbSAndroid Build Coastguard Worker}
31*b7c941bbSAndroid Build Coastguard Worker
32*b7c941bbSAndroid Build Coastguard Workerandroid_test {
33*b7c941bbSAndroid Build Coastguard Worker    name: "CtsSharedLibsApiSignatureTestCases",
34*b7c941bbSAndroid Build Coastguard Worker    defaults: ["cts_defaults"],
35*b7c941bbSAndroid Build Coastguard Worker
36*b7c941bbSAndroid Build Coastguard Worker    // Ensure that any android.test and junit classes embedded within this test do not conflict with
37*b7c941bbSAndroid Build Coastguard Worker    // the classes provided by the android.test.base or android.test.runner shared libraries.
38*b7c941bbSAndroid Build Coastguard Worker    jarjar_rules: ":cts-android-test-jarjar-rules",
39*b7c941bbSAndroid Build Coastguard Worker
40*b7c941bbSAndroid Build Coastguard Worker    java_resources: [
41*b7c941bbSAndroid Build Coastguard Worker        ":cts-current-api-gz",
42*b7c941bbSAndroid Build Coastguard Worker        ":cts-shared-libs-names.txt",
43*b7c941bbSAndroid Build Coastguard Worker        ":CtsSharedLibsApiSignatureTestCases_cts-shared-libs-all-current.api",
44*b7c941bbSAndroid Build Coastguard Worker        ":CtsSharedLibsApiSignatureTestCases_cts-shared-libs-all-previous.api",
45*b7c941bbSAndroid Build Coastguard Worker    ],
46*b7c941bbSAndroid Build Coastguard Worker    static_libs: [
47*b7c941bbSAndroid Build Coastguard Worker        "cts-api-signature-multilib-test",
48*b7c941bbSAndroid Build Coastguard Worker        "cts-api-signature-test",
49*b7c941bbSAndroid Build Coastguard Worker    ],
50*b7c941bbSAndroid Build Coastguard Worker    test_suites: [
51*b7c941bbSAndroid Build Coastguard Worker        "cts",
52*b7c941bbSAndroid Build Coastguard Worker        "general-tests",
53*b7c941bbSAndroid Build Coastguard Worker    ],
54*b7c941bbSAndroid Build Coastguard Worker    sdk_version: "current",
55*b7c941bbSAndroid Build Coastguard Worker    jni_libs: ["libclassdescriptors"],
56*b7c941bbSAndroid Build Coastguard Worker    compile_multilib: "both",
57*b7c941bbSAndroid Build Coastguard Worker    dex_preopt: {
58*b7c941bbSAndroid Build Coastguard Worker        enabled: false,
59*b7c941bbSAndroid Build Coastguard Worker    },
60*b7c941bbSAndroid Build Coastguard Worker    optimize: {
61*b7c941bbSAndroid Build Coastguard Worker        enabled: false,
62*b7c941bbSAndroid Build Coastguard Worker    },
63*b7c941bbSAndroid Build Coastguard Worker    use_embedded_native_libs: false,
64*b7c941bbSAndroid Build Coastguard Worker    srcs: ["src/**/*.java"],
65*b7c941bbSAndroid Build Coastguard Worker}
66*b7c941bbSAndroid Build Coastguard Worker
67*b7c941bbSAndroid Build Coastguard Workergenrule {
68*b7c941bbSAndroid Build Coastguard Worker    name: "cts-shared-libs-names.txt",
69*b7c941bbSAndroid Build Coastguard Worker    srcs: [
70*b7c941bbSAndroid Build Coastguard Worker        "AndroidManifest.xml",
71*b7c941bbSAndroid Build Coastguard Worker    ],
72*b7c941bbSAndroid Build Coastguard Worker    out: [
73*b7c941bbSAndroid Build Coastguard Worker        "shared-libs-names.txt",
74*b7c941bbSAndroid Build Coastguard Worker    ],
75*b7c941bbSAndroid Build Coastguard Worker    cmd: "grep 'uses-library' $(in) | cut -f2 -d\\\" | sort > $(out)",
76*b7c941bbSAndroid Build Coastguard Worker}
77*b7c941bbSAndroid Build Coastguard Worker
78*b7c941bbSAndroid Build Coastguard Worker// Generates a zip file containing the current public and system API files for shared libraries.
79*b7c941bbSAndroid Build Coastguard Workerjava_genrule {
80*b7c941bbSAndroid Build Coastguard Worker    name: "CtsSharedLibsApiSignatureTestCases_cts-shared-libs-all-current.api",
81*b7c941bbSAndroid Build Coastguard Worker    srcs: [
82*b7c941bbSAndroid Build Coastguard Worker        ":android.net.ipsec.ike{.public.api.txt}",
83*b7c941bbSAndroid Build Coastguard Worker        ":android.net.ipsec.ike{.system.api.txt}",
84*b7c941bbSAndroid Build Coastguard Worker        ":android.test.base{.public.api.txt}",
85*b7c941bbSAndroid Build Coastguard Worker        ":android.test.base{.system.api.txt}",
86*b7c941bbSAndroid Build Coastguard Worker        ":android.test.runner{.public.api.txt}",
87*b7c941bbSAndroid Build Coastguard Worker        ":android.test.runner{.system.api.txt}",
88*b7c941bbSAndroid Build Coastguard Worker        ":android.test.mock{.public.api.txt}",
89*b7c941bbSAndroid Build Coastguard Worker        ":android.test.mock{.system.api.txt}",
90*b7c941bbSAndroid Build Coastguard Worker        ":com.android.future.usb.accessory{.public.api.txt}",
91*b7c941bbSAndroid Build Coastguard Worker        ":com.android.future.usb.accessory{.system.api.txt}",
92*b7c941bbSAndroid Build Coastguard Worker        ":com.android.libraries.tv.tvsystem{.public.api.txt}",
93*b7c941bbSAndroid Build Coastguard Worker        ":com.android.libraries.tv.tvsystem{.system.api.txt}",
94*b7c941bbSAndroid Build Coastguard Worker        ":com.android.location.provider{.public.api.txt}",
95*b7c941bbSAndroid Build Coastguard Worker        ":com.android.location.provider{.system.api.txt}",
96*b7c941bbSAndroid Build Coastguard Worker        ":com.android.mediadrm.signer{.public.api.txt}",
97*b7c941bbSAndroid Build Coastguard Worker        ":com.android.mediadrm.signer{.system.api.txt}",
98*b7c941bbSAndroid Build Coastguard Worker        ":com.android.media.remotedisplay{.public.api.txt}",
99*b7c941bbSAndroid Build Coastguard Worker        ":com.android.media.remotedisplay{.system.api.txt}",
100*b7c941bbSAndroid Build Coastguard Worker        ":com.android.media.tv.remoteprovider{.public.api.txt}",
101*b7c941bbSAndroid Build Coastguard Worker        ":com.android.media.tv.remoteprovider{.system.api.txt}",
102*b7c941bbSAndroid Build Coastguard Worker        ":com.android.nfc_extras{.public.api.txt}",
103*b7c941bbSAndroid Build Coastguard Worker        ":com.android.nfc_extras{.system.api.txt}",
104*b7c941bbSAndroid Build Coastguard Worker        ":javax.obex{.public.api.txt}",
105*b7c941bbSAndroid Build Coastguard Worker        ":javax.obex{.system.api.txt}",
106*b7c941bbSAndroid Build Coastguard Worker        ":org.apache.http.legacy{.public.api.txt}",
107*b7c941bbSAndroid Build Coastguard Worker        ":org.apache.http.legacy{.system.api.txt}",
108*b7c941bbSAndroid Build Coastguard Worker    ],
109*b7c941bbSAndroid Build Coastguard Worker    tools: [
110*b7c941bbSAndroid Build Coastguard Worker        "soong_zip",
111*b7c941bbSAndroid Build Coastguard Worker        "metalava",
112*b7c941bbSAndroid Build Coastguard Worker    ],
113*b7c941bbSAndroid Build Coastguard Worker    out: [
114*b7c941bbSAndroid Build Coastguard Worker        "shared-libs-all-current.api.zip",
115*b7c941bbSAndroid Build Coastguard Worker    ],
116*b7c941bbSAndroid Build Coastguard Worker    cmd: "mkdir -p $(genDir)/list && " +
117*b7c941bbSAndroid Build Coastguard Worker        "for f in $(in); do " +
118*b7c941bbSAndroid Build Coastguard Worker        // Extract the module name from the path.
119*b7c941bbSAndroid Build Coastguard Worker        "  fileName=$$(basename $${f} .txt) && " +
120*b7c941bbSAndroid Build Coastguard Worker        "  fileName=$${fileName%%.stubs.source*} && " +
121*b7c941bbSAndroid Build Coastguard Worker        // Extract the api level, i.e. public|system from the path.
122*b7c941bbSAndroid Build Coastguard Worker        "  apiLevel=$${f##*.stubs.source} && " +
123*b7c941bbSAndroid Build Coastguard Worker        "  apiLevel=$${apiLevel#.} && " +
124*b7c941bbSAndroid Build Coastguard Worker        "  apiLevel=$${apiLevel%_api.txt} && " +
125*b7c941bbSAndroid Build Coastguard Worker        "  if [ -z $${apiLevel} ]; then apiLevel=public; fi && " +
126*b7c941bbSAndroid Build Coastguard Worker        // Convert the .txt file into its XML representation.
127*b7c941bbSAndroid Build Coastguard Worker        "  $(location metalava) -J--add-opens=java.base/java.util=ALL-UNNAMED " +
128*b7c941bbSAndroid Build Coastguard Worker        "  signature-to-jdiff $${f} $(genDir)/list/$${fileName}-current-$${apiLevel}.api; " +
129*b7c941bbSAndroid Build Coastguard Worker        "done && " +
130*b7c941bbSAndroid Build Coastguard Worker        "$(location soong_zip) -o $(out) -C $(genDir)/list -D $(genDir)/list",
131*b7c941bbSAndroid Build Coastguard Worker}
132*b7c941bbSAndroid Build Coastguard Worker
133*b7c941bbSAndroid Build Coastguard Worker// Generates a zip file containing all the API files from previous releases >= 28 excluding the
134*b7c941bbSAndroid Build Coastguard Worker// android.txt and removed files.
135*b7c941bbSAndroid Build Coastguard Workergenrule {
136*b7c941bbSAndroid Build Coastguard Worker    name: "CtsSharedLibsApiSignatureTestCases_cts-shared-libs-all-previous.api",
137*b7c941bbSAndroid Build Coastguard Worker    srcs: [
138*b7c941bbSAndroid Build Coastguard Worker        ":prebuilt_sdk_system_public_api_txt",
139*b7c941bbSAndroid Build Coastguard Worker    ],
140*b7c941bbSAndroid Build Coastguard Worker    tools: [
141*b7c941bbSAndroid Build Coastguard Worker        "soong_zip",
142*b7c941bbSAndroid Build Coastguard Worker        "metalava",
143*b7c941bbSAndroid Build Coastguard Worker    ],
144*b7c941bbSAndroid Build Coastguard Worker    out: [
145*b7c941bbSAndroid Build Coastguard Worker        "shared-libs-all-previous.api.zip",
146*b7c941bbSAndroid Build Coastguard Worker    ],
147*b7c941bbSAndroid Build Coastguard Worker    cmd: "for f in $(in); do " +
148*b7c941bbSAndroid Build Coastguard Worker        "  fileName=$$(basename $${f} .txt) && " +
149*b7c941bbSAndroid Build Coastguard Worker        "  if [ $${fileName} == android ] || [[ $${fileName} =~ removed ]] || [[ $${fileName} =~ incompatibilities ]]; " +
150*b7c941bbSAndroid Build Coastguard Worker        "    then continue; fi && " +
151*b7c941bbSAndroid Build Coastguard Worker        "  platformSdkVersion=$$(echo $${f} | awk -F/ '{print $$(3)}') && " +
152*b7c941bbSAndroid Build Coastguard Worker        "  if [ $${platformSdkVersion} -lt 28 ]; then continue; fi && " +
153*b7c941bbSAndroid Build Coastguard Worker        "  apiLevel=$$(echo $${f} | awk -F/ '{print $$(4)}') && " +
154*b7c941bbSAndroid Build Coastguard Worker        "  $(location metalava) -J--add-opens=java.base/java.util=ALL-UNNAMED " +
155*b7c941bbSAndroid Build Coastguard Worker        "  signature-to-jdiff $${f} $(genDir)/list/$${fileName}-$${platformSdkVersion}-$${apiLevel}.api; " +
156*b7c941bbSAndroid Build Coastguard Worker        "done && " +
157*b7c941bbSAndroid Build Coastguard Worker        "$(location soong_zip) -o $(out) -C $(genDir)/list -D $(genDir)/list",
158*b7c941bbSAndroid Build Coastguard Worker}
159