From 7cc278bb99ad9c9ea540a3e096592d5586e4c986 Mon Sep 17 00:00:00 2001 From: Vojtech Bocek Date: Sun, 24 Feb 2013 01:40:19 +0100 Subject: Add fast scroll bar to fileselector Also fix build problems with libblkid in CM7 Signed-off-by: Vojtech Bocek Change-Id: I1cd4573e25b247171e4bd8cc05b70543f897a454 --- Android.mk | 4 +- exfat/libexfat/Android.mk | 1 - gui/devices/1024x600/res/ui.xml | 12 +++++ gui/devices/1024x768/res/ui.xml | 14 ++++++ gui/devices/1280x800/res/ui.xml | 14 ++++++ gui/devices/1920x1200/res/ui.xml | 14 ++++++ gui/devices/2560x1600/res/ui.xml | 14 ++++++ gui/devices/320x480/res/ui.xml | 12 +++++ gui/devices/480x800/res/ui.xml | 12 +++++ gui/devices/480x854/res/ui.xml | 12 +++++ gui/devices/540x960/res/ui.xml | 12 +++++ gui/devices/720x1280/res/ui.xml | 12 +++++ gui/devices/800x1280/res/ui.xml | 12 +++++ gui/devices/800x480/res/ui.xml | 14 ++++++ gui/fileselector.cpp | 96 +++++++++++++++++++++++++++++++++++++++- gui/objects.hpp | 8 ++++ libblkid/Android.mk | 4 +- libblkid/bitops.h | 6 +-- prebuilt/Android.mk | 6 ++- 19 files changed, 269 insertions(+), 10 deletions(-) diff --git a/Android.mk b/Android.mk index 79d77480e..57bab353d 100644 --- a/Android.mk +++ b/Android.mk @@ -307,7 +307,9 @@ endif ifeq ($(TW_INCLUDE_JB_CRYPTO), true) include $(commands_recovery_local_path)/crypto/fs_mgr/Android.mk endif - +ifeq ($(BUILD_ID), GINGERBREAD) + TW_NO_EXFAT := true +endif ifneq ($(TW_NO_EXFAT), true) include $(commands_recovery_local_path)/exfat/exfat-fuse/Android.mk \ $(commands_recovery_local_path)/exfat/mkfs/Android.mk \ diff --git a/exfat/libexfat/Android.mk b/exfat/libexfat/Android.mk index 0b7f963a7..39a7faae7 100644 --- a/exfat/libexfat/Android.mk +++ b/exfat/libexfat/Android.mk @@ -4,7 +4,6 @@ include $(CLEAR_VARS) LOCAL_MODULE := libexfat LOCAL_MODULE_TAGS := optional -LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin LOCAL_CFLAGS = -D_FILE_OFFSET_BITS=64 LOCAL_SRC_FILES = cluster.c io.c log.c lookup.c mount.c node.c time.c utf.c utils.c LOCAL_C_INCLUDES += $(LOCAL_PATH) \ diff --git a/gui/devices/1024x600/res/ui.xml b/gui/devices/1024x600/res/ui.xml index a651b5bf3..16969d9bd 100755 --- a/gui/devices/1024x600/res/ui.xml +++ b/gui/devices/1024x600/res/ui.xml @@ -153,6 +153,10 @@ + + + + @@ -552,6 +556,7 @@
+ Folders: @@ -567,6 +572,7 @@
+ %tw_zip_location% @@ -2115,6 +2121,7 @@
+ Select Package to Restore: @@ -2535,6 +2542,7 @@
+ Select Time Zone: @@ -3118,6 +3126,7 @@
+ Folders: @@ -3134,6 +3143,7 @@
+ %tw_file_location1% @@ -3351,6 +3361,7 @@
+ %tw_file_location2% @@ -3749,6 +3760,7 @@
+ %tw_terminal_location% diff --git a/gui/devices/1024x768/res/ui.xml b/gui/devices/1024x768/res/ui.xml index f4cfa44bf..88365e62e 100644 --- a/gui/devices/1024x768/res/ui.xml +++ b/gui/devices/1024x768/res/ui.xml @@ -153,6 +153,12 @@ + + + + + + @@ -552,6 +558,7 @@
+ Folders: @@ -567,6 +574,7 @@
+ %tw_zip_location% @@ -2115,6 +2123,7 @@
+ Select Package to Restore: @@ -2535,6 +2544,7 @@
+ Select Time Zone: @@ -3118,6 +3128,7 @@
+ Folders: @@ -3134,6 +3145,7 @@
+ %tw_file_location1% @@ -3351,6 +3363,7 @@
+ %tw_file_location2% @@ -3749,6 +3762,7 @@
+ %tw_terminal_location% diff --git a/gui/devices/1280x800/res/ui.xml b/gui/devices/1280x800/res/ui.xml index e6ef8f961..ef0b432ce 100644 --- a/gui/devices/1280x800/res/ui.xml +++ b/gui/devices/1280x800/res/ui.xml @@ -153,6 +153,12 @@ + + + + + + @@ -552,6 +558,7 @@
+ Folders: @@ -567,6 +574,7 @@
+ %tw_zip_location% @@ -2115,6 +2123,7 @@
+ Select Package to Restore: @@ -2535,6 +2544,7 @@
+ Select Time Zone: @@ -3118,6 +3128,7 @@
+ Folders: @@ -3134,6 +3145,7 @@
+ %tw_file_location1% @@ -3351,6 +3363,7 @@
+ %tw_file_location2% @@ -3749,6 +3762,7 @@
+ %tw_terminal_location% diff --git a/gui/devices/1920x1200/res/ui.xml b/gui/devices/1920x1200/res/ui.xml index e22494bea..af438d7d9 100644 --- a/gui/devices/1920x1200/res/ui.xml +++ b/gui/devices/1920x1200/res/ui.xml @@ -153,6 +153,12 @@ + + + + + + @@ -552,6 +558,7 @@
+ Folders: @@ -567,6 +574,7 @@
+ %tw_zip_location% @@ -2115,6 +2123,7 @@
+ Select Package to Restore: @@ -2535,6 +2544,7 @@
+ Select Time Zone: @@ -3118,6 +3128,7 @@
+ Folders: @@ -3134,6 +3145,7 @@
+ %tw_file_location1% @@ -3351,6 +3363,7 @@
+ %tw_file_location2% @@ -3749,6 +3762,7 @@
+ %tw_terminal_location% diff --git a/gui/devices/2560x1600/res/ui.xml b/gui/devices/2560x1600/res/ui.xml index d3b20abd7..96170b59f 100644 --- a/gui/devices/2560x1600/res/ui.xml +++ b/gui/devices/2560x1600/res/ui.xml @@ -153,6 +153,12 @@ + + + + + + @@ -552,6 +558,7 @@
+ Folders: @@ -567,6 +574,7 @@
+ %tw_zip_location% @@ -2115,6 +2123,7 @@
+ Select Package to Restore: @@ -2535,6 +2544,7 @@
+ Select Time Zone: @@ -3118,6 +3128,7 @@
+ Folders: @@ -3134,6 +3145,7 @@
+ %tw_file_location1% @@ -3351,6 +3363,7 @@
+ %tw_file_location2% @@ -3749,6 +3762,7 @@
+ %tw_terminal_location% diff --git a/gui/devices/320x480/res/ui.xml b/gui/devices/320x480/res/ui.xml index 9f2051d2b..887505c6b 100644 --- a/gui/devices/320x480/res/ui.xml +++ b/gui/devices/320x480/res/ui.xml @@ -135,6 +135,12 @@ + + + + + + @@ -510,6 +516,7 @@
+ %tw_zip_location% @@ -1684,6 +1691,7 @@
+ Select Package to Restore: @@ -2500,6 +2508,7 @@
+ Select Time Zone: @@ -3100,6 +3109,7 @@
+ %tw_file_location1% @@ -3317,6 +3327,7 @@
+ %tw_file_location2% @@ -3717,6 +3728,7 @@
+ %tw_terminal_location% diff --git a/gui/devices/480x800/res/ui.xml b/gui/devices/480x800/res/ui.xml index 2707b24ca..ab4be70ff 100644 --- a/gui/devices/480x800/res/ui.xml +++ b/gui/devices/480x800/res/ui.xml @@ -134,6 +134,12 @@ + + + + + + @@ -509,6 +515,7 @@
+ %tw_zip_location% @@ -1683,6 +1690,7 @@
+ Select Package to Restore: @@ -2499,6 +2507,7 @@
+ Select Time Zone: @@ -3099,6 +3108,7 @@
+ %tw_file_location1% @@ -3316,6 +3326,7 @@
+ %tw_file_location2% @@ -3716,6 +3727,7 @@
+ %tw_terminal_location% diff --git a/gui/devices/480x854/res/ui.xml b/gui/devices/480x854/res/ui.xml index 44cd78232..1147b77f3 100644 --- a/gui/devices/480x854/res/ui.xml +++ b/gui/devices/480x854/res/ui.xml @@ -133,6 +133,12 @@ + + + + + + @@ -508,6 +514,7 @@
+ %tw_zip_location% @@ -1682,6 +1689,7 @@
+ Select Package to Restore: @@ -2498,6 +2506,7 @@
+ Select Time Zone: @@ -3098,6 +3107,7 @@
+ %tw_file_location1% @@ -3315,6 +3325,7 @@
+ %tw_file_location2% @@ -3715,6 +3726,7 @@
+ %tw_terminal_location% diff --git a/gui/devices/540x960/res/ui.xml b/gui/devices/540x960/res/ui.xml index ae0b24e33..7c4967ed1 100644 --- a/gui/devices/540x960/res/ui.xml +++ b/gui/devices/540x960/res/ui.xml @@ -134,6 +134,12 @@ + + + + + + @@ -509,6 +515,7 @@
+ %tw_zip_location% @@ -1683,6 +1690,7 @@
+ Select Package to Restore: @@ -2499,6 +2507,7 @@
+ Select Time Zone: @@ -3099,6 +3108,7 @@
+ %tw_file_location1% @@ -3316,6 +3326,7 @@
+ %tw_file_location2% @@ -3716,6 +3727,7 @@
+ %tw_terminal_location% diff --git a/gui/devices/720x1280/res/ui.xml b/gui/devices/720x1280/res/ui.xml index bdd779939..5d94483c9 100644 --- a/gui/devices/720x1280/res/ui.xml +++ b/gui/devices/720x1280/res/ui.xml @@ -139,6 +139,12 @@ + + + + + + @@ -522,6 +528,7 @@
+ %tw_zip_location% @@ -1696,6 +1703,7 @@
+ Select Package to Restore: @@ -2512,6 +2520,7 @@
+ Select Time Zone: @@ -3112,6 +3121,7 @@
+ %tw_file_location1% @@ -3329,6 +3339,7 @@
+ %tw_file_location2% @@ -3729,6 +3740,7 @@
+ %tw_terminal_location% diff --git a/gui/devices/800x1280/res/ui.xml b/gui/devices/800x1280/res/ui.xml index eb602cd7c..9e2e2b8e7 100755 --- a/gui/devices/800x1280/res/ui.xml +++ b/gui/devices/800x1280/res/ui.xml @@ -135,6 +135,12 @@ + + + + + + @@ -510,6 +516,7 @@
+ %tw_zip_location% @@ -1684,6 +1691,7 @@
+ Select Package to Restore: @@ -2500,6 +2508,7 @@
+ Select Time Zone: @@ -3100,6 +3109,7 @@
+ %tw_file_location1% @@ -3317,6 +3327,7 @@
+ %tw_file_location2% @@ -3717,6 +3728,7 @@
+ %tw_terminal_location% diff --git a/gui/devices/800x480/res/ui.xml b/gui/devices/800x480/res/ui.xml index 7813aa686..82423709f 100755 --- a/gui/devices/800x480/res/ui.xml +++ b/gui/devices/800x480/res/ui.xml @@ -153,6 +153,12 @@ + + + + + + @@ -560,6 +566,7 @@
+ Folders: @@ -575,6 +582,7 @@
+ %tw_zip_location% @@ -2123,6 +2131,7 @@
+ Select Package to Restore: @@ -2543,6 +2552,7 @@
+ Select Time Zone: @@ -3126,6 +3136,7 @@
+ Folders: @@ -3142,6 +3153,7 @@
+ %tw_file_location1% @@ -3359,6 +3371,7 @@
+ %tw_file_location2% @@ -3757,6 +3770,7 @@
+ %tw_terminal_location% diff --git a/gui/fileselector.cpp b/gui/fileselector.cpp index bc10f917d..edf3279f4 100644 --- a/gui/fileselector.cpp +++ b/gui/fileselector.cpp @@ -53,6 +53,8 @@ GUIFileSelector::GUIFileSelector(xml_node<>* node) mFolderIcon = mFileIcon = mBackground = mFont = mHeaderIcon = NULL; mBackgroundX = mBackgroundY = mBackgroundW = mBackgroundH = 0; mShowFolders = mShowFiles = mShowNavFolders = 1; + mFastScrollW = mFastScrollLineW = mFastScrollRectW = mFastScrollRectH = 0; + mFastScrollRectX = mFastScrollRectY = -1; mUpdate = 0; touchDebounce = 6; mPathVar = "cwd"; @@ -62,6 +64,8 @@ GUIFileSelector::GUIFileSelector(xml_node<>* node) ConvertStrToColor("black", &mHeaderSeparatorColor); ConvertStrToColor("white", &mFontColor); ConvertStrToColor("white", &mHeaderFontColor); + ConvertStrToColor("white", &mFastScrollLineColor); + ConvertStrToColor("white", &mFastScrollRectColor); hasHighlightColor = false; hasFontHighlightColor = false; isHighlighted = false; @@ -276,6 +280,43 @@ GUIFileSelector::GUIFileSelector(xml_node<>* node) } else mSelection = "0"; + // Fast scroll colors + child = node->first_node("fastscroll"); + if (child) + { + attr = child->first_attribute("linecolor"); + if(attr) + ConvertStrToColor(attr->value(), &mFastScrollLineColor); + + attr = child->first_attribute("rectcolor"); + if(attr) + ConvertStrToColor(attr->value(), &mFastScrollRectColor); + + attr = child->first_attribute("w"); + if (attr) { + string parsevalue = gui_parse_text(attr->value()); + mFastScrollW = atoi(parsevalue.c_str()); + } + + attr = child->first_attribute("linew"); + if (attr) { + string parsevalue = gui_parse_text(attr->value()); + mFastScrollLineW = atoi(parsevalue.c_str()); + } + + attr = child->first_attribute("rectw"); + if (attr) { + string parsevalue = gui_parse_text(attr->value()); + mFastScrollRectW = atoi(parsevalue.c_str()); + } + + attr = child->first_attribute("recth"); + if (attr) { + string parsevalue = gui_parse_text(attr->value()); + mFastScrollRectH = atoi(parsevalue.c_str()); + } + } + // Retrieve the line height gr_getFontDetails(mFont ? mFont->GetResource() : NULL, &mFontHeight, NULL); mLineHeight = mFontHeight; @@ -355,10 +396,14 @@ int GUIFileSelector::Render(void) int folderSize = mShowFolders ? mFolderList.size() : 0; int fileSize = mShowFiles ? mFileList.size() : 0; + int listW = mRenderW; + if (folderSize + fileSize < lines) { lines = folderSize + fileSize; scrollingY = 0; + mFastScrollRectX = mFastScrollRectY = -1; } else { + listW -= mFastScrollW; // space for fast scroll lines++; if (lines < folderSize + fileSize) lines++; @@ -437,12 +482,12 @@ int GUIFileSelector::Render(void) rect_y = currentIconHeight; gr_blit(icon->GetResource(), 0, 0, currentIconWidth, rect_y, mRenderX + currentIconOffsetX, image_y); } - gr_textExWH(mRenderX + mIconWidth + 5, yPos + fontOffsetY, label.c_str(), fontResource, mRenderX + mRenderW, mRenderY + mRenderH); + gr_textExWH(mRenderX + mIconWidth + 5, yPos + fontOffsetY, label.c_str(), fontResource, mRenderX + listW, mRenderY + mRenderH); // Add the separator if (yPos + actualLineHeight < mRenderH + mRenderY) { gr_color(mSeparatorColor.red, mSeparatorColor.green, mSeparatorColor.blue, 255); - gr_fill(mRenderX, yPos + actualLineHeight - mSeparatorH, mRenderW, mSeparatorH); + gr_fill(mRenderX, yPos + actualLineHeight - mSeparatorH, listW, mSeparatorH); } // Move the yPos @@ -477,6 +522,27 @@ int GUIFileSelector::Render(void) gr_fill(mRenderX, yPos + mHeaderH - mHeaderSeparatorH, mRenderW, mHeaderSeparatorH); } + // render fast scroll + lines = (mRenderH - mHeaderH) / (actualLineHeight); + if(mFastScrollW > 0 && folderSize + fileSize > lines) + { + int startX = listW + mRenderX; + int fWidth = mRenderW - listW; + int fHeight = mRenderH - mHeaderH; + + // line + gr_color(mFastScrollLineColor.red, mFastScrollLineColor.green, mFastScrollLineColor.blue, 255); + gr_fill(startX + fWidth/2, mRenderY + mHeaderH, mFastScrollLineW, mRenderH - mHeaderH); + + // rect + int pct = ((mStart*actualLineHeight - scrollingY)*100)/((folderSize + fileSize)*actualLineHeight-lines*actualLineHeight); + mFastScrollRectX = startX + (fWidth - mFastScrollRectW)/2; + mFastScrollRectY = mRenderY+mHeaderH + ((fHeight - mFastScrollRectH)*pct)/100; + + gr_color(mFastScrollRectColor.red, mFastScrollRectColor.green, mFastScrollRectColor.blue, 255); + gr_fill(mFastScrollRectX, mFastScrollRectY, mFastScrollRectW, mFastScrollRectH); + } + mUpdate = 0; return 0; } @@ -591,6 +657,32 @@ int GUIFileSelector::NotifyTouch(TOUCH_STATE state, int x, int y) break; } + // Fast scroll + if(mFastScrollRectX != -1 && x >= mRenderX + mRenderW - mFastScrollW) + { + int pct = ((y-mRenderY-mHeaderH)*100)/(mRenderH-mHeaderH); + int totalSize = (mShowFolders ? mFolderList.size() : 0) + (mShowFiles ? mFileList.size() : 0); + int lines = (mRenderH - mHeaderH) / (actualLineHeight); + + float l = float((totalSize-lines)*pct)/100; + if(l + lines >= totalSize) + { + mStart = totalSize - lines; + scrollingY = 0; + } + else + { + mStart = l; + scrollingY = -(l - int(l))*actualLineHeight; + } + + startSelection = -1; + mUpdate = 1; + scrollingSpeed = 0; + isHighlighted = false; + break; + } + // Provide some debounce on initial touches if (startSelection != -1 && abs(y - startY) < touchDebounce) { isHighlighted = true; diff --git a/gui/objects.hpp b/gui/objects.hpp index 2ddeb88c7..86353685a 100644 --- a/gui/objects.hpp +++ b/gui/objects.hpp @@ -461,6 +461,12 @@ protected: int mUpdate; int mBackgroundX, mBackgroundY, mBackgroundW, mBackgroundH; int mHeaderH; + int mFastScrollW; + int mFastScrollLineW; + int mFastScrollRectW; + int mFastScrollRectH; + int mFastScrollRectX; + int mFastScrollRectY; static int mSortOrder; int startY; int scrollingSpeed; @@ -481,6 +487,8 @@ protected: COLOR mHeaderFontColor; COLOR mSeparatorColor; COLOR mHeaderSeparatorColor; + COLOR mFastScrollLineColor; + COLOR mFastScrollRectColor; bool hasHighlightColor; bool hasFontHighlightColor; bool isHighlighted; diff --git a/libblkid/Android.mk b/libblkid/Android.mk index 18c49e7e5..d6c203f90 100644 --- a/libblkid/Android.mk +++ b/libblkid/Android.mk @@ -4,8 +4,8 @@ include $(CLEAR_VARS) LOCAL_MODULE := libblkid LOCAL_MODULE_TAGS := optional -LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin -LOCAL_CFLAGS = -D_FILE_OFFSET_BITS=64 +#LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin +LOCAL_CFLAGS = -D_FILE_OFFSET_BITS=64 -DHAVE_LOFF_T LOCAL_SRC_FILES = aix.c at.c befs.c bfs.c blkdev.c bsd.c btrfs.c cache.c canonicalize.c colors.c config.c cramfs.c crc32.c ddf_raid.c dev.c devname.c devno.c dm.c dos.c drbd.c drbdproxy_datalog.c encode.c env.c evaluate.c evms.c exec_shell.c exfat.c ext.c f2fs.c fileutils.c getsize.c gfs.c gpt.c hfs.c highpoint_raid.c hpfs.c ioctl.c ismounted.c iso9660.c isw_raid.c jfs.c jmicron_raid.c langinfo.c linux_raid.c linux_version.c llseek.c loopdev.c lsi_raid.c luks.c lvm1.c lvm2.c mac.c mangle.c match.c mbsalign.c md5.c md.c minix1.c minix2.c netware.c nilfs.c ntfs.c nvidia_raid.c ocfs.c pager.c partitions.c path.c probe.c procutils.c promise_raid.c randutils.c read.c reiserfs.c resolve.c romfs.c save.c setproctitle.c sgi.c silicon_raid.c solaris_x86.c squashfs.c sun.c superblocks.c swap.c sysfs1.c sysfs2.c sysv.c tag.c topology.c ubifs.c udf.c ufs.c ultrix.c unixware.c verify.c version.c vfat.c via_raid.c vmfs.c vxfs.c wholedisk.c xfs.c zfs.c adaptec_raid.c LOCAL_C_INCLUDES += $(LOCAL_PATH) \ LOCAL_SHARED_LIBRARIES += libc diff --git a/libblkid/bitops.h b/libblkid/bitops.h index 288fe715c..7439ece91 100644 --- a/libblkid/bitops.h +++ b/libblkid/bitops.h @@ -56,15 +56,15 @@ //#ifndef htobe16 //# if !defined(WORDS_BIGENDIAN) -# define htobe16(x) bswap_16 (x) +//# define htobe16(x) bswap_16 (x) # define htole16(x) (x) # define be16toh(x) bswap_16 (x) # define le16toh(x) (x) -# define htobe32(x) bswap_32 (x) +//# define htobe32(x) bswap_32 (x) # define htole32(x) (x) # define be32toh(x) bswap_32 (x) # define le32toh(x) (x) -# define htobe64(x) bswap_64 (x) +//# define htobe64(x) bswap_64 (x) # define htole64(x) (x) # define be64toh(x) bswap_64 (x) # define le64toh(x) (x) diff --git a/prebuilt/Android.mk b/prebuilt/Android.mk index d5005e3ec..dec000f32 100644 --- a/prebuilt/Android.mk +++ b/prebuilt/Android.mk @@ -38,16 +38,20 @@ RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libz.so #RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libjpeg.so #RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libmtdutils.so RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libtar.so +RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libblkid.so RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libmmcutils.so RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libbmlutils.so RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libflashutils.so RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libstlport.so RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libmincrypt.so RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libext4_utils.so - +ifeq ($(BUILD_ID), GINGERBREAD) + TW_NO_EXFAT := true +endif ifneq ($(TW_NO_EXFAT), true) RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/sbin/exfat-fuse RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/sbin/mkexfatfs + RELINK_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libexfat.so endif ifeq ($(TW_INCLUDE_BLOBPACK), true) RELINK_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/sbin/blobpack -- cgit v1.2.3