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