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 15 LOCAL_PATH := $(call my-dir) 16 17 18 # Common variables. 19 # ========================================================= 20 libminijailSrcFiles := \ 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 29 hostUnittestSrcFiles := \ 30 linux-x86/libconstants.gen.c \ 31 linux-x86/libsyscalls.gen.c 32 33 minijailCommonCFlags := -DHAVE_SECUREBITS_H -Wall -Werror 34 minijailCommonLibraries := libcap 35 36 37 # Static library for generated code. 38 # ========================================================= 39 include $(CLEAR_VARS) 40 LOCAL_MODULE := libminijail_generated 41 include $(LOCAL_PATH)/gen.mk 42 include $(BUILD_STATIC_LIBRARY) 43 44 include $(CLEAR_VARS) 45 LOCAL_MODULE:= libminijail_generated_vendor 46 include $(LOCAL_PATH)/gen.mk 47 LOCAL_VENDOR_MODULE := true 48 include $(BUILD_STATIC_LIBRARY) 49 50 51 # libminijail shared library for target. 52 # ========================================================= 53 include $(CLEAR_VARS) 54 LOCAL_MODULE := libminijail 55 56 LOCAL_CFLAGS := $(minijailCommonCFlags) 57 LOCAL_CLANG := true 58 LOCAL_SRC_FILES := $(libminijailSrcFiles) 59 60 LOCAL_STATIC_LIBRARIES := libminijail_generated 61 LOCAL_SHARED_LIBRARIES := $(minijailCommonLibraries) 62 LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) 63 include $(BUILD_SHARED_LIBRARY) 64 65 include $(CLEAR_VARS) 66 LOCAL_MODULE := libminijail_vendor 67 68 LOCAL_CFLAGS := $(minijailCommonCFlags) 69 LOCAL_CLANG := true 70 LOCAL_SRC_FILES := $(libminijailSrcFiles) 71 LOCAL_VENDOR_MODULE := true 72 73 LOCAL_STATIC_LIBRARIES := libminijail_generated_vendor 74 LOCAL_SHARED_LIBRARIES := $(minijailCommonLibraries) 75 LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) 76 include $(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 # ========================================================= 99 include $(CLEAR_VARS) 100 LOCAL_MODULE := libminijail 101 102 LOCAL_CFLAGS := $(minijailCommonCFlags) 103 LOCAL_CLANG := true 104 LOCAL_SRC_FILES := $(libminijailSrcFiles) 105 106 LOCAL_WHOLE_STATIC_LIBRARIES := libminijail_generated $(minijailCommonLibraries) 107 LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) 108 include $(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 # ========================================================= 114 include $(CLEAR_VARS) 115 LOCAL_MODULE := libminijail_unittest_gtest 116 LOCAL_COMPATIBILITY_SUITE := device-tests 117 118 LOCAL_CPP_EXTENSION := .cc 119 LOCAL_CFLAGS := $(minijailCommonCFlags) -Wno-writable-strings 120 LOCAL_CLANG := true 121 LOCAL_SRC_FILES := \ 122 $(libminijailSrcFiles) \ 123 libminijail_unittest.cc \ 124 125 LOCAL_STATIC_LIBRARIES := libminijail_generated 126 LOCAL_SHARED_LIBRARIES := $(minijailCommonLibraries) 127 include $(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 # ========================================================= 153 include $(CLEAR_VARS) 154 LOCAL_MODULE := syscall_filter_unittest_gtest 155 LOCAL_COMPATIBILITY_SUITE := device-tests 156 157 LOCAL_CPP_EXTENSION := .cc 158 LOCAL_CFLAGS := $(minijailCommonCFlags) 159 LOCAL_CLANG := true 160 LOCAL_SRC_FILES := \ 161 bpf.c \ 162 syscall_filter.c \ 163 util.c \ 164 syscall_filter_unittest.cc \ 165 166 LOCAL_STATIC_LIBRARIES := libminijail_generated 167 LOCAL_SHARED_LIBRARIES := $(minijailCommonLibraries) 168 include $(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 # ========================================================= 174 include $(CLEAR_VARS) 175 LOCAL_MODULE := syscall_filter_unittest_gtest 176 LOCAL_MODULE_HOST_OS := linux 177 178 LOCAL_CPP_EXTENSION := .cc 179 LOCAL_CFLAGS := $(minijailCommonCFlags) 180 LOCAL_CLANG := true 181 LOCAL_SRC_FILES := \ 182 bpf.c \ 183 syscall_filter.c \ 184 util.c \ 185 syscall_filter_unittest.cc \ 186 $(hostUnittestSrcFiles) 187 188 LOCAL_SHARED_LIBRARIES := $(minijailCommonLibraries) 189 include $(BUILD_HOST_NATIVE_TEST) 190 191 192 # libminijail_test executable for brillo_Minijail test. 193 # ========================================================= 194 include $(CLEAR_VARS) 195 LOCAL_MODULE := libminijail_test 196 LOCAL_COMPATIBILITY_SUITE := device-tests 197 198 LOCAL_CFLAGS := $(minijailCommonCFlags) 199 LOCAL_CLANG := true 200 LOCAL_GTEST := false 201 LOCAL_SRC_FILES := \ 202 test/libminijail_test.cpp 203 204 LOCAL_SHARED_LIBRARIES := libbase libminijail 205 include $(BUILD_NATIVE_TEST) 206 207 208 # libminijail usage example. 209 # ========================================================= 210 include $(CLEAR_VARS) 211 LOCAL_MODULE := drop_privs 212 LOCAL_MODULE_TAGS := optional 213 LOCAL_CFLAGS := $(minijailCommonCFlags) 214 LOCAL_CLANG := true 215 # Don't build with ASan, but leave commented out for easy local debugging. 216 # LOCAL_SANITIZE := address 217 LOCAL_SRC_FILES := \ 218 examples/drop_privs.cpp 219 220 LOCAL_SHARED_LIBRARIES := libbase libminijail 221 include $(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 # ========================================================= 228 include $(CLEAR_VARS) 229 LOCAL_MODULE := minijail0 230 LOCAL_MODULE_TAGS := optional 231 LOCAL_CFLAGS := \ 232 $(minijailCommonCFlags) -Wno-missing-field-initializers \ 233 -DPRELOADPATH=\"/invalidminijailpreload.so\" 234 LOCAL_CLANG := true 235 LOCAL_SRC_FILES := \ 236 elfparse.c \ 237 minijail0.c \ 238 239 LOCAL_STATIC_LIBRARIES := libminijail_generated 240 LOCAL_SHARED_LIBRARIES := $(minijailCommonLibraries) libminijail 241 include $(BUILD_EXECUTABLE) 242