blob: cdda3c85497a7e0d1a630b263958e7dabb7c6b9f [file] [log] [blame]
Dan Willemsen2acbec52017-09-14 17:28:36 -07001// Copyright (C) 2015 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// Common variables.
16// =========================================================
17libminijailSrcFiles = [
18 "bpf.c",
19 "libminijail.c",
20 "signal_handler.c",
21 "syscall_filter.c",
22 "syscall_wrapper.c",
23 "system.c",
24 "util.c",
25]
26
27unittestSrcFiles = [
28 "testrunner.cc",
29]
30
31minijailCommonLibraries = ["libcap"]
32
33cc_defaults {
34 name: "libminijail_flags",
35 cflags: [
36 "-DHAVE_SECUREBITS_H",
37 "-Wall",
38 "-Werror",
39 ],
40 target: {
41 darwin: {
42 enabled: false,
43 },
44 },
45}
46
47// Static library for generated code.
48// =========================================================
49cc_object {
50 name: "libminijail_gen_syscall_obj",
51 vendor_available: true,
52 srcs: ["gen_syscalls.c"],
53 cflags: [
54 "-dD",
55 "-E",
Chih-Hung Hsiehed6a82e2017-10-04 10:54:11 -070056 "-Wall",
57 "-Werror",
Dan Willemsen2acbec52017-09-14 17:28:36 -070058 ],
59}
60
61cc_genrule {
62 name: "libminijail_gen_syscall",
63 vendor_available: true,
64 tool_files: ["gen_syscalls.sh"],
65 cmd: "$(location gen_syscalls.sh) $(in) $(out)",
66 srcs: [":libminijail_gen_syscall_obj"],
67 out: ["libsyscalls.c"],
68}
69
70cc_object {
71 name: "libminijail_gen_constants_obj",
72 vendor_available: true,
73 srcs: ["gen_constants.c"],
74 cflags: [
75 "-dD",
76 "-E",
Chih-Hung Hsiehed6a82e2017-10-04 10:54:11 -070077 "-Wall",
78 "-Werror",
Dan Willemsen2acbec52017-09-14 17:28:36 -070079 ],
80}
81
82cc_genrule {
83 name: "libminijail_gen_constants",
84 vendor_available: true,
85 tool_files: ["gen_constants.sh"],
86 cmd: "$(location gen_constants.sh) $(in) $(out)",
87 srcs: [":libminijail_gen_constants_obj"],
88 out: ["libconstants.c"],
89}
90
91cc_library_static {
92 name: "libminijail_generated",
93 vendor_available: true,
94 defaults: ["libminijail_flags"],
95 host_supported: true,
96
97 target: {
98 android: {
99 generated_sources: [
100 "libminijail_gen_syscall",
101 "libminijail_gen_constants",
102 ],
103 },
104 host: {
105 srcs: [
106 "linux-x86/libconstants.gen.c",
107 "linux-x86/libsyscalls.gen.c",
108 ],
109 },
110 },
111}
112
113// libminijail shared and static library for target.
114// =========================================================
115cc_library {
116 name: "libminijail",
Luis Hector Chavez8cb0dee2018-04-19 20:15:13 -0700117 host_supported: true,
Logan Chiena62adc62017-11-21 20:32:45 +0800118
Dan Willemsen2acbec52017-09-14 17:28:36 -0700119 vendor_available: true,
Logan Chiena62adc62017-11-21 20:32:45 +0800120 vndk: {
121 enabled: true,
122 },
123
Dan Willemsen2acbec52017-09-14 17:28:36 -0700124 defaults: ["libminijail_flags"],
125
126 srcs: libminijailSrcFiles,
127
128 static: {
129 whole_static_libs: ["libminijail_generated"] + minijailCommonLibraries,
130 },
131 shared: {
132 static_libs: ["libminijail_generated"],
133 shared_libs: minijailCommonLibraries,
134 },
135 export_include_dirs: ["."],
Luis Hector Chavez8cb0dee2018-04-19 20:15:13 -0700136
137 target: {
138 host: {
139 cflags: [
140 "-DPRELOADPATH=\"/invalidminijailpreload.so\"",
141 ],
142 },
143 },
Dan Willemsen2acbec52017-09-14 17:28:36 -0700144}
145
146// Example ASan-ified libminijail shared library for target.
147// Commented out since it's only needed for local debugging.
148// =========================================================
149//cc_library_shared {
150// name: "libminijail_asan",
151// defaults: ["libminijail_flags"],
152//
153// sanitize: {
154// address: true,
155// },
156// relative_install_path: "asan",
157// srcs: libminijailSrcFiles,
158//
159// static_libs: ["libminijail_generated"],
160// shared_libs: minijailCommonLibraries,
161// export_include_dirs: ["."],
162//}
163
164// libminijail native unit tests using gtest.
165//
166// For a device, run with:
167// adb shell /data/nativetest/libminijail_unittest_gtest/libminijail_unittest_gtest
168//
169// For host, run with:
170// out/host/linux-x86/nativetest(64)/libminijail_unittest_gtest/libminijail_unittest_gtest
171// =========================================================
172cc_test {
173 name: "libminijail_unittest_gtest",
174 defaults: ["libminijail_flags"],
175 // TODO(b/31395668): Re-enable once the seccomp(2) syscall becomes available.
176 //host_supported: true
177
178 srcs: libminijailSrcFiles + ["libminijail_unittest.cc"] + unittestSrcFiles,
179
180 static_libs: ["libminijail_generated"],
181 shared_libs: minijailCommonLibraries,
182
183 target: {
184 android: {
185 cflags: ["-Wno-writable-strings"],
186 test_suites: ["device-tests"],
187 },
188 host: {
189 cflags: ["-DPRELOADPATH=\"/invalid\""],
190 },
191 },
192}
193
194// Syscall filtering native unit tests using gtest.
195//
196// For a device, run with:
197// adb shell /data/nativetest/syscall_filter_unittest_gtest/syscall_filter_unittest_gtest
198//
199// For host, run with:
200// out/host/linux-x86/nativetest(64)/syscall_filter_unittest_gtest/syscall_filter_unittest_gtest
201// =========================================================
202cc_test {
203 name: "syscall_filter_unittest_gtest",
204 defaults: ["libminijail_flags"],
205 host_supported: true,
206
207 srcs: [
208 "bpf.c",
209 "syscall_filter.c",
210 "util.c",
211 "syscall_filter_unittest.cc",
212 ] + unittestSrcFiles,
213
214 static_libs: ["libminijail_generated"],
215 shared_libs: minijailCommonLibraries,
216
217 target: {
218 android: {
219 test_suites: ["device-tests"],
220 },
221 },
222}
223
224// System functionality unit tests using gtest.
225//
226// For a device, run with:
Jorge Lucangeli Obes1ed75bc2018-01-25 14:06:42 -0500227// adb shell /data/nativetest/mj_system_unittest_gtest/mj_system_unittest_gtest
Dan Willemsen2acbec52017-09-14 17:28:36 -0700228//
229// For host, run with:
Jorge Lucangeli Obes1ed75bc2018-01-25 14:06:42 -0500230// out/host/linux-x86/nativetest(64)/mj_system_unittest_gtest/mj_system_unittest_gtest
Dan Willemsen2acbec52017-09-14 17:28:36 -0700231// =========================================================
232cc_test {
Jorge Lucangeli Obes1ed75bc2018-01-25 14:06:42 -0500233 name: "mj_system_unittest_gtest",
Dan Willemsen2acbec52017-09-14 17:28:36 -0700234 defaults: ["libminijail_flags"],
235 host_supported: true,
236
237 srcs: [
238 "system.c",
239 "util.c",
240 "system_unittest.cc",
241 ] + unittestSrcFiles,
242
243 static_libs: ["libminijail_generated"],
244 shared_libs: minijailCommonLibraries,
245
246 target: {
247 android: {
248 test_suites: ["device-tests"],
249 },
250 },
251}
252
Mike Frysinger32c39922018-01-17 17:09:54 -0500253// Utility functionality unit tests using gtest.
254//
255// For a device, run with:
Jorge Lucangeli Obes1ed75bc2018-01-25 14:06:42 -0500256// adb shell /data/nativetest/mj_util_unittest_gtest/mj_util_unittest_gtest
Mike Frysinger32c39922018-01-17 17:09:54 -0500257//
258// For host, run with:
Jorge Lucangeli Obes1ed75bc2018-01-25 14:06:42 -0500259// out/host/linux-x86/nativetest(64)/mj_util_unittest_gtest/mj_util_unittest_gtest
Mike Frysinger32c39922018-01-17 17:09:54 -0500260// =========================================================
261cc_test {
Jorge Lucangeli Obes1ed75bc2018-01-25 14:06:42 -0500262 name: "mj_util_unittest_gtest",
Mike Frysinger32c39922018-01-17 17:09:54 -0500263 defaults: ["libminijail_flags"],
264 host_supported: true,
265
266 srcs: [
267 "util.c",
268 "util_unittest.cc",
269 ] + unittestSrcFiles,
270
271 static_libs: ["libminijail_generated"],
272 shared_libs: minijailCommonLibraries,
273
274 target: {
275 android: {
276 test_suites: ["device-tests"],
277 },
278 },
279}
280
Mike Frysinger4d2a81e2018-01-22 16:43:33 -0500281// Utility functionality unit tests using gtest.
282//
283// For a device, run with:
284// adb shell /data/nativetest/minijail0_cli_unittest_gtest/minijail0_cli_unittest_gtest
285//
286// For host, run with:
287// out/host/linux-x86/nativetest(64)/minijail0_cli_unittest_gtest/minijail0_cli_unittest_gtest
288// =========================================================
289cc_test {
290 name: "minijail0_cli_unittest_gtest",
291 defaults: ["libminijail_flags"],
292 host_supported: true,
293
294 cflags: [
295 "-DPRELOADPATH=\"/invalid\"",
296 ],
297 srcs: libminijailSrcFiles + [
298 "elfparse.c",
299 "minijail0_cli.c",
300 "minijail0_cli_unittest.cc",
301 ] + unittestSrcFiles,
302
303 static_libs: ["libminijail_generated"],
304 shared_libs: minijailCommonLibraries,
305
306 target: {
307 android: {
308 test_suites: ["device-tests"],
309 },
310 },
311}
312
Dan Willemsen2acbec52017-09-14 17:28:36 -0700313// libminijail_test executable for brillo_Minijail test.
314// =========================================================
315cc_test {
316 name: "libminijail_test",
317 defaults: ["libminijail_flags"],
318 test_suites: ["device-tests"],
319
320 gtest: false,
321
322 srcs: ["test/libminijail_test.cpp"],
323
324 shared_libs: [
325 "libbase",
326 "libminijail",
327 ],
328}
329
330// libminijail usage example.
331// =========================================================
332cc_binary {
333 name: "drop_privs",
334 defaults: ["libminijail_flags"],
335
336 // Don't build with ASan, but leave commented out for easy local debugging.
337 // sanitize: { address: true, },
338 srcs: ["examples/drop_privs.cpp"],
339
340 shared_libs: [
341 "libbase",
342 "libminijail",
343 ],
344}
345
346// minijail0 executable.
347// This is not currently used on Brillo/Android,
348// but it's convenient to be able to build it.
349// =========================================================
350cc_binary {
351 name: "minijail0",
352 defaults: ["libminijail_flags"],
Luis Hector Chavez8cb0dee2018-04-19 20:15:13 -0700353 host_supported: true,
Dan Willemsen2acbec52017-09-14 17:28:36 -0700354
355 cflags: [
Dan Willemsen2acbec52017-09-14 17:28:36 -0700356 "-DPRELOADPATH=\"/invalidminijailpreload.so\"",
357 ],
358 srcs: [
359 "elfparse.c",
360 "minijail0.c",
Mike Frysinger5ef22ca2018-01-20 13:42:10 -0500361 "minijail0_cli.c",
Dan Willemsen2acbec52017-09-14 17:28:36 -0700362 ],
363
364 static_libs: ["libminijail_generated"],
365 shared_libs: minijailCommonLibraries + ["libminijail"],
366}