Android.mk revision fff6f75fc1de2963254271d7d254e53ae187cada
1LOCAL_PATH:= $(call my-dir) 2 3####################################### 4# init.rc 5include $(CLEAR_VARS) 6 7LOCAL_MODULE := init.rc 8LOCAL_SRC_FILES := $(LOCAL_MODULE) 9LOCAL_MODULE_CLASS := ETC 10LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) 11 12include $(BUILD_PREBUILT) 13 14####################################### 15# init-debug.rc 16include $(CLEAR_VARS) 17 18LOCAL_MODULE := init-debug.rc 19LOCAL_SRC_FILES := $(LOCAL_MODULE) 20LOCAL_MODULE_CLASS := ETC 21LOCAL_MODULE_TAGS := debug 22LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/init 23 24include $(BUILD_PREBUILT) 25 26####################################### 27# asan.options 28ifneq ($(filter address,$(SANITIZE_TARGET)),) 29 30include $(CLEAR_VARS) 31 32LOCAL_MODULE := asan.options 33LOCAL_MODULE_CLASS := ETC 34LOCAL_SRC_FILES := $(LOCAL_MODULE) 35LOCAL_MODULE_PATH := $(TARGET_OUT) 36 37include $(BUILD_PREBUILT) 38 39# Modules for asan.options.X files. 40 41ASAN_OPTIONS_FILES := 42 43define create-asan-options-module 44include $$(CLEAR_VARS) 45LOCAL_MODULE := asan.options.$(1) 46ASAN_OPTIONS_FILES += asan.options.$(1) 47LOCAL_MODULE_CLASS := ETC 48# The asan.options.off.template tries to turn off as much of ASAN as is possible. 49LOCAL_SRC_FILES := asan.options.off.template 50LOCAL_MODULE_PATH := $(TARGET_OUT) 51include $$(BUILD_PREBUILT) 52endef 53 54# Pretty comprehensive set of native services. This list is helpful if all that's to be checked is an 55# app. 56ifeq ($(SANITIZE_LITE_SERVICES),true) 57SANITIZE_ASAN_OPTIONS_FOR := \ 58 adbd \ 59 ATFWD-daemon \ 60 audioserver \ 61 bridgemgrd \ 62 cameraserver \ 63 cnd \ 64 debuggerd \ 65 debuggerd64 \ 66 dex2oat \ 67 drmserver \ 68 fingerprintd \ 69 gatekeeperd \ 70 installd \ 71 keystore \ 72 lmkd \ 73 logcat \ 74 logd \ 75 lowi-server \ 76 media.codec \ 77 mediadrmserver \ 78 media.extractor \ 79 mediaserver \ 80 mm-qcamera-daemon \ 81 mpdecision \ 82 netmgrd \ 83 perfd \ 84 perfprofd \ 85 qmuxd \ 86 qseecomd \ 87 rild \ 88 sdcard \ 89 servicemanager \ 90 slim_daemon \ 91 surfaceflinger \ 92 thermal-engine \ 93 time_daemon \ 94 update_engine \ 95 vold \ 96 wpa_supplicant \ 97 zip 98endif 99 100ifneq ($(SANITIZE_ASAN_OPTIONS_FOR),) 101 $(foreach binary, $(SANITIZE_ASAN_OPTIONS_FOR), $(eval $(call create-asan-options-module,$(binary)))) 102endif 103 104# ASAN extration. 105ASAN_EXTRACT_FILES := 106ifeq ($(SANITIZE_TARGET_SYSTEM),true) 107include $(CLEAR_VARS) 108LOCAL_MODULE:= asan_extract 109LOCAL_MODULE_TAGS := optional 110LOCAL_MODULE_CLASS := EXECUTABLES 111LOCAL_SRC_FILES := asan_extract.sh 112LOCAL_INIT_RC := asan_extract.rc 113# We need bzip2 on device for extraction. 114LOCAL_REQUIRED_MODULES := bzip2 115include $(BUILD_PREBUILT) 116ASAN_EXTRACT_FILES := asan_extract 117endif 118 119endif 120 121####################################### 122# init.environ.rc 123 124include $(CLEAR_VARS) 125LOCAL_MODULE_CLASS := ETC 126LOCAL_MODULE := init.environ.rc 127LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) 128 129EXPORT_GLOBAL_ASAN_OPTIONS := 130ifneq ($(filter address,$(SANITIZE_TARGET)),) 131 EXPORT_GLOBAL_ASAN_OPTIONS := export ASAN_OPTIONS include=/system/asan.options 132 LOCAL_REQUIRED_MODULES := asan.options $(ASAN_OPTIONS_FILES) $(ASAN_EXTRACT_FILES) 133endif 134 135EXPORT_GLOBAL_GCOV_OPTIONS := 136ifeq ($(NATIVE_COVERAGE),true) 137 EXPORT_GLOBAL_GCOV_OPTIONS := export GCOV_PREFIX /data/misc/gcov 138endif 139 140# Put it here instead of in init.rc module definition, 141# because init.rc is conditionally included. 142# 143# create some directories (some are mount points) and symlinks 144LOCAL_POST_INSTALL_CMD := mkdir -p $(addprefix $(TARGET_ROOT_OUT)/, \ 145 sbin dev proc sys system data oem acct config storage mnt root $(BOARD_ROOT_EXTRA_FOLDERS)); \ 146 ln -sf /system/etc $(TARGET_ROOT_OUT)/etc; \ 147 ln -sf /data/user_de/0/com.android.shell/files/bugreports $(TARGET_ROOT_OUT)/bugreports; \ 148 ln -sf /sys/kernel/debug $(TARGET_ROOT_OUT)/d; \ 149 ln -sf /storage/self/primary $(TARGET_ROOT_OUT)/sdcard 150ifdef BOARD_USES_VENDORIMAGE 151 LOCAL_POST_INSTALL_CMD += ; mkdir -p $(TARGET_ROOT_OUT)/vendor 152else 153 LOCAL_POST_INSTALL_CMD += ; ln -sf /system/vendor $(TARGET_ROOT_OUT)/vendor 154endif 155ifdef BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE 156 LOCAL_POST_INSTALL_CMD += ; mkdir -p $(TARGET_ROOT_OUT)/cache 157else 158 LOCAL_POST_INSTALL_CMD += ; ln -sf /data/cache $(TARGET_ROOT_OUT)/cache 159endif 160ifdef BOARD_ROOT_EXTRA_SYMLINKS 161# BOARD_ROOT_EXTRA_SYMLINKS is a list of <target>:<link_name>. 162 LOCAL_POST_INSTALL_CMD += $(foreach s, $(BOARD_ROOT_EXTRA_SYMLINKS),\ 163 $(eval p := $(subst :,$(space),$(s)))\ 164 ; mkdir -p $(dir $(TARGET_ROOT_OUT)/$(word 2,$(p))) \ 165 ; ln -sf $(word 1,$(p)) $(TARGET_ROOT_OUT)/$(word 2,$(p))) 166endif 167# The A/B updater uses a top-level /postinstall directory to mount the new 168# system before reboot. 169ifeq ($(AB_OTA_UPDATER),true) 170 LOCAL_POST_INSTALL_CMD += ; mkdir -p $(TARGET_ROOT_OUT)/postinstall 171endif 172 173include $(BUILD_SYSTEM)/base_rules.mk 174 175# Regenerate init.environ.rc if PRODUCT_BOOTCLASSPATH has changed. 176bcp_md5 := $(word 1, $(shell echo $(PRODUCT_BOOTCLASSPATH) $(PRODUCT_SYSTEM_SERVER_CLASSPATH) | $(MD5SUM))) 177bcp_dep := $(intermediates)/$(bcp_md5).bcp.dep 178$(bcp_dep) : 179 $(hide) mkdir -p $(dir $@) && rm -rf $(dir $@)*.bcp.dep && touch $@ 180 181$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/init.environ.rc.in $(bcp_dep) 182 @echo "Generate: $< -> $@" 183 @mkdir -p $(dir $@) 184 $(hide) sed -e 's?%BOOTCLASSPATH%?$(PRODUCT_BOOTCLASSPATH)?g' $< >$@ 185 $(hide) sed -i -e 's?%SYSTEMSERVERCLASSPATH%?$(PRODUCT_SYSTEM_SERVER_CLASSPATH)?g' $@ 186 $(hide) sed -i -e 's?%EXPORT_GLOBAL_ASAN_OPTIONS%?$(EXPORT_GLOBAL_ASAN_OPTIONS)?g' $@ 187 $(hide) sed -i -e 's?%EXPORT_GLOBAL_GCOV_OPTIONS%?$(EXPORT_GLOBAL_GCOV_OPTIONS)?g' $@ 188 189bcp_md5 := 190bcp_dep := 191 192####################################### 193# ld.config.txt 194include $(CLEAR_VARS) 195 196LOCAL_MODULE := ld.config.txt 197ifeq ($(PRODUCT_FULL_TREBLE)|$(SANITIZE_TARGET),true|) 198LOCAL_SRC_FILES := etc/ld.config.txt 199else 200LOCAL_SRC_FILES := etc/ld.config.legacy.txt 201endif 202LOCAL_MODULE_CLASS := ETC 203LOCAL_MODULE_PATH := $(TARGET_OUT_ETC) 204LOCAL_MODULE_STEM := $(LOCAL_MODULE) 205include $(BUILD_PREBUILT) 206