btrfs-progs: use box version of btrfs tool (busybox like)
authorKarel Kočí <karel.koci@nic.cz>
Mon, 5 Aug 2019 11:31:52 +0000 (13:31 +0200)
committerJosef Schlehofer <pepe.schlehofer@gmail.com>
Tue, 6 Aug 2019 07:59:39 +0000 (09:59 +0200)
This instead of building every tool separately builds one btrfs binary
and additional tools are links to this binary. This is same approach as
busybox is using.

This splits list of tools to two. boxprogs are tools that are boxed to
code btrfs binary and progs are tools that are not.
This also overload default all make target of Build/Compile and instead
builds (unified) btrfs.progs and separate progs.

Signed-off-by: Karel Kočí <karel.koci@nic.cz>
utils/btrfs-progs/Makefile

index a687e3d58dfb81e22c25ea45c98d098292b824f3..626163c590a2f3253ce433f57a3b7a4220f57f27 100644 (file)
@@ -44,8 +44,8 @@ define Package/btrfs-progs/config
        source "$(SOURCE)/Config.in"
 endef
 
-progs = btrfs btrfs-find-root btrfs-image btrfs-map-logical \
-       btrfs-select-super btrfstune mkfs.btrfs
+boxprogs = btrfsck mkfs.btrfs btrfs-image btrfstune btrfs-find-root
+progs = btrfs-map-logical btrfs-select-super
 
 TARGET_CFLAGS += -ffunction-sections -fdata-sections
 TARGET_LDFLAGS += -Wl,--gc-sections -Wl,--as-needed
@@ -61,6 +61,10 @@ ifneq ($(CONFIG_BTRFS_PROGS_ZSTD),y)
 CONFIGURE_ARGS += --disable-zstd
 endif
 
+MAKE_INSTALL_FLAGS += BUILD_PROGRAMS=0
+
+Build/Compile=$(call Build/Compile/Default,btrfs.box $(progs))
+
 define Build/InstallDev
        $(INSTALL_DIR) $(1)/usr/include $(1)/usr/lib
        $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
@@ -72,8 +76,9 @@ define Package/btrfs-progs/install
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libbtrfs.so* $(1)/usr/lib
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libbtrfsutil.so* $(1)/usr/lib
        $(INSTALL_DIR) $(1)/usr/bin
-       $(INSTALL_BIN) $(addprefix $(PKG_INSTALL_DIR)/usr/bin/, $(progs)) $(1)/usr/bin/
-       $(LN) btrfs $(1)/usr/bin/btrfsck
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/btrfs.box $(1)/usr/bin/btrfs
+       $(foreach prog,$(boxprogs),$(LN) btrfs $(1)/usr/bin/$(prog);)
+       $(foreach prog,$(progs),$(INSTALL_BIN) $(PKG_BUILD_DIR)/$(prog) $(1)/usr/bin/;)
        $(INSTALL_DIR) $(1)/etc/init.d
        $(INSTALL_BIN) ./files/btrfs-scan.init $(1)/etc/init.d/btrfs-scan
 endef