• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 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
15LOCAL_PATH := $(call my-dir)
16
17
18# Common variables.
19# =========================================================
20libminijailSrcFiles := \
21	bpf.c \
22	libminijail.c \
23	signal_handler.c \
24	syscall_filter.c \
25	syscall_wrapper.c \
26	system.c \
27	util.c
28
29hostUnittestSrcFiles := \
30	linux-x86/libconstants.gen.c \
31	linux-x86/libsyscalls.gen.c
32
33minijailCommonCFlags := -DHAVE_SECUREBITS_H -Wall -Werror
34minijailCommonLibraries := libcap
35
36
37# Static library for generated code.
38# =========================================================
39include $(CLEAR_VARS)
40LOCAL_MODULE := libminijail_generated
41include $(LOCAL_PATH)/gen.mk
42include $(BUILD_STATIC_LIBRARY)
43
44include $(CLEAR_VARS)
45LOCAL_MODULE:= libminijail_generated_vendor
46include $(LOCAL_PATH)/gen.mk
47LOCAL_VENDOR_MODULE := true
48include $(BUILD_STATIC_LIBRARY)
49
50
51# libminijail shared library for target.
52# =========================================================
53include $(CLEAR_VARS)
54LOCAL_MODULE := libminijail
55
56LOCAL_CFLAGS := $(minijailCommonCFlags)
57LOCAL_CLANG := true
58LOCAL_SRC_FILES := $(libminijailSrcFiles)
59
60LOCAL_STATIC_LIBRARIES := libminijail_generated
61LOCAL_SHARED_LIBRARIES := $(minijailCommonLibraries)
62LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
63include $(BUILD_SHARED_LIBRARY)
64
65include $(CLEAR_VARS)
66LOCAL_MODULE := libminijail_vendor
67
68LOCAL_CFLAGS := $(minijailCommonCFlags)
69LOCAL_CLANG := true
70LOCAL_SRC_FILES := $(libminijailSrcFiles)
71LOCAL_VENDOR_MODULE := true
72
73LOCAL_STATIC_LIBRARIES := libminijail_generated_vendor
74LOCAL_SHARED_LIBRARIES := $(minijailCommonLibraries)
75LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
76include $(BUILD_SHARED_LIBRARY)
77
78# Example ASan-ified libminijail shared library for target.
79# Commented out since it's only needed for local debugging.
80# =========================================================
81# include $(CLEAR_VARS)
82# LOCAL_MODULE := libminijail_asan
83# LOCAL_MODULE_TAGS := optional
84#
85# LOCAL_CFLAGS := $(minijailCommonCFlags)
86# LOCAL_CLANG := true
87# LOCAL_SANITIZE := address
88# LOCAL_MODULE_RELATIVE_PATH := asan
89# LOCAL_SRC_FILES := $(libminijailSrcFiles)
90#
91# LOCAL_STATIC_LIBRARIES := libminijail_generated
92# LOCAL_SHARED_LIBRARIES := $(minijailCommonLibraries)
93# LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
94# include $(BUILD_SHARED_LIBRARY)
95
96
97# libminijail static library for target.
98# =========================================================
99include $(CLEAR_VARS)
100LOCAL_MODULE := libminijail
101
102LOCAL_CFLAGS := $(minijailCommonCFlags)
103LOCAL_CLANG := true
104LOCAL_SRC_FILES := $(libminijailSrcFiles)
105
106LOCAL_WHOLE_STATIC_LIBRARIES := libminijail_generated $(minijailCommonLibraries)
107LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
108include $(BUILD_STATIC_LIBRARY)
109
110
111# libminijail native unit tests using gtest. Run with:
112# adb shell /data/nativetest/libminijail_unittest_gtest/libminijail_unittest_gtest
113# =========================================================
114include $(CLEAR_VARS)
115LOCAL_MODULE := libminijail_unittest_gtest
116LOCAL_COMPATIBILITY_SUITE := device-tests
117
118LOCAL_CPP_EXTENSION := .cc
119LOCAL_CFLAGS := $(minijailCommonCFlags) -Wno-writable-strings
120LOCAL_CLANG := true
121LOCAL_SRC_FILES := \
122	$(libminijailSrcFiles) \
123	libminijail_unittest.cc \
124
125LOCAL_STATIC_LIBRARIES := libminijail_generated
126LOCAL_SHARED_LIBRARIES := $(minijailCommonLibraries)
127include $(BUILD_NATIVE_TEST)
128
129
130# # libminijail native unit tests for the host. Run with:
131# # out/host/linux-x86/nativetest(64)/libminijail_unittest/libminijail_unittest_gtest
132# # TODO(b/31395668): Re-enable once the seccomp(2) syscall becomes available.
133# # =========================================================
134# include $(CLEAR_VARS)
135# LOCAL_MODULE := libminijail_unittest_gtest
136# LOCAL_MODULE_HOST_OS := linux
137
138# LOCAL_CPP_EXTENSION := .cc
139# LOCAL_CFLAGS := $(minijailCommonCFlags) -DPRELOADPATH=\"/invalid\"
140# LOCAL_CLANG := true
141# LOCAL_SRC_FILES := \
142# 	$(libminijailSrcFiles) \
143# 	libminijail_unittest.cc \
144# 	$(hostUnittestSrcFiles)
145
146# LOCAL_SHARED_LIBRARIES := $(minijailCommonLibraries)
147# include $(BUILD_HOST_NATIVE_TEST)
148
149
150# Syscall filtering native unit tests using gtest. Run with:
151# adb shell /data/nativetest/syscall_filter_unittest_gtest/syscall_filter_unittest_gtest
152# =========================================================
153include $(CLEAR_VARS)
154LOCAL_MODULE := syscall_filter_unittest_gtest
155LOCAL_COMPATIBILITY_SUITE := device-tests
156
157LOCAL_CPP_EXTENSION := .cc
158LOCAL_CFLAGS := $(minijailCommonCFlags)
159LOCAL_CLANG := true
160LOCAL_SRC_FILES := \
161	bpf.c \
162	syscall_filter.c \
163	util.c \
164	syscall_filter_unittest.cc \
165
166LOCAL_STATIC_LIBRARIES := libminijail_generated
167LOCAL_SHARED_LIBRARIES := $(minijailCommonLibraries)
168include $(BUILD_NATIVE_TEST)
169
170
171# Syscall filtering native unit tests for the host. Run with:
172# out/host/linux-x86/nativetest(64)/syscall_filter_unittest_gtest/syscall_filter_unittest_gtest
173# =========================================================
174include $(CLEAR_VARS)
175LOCAL_MODULE := syscall_filter_unittest_gtest
176LOCAL_MODULE_HOST_OS := linux
177
178LOCAL_CPP_EXTENSION := .cc
179LOCAL_CFLAGS := $(minijailCommonCFlags)
180LOCAL_CLANG := true
181LOCAL_SRC_FILES := \
182	bpf.c \
183	syscall_filter.c \
184	util.c \
185	syscall_filter_unittest.cc \
186	$(hostUnittestSrcFiles)
187
188LOCAL_SHARED_LIBRARIES := $(minijailCommonLibraries)
189include $(BUILD_HOST_NATIVE_TEST)
190
191
192# libminijail_test executable for brillo_Minijail test.
193# =========================================================
194include $(CLEAR_VARS)
195LOCAL_MODULE := libminijail_test
196LOCAL_COMPATIBILITY_SUITE := device-tests
197
198LOCAL_CFLAGS := $(minijailCommonCFlags)
199LOCAL_CLANG := true
200LOCAL_GTEST := false
201LOCAL_SRC_FILES := \
202	test/libminijail_test.cpp
203
204LOCAL_SHARED_LIBRARIES := libbase libminijail
205include $(BUILD_NATIVE_TEST)
206
207
208# libminijail usage example.
209# =========================================================
210include $(CLEAR_VARS)
211LOCAL_MODULE := drop_privs
212LOCAL_MODULE_TAGS := optional
213LOCAL_CFLAGS := $(minijailCommonCFlags)
214LOCAL_CLANG := true
215# Don't build with ASan, but leave commented out for easy local debugging.
216# LOCAL_SANITIZE := address
217LOCAL_SRC_FILES := \
218	examples/drop_privs.cpp
219
220LOCAL_SHARED_LIBRARIES := libbase libminijail
221include $(BUILD_EXECUTABLE)
222
223
224# minijail0 executable.
225# This is not currently used on Brillo/Android,
226# but it's convenient to be able to build it.
227# =========================================================
228include $(CLEAR_VARS)
229LOCAL_MODULE := minijail0
230LOCAL_MODULE_TAGS := optional
231LOCAL_CFLAGS := \
232	$(minijailCommonCFlags) -Wno-missing-field-initializers \
233	-DPRELOADPATH=\"/invalidminijailpreload.so\"
234LOCAL_CLANG := true
235LOCAL_SRC_FILES := \
236	elfparse.c \
237	minijail0.c \
238
239LOCAL_STATIC_LIBRARIES := libminijail_generated
240LOCAL_SHARED_LIBRARIES := $(minijailCommonLibraries) libminijail
241include $(BUILD_EXECUTABLE)
242