recovery partition now supports shared librarys. Therefore, init can now be built as a dynamic executable both for normal and recovery modes. To save save in the recovery mode, not all libs are dynamically linked. Libs that are only used by init in the recovery mode are still statically linked. Note: init is still a static executable for legacy devices where system-as-root is not on, because the dynamic linker and shared libs which are in /system are not available when init starts. Bug: 63673171 Test: `adb reboot recovery; adb devices` shows the device ID Test: device boots to the UI in normal mode. Test: do that for both walleye (system-as-root) and bullhead (legacy ramdisk). Change-Id: I30c84ae6a8e507e507ad0bb71acad281316d9e90
103 lines
2.3 KiB
Makefile
103 lines
2.3 KiB
Makefile
# Copyright 2005 The Android Open Source Project
|
|
|
|
LOCAL_PATH:= $(call my-dir)
|
|
|
|
# --
|
|
|
|
ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
|
|
init_options += \
|
|
-DALLOW_LOCAL_PROP_OVERRIDE=1 \
|
|
-DALLOW_PERMISSIVE_SELINUX=1 \
|
|
-DREBOOT_BOOTLOADER_ON_PANIC=1 \
|
|
-DWORLD_WRITABLE_KMSG=1 \
|
|
-DDUMP_ON_UMOUNT_FAILURE=1
|
|
else
|
|
init_options += \
|
|
-DALLOW_LOCAL_PROP_OVERRIDE=0 \
|
|
-DALLOW_PERMISSIVE_SELINUX=0 \
|
|
-DREBOOT_BOOTLOADER_ON_PANIC=0 \
|
|
-DWORLD_WRITABLE_KMSG=0 \
|
|
-DDUMP_ON_UMOUNT_FAILURE=0
|
|
endif
|
|
|
|
ifneq (,$(filter eng,$(TARGET_BUILD_VARIANT)))
|
|
init_options += \
|
|
-DSHUTDOWN_ZERO_TIMEOUT=1
|
|
else
|
|
init_options += \
|
|
-DSHUTDOWN_ZERO_TIMEOUT=0
|
|
endif
|
|
|
|
init_options += -DLOG_UEVENTS=0
|
|
|
|
init_cflags += \
|
|
$(init_options) \
|
|
-Wall -Wextra \
|
|
-Wno-unused-parameter \
|
|
-Werror \
|
|
-std=gnu++1z \
|
|
|
|
# --
|
|
|
|
include $(CLEAR_VARS)
|
|
LOCAL_CPPFLAGS := $(init_cflags)
|
|
LOCAL_SRC_FILES := main.cpp
|
|
|
|
LOCAL_MODULE:= init
|
|
|
|
LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
|
|
LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED)
|
|
|
|
LOCAL_STATIC_LIBRARIES := \
|
|
libinit \
|
|
libbootloader_message \
|
|
libfs_mgr \
|
|
libfec \
|
|
libfec_rs \
|
|
libhidl-gen-utils \
|
|
libsquashfs_utils \
|
|
liblogwrap \
|
|
libext4_utils \
|
|
libseccomp_policy \
|
|
libcrypto_utils \
|
|
libsparse \
|
|
libselinux \
|
|
libprocessgroup \
|
|
libavb \
|
|
libkeyutils \
|
|
libprotobuf-cpp-lite \
|
|
libpropertyinfoserializer \
|
|
libpropertyinfoparser \
|
|
|
|
shared_libs := \
|
|
libcutils \
|
|
libbase \
|
|
liblog \
|
|
libcrypto \
|
|
libdl \
|
|
libz \
|
|
|
|
ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
|
|
# init is static executable for non-system-as-root devices, because the dynamic linker
|
|
# and shared libs are not available before /system is mounted, but init has to run
|
|
# before the partition is mounted.
|
|
LOCAL_STATIC_LIBRARIES += $(shared_libs) libc++_static
|
|
LOCAL_FORCE_STATIC_EXECUTABLE := true
|
|
else
|
|
LOCAL_SHARED_LIBRARIES := $(shared_libs) libc++
|
|
endif
|
|
shared_libs :=
|
|
|
|
LOCAL_REQUIRED_MODULES := \
|
|
e2fsdroid \
|
|
mke2fs \
|
|
sload_f2fs \
|
|
make_f2fs \
|
|
|
|
# Create symlinks.
|
|
LOCAL_POST_INSTALL_CMD := $(hide) mkdir -p $(TARGET_ROOT_OUT)/sbin; \
|
|
ln -sf ../init $(TARGET_ROOT_OUT)/sbin/ueventd; \
|
|
ln -sf ../init $(TARGET_ROOT_OUT)/sbin/watchdogd
|
|
|
|
LOCAL_SANITIZE := signed-integer-overflow
|
|
include $(BUILD_EXECUTABLE)
|