# Copyright 2005 The Android Open Source Project LOCAL_PATH:= $(call my-dir) -include system/sepolicy/policy_version.mk # -- ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT))) init_options += \ -DALLOW_LOCAL_PROP_OVERRIDE=1 \ -DALLOW_PERMISSIVE_SELINUX=1 \ -DREBOOT_BOOTLOADER_ON_PANIC=1 \ -DWORLD_WRITABLE_KMSG=1 \ -DDUMP_ON_UMOUNT_FAILURE=1 else init_options += \ -DALLOW_LOCAL_PROP_OVERRIDE=0 \ -DALLOW_PERMISSIVE_SELINUX=0 \ -DREBOOT_BOOTLOADER_ON_PANIC=0 \ -DWORLD_WRITABLE_KMSG=0 \ -DDUMP_ON_UMOUNT_FAILURE=0 endif ifneq (,$(filter eng,$(TARGET_BUILD_VARIANT))) init_options += \ -DSHUTDOWN_ZERO_TIMEOUT=1 else init_options += \ -DSHUTDOWN_ZERO_TIMEOUT=0 endif init_options += -DLOG_UEVENTS=0 \ -DSEPOLICY_VERSION=$(POLICYVERS) init_cflags += \ $(init_options) \ -Wall -Wextra \ -Wno-unused-parameter \ -Werror \ # -- # Do not build this even with mmma if we're system-as-root, otherwise it will overwrite the symlink. ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true) include $(CLEAR_VARS) LOCAL_CPPFLAGS := $(init_cflags) LOCAL_SRC_FILES := \ devices.cpp \ first_stage_init.cpp \ first_stage_main.cpp \ first_stage_mount.cpp \ mount_namespace.cpp \ reboot_utils.cpp \ selinux.cpp \ switch_root.cpp \ uevent_listener.cpp \ util.cpp \ LOCAL_MODULE := init_first_stage LOCAL_MODULE_STEM := init LOCAL_FORCE_STATIC_EXECUTABLE := true LOCAL_MODULE_PATH := $(TARGET_RAMDISK_OUT) LOCAL_UNSTRIPPED_PATH := $(TARGET_RAMDISK_OUT_UNSTRIPPED) # Install adb_debug.prop into debug ramdisk. # This allows adb root on a user build, when debug ramdisk is used. LOCAL_REQUIRED_MODULES := \ adb_debug.prop \ # Set up the same mount points on the ramdisk that system-as-root contains. LOCAL_POST_INSTALL_CMD := mkdir -p \ $(TARGET_RAMDISK_OUT)/apex \ $(TARGET_RAMDISK_OUT)/debug_ramdisk \ $(TARGET_RAMDISK_OUT)/dev \ $(TARGET_RAMDISK_OUT)/mnt \ $(TARGET_RAMDISK_OUT)/proc \ $(TARGET_RAMDISK_OUT)/sys \ LOCAL_STATIC_LIBRARIES := \ libc++fs \ libfs_avb \ libfs_mgr \ libfec \ libfec_rs \ libsquashfs_utils \ liblogwrap \ libext4_utils \ libfscrypt \ libseccomp_policy \ libcrypto_utils \ libsparse \ libavb \ libkeyutils \ liblp \ libcutils \ libbase \ liblog \ libcrypto \ libdl \ libz \ libselinux \ libcap \ libgsi \ libcom.android.sysprop.apex \ LOCAL_SANITIZE := signed-integer-overflow # First stage init is weird: it may start without stdout/stderr, and no /proc. LOCAL_NOSANITIZE := hwaddress include $(BUILD_EXECUTABLE) endif include $(CLEAR_VARS) LOCAL_MODULE := init_system LOCAL_REQUIRED_MODULES := \ init_second_stage \ include $(BUILD_PHONY_PACKAGE) include $(CLEAR_VARS) LOCAL_MODULE := init_vendor ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true) LOCAL_REQUIRED_MODULES := \ init_first_stage \ endif include $(BUILD_PHONY_PACKAGE)