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