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