Refactor recovery's block device handling to work across variant hardware in a cleaner fashion.

Re add firmware update

Change-Id: I699ad22390ed14e597d17a7bcb32ad1b1af00b4b

support mmc misc

Change-Id: Iff02f8d03db6835f501d052140cebeefee521305

fix compile errors

Change-Id: I032edbd157a8a15f561bb83330c715ebaa008d18

fix compile errors

Change-Id: Idff3449be3376f22fceefc2c35637527f8df8f3f

Initial work to clean up the block devices.

Change-Id: I4be20ac124864a281be9cd116e211a2618404a27

all done

Change-Id: I0338f62f6a045556ebe90b0200685be113178319

fix up nandroid

Change-Id: I886f00271183e6d2921c080b0939341f2cf12a4d
diff --git a/Android.mk b/Android.mk
index 4786c79..817bef8 100644
--- a/Android.mk
+++ b/Android.mk
@@ -8,6 +8,7 @@
 # LOCAL_CPP_EXTENSION := .c
 
 LOCAL_SRC_FILES := \
+    mounts.c \
 	extendedcommands.c \
 	nandroid.c \
 	legacy.c \
@@ -49,94 +50,13 @@
 RECOVERY_API_VERSION := 2
 LOCAL_CFLAGS += -DRECOVERY_API_VERSION=$(RECOVERY_API_VERSION)
 
-ifeq ($(BOARD_HAS_NO_SELECT_BUTTON),true)
-  LOCAL_CFLAGS += -DKEY_POWER_IS_SELECT_ITEM
-endif
+BOARD_RECOVERY_DEFINES := BOARD_HAS_NO_SELECT_BUTTON BOARD_SDCARD_DEVICE_PRIMARY BOARD_SDCARD_DEVICE_SECONDARY BOARD_SDEXT_DEVICE BOARD_SDEXT_FILESYSTEM BOARD_DATA_DEVICE BOARD_DATA_FILESYSTEM BOARD_DATADATA_DEVICE BOARD_DATADATA_FILESYSTEM BOARD_CACHE_DEVICE BOARD_CACHE_FILESYSTEM BOARD_SYSTEM_DEVICE BOARD_SYSTEM_FILESYSTEM BOARD_HAS_DATADATA BOARD_DATA_FILESYSTEM_OPTIONS BOARD_DATADATA_FILESYSTEM_OPTIONS BOARD_CACHE_FILESYSTEM_OPTIONS BOARD_SYSTEM_FILESYSTEM_OPTIONS BOARD_HAS_MTD_CACHE BOARD_USES_BMLUTILS BOARD_USES_MMCUTILS BOARD_HAS_SMALL_RECOVERY
 
-ifdef BOARD_SDCARD_DEVICE_PRIMARY
-  LOCAL_CFLAGS += -DSDCARD_DEVICE_PRIMARY=\"$(BOARD_SDCARD_DEVICE_PRIMARY)\"
-endif
-
-ifdef BOARD_SDCARD_DEVICE_SECONDARY
-  LOCAL_CFLAGS += -DSDCARD_DEVICE_SECONDARY=\"$(BOARD_SDCARD_DEVICE_SECONDARY)\"
-endif
-
-ifdef BOARD_SDEXT_DEVICE
-  LOCAL_CFLAGS += -DSDEXT_DEVICE=\"$(BOARD_SDEXT_DEVICE)\"
-endif
-
-ifdef BOARD_SDEXT_FILESYSTEM
-  LOCAL_CFLAGS += -DSDEXT_FILESYSTEM=\"$(BOARD_SDEXT_FILESYSTEM)\"
-endif
-
-ifdef BOARD_DATA_DEVICE
-  LOCAL_CFLAGS += -DDATA_DEVICE=\"$(BOARD_DATA_DEVICE)\"
-endif
-
-ifdef BOARD_DATA_FILESYSTEM
-  LOCAL_CFLAGS += -DDATA_FILESYSTEM=\"$(BOARD_DATA_FILESYSTEM)\"
-endif
-
-ifdef BOARD_DATADATA_DEVICE
-  LOCAL_CFLAGS += -DDATADATA_DEVICE=\"$(BOARD_DATADATA_DEVICE)\"
-endif
-
-ifdef BOARD_DATADATA_FILESYSTEM
-  LOCAL_CFLAGS += -DDATADATA_FILESYSTEM=\"$(BOARD_DATADATA_FILESYSTEM)\"
-endif
-
-ifdef BOARD_CACHE_DEVICE
-  LOCAL_CFLAGS += -DCACHE_DEVICE=\"$(BOARD_CACHE_DEVICE)\"
-endif
-
-ifdef BOARD_CACHE_FILESYSTEM
-  LOCAL_CFLAGS += -DCACHE_FILESYSTEM=\"$(BOARD_CACHE_FILESYSTEM)\"
-endif
-
-ifdef BOARD_SYSTEM_DEVICE
-  LOCAL_CFLAGS += -DSYSTEM_DEVICE=\"$(BOARD_SYSTEM_DEVICE)\"
-endif
-
-ifdef BOARD_SYSTEM_FILESYSTEM
-  LOCAL_CFLAGS += -DSYSTEM_FILESYSTEM=\"$(BOARD_SYSTEM_FILESYSTEM)\"
-endif
-
-ifdef BOARD_HAS_DATADATA
-  LOCAL_CFLAGS += -DHAS_DATADATA
-endif
-
-ifdef BOARD_DATA_FILESYSTEM_OPTIONS
-  LOCAL_CFLAGS += -DDATA_FILESYSTEM_OPTIONS=\"$(BOARD_DATA_FILESYSTEM_OPTIONS)\"
-endif
-
-ifdef BOARD_DATADATA_FILESYSTEM_OPTIONS
-  LOCAL_CFLAGS += -DDATADATA_FILESYSTEM_OPTIONS=\"$(BOARD_DATADATA_FILESYSTEM_OPTIONS)\"
-endif
-
-ifdef BOARD_CACHE_FILESYSTEM_OPTIONS
-  LOCAL_CFLAGS += -DCACHE_FILESYSTEM_OPTIONS=\"$(BOARD_CACHE_FILESYSTEM_OPTIONS)\"
-endif
-
-ifdef BOARD_SYSTEM_FILESYSTEM_OPTIONS
-  LOCAL_CFLAGS += -DSYSTEM_FILESYSTEM_OPTIONS=\"$(BOARD_SYSTEM_FILESYSTEM_OPTIONS)\"
-endif
-
-ifdef BOARD_HAS_MTD_CACHE
-  LOCAL_CFLAGS += -DBOARD_HAS_MTD_CACHE
-endif
-
-ifdef BOARD_USES_BMLUTILS
-  LOCAL_CFLAGS += -DBOARD_USES_BMLUTILS
-  LOCAL_STATIC_LIBRARIES += libbmlutils
-endif
-
-ifdef BOARD_USES_MMCUTILS
-  LOCAL_CFLAGS += -DBOARD_USES_MMCUTILS
-endif
-
-ifdef BOARD_HAS_SMALL_RECOVERY
-  LOCAL_CFLAGS += -DBOARD_HAS_SMALL_RECOVERY
-endif
+$(foreach board_define,$(BOARD_RECOVERY_DEFINES), \
+  $(if $($(board_define)), \
+    $(eval LOCAL_CFLAGS += -D$(board_define)=\"$($(board_define))\") \
+  ) \
+  )
 
 # This binary is in the recovery ramdisk, which is otherwise a copy of root.
 # It gets copied there in config/Makefile.  LOCAL_MODULE_TAGS suppresses
@@ -151,9 +71,20 @@
 else
   LOCAL_SRC_FILES += $(BOARD_CUSTOM_RECOVERY_KEYMAPPING)
 endif
-LOCAL_STATIC_LIBRARIES += libbusybox libclearsilverregex libmkyaffs2image libunyaffs liberase_image libdump_image libflash_image libmtdutils
+LOCAL_STATIC_LIBRARIES += libbusybox libclearsilverregex libmkyaffs2image libunyaffs liberase_image libdump_image libflash_image
+
+ifdef BOARD_USES_BMLUTILS
+	BOARD_FLASH_LIBRARY := libbmlutils
+else ifdef BOARD_USES_MMCUTILS
+	BOARD_FLASH_LIBRARY := libmmcutils
+else
+	BOARD_FLASH_LIBRARY := libmtdutils
+endif
+
+LOCAL_STATIC_LIBRARIES += $(BOARD_FLASH_LIBRARY)
+
 LOCAL_STATIC_LIBRARIES += libamend
-LOCAL_STATIC_LIBRARIES += libminzip libunz libmtdutils libmmcutils libmincrypt
+LOCAL_STATIC_LIBRARIES += libminzip libunz libmincrypt
 LOCAL_STATIC_LIBRARIES += libminui libpixelflinger_static libpng libcutils
 LOCAL_STATIC_LIBRARIES += libstdc++ libc
 
@@ -217,6 +148,7 @@
 
 include $(commands_recovery_local_path)/amend/Android.mk
 include $(commands_recovery_local_path)/bmlutils/Android.mk
+include $(commands_recovery_local_path)/flashutils/Android.mk
 include $(commands_recovery_local_path)/minui/Android.mk
 include $(commands_recovery_local_path)/minzip/Android.mk
 include $(commands_recovery_local_path)/mtdutils/Android.mk