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 block_dev_initializer.cpp \ 52 devices.cpp \ 53 first_stage_console.cpp \ 54 first_stage_init.cpp \ 55 first_stage_main.cpp \ 56 first_stage_mount.cpp \ 57 reboot_utils.cpp \ 58 selabel.cpp \ 59 selinux.cpp \ 60 service_utils.cpp \ 61 snapuserd_transition.cpp \ 62 switch_root.cpp \ 63 uevent_listener.cpp \ 64 util.cpp \ 65 66LOCAL_MODULE := init_first_stage 67LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 68LOCAL_LICENSE_CONDITIONS := notice 69LOCAL_NOTICE_FILE := $(LOCAL_PATH)/NOTICE 70LOCAL_MODULE_STEM := init 71 72LOCAL_FORCE_STATIC_EXECUTABLE := true 73 74LOCAL_MODULE_PATH := $(TARGET_RAMDISK_OUT) 75LOCAL_UNSTRIPPED_PATH := $(TARGET_RAMDISK_OUT_UNSTRIPPED) 76 77# Install adb_debug.prop into debug ramdisk. 78# This allows adb root on a user build, when debug ramdisk is used. 79LOCAL_REQUIRED_MODULES := \ 80 adb_debug.prop \ 81 82# Set up the directories that first stage init mounts on. 83 84my_ramdisk_dirs := \ 85 debug_ramdisk \ 86 dev \ 87 metadata \ 88 mnt \ 89 proc \ 90 second_stage_resources \ 91 sys \ 92 93LOCAL_POST_INSTALL_CMD := mkdir -p $(addprefix $(TARGET_RAMDISK_OUT)/,$(my_ramdisk_dirs)) 94ifeq (true,$(BOARD_USES_GENERIC_KERNEL_IMAGE)) 95 LOCAL_POST_INSTALL_CMD += $(addprefix $(TARGET_RAMDISK_OUT)/first_stage_ramdisk/,$(my_ramdisk_dirs)) 96endif 97 98my_ramdisk_dirs := 99 100LOCAL_STATIC_LIBRARIES := \ 101 libc++fs \ 102 libfs_avb \ 103 libfs_mgr \ 104 libfec \ 105 libfec_rs \ 106 libsquashfs_utils \ 107 liblogwrap \ 108 libext4_utils \ 109 libcrypto_utils \ 110 libsparse \ 111 libavb \ 112 libkeyutils \ 113 liblp \ 114 libcutils \ 115 libbase \ 116 liblog \ 117 libcrypto_static \ 118 libdl \ 119 libz \ 120 libselinux \ 121 libcap \ 122 libgsi \ 123 libcom.android.sysprop.apex \ 124 liblzma \ 125 libunwindstack_no_dex \ 126 libbacktrace_no_dex \ 127 libmodprobe \ 128 libext2_uuid \ 129 libprotobuf-cpp-lite \ 130 libsnapshot_cow \ 131 libsnapshot_init \ 132 update_metadata-protos \ 133 libprocinfo \ 134 135LOCAL_SANITIZE := signed-integer-overflow 136# First stage init is weird: it may start without stdout/stderr, and no /proc. 137LOCAL_NOSANITIZE := hwaddress 138include $(BUILD_EXECUTABLE) 139endif 140 141include $(CLEAR_VARS) 142 143LOCAL_MODULE := init_system 144LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 145LOCAL_LICENSE_CONDITIONS := notice 146LOCAL_NOTICE_FILE := $(LOCAL_PATH)/NOTICE 147LOCAL_REQUIRED_MODULES := \ 148 init_second_stage \ 149 150include $(BUILD_PHONY_PACKAGE) 151 152include $(CLEAR_VARS) 153 154LOCAL_MODULE := init_vendor 155LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 156LOCAL_LICENSE_CONDITIONS := notice 157LOCAL_NOTICE_FILE := $(LOCAL_PATH)/NOTICE 158ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true) 159LOCAL_REQUIRED_MODULES := \ 160 init_first_stage \ 161 162endif 163include $(BUILD_PHONY_PACKAGE) 164