1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectLOCAL_PATH:= $(call my-dir) 2dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 35748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wang####################################### 45748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wang# init.rc 55748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wanginclude $(CLEAR_VARS) 6dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 75748ee972de22e3a53bd3ef7d998ed15ea726a69Ying WangLOCAL_MODULE := init.rc 85748ee972de22e3a53bd3ef7d998ed15ea726a69Ying WangLOCAL_SRC_FILES := $(LOCAL_MODULE) 95748ee972de22e3a53bd3ef7d998ed15ea726a69Ying WangLOCAL_MODULE_CLASS := ETC 105748ee972de22e3a53bd3ef7d998ed15ea726a69Ying WangLOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) 1144b65d047cc39baf30e21bfd8dd438f6bc1f77f5Colin Cross 125748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wanginclude $(BUILD_PREBUILT) 130d2dde57fef4db0d0e51369a1d9d9cfa5deb7235Evgenii Stepanov 140d2dde57fef4db0d0e51369a1d9d9cfa5deb7235Evgenii Stepanov####################################### 157864e3675161ace4d6e54f32a822a90d2e1960f0Mark Salyzyn# init-debug.rc 167864e3675161ace4d6e54f32a822a90d2e1960f0Mark Salyzyninclude $(CLEAR_VARS) 177864e3675161ace4d6e54f32a822a90d2e1960f0Mark Salyzyn 187864e3675161ace4d6e54f32a822a90d2e1960f0Mark SalyzynLOCAL_MODULE := init-debug.rc 197864e3675161ace4d6e54f32a822a90d2e1960f0Mark SalyzynLOCAL_SRC_FILES := $(LOCAL_MODULE) 207864e3675161ace4d6e54f32a822a90d2e1960f0Mark SalyzynLOCAL_MODULE_CLASS := ETC 217864e3675161ace4d6e54f32a822a90d2e1960f0Mark SalyzynLOCAL_MODULE_TAGS := debug 227864e3675161ace4d6e54f32a822a90d2e1960f0Mark SalyzynLOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/init 237864e3675161ace4d6e54f32a822a90d2e1960f0Mark Salyzyn 247864e3675161ace4d6e54f32a822a90d2e1960f0Mark Salyzyninclude $(BUILD_PREBUILT) 257864e3675161ace4d6e54f32a822a90d2e1960f0Mark Salyzyn 267864e3675161ace4d6e54f32a822a90d2e1960f0Mark Salyzyn####################################### 270d2dde57fef4db0d0e51369a1d9d9cfa5deb7235Evgenii Stepanov# asan.options 285039d8cd2180e3ba3c8f320a616a1b84f499e0cfIvan Krasinifneq ($(filter address,$(SANITIZE_TARGET)),) 298ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe 300d2dde57fef4db0d0e51369a1d9d9cfa5deb7235Evgenii Stepanovinclude $(CLEAR_VARS) 310d2dde57fef4db0d0e51369a1d9d9cfa5deb7235Evgenii Stepanov 320d2dde57fef4db0d0e51369a1d9d9cfa5deb7235Evgenii StepanovLOCAL_MODULE := asan.options 330d2dde57fef4db0d0e51369a1d9d9cfa5deb7235Evgenii StepanovLOCAL_MODULE_CLASS := ETC 340d2dde57fef4db0d0e51369a1d9d9cfa5deb7235Evgenii StepanovLOCAL_SRC_FILES := $(LOCAL_MODULE) 350d2dde57fef4db0d0e51369a1d9d9cfa5deb7235Evgenii StepanovLOCAL_MODULE_PATH := $(TARGET_OUT) 360d2dde57fef4db0d0e51369a1d9d9cfa5deb7235Evgenii Stepanov 370d2dde57fef4db0d0e51369a1d9d9cfa5deb7235Evgenii Stepanovinclude $(BUILD_PREBUILT) 388ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe 398ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe# Modules for asan.options.X files. 408ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe 418ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas GampeASAN_OPTIONS_FILES := 428ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe 438ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampedefine create-asan-options-module 448ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampeinclude $$(CLEAR_VARS) 458ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas GampeLOCAL_MODULE := asan.options.$(1) 468ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas GampeASAN_OPTIONS_FILES += asan.options.$(1) 478ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas GampeLOCAL_MODULE_CLASS := ETC 488ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe# The asan.options.off.template tries to turn off as much of ASAN as is possible. 498ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas GampeLOCAL_SRC_FILES := asan.options.off.template 508ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas GampeLOCAL_MODULE_PATH := $(TARGET_OUT) 518ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampeinclude $$(BUILD_PREBUILT) 528ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampeendef 538ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe 548ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe# Pretty comprehensive set of native services. This list is helpful if all that's to be checked is an 558ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe# app. 5621bb2e0388059dce89e9767de0d52f580081497dAndreas Gampeifeq ($(SANITIZE_LITE_SERVICES),true) 578ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas GampeSANITIZE_ASAN_OPTIONS_FOR := \ 588ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe adbd \ 598ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe ATFWD-daemon \ 608ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe audioserver \ 618ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe bridgemgrd \ 628ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe cameraserver \ 638ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe cnd \ 648ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe debuggerd \ 658ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe debuggerd64 \ 668ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe dex2oat \ 678ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe drmserver \ 688ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe fingerprintd \ 698ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe gatekeeperd \ 708ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe installd \ 718ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe keystore \ 728ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe lmkd \ 738ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe logcat \ 748ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe logd \ 758ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe lowi-server \ 768ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe media.codec \ 778ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe mediadrmserver \ 788ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe media.extractor \ 798ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe mediaserver \ 808ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe mm-qcamera-daemon \ 818ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe mpdecision \ 828ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe netmgrd \ 838ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe perfd \ 848ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe perfprofd \ 858ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe qmuxd \ 868ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe qseecomd \ 878ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe rild \ 888ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe sdcard \ 898ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe servicemanager \ 908ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe slim_daemon \ 918ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe surfaceflinger \ 928ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe thermal-engine \ 938ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe time_daemon \ 948ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe update_engine \ 958ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe vold \ 968ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe wpa_supplicant \ 978ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe zip 988ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampeendif 998ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe 1008ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampeifneq ($(SANITIZE_ASAN_OPTIONS_FOR),) 1018ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe $(foreach binary, $(SANITIZE_ASAN_OPTIONS_FOR), $(eval $(call create-asan-options-module,$(binary)))) 1028ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampeendif 1038ccc1ad0f71d0587edfbc4c637d6d8de196fe7dfAndreas Gampe 104df5496aa65c3a890c6bb584f052c97324330b9caAndreas Gampe# ASAN extration. 105df5496aa65c3a890c6bb584f052c97324330b9caAndreas GampeASAN_EXTRACT_FILES := 106df5496aa65c3a890c6bb584f052c97324330b9caAndreas Gampeifeq ($(SANITIZE_TARGET_SYSTEM),true) 107df5496aa65c3a890c6bb584f052c97324330b9caAndreas Gampeinclude $(CLEAR_VARS) 108df5496aa65c3a890c6bb584f052c97324330b9caAndreas GampeLOCAL_MODULE:= asan_extract 109df5496aa65c3a890c6bb584f052c97324330b9caAndreas GampeLOCAL_MODULE_TAGS := optional 110df5496aa65c3a890c6bb584f052c97324330b9caAndreas GampeLOCAL_MODULE_CLASS := EXECUTABLES 111df5496aa65c3a890c6bb584f052c97324330b9caAndreas GampeLOCAL_SRC_FILES := asan_extract.sh 112df5496aa65c3a890c6bb584f052c97324330b9caAndreas GampeLOCAL_INIT_RC := asan_extract.rc 113df5496aa65c3a890c6bb584f052c97324330b9caAndreas Gampe# We need bzip2 on device for extraction. 114df5496aa65c3a890c6bb584f052c97324330b9caAndreas GampeLOCAL_REQUIRED_MODULES := bzip2 115df5496aa65c3a890c6bb584f052c97324330b9caAndreas Gampeinclude $(BUILD_PREBUILT) 116df5496aa65c3a890c6bb584f052c97324330b9caAndreas GampeASAN_EXTRACT_FILES := asan_extract 117df5496aa65c3a890c6bb584f052c97324330b9caAndreas Gampeendif 118df5496aa65c3a890c6bb584f052c97324330b9caAndreas Gampe 1190d2dde57fef4db0d0e51369a1d9d9cfa5deb7235Evgenii Stepanovendif 1200d2dde57fef4db0d0e51369a1d9d9cfa5deb7235Evgenii Stepanov 1215748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wang####################################### 1225748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wang# init.environ.rc 1234f5d5176a3d732baebe92ab3748a12166406a198Mike Lockwood 1245748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wanginclude $(CLEAR_VARS) 1255748ee972de22e3a53bd3ef7d998ed15ea726a69Ying WangLOCAL_MODULE_CLASS := ETC 1265748ee972de22e3a53bd3ef7d998ed15ea726a69Ying WangLOCAL_MODULE := init.environ.rc 1275748ee972de22e3a53bd3ef7d998ed15ea726a69Ying WangLOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) 128dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 1290d2dde57fef4db0d0e51369a1d9d9cfa5deb7235Evgenii StepanovEXPORT_GLOBAL_ASAN_OPTIONS := 1305039d8cd2180e3ba3c8f320a616a1b84f499e0cfIvan Krasinifneq ($(filter address,$(SANITIZE_TARGET)),) 1310d2dde57fef4db0d0e51369a1d9d9cfa5deb7235Evgenii Stepanov EXPORT_GLOBAL_ASAN_OPTIONS := export ASAN_OPTIONS include=/system/asan.options 132df5496aa65c3a890c6bb584f052c97324330b9caAndreas Gampe LOCAL_REQUIRED_MODULES := asan.options $(ASAN_OPTIONS_FILES) $(ASAN_EXTRACT_FILES) 1330d2dde57fef4db0d0e51369a1d9d9cfa5deb7235Evgenii Stepanovendif 1340b364732723e5dcecc1a74a4f592e8afcbadd2baRyan Campbell 1350b364732723e5dcecc1a74a4f592e8afcbadd2baRyan CampbellEXPORT_GLOBAL_GCOV_OPTIONS := 1360b364732723e5dcecc1a74a4f592e8afcbadd2baRyan Campbellifeq ($(NATIVE_COVERAGE),true) 1370b364732723e5dcecc1a74a4f592e8afcbadd2baRyan Campbell EXPORT_GLOBAL_GCOV_OPTIONS := export GCOV_PREFIX /data/misc/gcov 1380b364732723e5dcecc1a74a4f592e8afcbadd2baRyan Campbellendif 1390b364732723e5dcecc1a74a4f592e8afcbadd2baRyan Campbell 1405748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wang# Put it here instead of in init.rc module definition, 1415748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wang# because init.rc is conditionally included. 1425748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wang# 143595003a3d06a13862052ef2f4f578371dae5ad65Daniel Rosenberg# create some directories (some are mount points) and symlinks 14452b59159458a574e11f03940840d63feeb648883Daniel RosenbergLOCAL_POST_INSTALL_CMD := mkdir -p $(addprefix $(TARGET_ROOT_OUT)/, \ 145c6535a343f0b0bdd0f4171f0b4c9be401beebf77Patrick Tjin sbin dev proc sys system data oem acct config storage mnt root $(BOARD_ROOT_EXTRA_FOLDERS)); \ 146595003a3d06a13862052ef2f4f578371dae5ad65Daniel Rosenberg ln -sf /system/etc $(TARGET_ROOT_OUT)/etc; \ 147c4084c669495fd1b41ce8b6568c71b1f46d26969Nick Kralevich ln -sf /data/user_de/0/com.android.shell/files/bugreports $(TARGET_ROOT_OUT)/bugreports; \ 148595003a3d06a13862052ef2f4f578371dae5ad65Daniel Rosenberg ln -sf /sys/kernel/debug $(TARGET_ROOT_OUT)/d; \ 149595003a3d06a13862052ef2f4f578371dae5ad65Daniel Rosenberg ln -sf /storage/self/primary $(TARGET_ROOT_OUT)/sdcard 1500790431f754aed8f00fb1af9827e21aa1a506af9Dan Willemsenifdef BOARD_USES_VENDORIMAGE 15152b59159458a574e11f03940840d63feeb648883Daniel Rosenberg LOCAL_POST_INSTALL_CMD += ; mkdir -p $(TARGET_ROOT_OUT)/vendor 15207b69961f2291f002f15cc4168726ba1e306914cJunichi Uekawaelse 15307b69961f2291f002f15cc4168726ba1e306914cJunichi Uekawa LOCAL_POST_INSTALL_CMD += ; ln -sf /system/vendor $(TARGET_ROOT_OUT)/vendor 15452b59159458a574e11f03940840d63feeb648883Daniel Rosenbergendif 155c6535a343f0b0bdd0f4171f0b4c9be401beebf77Patrick Tjinifdef BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE 156c6535a343f0b0bdd0f4171f0b4c9be401beebf77Patrick Tjin LOCAL_POST_INSTALL_CMD += ; mkdir -p $(TARGET_ROOT_OUT)/cache 157c6535a343f0b0bdd0f4171f0b4c9be401beebf77Patrick Tjinelse 158c6535a343f0b0bdd0f4171f0b4c9be401beebf77Patrick Tjin LOCAL_POST_INSTALL_CMD += ; ln -sf /data/cache $(TARGET_ROOT_OUT)/cache 159c6535a343f0b0bdd0f4171f0b4c9be401beebf77Patrick Tjinendif 16052b59159458a574e11f03940840d63feeb648883Daniel Rosenbergifdef BOARD_ROOT_EXTRA_SYMLINKS 16152b59159458a574e11f03940840d63feeb648883Daniel Rosenberg# BOARD_ROOT_EXTRA_SYMLINKS is a list of <target>:<link_name>. 16252b59159458a574e11f03940840d63feeb648883Daniel Rosenberg LOCAL_POST_INSTALL_CMD += $(foreach s, $(BOARD_ROOT_EXTRA_SYMLINKS),\ 16352b59159458a574e11f03940840d63feeb648883Daniel Rosenberg $(eval p := $(subst :,$(space),$(s)))\ 16452b59159458a574e11f03940840d63feeb648883Daniel Rosenberg ; mkdir -p $(dir $(TARGET_ROOT_OUT)/$(word 2,$(p))) \ 16552b59159458a574e11f03940840d63feeb648883Daniel Rosenberg ; ln -sf $(word 1,$(p)) $(TARGET_ROOT_OUT)/$(word 2,$(p))) 166595003a3d06a13862052ef2f4f578371dae5ad65Daniel Rosenbergendif 167e120b471acbe136e27e257fdf493590e1cc4ba73Alex Deymo# The A/B updater uses a top-level /postinstall directory to mount the new 168e120b471acbe136e27e257fdf493590e1cc4ba73Alex Deymo# system before reboot. 169e120b471acbe136e27e257fdf493590e1cc4ba73Alex Deymoifeq ($(AB_OTA_UPDATER),true) 170e120b471acbe136e27e257fdf493590e1cc4ba73Alex Deymo LOCAL_POST_INSTALL_CMD += ; mkdir -p $(TARGET_ROOT_OUT)/postinstall 171e120b471acbe136e27e257fdf493590e1cc4ba73Alex Deymoendif 1725748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wang 1735748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wanginclude $(BUILD_SYSTEM)/base_rules.mk 1745748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wang 1757011a85606bfdeefbd5f8db668c69b61e8d612a5Ying Wang# Regenerate init.environ.rc if PRODUCT_BOOTCLASSPATH has changed. 1761fabc35cb51e6f019141c25430e4e285741625fdNarayan Kamathbcp_md5 := $(word 1, $(shell echo $(PRODUCT_BOOTCLASSPATH) $(PRODUCT_SYSTEM_SERVER_CLASSPATH) | $(MD5SUM))) 1777011a85606bfdeefbd5f8db668c69b61e8d612a5Ying Wangbcp_dep := $(intermediates)/$(bcp_md5).bcp.dep 1787011a85606bfdeefbd5f8db668c69b61e8d612a5Ying Wang$(bcp_dep) : 1797011a85606bfdeefbd5f8db668c69b61e8d612a5Ying Wang $(hide) mkdir -p $(dir $@) && rm -rf $(dir $@)*.bcp.dep && touch $@ 1807011a85606bfdeefbd5f8db668c69b61e8d612a5Ying Wang 1817011a85606bfdeefbd5f8db668c69b61e8d612a5Ying Wang$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/init.environ.rc.in $(bcp_dep) 1825748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wang @echo "Generate: $< -> $@" 1835748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wang @mkdir -p $(dir $@) 1845748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wang $(hide) sed -e 's?%BOOTCLASSPATH%?$(PRODUCT_BOOTCLASSPATH)?g' $< >$@ 1851fabc35cb51e6f019141c25430e4e285741625fdNarayan Kamath $(hide) sed -i -e 's?%SYSTEMSERVERCLASSPATH%?$(PRODUCT_SYSTEM_SERVER_CLASSPATH)?g' $@ 1861cbe3d944a93fa3a0f0d7a444bb69c644c83f385Evgenii Stepanov $(hide) sed -i -e 's?%EXPORT_GLOBAL_ASAN_OPTIONS%?$(EXPORT_GLOBAL_ASAN_OPTIONS)?g' $@ 1870b364732723e5dcecc1a74a4f592e8afcbadd2baRyan Campbell $(hide) sed -i -e 's?%EXPORT_GLOBAL_GCOV_OPTIONS%?$(EXPORT_GLOBAL_GCOV_OPTIONS)?g' $@ 1885748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wang 1897011a85606bfdeefbd5f8db668c69b61e8d612a5Ying Wangbcp_md5 := 1907011a85606bfdeefbd5f8db668c69b61e8d612a5Ying Wangbcp_dep := 191450cff4b68ce09a65a82284ec64fae83b2ef3313Jiyong Park 1925748ee972de22e3a53bd3ef7d998ed15ea726a69Ying Wang####################################### 193450cff4b68ce09a65a82284ec64fae83b2ef3313Jiyong Park# ld.config.txt 194450cff4b68ce09a65a82284ec64fae83b2ef3313Jiyong Parkinclude $(CLEAR_VARS) 195450cff4b68ce09a65a82284ec64fae83b2ef3313Jiyong Park 196367984602abab743630d1fba8e4940f0a69e678bJiyong Park_enforce_vndk_at_runtime := false 197367984602abab743630d1fba8e4940f0a69e678bJiyong Park 198367984602abab743630d1fba8e4940f0a69e678bJiyong Parkifdef BOARD_VNDK_VERSION 199367984602abab743630d1fba8e4940f0a69e678bJiyong Parkifneq ($(BOARD_VNDK_RUNTIME_DISABLE),true) 200367984602abab743630d1fba8e4940f0a69e678bJiyong Park _enforce_vndk_at_runtime := true 201367984602abab743630d1fba8e4940f0a69e678bJiyong Parkendif 202367984602abab743630d1fba8e4940f0a69e678bJiyong Parkendif 203367984602abab743630d1fba8e4940f0a69e678bJiyong Park 204367984602abab743630d1fba8e4940f0a69e678bJiyong Parkifeq ($(_enforce_vndk_at_runtime),true) 205367984602abab743630d1fba8e4940f0a69e678bJiyong ParkLOCAL_MODULE := ld.config.txt 206367984602abab743630d1fba8e4940f0a69e678bJiyong ParkLOCAL_MODULE_CLASS := ETC 207367984602abab743630d1fba8e4940f0a69e678bJiyong ParkLOCAL_MODULE_PATH := $(TARGET_OUT_ETC) 208367984602abab743630d1fba8e4940f0a69e678bJiyong ParkLOCAL_MODULE_STEM := $(LOCAL_MODULE) 209367984602abab743630d1fba8e4940f0a69e678bJiyong Parkinclude $(BUILD_SYSTEM)/base_rules.mk 210367984602abab743630d1fba8e4940f0a69e678bJiyong Parkvndk_lib_md5 := $(word 1, $(shell echo $(LLNDK_LIBRARIES) $(VNDK_SAMEPROCESS_LIBRARIES) | $(MD5SUM))) 211367984602abab743630d1fba8e4940f0a69e678bJiyong Parkvndk_lib_dep := $(intermediates)/$(vndk_lib_md5).dep 212367984602abab743630d1fba8e4940f0a69e678bJiyong Park$(vndk_lib_dep): 213367984602abab743630d1fba8e4940f0a69e678bJiyong Park $(hide) mkdir -p $(dir $@) && rm -rf $(dir $@)*.dep && touch $@ 214367984602abab743630d1fba8e4940f0a69e678bJiyong Park 215367984602abab743630d1fba8e4940f0a69e678bJiyong Parkllndk_libraries := $(subst $(space),:,$(addsuffix .so,$(LLNDK_LIBRARIES))) 216367984602abab743630d1fba8e4940f0a69e678bJiyong Park 217367984602abab743630d1fba8e4940f0a69e678bJiyong Parkvndk_sameprocess_libraries := $(subst $(space),:,$(addsuffix .so,$(VNDK_SAMEPROCESS_LIBRARIES))) 218367984602abab743630d1fba8e4940f0a69e678bJiyong Park 219367984602abab743630d1fba8e4940f0a69e678bJiyong Parkvndk_core_libraries := $(subst $(space),:,$(addsuffix .so,$(VNDK_CORE_LIBRARIES))) 220367984602abab743630d1fba8e4940f0a69e678bJiyong Park 221faefa6bd3682a0e8f5de2184cca5960a82a00020Jiyong Parksanitizer_runtime_libraries := $(subst $(space),:,$(addsuffix .so,\ 222faefa6bd3682a0e8f5de2184cca5960a82a00020Jiyong Park$(ADDRESS_SANITIZER_RUNTIME_LIBRARY) \ 223faefa6bd3682a0e8f5de2184cca5960a82a00020Jiyong Park$(UBSAN_RUNTIME_LIBRARY) \ 224faefa6bd3682a0e8f5de2184cca5960a82a00020Jiyong Park$(TSAN_RUNTIME_LIBRARY) \ 225faefa6bd3682a0e8f5de2184cca5960a82a00020Jiyong Park$(2ND_ADDRESS_SANITIZER_RUNTIME_LIBRARY) \ 226faefa6bd3682a0e8f5de2184cca5960a82a00020Jiyong Park$(2ND_UBSAN_RUNTIME_LIBRARY) \ 227faefa6bd3682a0e8f5de2184cca5960a82a00020Jiyong Park$(2ND_TSAN_RUNTIME_LIBRARY))) 228faefa6bd3682a0e8f5de2184cca5960a82a00020Jiyong Park 229367984602abab743630d1fba8e4940f0a69e678bJiyong Park$(LOCAL_BUILT_MODULE): PRIVATE_LLNDK_LIBRARIES := $(llndk_libraries) 230367984602abab743630d1fba8e4940f0a69e678bJiyong Park$(LOCAL_BUILT_MODULE): PRIVATE_VNDK_SAMEPROCESS_LIBRARIES := $(vndk_sameprocess_libraries) 231367984602abab743630d1fba8e4940f0a69e678bJiyong Park$(LOCAL_BUILT_MODULE): PRIVATE_LLNDK_PRIVATE_LIBRARIES := $(llndk_private_libraries) 232367984602abab743630d1fba8e4940f0a69e678bJiyong Park$(LOCAL_BUILT_MODULE): PRIVATE_VNDK_CORE_LIBRARIES := $(vndk_core_libraries) 233faefa6bd3682a0e8f5de2184cca5960a82a00020Jiyong Park$(LOCAL_BUILT_MODULE): PRIVATE_SANITIZER_RUNTIME_LIBRARIES := $(sanitizer_runtime_libraries) 234367984602abab743630d1fba8e4940f0a69e678bJiyong Park$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/etc/ld.config.txt.in $(vndk_lib_dep) 235367984602abab743630d1fba8e4940f0a69e678bJiyong Park @echo "Generate: $< -> $@" 236367984602abab743630d1fba8e4940f0a69e678bJiyong Park @mkdir -p $(dir $@) 237367984602abab743630d1fba8e4940f0a69e678bJiyong Park $(hide) sed -e 's?%LLNDK_LIBRARIES%?$(PRIVATE_LLNDK_LIBRARIES)?g' $< >$@ 238367984602abab743630d1fba8e4940f0a69e678bJiyong Park $(hide) sed -i -e 's?%VNDK_SAMEPROCESS_LIBRARIES%?$(PRIVATE_VNDK_SAMEPROCESS_LIBRARIES)?g' $@ 239367984602abab743630d1fba8e4940f0a69e678bJiyong Park $(hide) sed -i -e 's?%VNDK_CORE_LIBRARIES%?$(PRIVATE_VNDK_CORE_LIBRARIES)?g' $@ 240faefa6bd3682a0e8f5de2184cca5960a82a00020Jiyong Park $(hide) sed -i -e 's?%SANITIZER_RUNTIME_LIBRARIES%?$(PRIVATE_SANITIZER_RUNTIME_LIBRARIES)?g' $@ 241367984602abab743630d1fba8e4940f0a69e678bJiyong Park 242367984602abab743630d1fba8e4940f0a69e678bJiyong Parkvndk_lib_md5 := 243367984602abab743630d1fba8e4940f0a69e678bJiyong Parkvndk_lib_dep := 244367984602abab743630d1fba8e4940f0a69e678bJiyong Parkllndk_libraries := 245367984602abab743630d1fba8e4940f0a69e678bJiyong Parkvndk_sameprocess_libraries := 246367984602abab743630d1fba8e4940f0a69e678bJiyong Parkvndk_core_libraries := 247faefa6bd3682a0e8f5de2184cca5960a82a00020Jiyong Parksanitizer_runtime_libraries := 248367984602abab743630d1fba8e4940f0a69e678bJiyong Parkelse # if _enforce_vndk_at_runtime is not true 249367984602abab743630d1fba8e4940f0a69e678bJiyong Park 250450cff4b68ce09a65a82284ec64fae83b2ef3313Jiyong ParkLOCAL_MODULE := ld.config.txt 251fff6f75fc1de2963254271d7d254e53ae187cadaJiyong Parkifeq ($(PRODUCT_FULL_TREBLE)|$(SANITIZE_TARGET),true|) 252450cff4b68ce09a65a82284ec64fae83b2ef3313Jiyong ParkLOCAL_SRC_FILES := etc/ld.config.txt 253450cff4b68ce09a65a82284ec64fae83b2ef3313Jiyong Parkelse 254450cff4b68ce09a65a82284ec64fae83b2ef3313Jiyong ParkLOCAL_SRC_FILES := etc/ld.config.legacy.txt 255450cff4b68ce09a65a82284ec64fae83b2ef3313Jiyong Parkendif 256450cff4b68ce09a65a82284ec64fae83b2ef3313Jiyong ParkLOCAL_MODULE_CLASS := ETC 257450cff4b68ce09a65a82284ec64fae83b2ef3313Jiyong ParkLOCAL_MODULE_PATH := $(TARGET_OUT_ETC) 258450cff4b68ce09a65a82284ec64fae83b2ef3313Jiyong ParkLOCAL_MODULE_STEM := $(LOCAL_MODULE) 259450cff4b68ce09a65a82284ec64fae83b2ef3313Jiyong Parkinclude $(BUILD_PREBUILT) 260367984602abab743630d1fba8e4940f0a69e678bJiyong Parkendif 26126335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park 26226335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park####################################### 26326335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park# llndk.libraries.txt 26426335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Parkinclude $(CLEAR_VARS) 26526335f89b1b25fd386adbc89edfcc600191b9e07Jiyong ParkLOCAL_MODULE := llndk.libraries.txt 26626335f89b1b25fd386adbc89edfcc600191b9e07Jiyong ParkLOCAL_MODULE_CLASS := ETC 26726335f89b1b25fd386adbc89edfcc600191b9e07Jiyong ParkLOCAL_MODULE_PATH := $(TARGET_OUT_ETC) 26826335f89b1b25fd386adbc89edfcc600191b9e07Jiyong ParkLOCAL_MODULE_STEM := $(LOCAL_MODULE) 26926335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Parkinclude $(BUILD_SYSTEM)/base_rules.mk 27026335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Parkllndk_md5 = $(word 1, $(shell echo $(LLNDK_LIBRARIES) | $(MD5SUM))) 27126335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Parkllndk_dep = $(intermediates)/$(llndk_md5).dep 27226335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park$(llndk_dep): 27326335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park $(hide) mkdir -p $(dir $@) && rm -rf $(dir $@)*.dep && touch $@ 27426335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park 27526335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park$(LOCAL_BUILT_MODULE): PRIVATE_LLNDK_LIBRARIES := $(LLNDK_LIBRARIES) 27626335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park$(LOCAL_BUILT_MODULE): $(llndk_dep) 27726335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park @echo "Generate: $@" 27826335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park @mkdir -p $(dir $@) 27926335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park $(hide) echo -n > $@ 28026335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park $(hide) $(foreach lib,$(PRIVATE_LLNDK_LIBRARIES), \ 28126335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park echo $(lib).so >> $@;) 28226335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park 28326335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park####################################### 28426335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park# vndksp.libraries.txt 28526335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Parkinclude $(CLEAR_VARS) 28626335f89b1b25fd386adbc89edfcc600191b9e07Jiyong ParkLOCAL_MODULE := vndksp.libraries.txt 28726335f89b1b25fd386adbc89edfcc600191b9e07Jiyong ParkLOCAL_MODULE_CLASS := ETC 28826335f89b1b25fd386adbc89edfcc600191b9e07Jiyong ParkLOCAL_MODULE_PATH := $(TARGET_OUT_ETC) 28926335f89b1b25fd386adbc89edfcc600191b9e07Jiyong ParkLOCAL_MODULE_STEM := $(LOCAL_MODULE) 29026335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Parkinclude $(BUILD_SYSTEM)/base_rules.mk 29126335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Parkvndksp_md5 = $(word 1, $(shell echo $(LLNDK_LIBRARIES) | $(MD5SUM))) 29226335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Parkvndksp_dep = $(intermediates)/$(vndksp_md5).dep 29326335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park$(vndksp_dep): 29426335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park $(hide) mkdir -p $(dir $@) && rm -rf $(dir $@)*.dep && touch $@ 29526335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park 29626335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park$(LOCAL_BUILT_MODULE): PRIVATE_VNDK_SAMEPROCESS_LIBRARIES := $(VNDK_SAMEPROCESS_LIBRARIES) 29726335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park$(LOCAL_BUILT_MODULE): $(vndksp_dep) 29826335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park @echo "Generate: $@" 29926335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park @mkdir -p $(dir $@) 30026335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park $(hide) echo -n > $@ 30126335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park $(hide) $(foreach lib,$(PRIVATE_VNDK_SAMEPROCESS_LIBRARIES), \ 30226335f89b1b25fd386adbc89edfcc600191b9e07Jiyong Park echo $(lib).so >> $@;) 303