1# Copyright 2009 The Android Open Source Project
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#      http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15LOCAL_PATH := $(call my-dir)
16
17tune2fs_static_libraries := \
18    libext2_com_err \
19    libext2_blkid \
20    libext2_quota \
21    libext2_uuid \
22    libext2_e2p \
23    libext2fs
24
25updater_common_static_libraries := \
26    libapplypatch \
27    libbspatch \
28    libedify \
29    libziparchive \
30    libotautil \
31    libbootloader_message \
32    libutils \
33    libmounts \
34    libotafault \
35    libext4_utils \
36    libfec \
37    libfec_rs \
38    libfs_mgr \
39    liblog \
40    libselinux \
41    libsparse \
42    libsquashfs_utils \
43    libbz \
44    libz \
45    libbase \
46    libcrypto \
47    libcrypto_utils \
48    libcutils \
49    libtune2fs \
50    libbrotli \
51    $(tune2fs_static_libraries)
52
53# libupdater (static library)
54# ===============================
55include $(CLEAR_VARS)
56
57LOCAL_MODULE := libupdater
58
59LOCAL_SRC_FILES := \
60    install.cpp \
61    blockimg.cpp
62
63LOCAL_C_INCLUDES := \
64    $(LOCAL_PATH)/.. \
65    $(LOCAL_PATH)/include \
66    external/e2fsprogs/misc
67
68LOCAL_CFLAGS := \
69    -Wall \
70    -Werror
71
72LOCAL_EXPORT_C_INCLUDE_DIRS := \
73    $(LOCAL_PATH)/include
74
75LOCAL_STATIC_LIBRARIES := \
76    $(updater_common_static_libraries)
77
78include $(BUILD_STATIC_LIBRARY)
79
80# updater (static executable)
81# ===============================
82include $(CLEAR_VARS)
83
84LOCAL_MODULE := updater
85
86LOCAL_SRC_FILES := \
87    updater.cpp
88
89LOCAL_C_INCLUDES := \
90    $(LOCAL_PATH)/.. \
91    $(LOCAL_PATH)/include
92
93LOCAL_CFLAGS := \
94    -Wall \
95    -Werror
96
97LOCAL_STATIC_LIBRARIES := \
98    libupdater \
99    $(TARGET_RECOVERY_UPDATER_LIBS) \
100    $(TARGET_RECOVERY_UPDATER_EXTRA_LIBS) \
101    $(updater_common_static_libraries)
102
103# Each library in TARGET_RECOVERY_UPDATER_LIBS should have a function
104# named "Register_<libname>()".  Here we emit a little C function that
105# gets #included by updater.c.  It calls all those registration
106# functions.
107
108# Devices can also add libraries to TARGET_RECOVERY_UPDATER_EXTRA_LIBS.
109# These libs are also linked in with updater, but we don't try to call
110# any sort of registration function for these.  Use this variable for
111# any subsidiary static libraries required for your registered
112# extension libs.
113
114LOCAL_MODULE_CLASS := EXECUTABLES
115inc := $(call local-generated-sources-dir)/register.inc
116
117$(inc) : libs := $(TARGET_RECOVERY_UPDATER_LIBS)
118$(inc) :
119	$(hide) mkdir -p $(dir $@)
120	$(hide) echo "" > $@
121	$(hide) $(foreach lib,$(libs),echo "extern void Register_$(lib)(void);" >> $@;)
122	$(hide) echo "void RegisterDeviceExtensions() {" >> $@
123	$(hide) $(foreach lib,$(libs),echo "  Register_$(lib)();" >> $@;)
124	$(hide) echo "}" >> $@
125
126LOCAL_GENERATED_SOURCES := $(inc)
127
128inc :=
129
130LOCAL_FORCE_STATIC_EXECUTABLE := true
131
132include $(BUILD_EXECUTABLE)
133