1# Copyright 2005 The Android Open Source Project 2 3LOCAL_PATH:= $(call my-dir) 4 5-include system/sepolicy/policy_version.mk 6 7# -- 8 9ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT))) 10init_options += \ 11 -DALLOW_FIRST_STAGE_CONSOLE=1 \ 12 -DALLOW_LOCAL_PROP_OVERRIDE=1 \ 13 -DALLOW_PERMISSIVE_SELINUX=1 \ 14 -DREBOOT_BOOTLOADER_ON_PANIC=1 \ 15 -DWORLD_WRITABLE_KMSG=1 \ 16 -DDUMP_ON_UMOUNT_FAILURE=1 17else 18init_options += \ 19 -DALLOW_FIRST_STAGE_CONSOLE=0 \ 20 -DALLOW_LOCAL_PROP_OVERRIDE=0 \ 21 -DALLOW_PERMISSIVE_SELINUX=0 \ 22 -DREBOOT_BOOTLOADER_ON_PANIC=0 \ 23 -DWORLD_WRITABLE_KMSG=0 \ 24 -DDUMP_ON_UMOUNT_FAILURE=0 25endif 26 27ifneq (,$(filter eng,$(TARGET_BUILD_VARIANT))) 28init_options += \ 29 -DSHUTDOWN_ZERO_TIMEOUT=1 30else 31init_options += \ 32 -DSHUTDOWN_ZERO_TIMEOUT=0 33endif 34 35init_options += -DLOG_UEVENTS=0 \ 36 -DSEPOLICY_VERSION=$(POLICYVERS) 37 38init_cflags += \ 39 $(init_options) \ 40 -Wall -Wextra \ 41 -Wno-unused-parameter \ 42 -Werror \ 43 44# -- 45 46# Do not build this even with mmma if we're system-as-root, otherwise it will overwrite the symlink. 47ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true) 48include $(CLEAR_VARS) 49LOCAL_CPPFLAGS := $(init_cflags) 50LOCAL_SRC_FILES := \ 51 devices.cpp \ 52 first_stage_init.cpp \ 53 first_stage_main.cpp \ 54 first_stage_mount.cpp \ 55 mount_namespace.cpp \ 56 reboot_utils.cpp \ 57 selabel.cpp \ 58 selinux.cpp \ 59 switch_root.cpp \ 60 uevent_listener.cpp \ 61 util.cpp \ 62 63LOCAL_MODULE := init_first_stage 64LOCAL_MODULE_STEM := init 65 66LOCAL_FORCE_STATIC_EXECUTABLE := true 67 68LOCAL_MODULE_PATH := $(TARGET_RAMDISK_OUT) 69LOCAL_UNSTRIPPED_PATH := $(TARGET_RAMDISK_OUT_UNSTRIPPED) 70 71# Install adb_debug.prop into debug ramdisk. 72# This allows adb root on a user build, when debug ramdisk is used. 73LOCAL_REQUIRED_MODULES := \ 74 adb_debug.prop \ 75 76# Set up the same mount points on the ramdisk that system-as-root contains. 77LOCAL_POST_INSTALL_CMD := mkdir -p \ 78 $(TARGET_RAMDISK_OUT)/apex \ 79 $(TARGET_RAMDISK_OUT)/debug_ramdisk \ 80 $(TARGET_RAMDISK_OUT)/dev \ 81 $(TARGET_RAMDISK_OUT)/mnt \ 82 $(TARGET_RAMDISK_OUT)/proc \ 83 $(TARGET_RAMDISK_OUT)/sys \ 84 85LOCAL_STATIC_LIBRARIES := \ 86 libc++fs \ 87 libfs_avb \ 88 libfs_mgr \ 89 libfec \ 90 libfec_rs \ 91 libsquashfs_utils \ 92 liblogwrap \ 93 libext4_utils \ 94 libfscrypt \ 95 libcrypto_utils \ 96 libsparse \ 97 libavb \ 98 libkeyutils \ 99 liblp \ 100 libcutils \ 101 libbase \ 102 liblog \ 103 libcrypto_static \ 104 libdl \ 105 libz \ 106 libselinux \ 107 libcap \ 108 libgsi \ 109 libcom.android.sysprop.apex \ 110 liblzma \ 111 libdexfile_support_static \ 112 libunwindstack \ 113 libbacktrace \ 114 libmodprobe \ 115 libext2_uuid \ 116 libprotobuf-cpp-lite \ 117 libsnapshot_init \ 118 119LOCAL_SANITIZE := signed-integer-overflow 120# First stage init is weird: it may start without stdout/stderr, and no /proc. 121LOCAL_NOSANITIZE := hwaddress 122include $(BUILD_EXECUTABLE) 123endif 124 125include $(CLEAR_VARS) 126 127LOCAL_MODULE := init_system 128LOCAL_REQUIRED_MODULES := \ 129 init_second_stage \ 130 131include $(BUILD_PHONY_PACKAGE) 132 133include $(CLEAR_VARS) 134 135LOCAL_MODULE := init_vendor 136ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true) 137LOCAL_REQUIRED_MODULES := \ 138 init_first_stage \ 139 140endif 141include $(BUILD_PHONY_PACKAGE) 142