Home | History | Annotate | Download | only in minijail
      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