1# Copyright 2009 The Android Open Source Project 2 3LOCAL_PATH := $(call my-dir) 4 5updater_src_files := \ 6 install.c \ 7 updater.c 8 9# 10# Build a statically-linked binary to include in OTA packages 11# 12include $(CLEAR_VARS) 13 14# Build only in eng, so we don't end up with a copy of this in /system 15# on user builds. (TODO: find a better way to build device binaries 16# needed only for OTA packages.) 17LOCAL_MODULE_TAGS := eng 18 19LOCAL_SRC_FILES := $(updater_src_files) 20 21LOCAL_STATIC_LIBRARIES := $(TARGET_RECOVERY_UPDATER_LIBS) $(TARGET_RECOVERY_UPDATER_EXTRA_LIBS) 22LOCAL_STATIC_LIBRARIES += libapplypatch libedify libmtdutils libminzip libz 23LOCAL_STATIC_LIBRARIES += libmincrypt libbz 24LOCAL_STATIC_LIBRARIES += libcutils libstdc++ libc 25LOCAL_C_INCLUDES += $(LOCAL_PATH)/.. 26 27# Each library in TARGET_RECOVERY_UPDATER_LIBS should have a function 28# named "Register_<libname>()". Here we emit a little C function that 29# gets #included by updater.c. It calls all those registration 30# functions. 31 32# Devices can also add libraries to TARGET_RECOVERY_UPDATER_EXTRA_LIBS. 33# These libs are also linked in with updater, but we don't try to call 34# any sort of registration function for these. Use this variable for 35# any subsidiary static libraries required for your registered 36# extension libs. 37 38inc := $(call intermediates-dir-for,PACKAGING,updater_extensions)/register.inc 39 40# During the first pass of reading the makefiles, we dump the list of 41# extension libs to a temp file, then copy that to the ".list" file if 42# it is different than the existing .list (if any). The register.inc 43# file then uses the .list as a prerequisite, so it is only rebuilt 44# (and updater.o recompiled) when the list of extension libs changes. 45 46junk := $(shell mkdir -p $(dir $(inc));\ 47 echo $(TARGET_RECOVERY_UPDATER_LIBS) > $(inc).temp;\ 48 diff -q $(inc).temp $(inc).list || cp -f $(inc).temp $(inc).list) 49 50$(inc) : libs := $(TARGET_RECOVERY_UPDATER_LIBS) 51$(inc) : $(inc).list 52 $(hide) mkdir -p $(dir $@) 53 $(hide) echo "" > $@ 54 $(hide) $(foreach lib,$(libs),echo "extern void Register_$(lib)(void);" >> $@) 55 $(hide) echo "void RegisterDeviceExtensions() {" >> $@ 56 $(hide) $(foreach lib,$(libs),echo " Register_$(lib)();" >> $@) 57 $(hide) echo "}" >> $@ 58 59$(call intermediates-dir-for,EXECUTABLES,updater)/updater.o : $(inc) 60LOCAL_C_INCLUDES += $(dir $(inc)) 61 62LOCAL_MODULE := updater 63 64LOCAL_FORCE_STATIC_EXECUTABLE := true 65 66include $(BUILD_EXECUTABLE) 67