blob: 561d641c6ad8b35d9f648b5e9328d4eae7b758ce [file] [log] [blame]
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -08001# Copyright 2005 The Android Open Source Project
2
3LOCAL_PATH:= $(call my-dir)
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -08004
Jeff Vander Stoep402e4a62019-03-19 17:01:09 -07005-include system/sepolicy/policy_version.mk
Jeff Vander Stoep724eda52019-02-15 12:13:38 -08006
Elliott Hughesc0e919c2015-02-04 14:46:36 -08007# --
8
Elliott Hughesc0e919c2015-02-04 14:46:36 -08009ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
Tom Cherry663fdfc2017-03-10 14:46:38 -080010init_options += \
Steve Muckled75f30a2019-05-21 15:50:39 -070011 -DALLOW_FIRST_STAGE_CONSOLE=1 \
Tom Cherry663fdfc2017-03-10 14:46:38 -080012 -DALLOW_LOCAL_PROP_OVERRIDE=1 \
13 -DALLOW_PERMISSIVE_SELINUX=1 \
Josh Gaobf2dd482017-03-28 13:07:15 -070014 -DREBOOT_BOOTLOADER_ON_PANIC=1 \
Keun-young Park2ba5c812017-03-29 12:54:40 -070015 -DWORLD_WRITABLE_KMSG=1 \
16 -DDUMP_ON_UMOUNT_FAILURE=1
Elliott Hughesc0e919c2015-02-04 14:46:36 -080017else
Tom Cherry663fdfc2017-03-10 14:46:38 -080018init_options += \
Steve Muckled75f30a2019-05-21 15:50:39 -070019 -DALLOW_FIRST_STAGE_CONSOLE=0 \
Tom Cherry663fdfc2017-03-10 14:46:38 -080020 -DALLOW_LOCAL_PROP_OVERRIDE=0 \
21 -DALLOW_PERMISSIVE_SELINUX=0 \
Josh Gaobf2dd482017-03-28 13:07:15 -070022 -DREBOOT_BOOTLOADER_ON_PANIC=0 \
Keun-young Park2ba5c812017-03-29 12:54:40 -070023 -DWORLD_WRITABLE_KMSG=0 \
24 -DDUMP_ON_UMOUNT_FAILURE=0
Elliott Hughesc0e919c2015-02-04 14:46:36 -080025endif
26
Keun-young Parkc4ffa5c2017-03-28 09:41:36 -070027ifneq (,$(filter eng,$(TARGET_BUILD_VARIANT)))
28init_options += \
29 -DSHUTDOWN_ZERO_TIMEOUT=1
30else
31init_options += \
32 -DSHUTDOWN_ZERO_TIMEOUT=0
33endif
34
Jeff Vander Stoep724eda52019-02-15 12:13:38 -080035init_options += -DLOG_UEVENTS=0 \
36 -DSEPOLICY_VERSION=$(POLICYVERS)
Elliott Hughesf682b472015-02-06 12:19:48 -080037
38init_cflags += \
39 $(init_options) \
40 -Wall -Wextra \
41 -Wno-unused-parameter \
42 -Werror \
Elliott Hughesc0e919c2015-02-04 14:46:36 -080043
44# --
45
Tom Cherry7bfea3d2018-11-06 14:12:05 -080046# 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)
Elliott Hughesf682b472015-02-06 12:19:48 -080048include $(CLEAR_VARS)
49LOCAL_CPPFLAGS := $(init_cflags)
Tom Cherry31438482018-07-20 14:57:00 -070050LOCAL_SRC_FILES := \
David Anderson41175592020-03-20 19:38:28 -070051 block_dev_initializer.cpp \
Tom Cherry31438482018-07-20 14:57:00 -070052 devices.cpp \
Steve Mucklea4bf2ce2019-11-01 13:58:02 -070053 first_stage_console.cpp \
Tom Cherry7bfea3d2018-11-06 14:12:05 -080054 first_stage_init.cpp \
55 first_stage_main.cpp \
Tom Cherry31438482018-07-20 14:57:00 -070056 first_stage_mount.cpp \
Tom Cherry31438482018-07-20 14:57:00 -070057 reboot_utils.cpp \
Vic Yang92c236e2019-05-28 15:58:35 -070058 selabel.cpp \
Tom Cherry31438482018-07-20 14:57:00 -070059 selinux.cpp \
David Anderson491e4da2020-12-08 00:21:20 -080060 service_utils.cpp \
61 snapuserd_transition.cpp \
Tom Cherry4590a2a2018-08-07 10:22:01 -070062 switch_root.cpp \
Tom Cherry31438482018-07-20 14:57:00 -070063 uevent_listener.cpp \
64 util.cpp \
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -080065
Tom Cherry29e53482018-10-15 17:47:16 -070066LOCAL_MODULE := init_first_stage
67LOCAL_MODULE_STEM := init
Tom Cherry31438482018-07-20 14:57:00 -070068
69LOCAL_FORCE_STATIC_EXECUTABLE := true
Andres Moralesdb5f5d42015-05-08 08:30:33 -070070
Tom Cherry4590a2a2018-08-07 10:22:01 -070071LOCAL_MODULE_PATH := $(TARGET_RAMDISK_OUT)
72LOCAL_UNSTRIPPED_PATH := $(TARGET_RAMDISK_OUT_UNSTRIPPED)
73
Bowgo Tsai05f07d82019-04-19 22:08:56 +080074# Install adb_debug.prop into debug ramdisk.
75# This allows adb root on a user build, when debug ramdisk is used.
76LOCAL_REQUIRED_MODULES := \
77 adb_debug.prop \
78
Tom Cherrycbeaca52019-12-09 07:09:32 -080079# Set up the directories that first stage init mounts on.
Yifan Hong63be3562020-12-08 12:29:59 -080080
81my_ramdisk_dirs := \
82 debug_ramdisk \
83 dev \
Yifan Honga3f83732020-12-08 12:39:58 -080084 metadata \
Yifan Hong63be3562020-12-08 12:29:59 -080085 mnt \
86 proc \
87 second_stage_resources \
88 sys \
89
90LOCAL_POST_INSTALL_CMD := mkdir -p $(addprefix $(TARGET_RAMDISK_OUT)/,$(my_ramdisk_dirs))
Yifan Hong55326182020-12-08 12:34:45 -080091ifeq (true,$(BOARD_USES_GENERIC_KERNEL_IMAGE))
92 LOCAL_POST_INSTALL_CMD += $(addprefix $(TARGET_RAMDISK_OUT)/first_stage_ramdisk/,$(my_ramdisk_dirs))
93endif
Yifan Hong63be3562020-12-08 12:29:59 -080094
95my_ramdisk_dirs :=
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -080096
Kenny Rootb5982bf2012-10-16 23:07:05 -070097LOCAL_STATIC_LIBRARIES := \
Bowgo Tsai30afda72019-04-11 23:57:24 +080098 libc++fs \
Bowgo Tsaic1bc2812018-11-26 17:49:23 +080099 libfs_avb \
Elliott Hughesf682b472015-02-06 12:19:48 -0800100 libfs_mgr \
Sami Tolvanen99e3a922015-05-22 15:43:50 +0100101 libfec \
102 libfec_rs \
Mohamad Ayyash030ef3592015-04-08 17:59:19 -0700103 libsquashfs_utils \
Elliott Hughesf682b472015-02-06 12:19:48 -0800104 liblogwrap \
Alex Deymo705353a2017-01-11 14:03:11 -0800105 libext4_utils \
Josh Gao47763c32016-08-05 15:47:57 -0700106 libcrypto_utils \
Alex Deymob0c39592017-01-11 14:37:50 -0800107 libsparse \
Elliott Hughesf8627ce2017-05-09 17:09:06 -0700108 libavb \
109 libkeyutils \
David Andersonf792e412018-07-27 16:05:31 -0700110 liblp \
Jiyong Park787322c2018-06-01 19:26:42 +0900111 libcutils \
112 libbase \
113 liblog \
Colin Crossf117f342019-09-18 11:04:35 -0700114 libcrypto_static \
Jiyong Park787322c2018-06-01 19:26:42 +0900115 libdl \
116 libz \
Jiyong Park012171d2018-06-19 16:55:05 +0900117 libselinux \
Tom Cherry31438482018-07-20 14:57:00 -0700118 libcap \
David Anderson0e330f12019-01-03 18:16:56 -0800119 libgsi \
Jiyong Park8502ed32019-02-25 22:18:37 +0900120 libcom.android.sysprop.apex \
Tom Cherry59656fb2019-05-28 10:19:44 -0700121 liblzma \
Martin Stjernholma2cc8932019-10-23 21:32:43 +0100122 libunwindstack_no_dex \
123 libbacktrace_no_dex \
Steve Muckle18b981e2019-04-15 17:43:02 -0700124 libmodprobe \
David Anderson924858c2019-06-26 17:00:00 -0700125 libext2_uuid \
Yifan Hong5fcc2b52019-10-01 13:59:56 -0700126 libprotobuf-cpp-lite \
David Andersonaca0bea2020-09-21 16:34:25 -0700127 libsnapshot_cow \
David Andersondfe6d072019-10-09 16:24:03 -0700128 libsnapshot_init \
Yifan Hong66f01152020-04-16 11:05:16 -0700129 update_metadata-protos \
Jiyong Park787322c2018-06-01 19:26:42 +0900130
Tom Cherry2ffd65e2017-07-26 14:17:09 -0700131LOCAL_SANITIZE := signed-integer-overflow
Evgenii Stepanov1f47f4a2018-11-01 13:38:38 -0700132# First stage init is weird: it may start without stdout/stderr, and no /proc.
133LOCAL_NOSANITIZE := hwaddress
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -0800134include $(BUILD_EXECUTABLE)
Tom Cherry7bfea3d2018-11-06 14:12:05 -0800135endif
Tom Cherry29e53482018-10-15 17:47:16 -0700136
137include $(CLEAR_VARS)
138
139LOCAL_MODULE := init_system
Tom Cherry7bfea3d2018-11-06 14:12:05 -0800140LOCAL_REQUIRED_MODULES := \
141 init_second_stage \
142
Tom Cherry29e53482018-10-15 17:47:16 -0700143include $(BUILD_PHONY_PACKAGE)
144
145include $(CLEAR_VARS)
146
147LOCAL_MODULE := init_vendor
148ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
Yo Chiang4adce5f2020-08-13 04:54:18 +0000149LOCAL_REQUIRED_MODULES := \
150 init_first_stage \
151
Tom Cherry29e53482018-10-15 17:47:16 -0700152endif
153include $(BUILD_PHONY_PACKAGE)