From e2f5de7a4602a3f34ea14c5abc18d3e204c4784c Mon Sep 17 00:00:00 2001
From: Gabor Juhos <juhosg@openwrt.org>
Date: Sun, 16 Aug 2009 05:35:34 +0000
Subject: [PATCH] add menuconfig option for selecting initramfs compression

SVN-Revision: 17283
---
 Config.in                  | 49 ++++++++++++++++++++++++++++----------
 include/kernel-defaults.mk | 12 ++++++----
 2 files changed, 44 insertions(+), 17 deletions(-)

diff --git a/Config.in b/Config.in
index 4076479021..ab4fbe8cd8 100644
--- a/Config.in
+++ b/Config.in
@@ -20,6 +20,31 @@ menu "Target Images"
 		help
 		  Embed the rootfs into the kernel (initramfs)
 
+	choice
+		prompt "ramdisk compression"
+		depends TARGET_ROOTFS_INITRAMFS
+		depends !LINUX_2_6_21
+		depends !LINUX_2_6_25
+		depends !LINUX_2_6_27
+		depends !LINUX_2_6_28
+		default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_ar71xx
+		default TARGET_INITRAMFS_COMPRESSION_NONE
+		help
+		  Select ramdisk compression.
+
+		config TARGET_INITRAMFS_COMPRESSION_NONE
+			bool "NONE"
+
+		config TARGET_INITRAMFS_COMPRESSION_GZIP
+			bool "GZIP"
+
+		config TARGET_INITRAMFS_COMPRESSION_BZIP2
+			bool "BZIP2"
+
+		config TARGET_INITRAMFS_COMPRESSION_LZMA
+			bool "LZMA"
+	endchoice
+
 	config TARGET_ROOTFS_JFFS2
 		bool "jffs2"
 		default y if USES_JFFS2
@@ -40,14 +65,14 @@ menu "Target Images"
 		depends !TARGET_ROOTFS_INITRAMFS
 		help
 		  Build a compressed tar archive of the the root filesystem
-		  
+
 	config TARGET_ROOTFS_CPIOGZ
 		bool "cpiogz"
 		default y if USES_CPIOGZ
 		depends !TARGET_ROOTFS_INITRAMFS
 		help
 		  Build a compressed cpio archive of the the root filesystem
-		  
+
 	config TARGET_ROOTFS_EXT2FS
 		bool "ext2"
 		default y if USES_EXT2
@@ -55,12 +80,12 @@ menu "Target Images"
 		help
 		  Ext2 file system with some free space for uml images
 
-	config TARGET_ROOTFS_ISO 
-		bool "iso" 
-		default n 
-		depends TARGET_ROOTFS_INITRAMFS && TARGET_x86 
-		help 
-		  Create some bootable ISO image 
+	config TARGET_ROOTFS_ISO
+		bool "iso"
+		default n
+		depends TARGET_ROOTFS_INITRAMFS && TARGET_x86
+		help
+		  Create some bootable ISO image
 
 comment "Image Options"
 
@@ -158,11 +183,11 @@ config DEBUG_DIR
 		This will install all compiled package binaries into build_dir/target-*/debug-*/,
 		useful for cross-debugging via gdb/gdbserver
 
-config IPV6 
-        bool 
+config IPV6
+        bool
         prompt "Enable IPv6 support in packages"
-        default n 
-        help 
+        default n
+        help
                 Enable IPV6 support in packages (passes --enable-ipv6 to configure scripts).
 
 comment "Kernel build options"
diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk
index 0ba1e056a6..4266157d26 100644
--- a/include/kernel-defaults.mk
+++ b/include/kernel-defaults.mk
@@ -1,4 +1,4 @@
-# 
+#
 # Copyright (C) 2006-2007 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
@@ -49,7 +49,7 @@ define Kernel/Prepare/Default
     endef
   else
     define Kernel/Prepare/Default
-	git clone --reference $(CONFIG_KERNEL_GIT_LOCAL_REPOSITORY) $(CONFIG_KERNEL_GIT_CLONE_URI) $(LINUX_DIR) 
+	git clone --reference $(CONFIG_KERNEL_GIT_LOCAL_REPOSITORY) $(CONFIG_KERNEL_GIT_CLONE_URI) $(LINUX_DIR)
     endef
   endif
 endif
@@ -67,12 +67,14 @@ ifeq ($(KERNEL),2.6)
   ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
     define Kernel/SetInitramfs
 		mv $(LINUX_DIR)/.config $(LINUX_DIR)/.config.old
-		grep -v INITRAMFS $(LINUX_DIR)/.config.old > $(LINUX_DIR)/.config
+		grep -v -e INITRAMFS -e CONFIG_RD_ $(LINUX_DIR)/.config.old > $(LINUX_DIR)/.config
 		echo 'CONFIG_INITRAMFS_SOURCE="$(strip $(TARGET_DIR) $(INITRAMFS_EXTRA_FILES))"' >> $(LINUX_DIR)/.config
 		echo 'CONFIG_INITRAMFS_ROOT_UID=$(shell id -u)' >> $(LINUX_DIR)/.config
 		echo 'CONFIG_INITRAMFS_ROOT_GID=$(shell id -g)' >> $(LINUX_DIR)/.config
-		echo 'CONFIG_INITRAMFS_COMPRESSION_NONE=y' >> $(LINUX_DIR)/.config
-		echo '# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set' >> $(LINUX_DIR)/.config
+		echo "$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_NONE),CONFIG_INITRAMFS_COMPRESSION_NONE=y,# CONFIG_INITRAMFS_COMPRESSION_NONE is not set)" >> $(LINUX_DIR)/.config
+		echo -e "$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_GZIP),CONFIG_INITRAMFS_COMPRESSION_GZIP=y\nCONFIG_RD_GZIP=y,# CONFIG_INITRAMFS_COMPRESSION_GZIP is not set\n# CONFIG_RD_GZIP is not set)" >> $(LINUX_DIR)/.config
+		echo -e "$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_BZIP2),CONFIG_INITRAMFS_COMPRESSION_BZIP2=y\nCONFIG_RD_BZIP2=y,# CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set\n# CONFIG_RD_BZIP2 is not set)" >> $(LINUX_DIR)/.config
+		echo -e "$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_LZMA),CONFIG_INITRAMFS_COMPRESSION_LZMA=y\nCONFIG_RD_LZMA=y,# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set\n# CONFIG_RD_LZMA is not set)" >> $(LINUX_DIR)/.config
     endef
   else
     define Kernel/SetInitramfs
-- 
GitLab