blob: 0a3e8c7c73aa703f2ffbf7c5453ed9d4bd5b635a [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 += \
11 -DALLOW_LOCAL_PROP_OVERRIDE=1 \
12 -DALLOW_PERMISSIVE_SELINUX=1 \
Josh Gaobf2dd482017-03-28 13:07:15 -070013 -DREBOOT_BOOTLOADER_ON_PANIC=1 \
Keun-young Park2ba5c812017-03-29 12:54:40 -070014 -DWORLD_WRITABLE_KMSG=1 \
15 -DDUMP_ON_UMOUNT_FAILURE=1
Elliott Hughesc0e919c2015-02-04 14:46:36 -080016else
Tom Cherry663fdfc2017-03-10 14:46:38 -080017init_options += \
18 -DALLOW_LOCAL_PROP_OVERRIDE=0 \
19 -DALLOW_PERMISSIVE_SELINUX=0 \
Josh Gaobf2dd482017-03-28 13:07:15 -070020 -DREBOOT_BOOTLOADER_ON_PANIC=0 \
Keun-young Park2ba5c812017-03-29 12:54:40 -070021 -DWORLD_WRITABLE_KMSG=0 \
22 -DDUMP_ON_UMOUNT_FAILURE=0
Elliott Hughesc0e919c2015-02-04 14:46:36 -080023endif
24
Keun-young Parkc4ffa5c2017-03-28 09:41:36 -070025ifneq (,$(filter eng,$(TARGET_BUILD_VARIANT)))
26init_options += \
27 -DSHUTDOWN_ZERO_TIMEOUT=1
28else
29init_options += \
30 -DSHUTDOWN_ZERO_TIMEOUT=0
31endif
32
Jeff Vander Stoep724eda52019-02-15 12:13:38 -080033init_options += -DLOG_UEVENTS=0 \
34 -DSEPOLICY_VERSION=$(POLICYVERS)
Elliott Hughesf682b472015-02-06 12:19:48 -080035
36init_cflags += \
37 $(init_options) \
38 -Wall -Wextra \
39 -Wno-unused-parameter \
40 -Werror \
Elliott Hughesc0e919c2015-02-04 14:46:36 -080041
42# --
43
Tom Cherry7bfea3d2018-11-06 14:12:05 -080044# Do not build this even with mmma if we're system-as-root, otherwise it will overwrite the symlink.
45ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
Elliott Hughesf682b472015-02-06 12:19:48 -080046include $(CLEAR_VARS)
47LOCAL_CPPFLAGS := $(init_cflags)
Tom Cherry31438482018-07-20 14:57:00 -070048LOCAL_SRC_FILES := \
49 devices.cpp \
Tom Cherry7bfea3d2018-11-06 14:12:05 -080050 first_stage_init.cpp \
51 first_stage_main.cpp \
Tom Cherry31438482018-07-20 14:57:00 -070052 first_stage_mount.cpp \
Jiyong Park68660412019-01-16 23:00:59 +090053 mount_namespace.cpp \
Tom Cherry31438482018-07-20 14:57:00 -070054 reboot_utils.cpp \
Vic Yang92c236e2019-05-28 15:58:35 -070055 selabel.cpp \
Tom Cherry31438482018-07-20 14:57:00 -070056 selinux.cpp \
Tom Cherry4590a2a2018-08-07 10:22:01 -070057 switch_root.cpp \
Tom Cherry31438482018-07-20 14:57:00 -070058 uevent_listener.cpp \
59 util.cpp \
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -080060
Tom Cherry29e53482018-10-15 17:47:16 -070061LOCAL_MODULE := init_first_stage
62LOCAL_MODULE_STEM := init
Tom Cherry31438482018-07-20 14:57:00 -070063
64LOCAL_FORCE_STATIC_EXECUTABLE := true
Andres Moralesdb5f5d42015-05-08 08:30:33 -070065
Tom Cherry4590a2a2018-08-07 10:22:01 -070066LOCAL_MODULE_PATH := $(TARGET_RAMDISK_OUT)
67LOCAL_UNSTRIPPED_PATH := $(TARGET_RAMDISK_OUT_UNSTRIPPED)
68
Bowgo Tsai05f07d82019-04-19 22:08:56 +080069# Install adb_debug.prop into debug ramdisk.
70# This allows adb root on a user build, when debug ramdisk is used.
71LOCAL_REQUIRED_MODULES := \
72 adb_debug.prop \
73
Tom Cherry4590a2a2018-08-07 10:22:01 -070074# Set up the same mount points on the ramdisk that system-as-root contains.
Jiyong Parke5dc6742019-03-07 10:53:23 +090075LOCAL_POST_INSTALL_CMD := mkdir -p \
76 $(TARGET_RAMDISK_OUT)/apex \
Bowgo Tsai30afda72019-04-11 23:57:24 +080077 $(TARGET_RAMDISK_OUT)/debug_ramdisk \
Jiyong Parke5dc6742019-03-07 10:53:23 +090078 $(TARGET_RAMDISK_OUT)/dev \
Xin Li17216452018-09-17 14:20:16 -070079 $(TARGET_RAMDISK_OUT)/mnt \
80 $(TARGET_RAMDISK_OUT)/proc \
81 $(TARGET_RAMDISK_OUT)/sys \
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -080082
Kenny Rootb5982bf2012-10-16 23:07:05 -070083LOCAL_STATIC_LIBRARIES := \
Bowgo Tsai30afda72019-04-11 23:57:24 +080084 libc++fs \
Bowgo Tsaic1bc2812018-11-26 17:49:23 +080085 libfs_avb \
Elliott Hughesf682b472015-02-06 12:19:48 -080086 libfs_mgr \
Sami Tolvanen99e3a922015-05-22 15:43:50 +010087 libfec \
88 libfec_rs \
Mohamad Ayyash030ef3592015-04-08 17:59:19 -070089 libsquashfs_utils \
Elliott Hughesf682b472015-02-06 12:19:48 -080090 liblogwrap \
Alex Deymo705353a2017-01-11 14:03:11 -080091 libext4_utils \
Eric Biggersf05da4a2018-10-23 13:10:33 -070092 libfscrypt \
Steve Muckleaf1a9bf2017-07-17 15:14:02 -070093 libseccomp_policy \
Josh Gao47763c32016-08-05 15:47:57 -070094 libcrypto_utils \
Alex Deymob0c39592017-01-11 14:37:50 -080095 libsparse \
Elliott Hughesf8627ce2017-05-09 17:09:06 -070096 libavb \
97 libkeyutils \
David Andersonf792e412018-07-27 16:05:31 -070098 liblp \
Jiyong Park787322c2018-06-01 19:26:42 +090099 libcutils \
100 libbase \
101 liblog \
102 libcrypto \
103 libdl \
104 libz \
Jiyong Park012171d2018-06-19 16:55:05 +0900105 libselinux \
Tom Cherry31438482018-07-20 14:57:00 -0700106 libcap \
David Anderson0e330f12019-01-03 18:16:56 -0800107 libgsi \
Jiyong Park8502ed32019-02-25 22:18:37 +0900108 libcom.android.sysprop.apex \
Tom Cherry59656fb2019-05-28 10:19:44 -0700109 liblzma \
110 libdexfile_support \
111 libunwindstack \
112 libbacktrace \
Jiyong Park787322c2018-06-01 19:26:42 +0900113
Tom Cherry2ffd65e2017-07-26 14:17:09 -0700114LOCAL_SANITIZE := signed-integer-overflow
Evgenii Stepanov1f47f4a2018-11-01 13:38:38 -0700115# First stage init is weird: it may start without stdout/stderr, and no /proc.
116LOCAL_NOSANITIZE := hwaddress
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -0800117include $(BUILD_EXECUTABLE)
Tom Cherry7bfea3d2018-11-06 14:12:05 -0800118endif
Tom Cherry29e53482018-10-15 17:47:16 -0700119
120include $(CLEAR_VARS)
121
122LOCAL_MODULE := init_system
Tom Cherry7bfea3d2018-11-06 14:12:05 -0800123LOCAL_REQUIRED_MODULES := \
124 init_second_stage \
125
Tom Cherry29e53482018-10-15 17:47:16 -0700126include $(BUILD_PHONY_PACKAGE)
127
128include $(CLEAR_VARS)
129
130LOCAL_MODULE := init_vendor
131ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
132LOCAL_REQUIRED_MODULES := \
133 init_first_stage \
134
135endif
136include $(BUILD_PHONY_PACKAGE)