1# Copyright 2005 The Android Open Source Project
2
3LOCAL_PATH:= $(call my-dir)
4
5# --
6
7ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
8init_options += \
9    -DALLOW_LOCAL_PROP_OVERRIDE=1 \
10    -DALLOW_PERMISSIVE_SELINUX=1 \
11    -DREBOOT_BOOTLOADER_ON_PANIC=1 \
12    -DDUMP_ON_UMOUNT_FAILURE=1
13else
14init_options += \
15    -DALLOW_LOCAL_PROP_OVERRIDE=0 \
16    -DALLOW_PERMISSIVE_SELINUX=0 \
17    -DREBOOT_BOOTLOADER_ON_PANIC=0 \
18    -DDUMP_ON_UMOUNT_FAILURE=0
19endif
20
21ifneq (,$(filter eng,$(TARGET_BUILD_VARIANT)))
22init_options += \
23    -DSHUTDOWN_ZERO_TIMEOUT=1
24else
25init_options += \
26    -DSHUTDOWN_ZERO_TIMEOUT=0
27endif
28
29init_options += -DLOG_UEVENTS=0
30
31init_cflags += \
32    $(init_options) \
33    -Wall -Wextra \
34    -Wno-unused-parameter \
35    -Werror \
36    -std=gnu++1z \
37
38# --
39
40# If building on Linux, then build unit test for the host.
41ifeq ($(HOST_OS),linux)
42include $(CLEAR_VARS)
43LOCAL_CPPFLAGS := $(init_cflags)
44LOCAL_SRC_FILES:= \
45    parser/tokenizer.cpp \
46
47LOCAL_MODULE := libinit_parser
48LOCAL_CLANG := true
49include $(BUILD_HOST_STATIC_LIBRARY)
50
51include $(CLEAR_VARS)
52LOCAL_MODULE := init_parser_tests
53LOCAL_SRC_FILES := \
54    parser/tokenizer_test.cpp \
55
56LOCAL_STATIC_LIBRARIES := libinit_parser
57LOCAL_CLANG := true
58include $(BUILD_HOST_NATIVE_TEST)
59endif
60
61include $(CLEAR_VARS)
62LOCAL_CPPFLAGS := $(init_cflags)
63LOCAL_SRC_FILES:= \
64    action.cpp \
65    capabilities.cpp \
66    descriptors.cpp \
67    import_parser.cpp \
68    init_parser.cpp \
69    log.cpp \
70    parser.cpp \
71    service.cpp \
72    util.cpp \
73
74LOCAL_STATIC_LIBRARIES := libbase libselinux liblog libprocessgroup
75LOCAL_WHOLE_STATIC_LIBRARIES := libcap
76LOCAL_MODULE := libinit
77LOCAL_SANITIZE := integer
78LOCAL_CLANG := true
79include $(BUILD_STATIC_LIBRARY)
80
81include $(CLEAR_VARS)
82LOCAL_CPPFLAGS := $(init_cflags)
83LOCAL_SRC_FILES:= \
84    bootchart.cpp \
85    builtins.cpp \
86    devices.cpp \
87    init.cpp \
88    init_first_stage.cpp \
89    keychords.cpp \
90    property_service.cpp \
91    reboot.cpp \
92    signal_handler.cpp \
93    ueventd.cpp \
94    ueventd_parser.cpp \
95    watchdogd.cpp \
96
97LOCAL_MODULE:= init
98LOCAL_C_INCLUDES += \
99    system/core/mkbootimg
100
101LOCAL_FORCE_STATIC_EXECUTABLE := true
102LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
103LOCAL_UNSTRIPPED_PATH := $(TARGET_ROOT_OUT_UNSTRIPPED)
104
105LOCAL_STATIC_LIBRARIES := \
106    libinit \
107    libbootloader_message \
108    libfs_mgr \
109    libfec \
110    libfec_rs \
111    libsquashfs_utils \
112    liblogwrap \
113    libext4_utils \
114    libcutils \
115    libbase \
116    libc \
117    libselinux \
118    liblog \
119    libcrypto_utils \
120    libcrypto \
121    libc++_static \
122    libdl \
123    libsparse \
124    libz \
125    libprocessgroup \
126    libavb
127
128# Create symlinks.
129LOCAL_POST_INSTALL_CMD := $(hide) mkdir -p $(TARGET_ROOT_OUT)/sbin; \
130    ln -sf ../init $(TARGET_ROOT_OUT)/sbin/ueventd; \
131    ln -sf ../init $(TARGET_ROOT_OUT)/sbin/watchdogd
132
133LOCAL_SANITIZE := integer
134LOCAL_CLANG := true
135include $(BUILD_EXECUTABLE)
136
137
138# Unit tests.
139# =========================================================
140include $(CLEAR_VARS)
141LOCAL_MODULE := init_tests
142LOCAL_SRC_FILES := \
143    init_parser_test.cpp \
144    property_service_test.cpp \
145    service_test.cpp \
146    util_test.cpp \
147
148LOCAL_SHARED_LIBRARIES += \
149    libcutils \
150    libbase \
151
152LOCAL_STATIC_LIBRARIES := libinit
153LOCAL_SANITIZE := integer
154LOCAL_CLANG := true
155LOCAL_CPPFLAGS := -Wall -Wextra -Werror
156include $(BUILD_NATIVE_TEST)
157
158
159# Include targets in subdirs.
160# =========================================================
161include $(call all-makefiles-under,$(LOCAL_PATH))
162