xref: /aosp_15_r20/external/crosvm/third_party/minijail/Android.bp (revision 4b9c6d91573e8b3a96609339b46361b5476dd0f9)
1*4b9c6d91SCole Faust// Copyright (C) 2015 The Android Open Source Project
2*4b9c6d91SCole Faust//
3*4b9c6d91SCole Faust// Licensed under the Apache License, Version 2.0 (the "License");
4*4b9c6d91SCole Faust// you may not use this file except in compliance with the License.
5*4b9c6d91SCole Faust// You may obtain a copy of the License at
6*4b9c6d91SCole Faust//
7*4b9c6d91SCole Faust//      http://www.apache.org/licenses/LICENSE-2.0
8*4b9c6d91SCole Faust//
9*4b9c6d91SCole Faust// Unless required by applicable law or agreed to in writing, software
10*4b9c6d91SCole Faust// distributed under the License is distributed on an "AS IS" BASIS,
11*4b9c6d91SCole Faust// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*4b9c6d91SCole Faust// See the License for the specific language governing permissions and
13*4b9c6d91SCole Faust// limitations under the License.
14*4b9c6d91SCole Faust
15*4b9c6d91SCole Faust// Common variables.
16*4b9c6d91SCole Faust// =========================================================
17*4b9c6d91SCole Faustpackage {
18*4b9c6d91SCole Faust    default_applicable_licenses: ["external_minijail_license"],
19*4b9c6d91SCole Faust}
20*4b9c6d91SCole Faust
21*4b9c6d91SCole Faust// Added automatically by a large-scale-change that took the approach of
22*4b9c6d91SCole Faust// 'apply every license found to every target'. While this makes sure we respect
23*4b9c6d91SCole Faust// every license restriction, it may not be entirely correct.
24*4b9c6d91SCole Faust//
25*4b9c6d91SCole Faust// e.g. GPL in an MIT project might only apply to the contrib/ directory.
26*4b9c6d91SCole Faust//
27*4b9c6d91SCole Faust// Please consider splitting the single license below into multiple licenses,
28*4b9c6d91SCole Faust// taking care not to lose any license_kind information, and overriding the
29*4b9c6d91SCole Faust// default license using the 'licenses: [...]' property on targets as needed.
30*4b9c6d91SCole Faust//
31*4b9c6d91SCole Faust// For unused files, consider creating a 'fileGroup' with "//visibility:private"
32*4b9c6d91SCole Faust// to attach the license to, and including a comment whether the files may be
33*4b9c6d91SCole Faust// used in the current project.
34*4b9c6d91SCole Faust//
35*4b9c6d91SCole Faust// large-scale-change included anything that looked like it might be a license
36*4b9c6d91SCole Faust// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc.
37*4b9c6d91SCole Faust//
38*4b9c6d91SCole Faust// Please consider removing redundant or irrelevant files from 'license_text:'.
39*4b9c6d91SCole Faust// See: http://go/android-license-faq
40*4b9c6d91SCole Faustlicense {
41*4b9c6d91SCole Faust    name: "external_minijail_license",
42*4b9c6d91SCole Faust    visibility: [":__subpackages__"],
43*4b9c6d91SCole Faust    license_kinds: [
44*4b9c6d91SCole Faust        "SPDX-license-identifier-Apache-2.0",
45*4b9c6d91SCole Faust        "SPDX-license-identifier-BSD",
46*4b9c6d91SCole Faust    ],
47*4b9c6d91SCole Faust    license_text: [
48*4b9c6d91SCole Faust        "LICENSE",
49*4b9c6d91SCole Faust        "NOTICE",
50*4b9c6d91SCole Faust    ],
51*4b9c6d91SCole Faust}
52*4b9c6d91SCole Faust
53*4b9c6d91SCole FaustlibminijailSrcFiles = [
54*4b9c6d91SCole Faust    "bpf.c",
55*4b9c6d91SCole Faust    "landlock_util.c",
56*4b9c6d91SCole Faust    "libminijail.c",
57*4b9c6d91SCole Faust    "signal_handler.c",
58*4b9c6d91SCole Faust    "syscall_filter.c",
59*4b9c6d91SCole Faust    "syscall_wrapper.c",
60*4b9c6d91SCole Faust    "system.c",
61*4b9c6d91SCole Faust    "util.c",
62*4b9c6d91SCole Faust]
63*4b9c6d91SCole Faust
64*4b9c6d91SCole FaustunittestSrcFiles = [
65*4b9c6d91SCole Faust    "testrunner.cc",
66*4b9c6d91SCole Faust    "test_util.cc",
67*4b9c6d91SCole Faust]
68*4b9c6d91SCole Faust
69*4b9c6d91SCole FaustminijailCommonLibraries = ["libcap"]
70*4b9c6d91SCole Faust
71*4b9c6d91SCole Faustcc_defaults {
72*4b9c6d91SCole Faust    name: "libminijail_flags",
73*4b9c6d91SCole Faust    cflags: [
74*4b9c6d91SCole Faust        "-D_FILE_OFFSET_BITS=64",
75*4b9c6d91SCole Faust        "-DALLOW_DEBUG_LOGGING",
76*4b9c6d91SCole Faust        "-DALLOW_DUPLICATE_SYSCALLS",
77*4b9c6d91SCole Faust        "-DDEFAULT_PIVOT_ROOT=\"/var/empty\"",
78*4b9c6d91SCole Faust        "-DBINDMOUNT_ALLOWED_PREFIXES=\"\"",
79*4b9c6d91SCole Faust        "-Wall",
80*4b9c6d91SCole Faust        "-Werror",
81*4b9c6d91SCole Faust    ],
82*4b9c6d91SCole Faust    target: {
83*4b9c6d91SCole Faust        darwin: {
84*4b9c6d91SCole Faust            enabled: false,
85*4b9c6d91SCole Faust        },
86*4b9c6d91SCole Faust    },
87*4b9c6d91SCole Faust}
88*4b9c6d91SCole Faust
89*4b9c6d91SCole Faust// Static library for generated code.
90*4b9c6d91SCole Faust// =========================================================
91*4b9c6d91SCole Faustcc_object {
92*4b9c6d91SCole Faust    name: "libminijail_gen_syscall_obj",
93*4b9c6d91SCole Faust    vendor_available: true,
94*4b9c6d91SCole Faust    product_available: true,
95*4b9c6d91SCole Faust    recovery_available: true,
96*4b9c6d91SCole Faust    srcs: ["gen_syscalls.c"],
97*4b9c6d91SCole Faust    cflags: [
98*4b9c6d91SCole Faust        "-dD",
99*4b9c6d91SCole Faust        "-E",
100*4b9c6d91SCole Faust        "-Wall",
101*4b9c6d91SCole Faust        "-Werror",
102*4b9c6d91SCole Faust    ],
103*4b9c6d91SCole Faust    apex_available: [
104*4b9c6d91SCole Faust        "//apex_available:platform",
105*4b9c6d91SCole Faust        "com.android.adbd",
106*4b9c6d91SCole Faust        "com.android.compos",
107*4b9c6d91SCole Faust        "com.android.media.swcodec",
108*4b9c6d91SCole Faust        "com.android.virt",
109*4b9c6d91SCole Faust    ],
110*4b9c6d91SCole Faust    min_sdk_version: "29",
111*4b9c6d91SCole Faust}
112*4b9c6d91SCole Faust
113*4b9c6d91SCole Faustcc_genrule {
114*4b9c6d91SCole Faust    name: "libminijail_gen_syscall",
115*4b9c6d91SCole Faust    vendor_available: true,
116*4b9c6d91SCole Faust    product_available: true,
117*4b9c6d91SCole Faust    recovery_available: true,
118*4b9c6d91SCole Faust    tool_files: ["gen_syscalls.sh"],
119*4b9c6d91SCole Faust    cmd: "$(location gen_syscalls.sh) $(in) $(out)",
120*4b9c6d91SCole Faust    srcs: [":libminijail_gen_syscall_obj"],
121*4b9c6d91SCole Faust    out: ["libsyscalls.c"],
122*4b9c6d91SCole Faust    apex_available: [
123*4b9c6d91SCole Faust        "//apex_available:platform",
124*4b9c6d91SCole Faust        "com.android.adbd",
125*4b9c6d91SCole Faust        "com.android.compos",
126*4b9c6d91SCole Faust        "com.android.media.swcodec",
127*4b9c6d91SCole Faust        "com.android.virt",
128*4b9c6d91SCole Faust    ],
129*4b9c6d91SCole Faust}
130*4b9c6d91SCole Faust
131*4b9c6d91SCole Faustcc_object {
132*4b9c6d91SCole Faust    name: "libminijail_gen_constants_obj",
133*4b9c6d91SCole Faust    vendor_available: true,
134*4b9c6d91SCole Faust    product_available: true,
135*4b9c6d91SCole Faust    recovery_available: true,
136*4b9c6d91SCole Faust    srcs: ["gen_constants.c"],
137*4b9c6d91SCole Faust    cflags: [
138*4b9c6d91SCole Faust        "-dD",
139*4b9c6d91SCole Faust        "-E",
140*4b9c6d91SCole Faust        "-Wall",
141*4b9c6d91SCole Faust        "-Werror",
142*4b9c6d91SCole Faust    ],
143*4b9c6d91SCole Faust    apex_available: [
144*4b9c6d91SCole Faust        "//apex_available:platform",
145*4b9c6d91SCole Faust        "com.android.adbd",
146*4b9c6d91SCole Faust        "com.android.compos",
147*4b9c6d91SCole Faust        "com.android.media.swcodec",
148*4b9c6d91SCole Faust        "com.android.virt",
149*4b9c6d91SCole Faust    ],
150*4b9c6d91SCole Faust    min_sdk_version: "29",
151*4b9c6d91SCole Faust}
152*4b9c6d91SCole Faust
153*4b9c6d91SCole Faustcc_genrule {
154*4b9c6d91SCole Faust    name: "libminijail_gen_constants",
155*4b9c6d91SCole Faust    vendor_available: true,
156*4b9c6d91SCole Faust    product_available: true,
157*4b9c6d91SCole Faust    recovery_available: true,
158*4b9c6d91SCole Faust    tool_files: ["gen_constants.sh"],
159*4b9c6d91SCole Faust    cmd: "$(location gen_constants.sh) $(in) $(out)",
160*4b9c6d91SCole Faust    srcs: [":libminijail_gen_constants_obj"],
161*4b9c6d91SCole Faust    out: ["libconstants.c"],
162*4b9c6d91SCole Faust    apex_available: [
163*4b9c6d91SCole Faust        "//apex_available:platform",
164*4b9c6d91SCole Faust        "com.android.adbd",
165*4b9c6d91SCole Faust        "com.android.compos",
166*4b9c6d91SCole Faust        "com.android.media.swcodec",
167*4b9c6d91SCole Faust        "com.android.virt",
168*4b9c6d91SCole Faust    ],
169*4b9c6d91SCole Faust}
170*4b9c6d91SCole Faust
171*4b9c6d91SCole Faustcc_library_static {
172*4b9c6d91SCole Faust    name: "libminijail_generated",
173*4b9c6d91SCole Faust    vendor_available: true,
174*4b9c6d91SCole Faust    product_available: true,
175*4b9c6d91SCole Faust    recovery_available: true,
176*4b9c6d91SCole Faust    defaults: ["libminijail_flags"],
177*4b9c6d91SCole Faust    host_supported: true,
178*4b9c6d91SCole Faust
179*4b9c6d91SCole Faust    target: {
180*4b9c6d91SCole Faust        android: {
181*4b9c6d91SCole Faust            generated_sources: [
182*4b9c6d91SCole Faust                "libminijail_gen_syscall",
183*4b9c6d91SCole Faust                "libminijail_gen_constants",
184*4b9c6d91SCole Faust            ],
185*4b9c6d91SCole Faust        },
186*4b9c6d91SCole Faust        host: {
187*4b9c6d91SCole Faust            srcs: [
188*4b9c6d91SCole Faust                "linux-x86/libconstants.gen.c",
189*4b9c6d91SCole Faust                "linux-x86/libsyscalls.gen.c",
190*4b9c6d91SCole Faust            ],
191*4b9c6d91SCole Faust        },
192*4b9c6d91SCole Faust    },
193*4b9c6d91SCole Faust    apex_available: [
194*4b9c6d91SCole Faust        "//apex_available:platform",
195*4b9c6d91SCole Faust        "com.android.adbd",
196*4b9c6d91SCole Faust        "com.android.compos",
197*4b9c6d91SCole Faust        "com.android.media.swcodec",
198*4b9c6d91SCole Faust        "com.android.virt",
199*4b9c6d91SCole Faust    ],
200*4b9c6d91SCole Faust    min_sdk_version: "29",
201*4b9c6d91SCole Faust}
202*4b9c6d91SCole Faust
203*4b9c6d91SCole Faustcc_object {
204*4b9c6d91SCole Faust    name: "libminijail_gen_constants_llvmir",
205*4b9c6d91SCole Faust    vendor_available: true,
206*4b9c6d91SCole Faust    product_available: true,
207*4b9c6d91SCole Faust    recovery_available: true,
208*4b9c6d91SCole Faust    host_supported: true,
209*4b9c6d91SCole Faust    cflags: [
210*4b9c6d91SCole Faust        "-S",
211*4b9c6d91SCole Faust        "-O0",
212*4b9c6d91SCole Faust        "-emit-llvm",
213*4b9c6d91SCole Faust    ],
214*4b9c6d91SCole Faust
215*4b9c6d91SCole Faust    target: {
216*4b9c6d91SCole Faust        android: {
217*4b9c6d91SCole Faust            generated_sources: ["libminijail_gen_constants"],
218*4b9c6d91SCole Faust        },
219*4b9c6d91SCole Faust        host: {
220*4b9c6d91SCole Faust            srcs: ["linux-x86/libconstants.gen.c"],
221*4b9c6d91SCole Faust        },
222*4b9c6d91SCole Faust    },
223*4b9c6d91SCole Faust}
224*4b9c6d91SCole Faust
225*4b9c6d91SCole Faustcc_object {
226*4b9c6d91SCole Faust    name: "libminijail_gen_syscall_llvmir",
227*4b9c6d91SCole Faust    vendor_available: true,
228*4b9c6d91SCole Faust    product_available: true,
229*4b9c6d91SCole Faust    recovery_available: true,
230*4b9c6d91SCole Faust    host_supported: true,
231*4b9c6d91SCole Faust    cflags: [
232*4b9c6d91SCole Faust        "-S",
233*4b9c6d91SCole Faust        "-O0",
234*4b9c6d91SCole Faust        "-emit-llvm",
235*4b9c6d91SCole Faust    ],
236*4b9c6d91SCole Faust
237*4b9c6d91SCole Faust    target: {
238*4b9c6d91SCole Faust        android: {
239*4b9c6d91SCole Faust            generated_sources: ["libminijail_gen_syscall"],
240*4b9c6d91SCole Faust        },
241*4b9c6d91SCole Faust        host: {
242*4b9c6d91SCole Faust            srcs: ["linux-x86/libsyscalls.gen.c"],
243*4b9c6d91SCole Faust        },
244*4b9c6d91SCole Faust    },
245*4b9c6d91SCole Faust}
246*4b9c6d91SCole Faust
247*4b9c6d91SCole Faust// libminijail shared and static library for target.
248*4b9c6d91SCole Faust// =========================================================
249*4b9c6d91SCole Faustcc_library {
250*4b9c6d91SCole Faust    name: "libminijail",
251*4b9c6d91SCole Faust    host_supported: true,
252*4b9c6d91SCole Faust
253*4b9c6d91SCole Faust    vendor_available: true,
254*4b9c6d91SCole Faust    product_available: true,
255*4b9c6d91SCole Faust    recovery_available: true,
256*4b9c6d91SCole Faust
257*4b9c6d91SCole Faust    defaults: ["libminijail_flags"],
258*4b9c6d91SCole Faust
259*4b9c6d91SCole Faust    srcs: libminijailSrcFiles,
260*4b9c6d91SCole Faust
261*4b9c6d91SCole Faust    static: {
262*4b9c6d91SCole Faust        whole_static_libs: ["libminijail_generated"] + minijailCommonLibraries,
263*4b9c6d91SCole Faust    },
264*4b9c6d91SCole Faust    shared: {
265*4b9c6d91SCole Faust        static_libs: ["libminijail_generated"],
266*4b9c6d91SCole Faust        shared_libs: minijailCommonLibraries,
267*4b9c6d91SCole Faust    },
268*4b9c6d91SCole Faust    export_include_dirs: ["."],
269*4b9c6d91SCole Faust
270*4b9c6d91SCole Faust    target: {
271*4b9c6d91SCole Faust        host: {
272*4b9c6d91SCole Faust            cflags: [
273*4b9c6d91SCole Faust                "-DPRELOADPATH=\"/invalidminijailpreload.so\"",
274*4b9c6d91SCole Faust            ],
275*4b9c6d91SCole Faust        },
276*4b9c6d91SCole Faust    },
277*4b9c6d91SCole Faust    apex_available: [
278*4b9c6d91SCole Faust        "//apex_available:platform",
279*4b9c6d91SCole Faust        "com.android.adbd",
280*4b9c6d91SCole Faust        "com.android.compos",
281*4b9c6d91SCole Faust        "com.android.media.swcodec",
282*4b9c6d91SCole Faust        "com.android.virt",
283*4b9c6d91SCole Faust    ],
284*4b9c6d91SCole Faust    min_sdk_version: "29",
285*4b9c6d91SCole Faust}
286*4b9c6d91SCole Faust
287*4b9c6d91SCole Faust// Example ASan-ified libminijail shared library for target.
288*4b9c6d91SCole Faust// Commented out since it's only needed for local debugging.
289*4b9c6d91SCole Faust// =========================================================
290*4b9c6d91SCole Faust//cc_library_shared {
291*4b9c6d91SCole Faust//    name: "libminijail_asan",
292*4b9c6d91SCole Faust//    defaults: ["libminijail_flags"],
293*4b9c6d91SCole Faust//
294*4b9c6d91SCole Faust//    sanitize: {
295*4b9c6d91SCole Faust//        address: true,
296*4b9c6d91SCole Faust//    },
297*4b9c6d91SCole Faust//    relative_install_path: "asan",
298*4b9c6d91SCole Faust//    srcs: libminijailSrcFiles,
299*4b9c6d91SCole Faust//
300*4b9c6d91SCole Faust//    static_libs: ["libminijail_generated"],
301*4b9c6d91SCole Faust//    shared_libs: minijailCommonLibraries,
302*4b9c6d91SCole Faust//    export_include_dirs: ["."],
303*4b9c6d91SCole Faust//}
304*4b9c6d91SCole Faust
305*4b9c6d91SCole Faust// libminijail native unit tests using gtest.
306*4b9c6d91SCole Faust//
307*4b9c6d91SCole Faust// For a device, run with:
308*4b9c6d91SCole Faust// adb shell /data/nativetest/libminijail_unittest_gtest/libminijail_unittest_gtest
309*4b9c6d91SCole Faust//
310*4b9c6d91SCole Faust// For host, run with:
311*4b9c6d91SCole Faust// out/host/linux-x86/nativetest(64)/libminijail_unittest_gtest/libminijail_unittest_gtest
312*4b9c6d91SCole Faust// =========================================================
313*4b9c6d91SCole Faustcc_test {
314*4b9c6d91SCole Faust    name: "libminijail_unittest_gtest",
315*4b9c6d91SCole Faust    defaults: ["libminijail_flags"],
316*4b9c6d91SCole Faust    // TODO(b/31395668): Re-enable once the seccomp(2) syscall becomes available.
317*4b9c6d91SCole Faust    //host_supported: true
318*4b9c6d91SCole Faust
319*4b9c6d91SCole Faust    srcs: libminijailSrcFiles + ["libminijail_unittest.cc"] + unittestSrcFiles,
320*4b9c6d91SCole Faust
321*4b9c6d91SCole Faust    static_libs: ["libminijail_generated"],
322*4b9c6d91SCole Faust    shared_libs: minijailCommonLibraries,
323*4b9c6d91SCole Faust
324*4b9c6d91SCole Faust    target: {
325*4b9c6d91SCole Faust        android: {
326*4b9c6d91SCole Faust            cflags: ["-Wno-writable-strings"],
327*4b9c6d91SCole Faust            test_suites: ["device-tests"],
328*4b9c6d91SCole Faust        },
329*4b9c6d91SCole Faust        host: {
330*4b9c6d91SCole Faust            cflags: ["-DPRELOADPATH=\"/invalid\""],
331*4b9c6d91SCole Faust        },
332*4b9c6d91SCole Faust    },
333*4b9c6d91SCole Faust}
334*4b9c6d91SCole Faust
335*4b9c6d91SCole Faust// Syscall filtering native unit tests using gtest.
336*4b9c6d91SCole Faust//
337*4b9c6d91SCole Faust// For a device, run with:
338*4b9c6d91SCole Faust// adb shell /data/nativetest/syscall_filter_unittest_gtest/syscall_filter_unittest_gtest
339*4b9c6d91SCole Faust//
340*4b9c6d91SCole Faust// For host, run with:
341*4b9c6d91SCole Faust// out/host/linux-x86/nativetest(64)/syscall_filter_unittest_gtest/syscall_filter_unittest_gtest
342*4b9c6d91SCole Faust// =========================================================
343*4b9c6d91SCole Faustcc_test {
344*4b9c6d91SCole Faust    name: "syscall_filter_unittest_gtest",
345*4b9c6d91SCole Faust    defaults: ["libminijail_flags"],
346*4b9c6d91SCole Faust    host_supported: true,
347*4b9c6d91SCole Faust
348*4b9c6d91SCole Faust    srcs: [
349*4b9c6d91SCole Faust        "bpf.c",
350*4b9c6d91SCole Faust        "syscall_filter.c",
351*4b9c6d91SCole Faust        "syscall_wrapper.c",
352*4b9c6d91SCole Faust        "util.c",
353*4b9c6d91SCole Faust        "syscall_filter_unittest.cc",
354*4b9c6d91SCole Faust    ] + unittestSrcFiles,
355*4b9c6d91SCole Faust
356*4b9c6d91SCole Faust    static_libs: ["libminijail_generated"],
357*4b9c6d91SCole Faust    shared_libs: minijailCommonLibraries,
358*4b9c6d91SCole Faust
359*4b9c6d91SCole Faust    target: {
360*4b9c6d91SCole Faust        android: {
361*4b9c6d91SCole Faust            test_suites: ["device-tests"],
362*4b9c6d91SCole Faust        },
363*4b9c6d91SCole Faust    },
364*4b9c6d91SCole Faust    test_options: {
365*4b9c6d91SCole Faust        unit_test: true,
366*4b9c6d91SCole Faust    },
367*4b9c6d91SCole Faust    data: ["test/*"],
368*4b9c6d91SCole Faust}
369*4b9c6d91SCole Faust
370*4b9c6d91SCole Faust// System functionality unit tests using gtest.
371*4b9c6d91SCole Faust//
372*4b9c6d91SCole Faust// For a device, run with:
373*4b9c6d91SCole Faust// adb shell /data/nativetest/mj_system_unittest_gtest/mj_system_unittest_gtest
374*4b9c6d91SCole Faust//
375*4b9c6d91SCole Faust// For host, run with:
376*4b9c6d91SCole Faust// out/host/linux-x86/nativetest(64)/mj_system_unittest_gtest/mj_system_unittest_gtest
377*4b9c6d91SCole Faust// =========================================================
378*4b9c6d91SCole Faustcc_test {
379*4b9c6d91SCole Faust    name: "mj_system_unittest_gtest",
380*4b9c6d91SCole Faust    defaults: ["libminijail_flags"],
381*4b9c6d91SCole Faust    host_supported: true,
382*4b9c6d91SCole Faust
383*4b9c6d91SCole Faust    srcs: [
384*4b9c6d91SCole Faust        "syscall_wrapper.c",
385*4b9c6d91SCole Faust        "system.c",
386*4b9c6d91SCole Faust        "util.c",
387*4b9c6d91SCole Faust        "system_unittest.cc",
388*4b9c6d91SCole Faust    ] + unittestSrcFiles,
389*4b9c6d91SCole Faust
390*4b9c6d91SCole Faust    static_libs: ["libminijail_generated"],
391*4b9c6d91SCole Faust    shared_libs: minijailCommonLibraries,
392*4b9c6d91SCole Faust
393*4b9c6d91SCole Faust    target: {
394*4b9c6d91SCole Faust        android: {
395*4b9c6d91SCole Faust            test_suites: ["device-tests"],
396*4b9c6d91SCole Faust        },
397*4b9c6d91SCole Faust    },
398*4b9c6d91SCole Faust}
399*4b9c6d91SCole Faust
400*4b9c6d91SCole Faust// Utility functionality unit tests using gtest.
401*4b9c6d91SCole Faust//
402*4b9c6d91SCole Faust// For a device, run with:
403*4b9c6d91SCole Faust// adb shell /data/nativetest/mj_util_unittest_gtest/mj_util_unittest_gtest
404*4b9c6d91SCole Faust//
405*4b9c6d91SCole Faust// For host, run with:
406*4b9c6d91SCole Faust// out/host/linux-x86/nativetest(64)/mj_util_unittest_gtest/mj_util_unittest_gtest
407*4b9c6d91SCole Faust// =========================================================
408*4b9c6d91SCole Faustcc_test {
409*4b9c6d91SCole Faust    name: "mj_util_unittest_gtest",
410*4b9c6d91SCole Faust    defaults: ["libminijail_flags"],
411*4b9c6d91SCole Faust    host_supported: true,
412*4b9c6d91SCole Faust
413*4b9c6d91SCole Faust    srcs: [
414*4b9c6d91SCole Faust        "util.c",
415*4b9c6d91SCole Faust        "util_unittest.cc",
416*4b9c6d91SCole Faust    ] + unittestSrcFiles,
417*4b9c6d91SCole Faust
418*4b9c6d91SCole Faust    static_libs: ["libminijail_generated"],
419*4b9c6d91SCole Faust    shared_libs: minijailCommonLibraries,
420*4b9c6d91SCole Faust
421*4b9c6d91SCole Faust    target: {
422*4b9c6d91SCole Faust        android: {
423*4b9c6d91SCole Faust            test_suites: ["device-tests"],
424*4b9c6d91SCole Faust        },
425*4b9c6d91SCole Faust    },
426*4b9c6d91SCole Faust}
427*4b9c6d91SCole Faust
428*4b9c6d91SCole Faust// Utility functionality unit tests using gtest.
429*4b9c6d91SCole Faust//
430*4b9c6d91SCole Faust// For a device, run with:
431*4b9c6d91SCole Faust// adb shell /data/nativetest/minijail0_cli_unittest_gtest/minijail0_cli_unittest_gtest
432*4b9c6d91SCole Faust//
433*4b9c6d91SCole Faust// For host, run with:
434*4b9c6d91SCole Faust// out/host/linux-x86/nativetest(64)/minijail0_cli_unittest_gtest/minijail0_cli_unittest_gtest
435*4b9c6d91SCole Faust// =========================================================
436*4b9c6d91SCole Faustcc_test {
437*4b9c6d91SCole Faust    name: "minijail0_cli_unittest_gtest",
438*4b9c6d91SCole Faust    defaults: ["libminijail_flags"],
439*4b9c6d91SCole Faust    host_supported: true,
440*4b9c6d91SCole Faust
441*4b9c6d91SCole Faust    cflags: [
442*4b9c6d91SCole Faust        "-DPRELOADPATH=\"/invalid\"",
443*4b9c6d91SCole Faust    ],
444*4b9c6d91SCole Faust    srcs: libminijailSrcFiles + [
445*4b9c6d91SCole Faust        "config_parser.c",
446*4b9c6d91SCole Faust        "elfparse.c",
447*4b9c6d91SCole Faust        "minijail0_cli.c",
448*4b9c6d91SCole Faust        "minijail0_cli_unittest.cc",
449*4b9c6d91SCole Faust    ] + unittestSrcFiles,
450*4b9c6d91SCole Faust
451*4b9c6d91SCole Faust    static_libs: ["libminijail_generated"],
452*4b9c6d91SCole Faust    shared_libs: minijailCommonLibraries,
453*4b9c6d91SCole Faust
454*4b9c6d91SCole Faust    target: {
455*4b9c6d91SCole Faust        android: {
456*4b9c6d91SCole Faust            test_suites: ["device-tests"],
457*4b9c6d91SCole Faust        },
458*4b9c6d91SCole Faust    },
459*4b9c6d91SCole Faust    data: ["test/*"],
460*4b9c6d91SCole Faust    test_options: {
461*4b9c6d91SCole Faust        tags: ["no-remote"],
462*4b9c6d91SCole Faust    }
463*4b9c6d91SCole Faust}
464*4b9c6d91SCole Faust
465*4b9c6d91SCole Faust
466*4b9c6d91SCole Faust// Configuration file parser functionality unit tests using gtest.
467*4b9c6d91SCole Faust//
468*4b9c6d91SCole Faust// For a device, run with:
469*4b9c6d91SCole Faust// adb shell /data/nativetest/config_parser_unittest_gtest/config_parser_unittest_gtest
470*4b9c6d91SCole Faust//
471*4b9c6d91SCole Faust// For host, run with:
472*4b9c6d91SCole Faust// out/host/linux-x86/nativetest(64)/config_parser_unittest_gtest/config_parser_unittest_gtest
473*4b9c6d91SCole Faust// =========================================================
474*4b9c6d91SCole Faustcc_test {
475*4b9c6d91SCole Faust    name: "config_parser_unittest_gtest",
476*4b9c6d91SCole Faust    defaults: ["libminijail_flags"],
477*4b9c6d91SCole Faust    host_supported: true,
478*4b9c6d91SCole Faust
479*4b9c6d91SCole Faust    srcs: [
480*4b9c6d91SCole Faust        "config_parser.c",
481*4b9c6d91SCole Faust        "util.c",
482*4b9c6d91SCole Faust        "config_parser_unittest.cc",
483*4b9c6d91SCole Faust    ] + unittestSrcFiles,
484*4b9c6d91SCole Faust
485*4b9c6d91SCole Faust    static_libs: ["libminijail_generated"],
486*4b9c6d91SCole Faust    shared_libs: minijailCommonLibraries,
487*4b9c6d91SCole Faust
488*4b9c6d91SCole Faust    target: {
489*4b9c6d91SCole Faust        android: {
490*4b9c6d91SCole Faust            test_suites: ["device-tests"],
491*4b9c6d91SCole Faust        },
492*4b9c6d91SCole Faust    },
493*4b9c6d91SCole Faust    test_options: {
494*4b9c6d91SCole Faust        unit_test: true,
495*4b9c6d91SCole Faust    },
496*4b9c6d91SCole Faust    data: ["test/*"],
497*4b9c6d91SCole Faust}
498*4b9c6d91SCole Faust
499*4b9c6d91SCole Faust// libminijail_test executable for brillo_Minijail test.
500*4b9c6d91SCole Faust// =========================================================
501*4b9c6d91SCole Faustcc_test {
502*4b9c6d91SCole Faust    name: "libminijail_test",
503*4b9c6d91SCole Faust    defaults: ["libminijail_flags"],
504*4b9c6d91SCole Faust    test_suites: ["device-tests"],
505*4b9c6d91SCole Faust
506*4b9c6d91SCole Faust    gtest: false,
507*4b9c6d91SCole Faust
508*4b9c6d91SCole Faust    srcs: ["test/libminijail_test.cpp"],
509*4b9c6d91SCole Faust
510*4b9c6d91SCole Faust    shared_libs: [
511*4b9c6d91SCole Faust        "libbase",
512*4b9c6d91SCole Faust        "libminijail",
513*4b9c6d91SCole Faust    ],
514*4b9c6d91SCole Faust}
515*4b9c6d91SCole Faust
516*4b9c6d91SCole Faust// libminijail usage example.
517*4b9c6d91SCole Faust// =========================================================
518*4b9c6d91SCole Faustcc_binary {
519*4b9c6d91SCole Faust    name: "drop_privs",
520*4b9c6d91SCole Faust    defaults: ["libminijail_flags"],
521*4b9c6d91SCole Faust
522*4b9c6d91SCole Faust    // Don't build with ASan, but leave commented out for easy local debugging.
523*4b9c6d91SCole Faust    // sanitize: { address: true, },
524*4b9c6d91SCole Faust    srcs: ["examples/drop_privs.cpp"],
525*4b9c6d91SCole Faust
526*4b9c6d91SCole Faust    shared_libs: [
527*4b9c6d91SCole Faust        "libbase",
528*4b9c6d91SCole Faust        "libminijail",
529*4b9c6d91SCole Faust    ],
530*4b9c6d91SCole Faust}
531*4b9c6d91SCole Faust
532*4b9c6d91SCole Faust// minijail0 executable.
533*4b9c6d91SCole Faust// This is not currently used on Brillo/Android,
534*4b9c6d91SCole Faust// but it's convenient to be able to build it.
535*4b9c6d91SCole Faust// =========================================================
536*4b9c6d91SCole Faustcc_binary {
537*4b9c6d91SCole Faust    name: "minijail0",
538*4b9c6d91SCole Faust    defaults: ["libminijail_flags"],
539*4b9c6d91SCole Faust    host_supported: true,
540*4b9c6d91SCole Faust
541*4b9c6d91SCole Faust    cflags: [
542*4b9c6d91SCole Faust        "-DPRELOADPATH=\"/invalidminijailpreload.so\"",
543*4b9c6d91SCole Faust    ],
544*4b9c6d91SCole Faust    srcs: [
545*4b9c6d91SCole Faust        "config_parser.c",
546*4b9c6d91SCole Faust        "elfparse.c",
547*4b9c6d91SCole Faust        "minijail0.c",
548*4b9c6d91SCole Faust        "minijail0_cli.c",
549*4b9c6d91SCole Faust    ],
550*4b9c6d91SCole Faust
551*4b9c6d91SCole Faust    static_libs: ["libminijail_generated"],
552*4b9c6d91SCole Faust    shared_libs: minijailCommonLibraries + ["libminijail"],
553*4b9c6d91SCole Faust}
554