blob: dc46d21c51da6fcce0427db3cc4937f7516bc1fb [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
Elliott Hughesc0e919c2015-02-04 14:46:36 -08005# --
6
Elliott Hughesc0e919c2015-02-04 14:46:36 -08007ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
Tom Cherry663fdfc2017-03-10 14:46:38 -08008init_options += \
9 -DALLOW_LOCAL_PROP_OVERRIDE=1 \
10 -DALLOW_PERMISSIVE_SELINUX=1 \
Josh Gaobf2dd482017-03-28 13:07:15 -070011 -DREBOOT_BOOTLOADER_ON_PANIC=1 \
Keun-young Park2ba5c812017-03-29 12:54:40 -070012 -DWORLD_WRITABLE_KMSG=1 \
13 -DDUMP_ON_UMOUNT_FAILURE=1
Elliott Hughesc0e919c2015-02-04 14:46:36 -080014else
Tom Cherry663fdfc2017-03-10 14:46:38 -080015init_options += \
16 -DALLOW_LOCAL_PROP_OVERRIDE=0 \
17 -DALLOW_PERMISSIVE_SELINUX=0 \
Josh Gaobf2dd482017-03-28 13:07:15 -070018 -DREBOOT_BOOTLOADER_ON_PANIC=0 \
Keun-young Park2ba5c812017-03-29 12:54:40 -070019 -DWORLD_WRITABLE_KMSG=0 \
20 -DDUMP_ON_UMOUNT_FAILURE=0
Elliott Hughesc0e919c2015-02-04 14:46:36 -080021endif
22
Keun-young Parkc4ffa5c2017-03-28 09:41:36 -070023ifneq (,$(filter eng,$(TARGET_BUILD_VARIANT)))
24init_options += \
25 -DSHUTDOWN_ZERO_TIMEOUT=1
26else
27init_options += \
28 -DSHUTDOWN_ZERO_TIMEOUT=0
29endif
30
Elliott Hughesf682b472015-02-06 12:19:48 -080031init_options += -DLOG_UEVENTS=0
32
33init_cflags += \
34 $(init_options) \
35 -Wall -Wextra \
36 -Wno-unused-parameter \
37 -Werror \
Tom Cherry2bc00142017-03-13 11:58:58 -070038 -std=gnu++1z \
Elliott Hughesc0e919c2015-02-04 14:46:36 -080039
40# --
41
Elliott Hughesf682b472015-02-06 12:19:48 -080042include $(CLEAR_VARS)
43LOCAL_CPPFLAGS := $(init_cflags)
Tom Cherry31438482018-07-20 14:57:00 -070044LOCAL_SRC_FILES := \
45 devices.cpp \
46 first_stage_mount.cpp \
47 init_first_stage.cpp \
48 reboot_utils.cpp \
49 selinux.cpp \
Tom Cherry4590a2a2018-08-07 10:22:01 -070050 switch_root.cpp \
Tom Cherry31438482018-07-20 14:57:00 -070051 uevent_listener.cpp \
52 util.cpp \
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -080053
Tom Cherry29e53482018-10-15 17:47:16 -070054LOCAL_MODULE := init_first_stage
55LOCAL_MODULE_STEM := init
Tom Cherry31438482018-07-20 14:57:00 -070056
57LOCAL_FORCE_STATIC_EXECUTABLE := true
Andres Moralesdb5f5d42015-05-08 08:30:33 -070058
Tom Cherry4590a2a2018-08-07 10:22:01 -070059LOCAL_MODULE_PATH := $(TARGET_RAMDISK_OUT)
60LOCAL_UNSTRIPPED_PATH := $(TARGET_RAMDISK_OUT_UNSTRIPPED)
61
62# Set up the same mount points on the ramdisk that system-as-root contains.
63LOCAL_POST_INSTALL_CMD := \
64 mkdir -p $(TARGET_RAMDISK_OUT)/dev \
Xin Li17216452018-09-17 14:20:16 -070065 $(TARGET_RAMDISK_OUT)/mnt \
66 $(TARGET_RAMDISK_OUT)/proc \
67 $(TARGET_RAMDISK_OUT)/sys \
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -080068
Kenny Rootb5982bf2012-10-16 23:07:05 -070069LOCAL_STATIC_LIBRARIES := \
Elliott Hughesf682b472015-02-06 12:19:48 -080070 libfs_mgr \
Sami Tolvanen99e3a922015-05-22 15:43:50 +010071 libfec \
72 libfec_rs \
Mohamad Ayyash030ef3592015-04-08 17:59:19 -070073 libsquashfs_utils \
Elliott Hughesf682b472015-02-06 12:19:48 -080074 liblogwrap \
Alex Deymo705353a2017-01-11 14:03:11 -080075 libext4_utils \
Eric Biggersf05da4a2018-10-23 13:10:33 -070076 libfscrypt \
Steve Muckleaf1a9bf2017-07-17 15:14:02 -070077 libseccomp_policy \
Josh Gao47763c32016-08-05 15:47:57 -070078 libcrypto_utils \
Alex Deymob0c39592017-01-11 14:37:50 -080079 libsparse \
Elliott Hughesf8627ce2017-05-09 17:09:06 -070080 libavb \
81 libkeyutils \
David Andersonf792e412018-07-27 16:05:31 -070082 liblp \
Jiyong Park787322c2018-06-01 19:26:42 +090083 libcutils \
84 libbase \
85 liblog \
86 libcrypto \
87 libdl \
88 libz \
Jiyong Park012171d2018-06-19 16:55:05 +090089 libselinux \
Tom Cherry31438482018-07-20 14:57:00 -070090 libcap \
Jiyong Park787322c2018-06-01 19:26:42 +090091
Tom Cherry2ffd65e2017-07-26 14:17:09 -070092LOCAL_SANITIZE := signed-integer-overflow
Evgenii Stepanov1f47f4a2018-11-01 13:38:38 -070093# First stage init is weird: it may start without stdout/stderr, and no /proc.
94LOCAL_NOSANITIZE := hwaddress
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -080095include $(BUILD_EXECUTABLE)
Tom Cherry29e53482018-10-15 17:47:16 -070096
97include $(CLEAR_VARS)
98
99LOCAL_MODULE := init_system
100ifeq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
101LOCAL_REQUIRED_MODULES := \
102 init_first_stage \
103 init_second_stage \
104
105else
106LOCAL_REQUIRED_MODULES := \
107 init_second_stage \
108
109endif
110include $(BUILD_PHONY_PACKAGE)
111
112include $(CLEAR_VARS)
113
114LOCAL_MODULE := init_vendor
115ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
116LOCAL_REQUIRED_MODULES := \
117 init_first_stage \
118
119endif
120include $(BUILD_PHONY_PACKAGE)
121
122