xref: /aosp_15_r20/system/apex/apexd/Android.bp (revision 33f3758387333dbd2962d7edbd98681940d895da)
1*33f37583SAndroid Build Coastguard Worker// List of clang-tidy checks that are reported as errors.
2*33f37583SAndroid Build Coastguard Worker// Please keep this list ordered lexicographically.
3*33f37583SAndroid Build Coastguard Workerpackage {
4*33f37583SAndroid Build Coastguard Worker    default_applicable_licenses: ["Android-Apache-2.0"],
5*33f37583SAndroid Build Coastguard Worker}
6*33f37583SAndroid Build Coastguard Worker
7*33f37583SAndroid Build Coastguard Workertidy_errors = [
8*33f37583SAndroid Build Coastguard Worker    "android-*",
9*33f37583SAndroid Build Coastguard Worker    "bugprone-infinite-loop",
10*33f37583SAndroid Build Coastguard Worker    "bugprone-macro-parentheses",
11*33f37583SAndroid Build Coastguard Worker    "bugprone-misplaced-widening-cast",
12*33f37583SAndroid Build Coastguard Worker    "bugprone-move-forwarding-reference",
13*33f37583SAndroid Build Coastguard Worker    "bugprone-sizeof-container",
14*33f37583SAndroid Build Coastguard Worker    "bugprone-sizeof-expression",
15*33f37583SAndroid Build Coastguard Worker    "bugprone-string-constructor",
16*33f37583SAndroid Build Coastguard Worker    "bugprone-terminating-continue",
17*33f37583SAndroid Build Coastguard Worker    "bugprone-undefined-memory-manipulation",
18*33f37583SAndroid Build Coastguard Worker    "bugprone-undelegated-constructor",
19*33f37583SAndroid Build Coastguard Worker    // "bugprone-unhandled-self-assignment", // found in apex_manifest.proto
20*33f37583SAndroid Build Coastguard Worker    "bugprone-unused-raii",
21*33f37583SAndroid Build Coastguard Worker    "cert-err34-c",
22*33f37583SAndroid Build Coastguard Worker    "google-default-arguments",
23*33f37583SAndroid Build Coastguard Worker    // "google-explicit-constructor", // found in com_android_apex.h
24*33f37583SAndroid Build Coastguard Worker    "google-readability-avoid-underscore-in-googletest-name",
25*33f37583SAndroid Build Coastguard Worker    "google-readability-todo",
26*33f37583SAndroid Build Coastguard Worker    "google-runtime-int",
27*33f37583SAndroid Build Coastguard Worker    "google-runtime-member-string-references",
28*33f37583SAndroid Build Coastguard Worker    "misc-move-const-arg",
29*33f37583SAndroid Build Coastguard Worker    "misc-move-forwarding-reference",
30*33f37583SAndroid Build Coastguard Worker    // "misc-unused-parameters", // found in apexd_utils.h
31*33f37583SAndroid Build Coastguard Worker    "misc-unused-using-decls",
32*33f37583SAndroid Build Coastguard Worker    "misc-use-after-move",
33*33f37583SAndroid Build Coastguard Worker    // "modernize-pass-by-value", // found in apex_database.h
34*33f37583SAndroid Build Coastguard Worker    "performance-faster-string-find",
35*33f37583SAndroid Build Coastguard Worker    "performance-for-range-copy",
36*33f37583SAndroid Build Coastguard Worker    "performance-implicit-conversion-in-loop",
37*33f37583SAndroid Build Coastguard Worker    "performance-inefficient-vector-operation",
38*33f37583SAndroid Build Coastguard Worker    "performance-move-const-arg",
39*33f37583SAndroid Build Coastguard Worker    // "performance-move-constructor-init", // found in apexd_loop.h
40*33f37583SAndroid Build Coastguard Worker    "performance-noexcept-move-constructor",
41*33f37583SAndroid Build Coastguard Worker    "performance-unnecessary-copy-initialization",
42*33f37583SAndroid Build Coastguard Worker    "performance-unnecessary-value-param",
43*33f37583SAndroid Build Coastguard Worker    // "readability-avoid-const-params-in-decls", // found in apexd.h
44*33f37583SAndroid Build Coastguard Worker]
45*33f37583SAndroid Build Coastguard Worker
46*33f37583SAndroid Build Coastguard Workercc_defaults {
47*33f37583SAndroid Build Coastguard Worker    name: "apex_flags_defaults",
48*33f37583SAndroid Build Coastguard Worker    cflags: [
49*33f37583SAndroid Build Coastguard Worker        "-Wall",
50*33f37583SAndroid Build Coastguard Worker        "-Wextra",
51*33f37583SAndroid Build Coastguard Worker        "-Werror",
52*33f37583SAndroid Build Coastguard Worker        "-Wno-unused-parameter",
53*33f37583SAndroid Build Coastguard Worker
54*33f37583SAndroid Build Coastguard Worker        // Some extra flags.
55*33f37583SAndroid Build Coastguard Worker        "-fstrict-aliasing",
56*33f37583SAndroid Build Coastguard Worker        "-Wredundant-decls",
57*33f37583SAndroid Build Coastguard Worker        "-Wshadow",
58*33f37583SAndroid Build Coastguard Worker        "-Wstrict-aliasing",
59*33f37583SAndroid Build Coastguard Worker        "-Wthread-safety",
60*33f37583SAndroid Build Coastguard Worker        "-Wthread-safety-negative",
61*33f37583SAndroid Build Coastguard Worker        "-Wunreachable-code",
62*33f37583SAndroid Build Coastguard Worker        "-Wunreachable-code-break",
63*33f37583SAndroid Build Coastguard Worker        "-Wunreachable-code-return",
64*33f37583SAndroid Build Coastguard Worker        "-Wunused",
65*33f37583SAndroid Build Coastguard Worker        "-Wused-but-marked-unused",
66*33f37583SAndroid Build Coastguard Worker    ] + select(release_flag("RELEASE_AVF_ENABLE_EARLY_VM"), {
67*33f37583SAndroid Build Coastguard Worker        true: ["-DRELEASE_AVF_ENABLE_EARLY_VM"],
68*33f37583SAndroid Build Coastguard Worker        default: [],
69*33f37583SAndroid Build Coastguard Worker    }),
70*33f37583SAndroid Build Coastguard Worker    tidy: true,
71*33f37583SAndroid Build Coastguard Worker    tidy_checks: tidy_errors,
72*33f37583SAndroid Build Coastguard Worker    tidy_checks_as_errors: tidy_errors,
73*33f37583SAndroid Build Coastguard Worker    tidy_flags: [
74*33f37583SAndroid Build Coastguard Worker        "-format-style=file",
75*33f37583SAndroid Build Coastguard Worker        "-header-filter=system/apex/",
76*33f37583SAndroid Build Coastguard Worker    ],
77*33f37583SAndroid Build Coastguard Worker}
78*33f37583SAndroid Build Coastguard Worker
79*33f37583SAndroid Build Coastguard Workercc_defaults {
80*33f37583SAndroid Build Coastguard Worker    name: "libapexd-deps",
81*33f37583SAndroid Build Coastguard Worker    defaults: ["libapex-deps"],
82*33f37583SAndroid Build Coastguard Worker    shared_libs: [
83*33f37583SAndroid Build Coastguard Worker        "liblog",
84*33f37583SAndroid Build Coastguard Worker        "liblogwrap",
85*33f37583SAndroid Build Coastguard Worker        "libvintf",
86*33f37583SAndroid Build Coastguard Worker    ],
87*33f37583SAndroid Build Coastguard Worker    static_libs: [
88*33f37583SAndroid Build Coastguard Worker        "lib_apex_blocklist_proto",
89*33f37583SAndroid Build Coastguard Worker        "lib_microdroid_metadata_proto",
90*33f37583SAndroid Build Coastguard Worker        "libapex",
91*33f37583SAndroid Build Coastguard Worker        "libavb",
92*33f37583SAndroid Build Coastguard Worker        "libdm",
93*33f37583SAndroid Build Coastguard Worker        "libext2_uuid",
94*33f37583SAndroid Build Coastguard Worker        "libsigningutils",
95*33f37583SAndroid Build Coastguard Worker        "libtinyxml2",
96*33f37583SAndroid Build Coastguard Worker        "libverity_tree",
97*33f37583SAndroid Build Coastguard Worker        "libvold_binder",
98*33f37583SAndroid Build Coastguard Worker    ],
99*33f37583SAndroid Build Coastguard Worker    whole_static_libs: ["libcom.android.sysprop.apex"],
100*33f37583SAndroid Build Coastguard Worker}
101*33f37583SAndroid Build Coastguard Worker
102*33f37583SAndroid Build Coastguard Workeraidl_interface {
103*33f37583SAndroid Build Coastguard Worker    name: "apex_aidl_interface",
104*33f37583SAndroid Build Coastguard Worker    unstable: true,
105*33f37583SAndroid Build Coastguard Worker    srcs: [
106*33f37583SAndroid Build Coastguard Worker        "aidl/android/apex/ApexInfo.aidl",
107*33f37583SAndroid Build Coastguard Worker        "aidl/android/apex/ApexInfoList.aidl",
108*33f37583SAndroid Build Coastguard Worker        "aidl/android/apex/ApexSessionInfo.aidl",
109*33f37583SAndroid Build Coastguard Worker        "aidl/android/apex/ApexSessionParams.aidl",
110*33f37583SAndroid Build Coastguard Worker        "aidl/android/apex/CompressedApexInfo.aidl",
111*33f37583SAndroid Build Coastguard Worker        "aidl/android/apex/CompressedApexInfoList.aidl",
112*33f37583SAndroid Build Coastguard Worker        "aidl/android/apex/IApexService.aidl",
113*33f37583SAndroid Build Coastguard Worker    ],
114*33f37583SAndroid Build Coastguard Worker    local_include_dir: "aidl",
115*33f37583SAndroid Build Coastguard Worker    backend: {
116*33f37583SAndroid Build Coastguard Worker        java: {
117*33f37583SAndroid Build Coastguard Worker            sdk_version: "28",
118*33f37583SAndroid Build Coastguard Worker        },
119*33f37583SAndroid Build Coastguard Worker        ndk: {
120*33f37583SAndroid Build Coastguard Worker            enabled: false,
121*33f37583SAndroid Build Coastguard Worker        },
122*33f37583SAndroid Build Coastguard Worker    },
123*33f37583SAndroid Build Coastguard Worker}
124*33f37583SAndroid Build Coastguard Worker
125*33f37583SAndroid Build Coastguard Workercc_binary {
126*33f37583SAndroid Build Coastguard Worker    name: "apexd",
127*33f37583SAndroid Build Coastguard Worker    defaults: [
128*33f37583SAndroid Build Coastguard Worker        "apex_flags_defaults",
129*33f37583SAndroid Build Coastguard Worker        "libapex-deps",
130*33f37583SAndroid Build Coastguard Worker        "libapexd-deps",
131*33f37583SAndroid Build Coastguard Worker        "libapexservice-deps",
132*33f37583SAndroid Build Coastguard Worker        "libapexd_metrics_stats-deps",
133*33f37583SAndroid Build Coastguard Worker    ],
134*33f37583SAndroid Build Coastguard Worker    srcs: [
135*33f37583SAndroid Build Coastguard Worker        "apexd_main.cpp",
136*33f37583SAndroid Build Coastguard Worker    ],
137*33f37583SAndroid Build Coastguard Worker    shared_libs: [
138*33f37583SAndroid Build Coastguard Worker        "server_configurable_flags",
139*33f37583SAndroid Build Coastguard Worker        "brand_new_apex_flag_c_lib",
140*33f37583SAndroid Build Coastguard Worker    ],
141*33f37583SAndroid Build Coastguard Worker    static_libs: [
142*33f37583SAndroid Build Coastguard Worker        "libapex",
143*33f37583SAndroid Build Coastguard Worker        "libapexd",
144*33f37583SAndroid Build Coastguard Worker        "libapexd_checkpoint_vold",
145*33f37583SAndroid Build Coastguard Worker        "libapexservice",
146*33f37583SAndroid Build Coastguard Worker        "libapexd_metrics_stats",
147*33f37583SAndroid Build Coastguard Worker    ],
148*33f37583SAndroid Build Coastguard Worker    init_rc: ["apexd.rc"],
149*33f37583SAndroid Build Coastguard Worker    // Just like the init, apexd should be able to run without
150*33f37583SAndroid Build Coastguard Worker    // any APEX activated. To do so, it uses the bootstrap linker
151*33f37583SAndroid Build Coastguard Worker    // and the bootstrap bionic libraries.
152*33f37583SAndroid Build Coastguard Worker    bootstrap: true,
153*33f37583SAndroid Build Coastguard Worker}
154*33f37583SAndroid Build Coastguard Worker
155*33f37583SAndroid Build Coastguard Workercc_binary {
156*33f37583SAndroid Build Coastguard Worker    name: "apexd.microdroid",
157*33f37583SAndroid Build Coastguard Worker    defaults: [
158*33f37583SAndroid Build Coastguard Worker        "apex_flags_defaults",
159*33f37583SAndroid Build Coastguard Worker        "libapex-deps",
160*33f37583SAndroid Build Coastguard Worker        "libapexd-deps",
161*33f37583SAndroid Build Coastguard Worker    ],
162*33f37583SAndroid Build Coastguard Worker    srcs: [
163*33f37583SAndroid Build Coastguard Worker        "apexd_microdroid.cpp",
164*33f37583SAndroid Build Coastguard Worker    ],
165*33f37583SAndroid Build Coastguard Worker    static_libs: [
166*33f37583SAndroid Build Coastguard Worker        "libapex",
167*33f37583SAndroid Build Coastguard Worker        "libapexd",
168*33f37583SAndroid Build Coastguard Worker        // Prefer static-link as, in microdroid, apexd is the only client.
169*33f37583SAndroid Build Coastguard Worker        // Using the -ndk variant since libprotobuf-cpp-full is supposed to be
170*33f37583SAndroid Build Coastguard Worker        // used as a shared lib in general in Android.
171*33f37583SAndroid Build Coastguard Worker        "libprotobuf-cpp-full-ndk",
172*33f37583SAndroid Build Coastguard Worker    ],
173*33f37583SAndroid Build Coastguard Worker    exclude_shared_libs: [
174*33f37583SAndroid Build Coastguard Worker        "libprotobuf-cpp-full",
175*33f37583SAndroid Build Coastguard Worker        "libvintf",
176*33f37583SAndroid Build Coastguard Worker    ],
177*33f37583SAndroid Build Coastguard Worker    // Just like the init, apexd should be able to run without
178*33f37583SAndroid Build Coastguard Worker    // any APEX activated. To do so, it uses the bootstrap linker
179*33f37583SAndroid Build Coastguard Worker    // and the bootstrap bionic libraries.
180*33f37583SAndroid Build Coastguard Worker    bootstrap: true,
181*33f37583SAndroid Build Coastguard Worker    // This variant is for microdroid.
182*33f37583SAndroid Build Coastguard Worker    no_full_install: true,
183*33f37583SAndroid Build Coastguard Worker    // init depends on the name "apexd".
184*33f37583SAndroid Build Coastguard Worker    stem: "apexd",
185*33f37583SAndroid Build Coastguard Worker}
186*33f37583SAndroid Build Coastguard Worker
187*33f37583SAndroid Build Coastguard Workercc_library_static {
188*33f37583SAndroid Build Coastguard Worker    name: "libapexd",
189*33f37583SAndroid Build Coastguard Worker    defaults: [
190*33f37583SAndroid Build Coastguard Worker        "apex_flags_defaults",
191*33f37583SAndroid Build Coastguard Worker        "libapexd-deps",
192*33f37583SAndroid Build Coastguard Worker    ],
193*33f37583SAndroid Build Coastguard Worker    srcs: [
194*33f37583SAndroid Build Coastguard Worker        "apex_blocklist.cpp",
195*33f37583SAndroid Build Coastguard Worker        "apex_classpath.cpp",
196*33f37583SAndroid Build Coastguard Worker        "apex_database.cpp",
197*33f37583SAndroid Build Coastguard Worker        "apex_file_repository.cpp",
198*33f37583SAndroid Build Coastguard Worker        "apexd_brand_new_verifier.cpp",
199*33f37583SAndroid Build Coastguard Worker        "apexd.cpp",
200*33f37583SAndroid Build Coastguard Worker        "apexd_dm.cpp",
201*33f37583SAndroid Build Coastguard Worker        "apexd_lifecycle.cpp",
202*33f37583SAndroid Build Coastguard Worker        "apexd_loop.cpp",
203*33f37583SAndroid Build Coastguard Worker        "apexd_metrics.cpp",
204*33f37583SAndroid Build Coastguard Worker        "apexd_private.cpp",
205*33f37583SAndroid Build Coastguard Worker        "apexd_session.cpp",
206*33f37583SAndroid Build Coastguard Worker        "apexd_verity.cpp",
207*33f37583SAndroid Build Coastguard Worker        "apexd_vendor_apex.cpp",
208*33f37583SAndroid Build Coastguard Worker    ],
209*33f37583SAndroid Build Coastguard Worker    export_include_dirs: ["."],
210*33f37583SAndroid Build Coastguard Worker    generated_sources: ["apex-info-list-tinyxml"],
211*33f37583SAndroid Build Coastguard Worker    // Don't add shared/static libs here; add to libapexd_defaults instead.
212*33f37583SAndroid Build Coastguard Worker}
213*33f37583SAndroid Build Coastguard Worker
214*33f37583SAndroid Build Coastguard Workercc_library_static {
215*33f37583SAndroid Build Coastguard Worker    name: "libapexd_checkpoint_vold",
216*33f37583SAndroid Build Coastguard Worker    defaults: ["apex_flags_defaults"],
217*33f37583SAndroid Build Coastguard Worker    srcs: ["apexd_checkpoint_vold.cpp"],
218*33f37583SAndroid Build Coastguard Worker    shared_libs: [
219*33f37583SAndroid Build Coastguard Worker        "libbase",
220*33f37583SAndroid Build Coastguard Worker        "libutils",
221*33f37583SAndroid Build Coastguard Worker    ],
222*33f37583SAndroid Build Coastguard Worker    static_libs: [
223*33f37583SAndroid Build Coastguard Worker        "libvold_binder",
224*33f37583SAndroid Build Coastguard Worker    ],
225*33f37583SAndroid Build Coastguard Worker    export_include_dirs: ["."],
226*33f37583SAndroid Build Coastguard Worker}
227*33f37583SAndroid Build Coastguard Worker
228*33f37583SAndroid Build Coastguard Workercc_defaults {
229*33f37583SAndroid Build Coastguard Worker    name: "libapexservice-deps",
230*33f37583SAndroid Build Coastguard Worker    shared_libs: [
231*33f37583SAndroid Build Coastguard Worker        "apex_aidl_interface-cpp",
232*33f37583SAndroid Build Coastguard Worker        "libbinder",
233*33f37583SAndroid Build Coastguard Worker        "libutils",
234*33f37583SAndroid Build Coastguard Worker    ],
235*33f37583SAndroid Build Coastguard Worker}
236*33f37583SAndroid Build Coastguard Worker
237*33f37583SAndroid Build Coastguard Workercc_library_static {
238*33f37583SAndroid Build Coastguard Worker    name: "libapexservice",
239*33f37583SAndroid Build Coastguard Worker    defaults: [
240*33f37583SAndroid Build Coastguard Worker        "apex_flags_defaults",
241*33f37583SAndroid Build Coastguard Worker        "libapexd-deps",
242*33f37583SAndroid Build Coastguard Worker        "libapexservice-deps",
243*33f37583SAndroid Build Coastguard Worker    ],
244*33f37583SAndroid Build Coastguard Worker    srcs: ["apexservice.cpp"],
245*33f37583SAndroid Build Coastguard Worker    static_libs: [
246*33f37583SAndroid Build Coastguard Worker        "libapexd",
247*33f37583SAndroid Build Coastguard Worker    ],
248*33f37583SAndroid Build Coastguard Worker    cflags: [
249*33f37583SAndroid Build Coastguard Worker        "-DANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION",
250*33f37583SAndroid Build Coastguard Worker    ],
251*33f37583SAndroid Build Coastguard Worker}
252*33f37583SAndroid Build Coastguard Worker
253*33f37583SAndroid Build Coastguard Workercc_defaults {
254*33f37583SAndroid Build Coastguard Worker    name: "libapex-deps",
255*33f37583SAndroid Build Coastguard Worker    shared_libs: [
256*33f37583SAndroid Build Coastguard Worker        "libbase",
257*33f37583SAndroid Build Coastguard Worker        "libcrypto",
258*33f37583SAndroid Build Coastguard Worker        "libcutils",
259*33f37583SAndroid Build Coastguard Worker        "libprotobuf-cpp-full",
260*33f37583SAndroid Build Coastguard Worker        "libziparchive",
261*33f37583SAndroid Build Coastguard Worker        "libselinux",
262*33f37583SAndroid Build Coastguard Worker    ],
263*33f37583SAndroid Build Coastguard Worker    static_libs: [
264*33f37583SAndroid Build Coastguard Worker        "lib_apex_session_state_proto",
265*33f37583SAndroid Build Coastguard Worker        "lib_apex_manifest_proto",
266*33f37583SAndroid Build Coastguard Worker        "libavb",
267*33f37583SAndroid Build Coastguard Worker    ],
268*33f37583SAndroid Build Coastguard Worker    cpp_std: "experimental",
269*33f37583SAndroid Build Coastguard Worker}
270*33f37583SAndroid Build Coastguard Worker
271*33f37583SAndroid Build Coastguard Workercc_library_static {
272*33f37583SAndroid Build Coastguard Worker    name: "libapex",
273*33f37583SAndroid Build Coastguard Worker    defaults: [
274*33f37583SAndroid Build Coastguard Worker        "apex_flags_defaults",
275*33f37583SAndroid Build Coastguard Worker        "libapex-deps",
276*33f37583SAndroid Build Coastguard Worker    ],
277*33f37583SAndroid Build Coastguard Worker    srcs: [
278*33f37583SAndroid Build Coastguard Worker        "apex_file.cpp",
279*33f37583SAndroid Build Coastguard Worker        "apex_manifest.cpp",
280*33f37583SAndroid Build Coastguard Worker        "apex_sha.cpp",
281*33f37583SAndroid Build Coastguard Worker        "apex_shim.cpp",
282*33f37583SAndroid Build Coastguard Worker        "apexd_verity.cpp",
283*33f37583SAndroid Build Coastguard Worker    ],
284*33f37583SAndroid Build Coastguard Worker    host_supported: true,
285*33f37583SAndroid Build Coastguard Worker    target: {
286*33f37583SAndroid Build Coastguard Worker        darwin: {
287*33f37583SAndroid Build Coastguard Worker            enabled: false,
288*33f37583SAndroid Build Coastguard Worker        },
289*33f37583SAndroid Build Coastguard Worker    },
290*33f37583SAndroid Build Coastguard Worker    header_libs: [
291*33f37583SAndroid Build Coastguard Worker        "libutils_headers",
292*33f37583SAndroid Build Coastguard Worker    ],
293*33f37583SAndroid Build Coastguard Worker    export_header_lib_headers: [
294*33f37583SAndroid Build Coastguard Worker        "libutils_headers",
295*33f37583SAndroid Build Coastguard Worker    ],
296*33f37583SAndroid Build Coastguard Worker    export_include_dirs: ["."],
297*33f37583SAndroid Build Coastguard Worker}
298*33f37583SAndroid Build Coastguard Worker
299*33f37583SAndroid Build Coastguard Workerjava_genrule {
300*33f37583SAndroid Build Coastguard Worker    // Generates an apex which has a different manifest outside the filesystem
301*33f37583SAndroid Build Coastguard Worker    // image.
302*33f37583SAndroid Build Coastguard Worker    name: "gen_manifest_mismatch_apex",
303*33f37583SAndroid Build Coastguard Worker    out: ["apex.apexd_test_manifest_mismatch.apex"],
304*33f37583SAndroid Build Coastguard Worker    srcs: [":apex.apexd_test"],
305*33f37583SAndroid Build Coastguard Worker    tools: [
306*33f37583SAndroid Build Coastguard Worker        "soong_zip",
307*33f37583SAndroid Build Coastguard Worker        "zipalign",
308*33f37583SAndroid Build Coastguard Worker        "conv_apex_manifest",
309*33f37583SAndroid Build Coastguard Worker    ],
310*33f37583SAndroid Build Coastguard Worker    cmd: "unzip -q $(in) -d $(genDir) && " +
311*33f37583SAndroid Build Coastguard Worker        "$(location conv_apex_manifest) setprop version 137 $(genDir)/apex_manifest.pb && " +
312*33f37583SAndroid Build Coastguard Worker        "$(location soong_zip) -d -C $(genDir) -D $(genDir) " +
313*33f37583SAndroid Build Coastguard Worker        "-s apex_manifest.pb -s apex_payload.img -s apex_pubkey " +
314*33f37583SAndroid Build Coastguard Worker        "-o $(genDir)/unaligned.apex && " +
315*33f37583SAndroid Build Coastguard Worker        "$(location zipalign) -f 4096 $(genDir)/unaligned.apex " +
316*33f37583SAndroid Build Coastguard Worker        "$(genDir)/apex.apexd_test_manifest_mismatch.apex",
317*33f37583SAndroid Build Coastguard Worker}
318*33f37583SAndroid Build Coastguard Worker
319*33f37583SAndroid Build Coastguard Workerjava_genrule {
320*33f37583SAndroid Build Coastguard Worker    // Generates an apex with a corrupted filesystem superblock, which should cause
321*33f37583SAndroid Build Coastguard Worker    // Apex::Open to fail
322*33f37583SAndroid Build Coastguard Worker    name: "gen_corrupt_superblock_apex",
323*33f37583SAndroid Build Coastguard Worker    out: ["apex.apexd_test_corrupt_superblock_apex.apex"],
324*33f37583SAndroid Build Coastguard Worker    srcs: [":apex.apexd_test"],
325*33f37583SAndroid Build Coastguard Worker    tools: [
326*33f37583SAndroid Build Coastguard Worker        "soong_zip",
327*33f37583SAndroid Build Coastguard Worker        "zipalign",
328*33f37583SAndroid Build Coastguard Worker    ],
329*33f37583SAndroid Build Coastguard Worker    cmd: "unzip -q $(in) -d $(genDir) && " +
330*33f37583SAndroid Build Coastguard Worker        "dd if=/dev/zero of=$(genDir)/apex_payload.img conv=notrunc bs=1024 seek=1 count=1 && " +
331*33f37583SAndroid Build Coastguard Worker        "$(location soong_zip) -d -C $(genDir) -D $(genDir) " +
332*33f37583SAndroid Build Coastguard Worker        "-s apex_manifest.pb -s apex_payload.img -s apex_pubkey " +
333*33f37583SAndroid Build Coastguard Worker        "-o $(genDir)/unaligned.apex && " +
334*33f37583SAndroid Build Coastguard Worker        "$(location zipalign) -f 4096 $(genDir)/unaligned.apex " +
335*33f37583SAndroid Build Coastguard Worker        "$(genDir)/apex.apexd_test_corrupt_superblock_apex.apex",
336*33f37583SAndroid Build Coastguard Worker}
337*33f37583SAndroid Build Coastguard Worker
338*33f37583SAndroid Build Coastguard Workerjava_genrule {
339*33f37583SAndroid Build Coastguard Worker    // Generates an apex with a corrupted filesystem image, which should cause
340*33f37583SAndroid Build Coastguard Worker    // dm-verity verification to fail
341*33f37583SAndroid Build Coastguard Worker    name: "gen_corrupt_apex",
342*33f37583SAndroid Build Coastguard Worker    out: ["apex.apexd_test_corrupt_apex.apex"],
343*33f37583SAndroid Build Coastguard Worker    srcs: [":apex.apexd_test"],
344*33f37583SAndroid Build Coastguard Worker    tools: [
345*33f37583SAndroid Build Coastguard Worker        "soong_zip",
346*33f37583SAndroid Build Coastguard Worker        "zipalign",
347*33f37583SAndroid Build Coastguard Worker    ],
348*33f37583SAndroid Build Coastguard Worker    cmd: "unzip -q $(in) -d $(genDir) && " +
349*33f37583SAndroid Build Coastguard Worker        "dd if=/dev/zero of=$(genDir)/apex_payload.img conv=notrunc bs=1024 seek=16 count=1 && " +
350*33f37583SAndroid Build Coastguard Worker        "$(location soong_zip) -d -C $(genDir) -D $(genDir) " +
351*33f37583SAndroid Build Coastguard Worker        "-s apex_manifest.pb -s apex_payload.img -s apex_pubkey " +
352*33f37583SAndroid Build Coastguard Worker        "-o $(genDir)/unaligned.apex && " +
353*33f37583SAndroid Build Coastguard Worker        "$(location zipalign) -f 4096 $(genDir)/unaligned.apex " +
354*33f37583SAndroid Build Coastguard Worker        "$(genDir)/apex.apexd_test_corrupt_apex.apex",
355*33f37583SAndroid Build Coastguard Worker}
356*33f37583SAndroid Build Coastguard Worker
357*33f37583SAndroid Build Coastguard Workerjava_genrule {
358*33f37583SAndroid Build Coastguard Worker    // Extract the root digest with avbtool
359*33f37583SAndroid Build Coastguard Worker    name: "apex.apexd_test_digest",
360*33f37583SAndroid Build Coastguard Worker    out: ["apex.apexd_test_digest.txt"],
361*33f37583SAndroid Build Coastguard Worker    srcs: [":apex.apexd_test"],
362*33f37583SAndroid Build Coastguard Worker    tools: ["avbtool"],
363*33f37583SAndroid Build Coastguard Worker    cmd: "unzip -q $(in) -d $(genDir) apex_payload.img && " +
364*33f37583SAndroid Build Coastguard Worker        "$(location avbtool) print_partition_digests --image $(genDir)/apex_payload.img " +
365*33f37583SAndroid Build Coastguard Worker        "| cut -c 3-| tee $(out)",
366*33f37583SAndroid Build Coastguard Worker}
367*33f37583SAndroid Build Coastguard Worker
368*33f37583SAndroid Build Coastguard Workerjava_genrule {
369*33f37583SAndroid Build Coastguard Worker    // Extract the root digest with avbtool
370*33f37583SAndroid Build Coastguard Worker    name: "apex.apexd_test_f2fs_digest",
371*33f37583SAndroid Build Coastguard Worker    out: ["apex.apexd_test_f2fs_digest.txt"],
372*33f37583SAndroid Build Coastguard Worker    srcs: [":apex.apexd_test_f2fs"],
373*33f37583SAndroid Build Coastguard Worker    tools: ["avbtool"],
374*33f37583SAndroid Build Coastguard Worker    cmd: "unzip -q $(in) -d $(genDir) apex_payload.img && " +
375*33f37583SAndroid Build Coastguard Worker        "$(location avbtool) print_partition_digests --image $(genDir)/apex_payload.img " +
376*33f37583SAndroid Build Coastguard Worker        "| cut -c 3-| tee $(out)",
377*33f37583SAndroid Build Coastguard Worker}
378*33f37583SAndroid Build Coastguard Worker
379*33f37583SAndroid Build Coastguard Workerjava_genrule {
380*33f37583SAndroid Build Coastguard Worker    // Extract the root digest with avbtool
381*33f37583SAndroid Build Coastguard Worker    name: "apex.apexd_test_erofs_digest",
382*33f37583SAndroid Build Coastguard Worker    out: ["apex.apexd_test_erofs_digest.txt"],
383*33f37583SAndroid Build Coastguard Worker    srcs: [":apex.apexd_test_erofs"],
384*33f37583SAndroid Build Coastguard Worker    tools: ["avbtool"],
385*33f37583SAndroid Build Coastguard Worker    cmd: "unzip -q $(in) -d $(genDir) apex_payload.img && " +
386*33f37583SAndroid Build Coastguard Worker        "$(location avbtool) print_partition_digests --image $(genDir)/apex_payload.img " +
387*33f37583SAndroid Build Coastguard Worker        "| cut -c 3-| tee $(out)",
388*33f37583SAndroid Build Coastguard Worker}
389*33f37583SAndroid Build Coastguard Worker
390*33f37583SAndroid Build Coastguard Workerjava_genrule {
391*33f37583SAndroid Build Coastguard Worker    // Generates an apex which has same module name as apex.apexd_test.apex, but
392*33f37583SAndroid Build Coastguard Worker    // is actually signed with a different key.
393*33f37583SAndroid Build Coastguard Worker    name: "gen_key_mismatch_apex",
394*33f37583SAndroid Build Coastguard Worker    out: ["apex.apexd_test_different_key.apex"],
395*33f37583SAndroid Build Coastguard Worker    srcs: [":apex.apexd_test_no_inst_key"],
396*33f37583SAndroid Build Coastguard Worker    tools: [
397*33f37583SAndroid Build Coastguard Worker        "soong_zip",
398*33f37583SAndroid Build Coastguard Worker        "zipalign",
399*33f37583SAndroid Build Coastguard Worker        "conv_apex_manifest",
400*33f37583SAndroid Build Coastguard Worker    ],
401*33f37583SAndroid Build Coastguard Worker    cmd: "unzip -q $(in) -d $(genDir) && " +
402*33f37583SAndroid Build Coastguard Worker        "$(location conv_apex_manifest) setprop name com.android.apex.test_package $(genDir)/apex_manifest.pb && " +
403*33f37583SAndroid Build Coastguard Worker        "$(location soong_zip) -d -C $(genDir) -D $(genDir) " +
404*33f37583SAndroid Build Coastguard Worker        "-s apex_manifest.pb -s apex_payload.img -s apex_pubkey " +
405*33f37583SAndroid Build Coastguard Worker        "-o $(genDir)/unaligned.apex && " +
406*33f37583SAndroid Build Coastguard Worker        "$(location zipalign) -f 4096 $(genDir)/unaligned.apex " +
407*33f37583SAndroid Build Coastguard Worker        "$(genDir)/apex.apexd_test_different_key.apex",
408*33f37583SAndroid Build Coastguard Worker}
409*33f37583SAndroid Build Coastguard Worker
410*33f37583SAndroid Build Coastguard Workerjava_genrule {
411*33f37583SAndroid Build Coastguard Worker    // Generates an apex which has same module name as apex.apexd_test.apex, but
412*33f37583SAndroid Build Coastguard Worker    // is actually signed with a different key.
413*33f37583SAndroid Build Coastguard Worker    name: "gen_key_mismatch_apex_v2",
414*33f37583SAndroid Build Coastguard Worker    out: ["apex.apexd_test_different_key_v2.apex"],
415*33f37583SAndroid Build Coastguard Worker    srcs: [":apex.apexd_test_no_inst_key"],
416*33f37583SAndroid Build Coastguard Worker    tools: [
417*33f37583SAndroid Build Coastguard Worker        "soong_zip",
418*33f37583SAndroid Build Coastguard Worker        "zipalign",
419*33f37583SAndroid Build Coastguard Worker        "conv_apex_manifest",
420*33f37583SAndroid Build Coastguard Worker    ],
421*33f37583SAndroid Build Coastguard Worker    cmd: "unzip -q $(in) -d $(genDir) && " +
422*33f37583SAndroid Build Coastguard Worker        "$(location conv_apex_manifest) setprop name com.android.apex.test_package $(genDir)/apex_manifest.pb && " +
423*33f37583SAndroid Build Coastguard Worker        "$(location conv_apex_manifest) setprop version 2 $(genDir)/apex_manifest.pb && " +
424*33f37583SAndroid Build Coastguard Worker        "$(location soong_zip) -d -C $(genDir) -D $(genDir) " +
425*33f37583SAndroid Build Coastguard Worker        "-s apex_manifest.pb -s apex_payload.img -s apex_pubkey " +
426*33f37583SAndroid Build Coastguard Worker        "-o $(genDir)/unaligned.apex && " +
427*33f37583SAndroid Build Coastguard Worker        "$(location zipalign) -f 4096 $(genDir)/unaligned.apex " +
428*33f37583SAndroid Build Coastguard Worker        "$(genDir)/apex.apexd_test_different_key_v2.apex",
429*33f37583SAndroid Build Coastguard Worker}
430*33f37583SAndroid Build Coastguard Worker
431*33f37583SAndroid Build Coastguard Workerjava_genrule {
432*33f37583SAndroid Build Coastguard Worker    // Generates an apex which has a different manifest outside the filesystem
433*33f37583SAndroid Build Coastguard Worker    // image.
434*33f37583SAndroid Build Coastguard Worker    name: "gen_manifest_mismatch_rebootless_apex",
435*33f37583SAndroid Build Coastguard Worker    out: ["test.rebootless_apex_manifest_mismatch.apex"],
436*33f37583SAndroid Build Coastguard Worker    srcs: [":test.rebootless_apex_v1"],
437*33f37583SAndroid Build Coastguard Worker    tools: [
438*33f37583SAndroid Build Coastguard Worker        "soong_zip",
439*33f37583SAndroid Build Coastguard Worker        "zipalign",
440*33f37583SAndroid Build Coastguard Worker        "conv_apex_manifest",
441*33f37583SAndroid Build Coastguard Worker    ],
442*33f37583SAndroid Build Coastguard Worker    cmd: "unzip -q $(in) -d $(genDir) && " +
443*33f37583SAndroid Build Coastguard Worker        "$(location conv_apex_manifest) setprop version 137 $(genDir)/apex_manifest.pb && " +
444*33f37583SAndroid Build Coastguard Worker        "$(location soong_zip) -d -C $(genDir) -D $(genDir) " +
445*33f37583SAndroid Build Coastguard Worker        "-s apex_manifest.pb -s apex_payload.img -s apex_pubkey " +
446*33f37583SAndroid Build Coastguard Worker        "-o $(genDir)/unaligned.apex && " +
447*33f37583SAndroid Build Coastguard Worker        "$(location zipalign) -f 4096 $(genDir)/unaligned.apex " +
448*33f37583SAndroid Build Coastguard Worker        "$(genDir)/test.rebootless_apex_manifest_mismatch.apex",
449*33f37583SAndroid Build Coastguard Worker}
450*33f37583SAndroid Build Coastguard Worker
451*33f37583SAndroid Build Coastguard Workerjava_genrule {
452*33f37583SAndroid Build Coastguard Worker    // Generates an apex with a corrupted filesystem image, which should cause
453*33f37583SAndroid Build Coastguard Worker    // dm-verity verification to fail
454*33f37583SAndroid Build Coastguard Worker    name: "gen_corrupt_rebootless_apex",
455*33f37583SAndroid Build Coastguard Worker    out: ["test.rebootless_apex_corrupted.apex"],
456*33f37583SAndroid Build Coastguard Worker    srcs: [":test.rebootless_apex_v1"],
457*33f37583SAndroid Build Coastguard Worker    tools: [
458*33f37583SAndroid Build Coastguard Worker        "soong_zip",
459*33f37583SAndroid Build Coastguard Worker        "zipalign",
460*33f37583SAndroid Build Coastguard Worker    ],
461*33f37583SAndroid Build Coastguard Worker    cmd: "unzip -q $(in) -d $(genDir) && " +
462*33f37583SAndroid Build Coastguard Worker        "dd if=/dev/zero of=$(genDir)/apex_payload.img conv=notrunc bs=1024 seek=16 count=1 && " +
463*33f37583SAndroid Build Coastguard Worker        "$(location soong_zip) -d -C $(genDir) -D $(genDir) " +
464*33f37583SAndroid Build Coastguard Worker        "-s apex_manifest.pb -s apex_payload.img -s apex_pubkey " +
465*33f37583SAndroid Build Coastguard Worker        "-o $(genDir)/unaligned.apex && " +
466*33f37583SAndroid Build Coastguard Worker        "$(location zipalign) -f 4096 $(genDir)/unaligned.apex " +
467*33f37583SAndroid Build Coastguard Worker        "$(genDir)/test.rebootless_apex_corrupted.apex",
468*33f37583SAndroid Build Coastguard Worker}
469*33f37583SAndroid Build Coastguard Worker
470*33f37583SAndroid Build Coastguard Workercc_test {
471*33f37583SAndroid Build Coastguard Worker    name: "ApexTestCases",
472*33f37583SAndroid Build Coastguard Worker    defaults: [
473*33f37583SAndroid Build Coastguard Worker        "apex_flags_defaults",
474*33f37583SAndroid Build Coastguard Worker        "libapex-deps",
475*33f37583SAndroid Build Coastguard Worker        "libapexd-deps",
476*33f37583SAndroid Build Coastguard Worker    ],
477*33f37583SAndroid Build Coastguard Worker    require_root: true,
478*33f37583SAndroid Build Coastguard Worker    cflags: [
479*33f37583SAndroid Build Coastguard Worker        // Otherwise libgmock won't compile.
480*33f37583SAndroid Build Coastguard Worker        "-Wno-used-but-marked-unused",
481*33f37583SAndroid Build Coastguard Worker    ],
482*33f37583SAndroid Build Coastguard Worker    data: [
483*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_bootstrap_test",
484*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test",
485*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_erofs",
486*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_f2fs",
487*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_digest",
488*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_erofs_digest",
489*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_f2fs_digest",
490*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_classpath",
491*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_different_app",
492*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_no_inst_key",
493*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_f2fs_no_inst_key",
494*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_nocode",
495*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_v2",
496*33f37583SAndroid Build Coastguard Worker        ":apex.corrupted_b146895998",
497*33f37583SAndroid Build Coastguard Worker        ":apex.banned_name",
498*33f37583SAndroid Build Coastguard Worker        ":gen_key_mismatch_apex",
499*33f37583SAndroid Build Coastguard Worker        ":gen_key_mismatch_apex_v2",
500*33f37583SAndroid Build Coastguard Worker        ":gen_key_mismatch_capex",
501*33f37583SAndroid Build Coastguard Worker        ":gen_manifest_mismatch_apex",
502*33f37583SAndroid Build Coastguard Worker        ":gen_corrupt_superblock_apex",
503*33f37583SAndroid Build Coastguard Worker        ":gen_corrupt_apex",
504*33f37583SAndroid Build Coastguard Worker        ":gen_capex_not_decompressible",
505*33f37583SAndroid Build Coastguard Worker        ":gen_capex_without_apex",
506*33f37583SAndroid Build Coastguard Worker        ":gen_capex_with_v2_apex",
507*33f37583SAndroid Build Coastguard Worker        ":gen_key_mismatch_with_original_capex",
508*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.brand.new",
509*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.brand.new.v2",
510*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.brand.new.v2.diffkey",
511*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.cts.shim.v1_prebuilt",
512*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.cts.shim.v2_prebuilt",
513*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.cts.shim.v2_wrong_sha_prebuilt",
514*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.cts.shim.v2_additional_file_prebuilt",
515*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.cts.shim.v2_additional_folder_prebuilt",
516*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.cts.shim.v2_with_pre_install_hook_prebuilt",
517*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.cts.shim.v2_with_post_install_hook_prebuilt",
518*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.compressed_sharedlibs",
519*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.compressed.v1",
520*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.compressed.v1_different_digest",
521*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.compressed.v1_different_digest_original",
522*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.compressed.v1{.apex}",
523*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.compressed.v2",
524*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.compressed.v2_original",
525*33f37583SAndroid Build Coastguard Worker        ":gen_manifest_mismatch_compressed_apex_v2",
526*33f37583SAndroid Build Coastguard Worker        "apexd_testdata/com.android.apex.test_package.avbpubkey",
527*33f37583SAndroid Build Coastguard Worker        "apexd_testdata/com.android.apex.compressed.avbpubkey",
528*33f37583SAndroid Build Coastguard Worker        "apexd_testdata/com.android.apex.brand.new.avbpubkey",
529*33f37583SAndroid Build Coastguard Worker        "apexd_testdata/com.android.apex.brand.new.another.avbpubkey",
530*33f37583SAndroid Build Coastguard Worker        "apexd_testdata/com.android.apex.brand.new.renamed.avbpubkey",
531*33f37583SAndroid Build Coastguard Worker        "apexd_testdata/blocklist.json",
532*33f37583SAndroid Build Coastguard Worker        "apexd_testdata/blocklist_invalid.json",
533*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.test.sharedlibs_generated.v1.libvX_prebuilt",
534*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.test.sharedlibs_generated.v2.libvY_prebuilt",
535*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_v1",
536*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_v2",
537*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_service_v1",
538*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_service_v2",
539*33f37583SAndroid Build Coastguard Worker        ":gen_manifest_mismatch_rebootless_apex",
540*33f37583SAndroid Build Coastguard Worker        ":gen_corrupt_rebootless_apex",
541*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_provides_sharedlibs",
542*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_provides_native_libs",
543*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_requires_shared_apex_libs",
544*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_jni_libs",
545*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_add_native_lib",
546*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_remove_native_lib",
547*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_app_in_apex",
548*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_priv_app_in_apex",
549*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.vendor.foo",
550*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.vendor.foo.with_vintf",
551*33f37583SAndroid Build Coastguard Worker    ],
552*33f37583SAndroid Build Coastguard Worker    srcs: [
553*33f37583SAndroid Build Coastguard Worker        "apex_blocklist_test.cpp",
554*33f37583SAndroid Build Coastguard Worker        "apex_classpath_test.cpp",
555*33f37583SAndroid Build Coastguard Worker        "apex_database_test.cpp",
556*33f37583SAndroid Build Coastguard Worker        "apex_file_test.cpp",
557*33f37583SAndroid Build Coastguard Worker        "apex_file_repository_test.cpp",
558*33f37583SAndroid Build Coastguard Worker        "apex_manifest_test.cpp",
559*33f37583SAndroid Build Coastguard Worker        "apexd_brand_new_verifier_test.cpp",
560*33f37583SAndroid Build Coastguard Worker        "apexd_test.cpp",
561*33f37583SAndroid Build Coastguard Worker        "apexd_session_test.cpp",
562*33f37583SAndroid Build Coastguard Worker        "apexd_utils_test.cpp",
563*33f37583SAndroid Build Coastguard Worker    ],
564*33f37583SAndroid Build Coastguard Worker    host_supported: false,
565*33f37583SAndroid Build Coastguard Worker    compile_multilib: "first",
566*33f37583SAndroid Build Coastguard Worker    static_libs: [
567*33f37583SAndroid Build Coastguard Worker        "apex_aidl_interface-cpp",
568*33f37583SAndroid Build Coastguard Worker        "libapex",
569*33f37583SAndroid Build Coastguard Worker        "libapexd",
570*33f37583SAndroid Build Coastguard Worker        "libfstab",
571*33f37583SAndroid Build Coastguard Worker        "libgmock",
572*33f37583SAndroid Build Coastguard Worker    ],
573*33f37583SAndroid Build Coastguard Worker    shared_libs: [
574*33f37583SAndroid Build Coastguard Worker        "libbinder",
575*33f37583SAndroid Build Coastguard Worker        "libfs_mgr",
576*33f37583SAndroid Build Coastguard Worker        "libutils",
577*33f37583SAndroid Build Coastguard Worker    ],
578*33f37583SAndroid Build Coastguard Worker    generated_sources: ["apex-info-list-tinyxml"],
579*33f37583SAndroid Build Coastguard Worker    test_suites: ["device-tests"],
580*33f37583SAndroid Build Coastguard Worker    test_config: "ApexTestCases.xml",
581*33f37583SAndroid Build Coastguard Worker}
582*33f37583SAndroid Build Coastguard Worker
583*33f37583SAndroid Build Coastguard Workercc_test {
584*33f37583SAndroid Build Coastguard Worker    name: "ApexServiceTestCases",
585*33f37583SAndroid Build Coastguard Worker    defaults: [
586*33f37583SAndroid Build Coastguard Worker        "apex_flags_defaults",
587*33f37583SAndroid Build Coastguard Worker        "libapex-deps",
588*33f37583SAndroid Build Coastguard Worker        "libapexd-deps",
589*33f37583SAndroid Build Coastguard Worker    ],
590*33f37583SAndroid Build Coastguard Worker    require_root: true,
591*33f37583SAndroid Build Coastguard Worker    cflags: [
592*33f37583SAndroid Build Coastguard Worker        // Otherwise libgmock won't compile.
593*33f37583SAndroid Build Coastguard Worker        "-Wno-used-but-marked-unused",
594*33f37583SAndroid Build Coastguard Worker    ],
595*33f37583SAndroid Build Coastguard Worker    data: [
596*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test",
597*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_erofs",
598*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_f2fs",
599*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_digest",
600*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_erofs_digest",
601*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_f2fs_digest",
602*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_classpath",
603*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_different_app",
604*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_no_inst_key",
605*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_f2fs_no_inst_key",
606*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_nocode",
607*33f37583SAndroid Build Coastguard Worker        ":apex.apexd_test_v2",
608*33f37583SAndroid Build Coastguard Worker        ":apex.corrupted_b146895998",
609*33f37583SAndroid Build Coastguard Worker        ":apex.banned_name",
610*33f37583SAndroid Build Coastguard Worker        ":gen_key_mismatch_apex",
611*33f37583SAndroid Build Coastguard Worker        ":gen_key_mismatch_apex_v2",
612*33f37583SAndroid Build Coastguard Worker        ":gen_key_mismatch_capex",
613*33f37583SAndroid Build Coastguard Worker        ":gen_manifest_mismatch_apex",
614*33f37583SAndroid Build Coastguard Worker        ":gen_corrupt_superblock_apex",
615*33f37583SAndroid Build Coastguard Worker        ":gen_corrupt_apex",
616*33f37583SAndroid Build Coastguard Worker        ":gen_capex_not_decompressible",
617*33f37583SAndroid Build Coastguard Worker        ":gen_capex_without_apex",
618*33f37583SAndroid Build Coastguard Worker        ":gen_capex_with_v2_apex",
619*33f37583SAndroid Build Coastguard Worker        ":gen_key_mismatch_with_original_capex",
620*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.cts.shim.v1_prebuilt",
621*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.cts.shim.v2_prebuilt",
622*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.cts.shim.v2_wrong_sha_prebuilt",
623*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.cts.shim.v2_additional_file_prebuilt",
624*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.cts.shim.v2_additional_folder_prebuilt",
625*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.cts.shim.v2_with_pre_install_hook_prebuilt",
626*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.cts.shim.v2_with_post_install_hook_prebuilt",
627*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.compressed_sharedlibs",
628*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.compressed.v1",
629*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.compressed.v1_different_digest",
630*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.compressed.v1_different_digest_original",
631*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.compressed.v1{.apex}",
632*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.compressed.v2",
633*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.compressed.v2_original",
634*33f37583SAndroid Build Coastguard Worker        ":gen_manifest_mismatch_compressed_apex_v2",
635*33f37583SAndroid Build Coastguard Worker        "apexd_testdata/com.android.apex.test_package.avbpubkey",
636*33f37583SAndroid Build Coastguard Worker        "apexd_testdata/com.android.apex.compressed.avbpubkey",
637*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.test.sharedlibs_generated.v1.libvX_prebuilt",
638*33f37583SAndroid Build Coastguard Worker        ":com.android.apex.test.sharedlibs_generated.v2.libvY_prebuilt",
639*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_v1",
640*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_v2",
641*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_service_v1",
642*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_service_v2",
643*33f37583SAndroid Build Coastguard Worker        ":gen_manifest_mismatch_rebootless_apex",
644*33f37583SAndroid Build Coastguard Worker        ":gen_corrupt_rebootless_apex",
645*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_provides_sharedlibs",
646*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_provides_native_libs",
647*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_requires_shared_apex_libs",
648*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_jni_libs",
649*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_add_native_lib",
650*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_remove_native_lib",
651*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_app_in_apex",
652*33f37583SAndroid Build Coastguard Worker        ":test.rebootless_apex_priv_app_in_apex",
653*33f37583SAndroid Build Coastguard Worker    ],
654*33f37583SAndroid Build Coastguard Worker    srcs: [
655*33f37583SAndroid Build Coastguard Worker        "apexservice_test.cpp",
656*33f37583SAndroid Build Coastguard Worker    ],
657*33f37583SAndroid Build Coastguard Worker    host_supported: false,
658*33f37583SAndroid Build Coastguard Worker    compile_multilib: "first",
659*33f37583SAndroid Build Coastguard Worker    static_libs: [
660*33f37583SAndroid Build Coastguard Worker        "apex_aidl_interface-cpp",
661*33f37583SAndroid Build Coastguard Worker        "libapex",
662*33f37583SAndroid Build Coastguard Worker        "libapexd",
663*33f37583SAndroid Build Coastguard Worker        "libfstab",
664*33f37583SAndroid Build Coastguard Worker        "libgmock",
665*33f37583SAndroid Build Coastguard Worker    ],
666*33f37583SAndroid Build Coastguard Worker    shared_libs: [
667*33f37583SAndroid Build Coastguard Worker        "libbinder",
668*33f37583SAndroid Build Coastguard Worker        "libfs_mgr",
669*33f37583SAndroid Build Coastguard Worker        "libutils",
670*33f37583SAndroid Build Coastguard Worker    ],
671*33f37583SAndroid Build Coastguard Worker    generated_sources: ["apex-info-list-tinyxml"],
672*33f37583SAndroid Build Coastguard Worker    test_suites: ["device-tests"],
673*33f37583SAndroid Build Coastguard Worker    test_config: "ApexServiceTestCases.xml",
674*33f37583SAndroid Build Coastguard Worker}
675*33f37583SAndroid Build Coastguard Worker
676*33f37583SAndroid Build Coastguard Workerxsd_config {
677*33f37583SAndroid Build Coastguard Worker    name: "apex-info-list",
678*33f37583SAndroid Build Coastguard Worker    srcs: ["ApexInfoList.xsd"],
679*33f37583SAndroid Build Coastguard Worker    package_name: "com.android.apex",
680*33f37583SAndroid Build Coastguard Worker    api_dir: "apex-info-list-api",
681*33f37583SAndroid Build Coastguard Worker    gen_writer: true,
682*33f37583SAndroid Build Coastguard Worker    root_elements: ["apex-info-list"],
683*33f37583SAndroid Build Coastguard Worker}
684*33f37583SAndroid Build Coastguard Worker
685*33f37583SAndroid Build Coastguard Workerxsd_config {
686*33f37583SAndroid Build Coastguard Worker    name: "apex-info-list-tinyxml",
687*33f37583SAndroid Build Coastguard Worker    srcs: ["ApexInfoList.xsd"],
688*33f37583SAndroid Build Coastguard Worker    package_name: "com.android.apex",
689*33f37583SAndroid Build Coastguard Worker    api_dir: "apex-info-list-api",
690*33f37583SAndroid Build Coastguard Worker    gen_writer: true,
691*33f37583SAndroid Build Coastguard Worker    tinyxml: true,
692*33f37583SAndroid Build Coastguard Worker    root_elements: ["apex-info-list"],
693*33f37583SAndroid Build Coastguard Worker}
694*33f37583SAndroid Build Coastguard Worker
695*33f37583SAndroid Build Coastguard Workercc_defaults {
696*33f37583SAndroid Build Coastguard Worker    name: "libapexd_metrics_stats-deps",
697*33f37583SAndroid Build Coastguard Worker    shared_libs: [
698*33f37583SAndroid Build Coastguard Worker        "libbase",
699*33f37583SAndroid Build Coastguard Worker        "libbinder",
700*33f37583SAndroid Build Coastguard Worker        "libutils",
701*33f37583SAndroid Build Coastguard Worker        "liblog",
702*33f37583SAndroid Build Coastguard Worker    ],
703*33f37583SAndroid Build Coastguard Worker    static_libs: [
704*33f37583SAndroid Build Coastguard Worker        "android.os.statsbootstrap_aidl-cpp",
705*33f37583SAndroid Build Coastguard Worker        "libstatsbootstrap",
706*33f37583SAndroid Build Coastguard Worker    ],
707*33f37583SAndroid Build Coastguard Worker}
708*33f37583SAndroid Build Coastguard Worker
709*33f37583SAndroid Build Coastguard Workercc_library_static {
710*33f37583SAndroid Build Coastguard Worker    name: "libapexd_metrics_stats",
711*33f37583SAndroid Build Coastguard Worker    defaults: [
712*33f37583SAndroid Build Coastguard Worker        "libapexd_metrics_stats-deps",
713*33f37583SAndroid Build Coastguard Worker    ],
714*33f37583SAndroid Build Coastguard Worker    srcs: [
715*33f37583SAndroid Build Coastguard Worker        "apexd_metrics_stats.cpp",
716*33f37583SAndroid Build Coastguard Worker    ],
717*33f37583SAndroid Build Coastguard Worker    generated_sources: [
718*33f37583SAndroid Build Coastguard Worker        "statslog_apex.cpp",
719*33f37583SAndroid Build Coastguard Worker    ],
720*33f37583SAndroid Build Coastguard Worker    generated_headers: [
721*33f37583SAndroid Build Coastguard Worker        "statslog_apex.h",
722*33f37583SAndroid Build Coastguard Worker    ],
723*33f37583SAndroid Build Coastguard Worker    cflags: [
724*33f37583SAndroid Build Coastguard Worker        "-Wall",
725*33f37583SAndroid Build Coastguard Worker        "-Werror",
726*33f37583SAndroid Build Coastguard Worker    ],
727*33f37583SAndroid Build Coastguard Worker}
728*33f37583SAndroid Build Coastguard Worker
729*33f37583SAndroid Build Coastguard Workergenrule {
730*33f37583SAndroid Build Coastguard Worker    name: "statslog_apex.h",
731*33f37583SAndroid Build Coastguard Worker    tools: ["stats-log-api-gen"],
732*33f37583SAndroid Build Coastguard Worker    cmd: "$(location stats-log-api-gen) --header $(genDir)/statslog_apex.h --module apex --namespace stats,apex --bootstrap",
733*33f37583SAndroid Build Coastguard Worker    out: [
734*33f37583SAndroid Build Coastguard Worker        "statslog_apex.h",
735*33f37583SAndroid Build Coastguard Worker    ],
736*33f37583SAndroid Build Coastguard Worker}
737*33f37583SAndroid Build Coastguard Worker
738*33f37583SAndroid Build Coastguard Workergenrule {
739*33f37583SAndroid Build Coastguard Worker    name: "statslog_apex.cpp",
740*33f37583SAndroid Build Coastguard Worker    tools: ["stats-log-api-gen"],
741*33f37583SAndroid Build Coastguard Worker    cmd: "$(location stats-log-api-gen) --cpp $(genDir)/statslog_apex.cpp --module apex --namespace stats,apex --importHeader statslog_apex.h --bootstrap",
742*33f37583SAndroid Build Coastguard Worker    out: [
743*33f37583SAndroid Build Coastguard Worker        "statslog_apex.cpp",
744*33f37583SAndroid Build Coastguard Worker    ],
745*33f37583SAndroid Build Coastguard Worker}
746*33f37583SAndroid Build Coastguard Worker
747*33f37583SAndroid Build Coastguard Workeraconfig_declarations {
748*33f37583SAndroid Build Coastguard Worker    name: "enable_brand_new_apex",
749*33f37583SAndroid Build Coastguard Worker    package: "com.android.apex.flags",
750*33f37583SAndroid Build Coastguard Worker    srcs: ["apexd.aconfig"],
751*33f37583SAndroid Build Coastguard Worker    container: "system",
752*33f37583SAndroid Build Coastguard Worker}
753*33f37583SAndroid Build Coastguard Worker
754*33f37583SAndroid Build Coastguard Workercc_aconfig_library {
755*33f37583SAndroid Build Coastguard Worker    name: "brand_new_apex_flag_c_lib",
756*33f37583SAndroid Build Coastguard Worker    aconfig_declarations: "enable_brand_new_apex",
757*33f37583SAndroid Build Coastguard Worker}
758