| # 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_FIRST_STAGE_CONSOLE=1 \ | 
 |     -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_FIRST_STAGE_CONSOLE=0 \ | 
 |     -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 := \ | 
 |     block_dev_initializer.cpp \ | 
 |     devices.cpp \ | 
 |     first_stage_console.cpp \ | 
 |     first_stage_init.cpp \ | 
 |     first_stage_main.cpp \ | 
 |     first_stage_mount.cpp \ | 
 |     reboot_utils.cpp \ | 
 |     selabel.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 directories that first stage init mounts on. | 
 | LOCAL_POST_INSTALL_CMD := mkdir -p \ | 
 |     $(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 \ | 
 |     libcrypto_utils \ | 
 |     libsparse \ | 
 |     libavb \ | 
 |     libkeyutils \ | 
 |     liblp \ | 
 |     libcutils \ | 
 |     libbase \ | 
 |     liblog \ | 
 |     libcrypto_static \ | 
 |     libdl \ | 
 |     libz \ | 
 |     libselinux \ | 
 |     libcap \ | 
 |     libgsi \ | 
 |     libcom.android.sysprop.apex \ | 
 |     liblzma \ | 
 |     libunwindstack_no_dex \ | 
 |     libbacktrace_no_dex \ | 
 |     libmodprobe \ | 
 |     libext2_uuid \ | 
 |     libprotobuf-cpp-lite \ | 
 |     libsnapshot_init \ | 
 |     update_metadata-protos \ | 
 |  | 
 | 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) |