bzip2/lzma: proper Kconfig dependencies for the ramdisk options

Impact: Partial resolution of build failure

Make all the compression algorithms properly configurable, and make
sure the ramdisk options pull in the proper compression algorithms, as
they should.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
index 7955944..cc9fa69 100644
--- a/drivers/block/Kconfig
+++ b/drivers/block/Kconfig
@@ -358,10 +358,20 @@
 	  will prevent RAM block device backing store memory from being
 	  allocated from highmem (only a problem for highmem systems).
 
+config RD_GZIP
+	bool "Initial ramdisk compressed using gzip"
+	default y
+	depends on BLK_DEV_INITRD=y
+	select DECOMPRESS_GZIP
+	help
+	  Support loading of a gzip encoded initial ramdisk or cpio buffer.
+	  If unsure, say Y.
+
 config RD_BZIP2
 	bool "Initial ramdisk compressed using bzip2"
 	default n
 	depends on BLK_DEV_INITRD=y
+	select DECOMPRESS_BZIP2
 	help
 	  Support loading of a bzip2 encoded initial ramdisk or cpio buffer
 	  If unsure, say N.
@@ -370,19 +380,11 @@
 	bool "Initial ramdisk compressed using lzma"
 	default n
 	depends on BLK_DEV_INITRD=y
+	select DECOMPRESS_LZMA
 	help
 	  Support loading of a lzma encoded initial ramdisk or cpio buffer
 	  If unsure, say N.
 
-config RD_GZIP
-	bool "Initial ramdisk compressed using gzip"
-	default y
-	depends on BLK_DEV_INITRD=y
-	select ZLIB_INFLATE
-	help
-	  Support loading of a gzip encoded initial ramdisk or cpio buffer.
-	  If unsure, say Y.
-
 config CDROM_PKTCDVD
 	tristate "Packet writing on CD/DVD media"
 	depends on !UML
diff --git a/lib/Kconfig b/lib/Kconfig
index 03c2c24..e37f061 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -98,6 +98,19 @@
 	tristate
 
 #
+# These all provide a common interface (hence the apparent duplication with
+# ZLIB_INFLATE; DECOMPRESS_GZIP is just a wrapper.)
+#
+config DECOMPRESS_GZIP
+	tristate
+
+config DECOMPRESS_BZIP2
+	tristate
+
+config DECOMPRESS_LZMA
+	tristate
+
+#
 # Generic allocator support is selected if needed
 #
 config GENERIC_ALLOCATOR
diff --git a/lib/Makefile b/lib/Makefile
index e2a21d5..d9ac5a4 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -11,8 +11,7 @@
 	 rbtree.o radix-tree.o dump_stack.o \
 	 idr.o int_sqrt.o extable.o prio_tree.o \
 	 sha1.o irq_regs.o reciprocal_div.o argv_split.o \
-	 proportions.o prio_heap.o ratelimit.o show_mem.o is_single_threaded.o \
-	 decompress_inflate.o decompress_bunzip2.o decompress_unlzma.o
+	 proportions.o prio_heap.o ratelimit.o show_mem.o is_single_threaded.o
 
 lib-$(CONFIG_MMU) += ioremap.o
 lib-$(CONFIG_SMP) += cpumask.o
@@ -66,6 +65,10 @@
 obj-$(CONFIG_LZO_COMPRESS) += lzo/
 obj-$(CONFIG_LZO_DECOMPRESS) += lzo/
 
+obj-$(CONFIG_DECOMPRESS_GZIP) += decompress_inflate.o
+obj-$(CONFIG_DECOMPRESS_BZIP2) += decompress_bunzip2.o
+obj-$(CONFIG_DECOMPRESS_LZMA) += decompress_unlzma.o
+
 obj-$(CONFIG_TEXTSEARCH) += textsearch.o
 obj-$(CONFIG_TEXTSEARCH_KMP) += ts_kmp.o
 obj-$(CONFIG_TEXTSEARCH_BM) += ts_bm.o