summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2014-06-30 08:40:35 +0200
committerWaldemar Brodkorb <wbx@openadk.org>2014-06-30 08:40:35 +0200
commit8b2ea5fd6a65f35d670eba5c44a7f7f9d561c131 (patch)
tree249a0a0e9f103e5866b69405223204b5a4fba1f7
parenteb3f81cc2f161f97954b9b93839a0225bc2bf83b (diff)
add support for lz4 compressed kernel and initramfs
-rw-r--r--mk/image.mk9
-rw-r--r--package/lz4/Makefile9
-rw-r--r--package/lz4/patches/patch-Makefile.orig26
-rw-r--r--package/lz4/patches/patch-programs_Makefile.orig22
-rw-r--r--scripts/scan-tools.sh6
-rw-r--r--target/config/Config.in.tools9
-rw-r--r--target/linux/config/Config.in.kernel18
-rw-r--r--target/linux/patches/3.15.2/lz4.patch16
8 files changed, 67 insertions, 48 deletions
diff --git a/mk/image.mk b/mk/image.mk
index c9108ef14..9c2df48f6 100644
--- a/mk/image.mk
+++ b/mk/image.mk
@@ -149,6 +149,15 @@ ifeq ($(ADK_KERNEL_COMP_XZ),y)
echo "CONFIG_XZ_DEC_SPARC=n" >> ${LINUX_DIR}/.config
echo "CONFIG_XZ_DEC_TEST=n" >> ${LINUX_DIR}/.config
endif
+ifeq ($(ADK_KERNEL_COMP_LZ4),y)
+ echo "CONFIG_RD_XZ=n" >> ${LINUX_DIR}/.config
+ echo "CONFIG_RD_BZIP2=n" >> ${LINUX_DIR}/.config
+ echo "CONFIG_RD_GZIP=n" >> ${LINUX_DIR}/.config
+ echo "CONFIG_RD_LZO=n" >> ${LINUX_DIR}/.config
+ echo "CONFIG_RD_LZ4=y" >> ${LINUX_DIR}/.config
+ echo "CONFIG_RD_LZMA=n" >> ${LINUX_DIR}/.config
+ echo "CONFIG_INITRAMFS_COMPRESSION_LZ4=y" >> ${LINUX_DIR}/.config
+endif
ifeq ($(ADK_KERNEL_COMP_LZMA),y)
echo "CONFIG_RD_XZ=n" >> ${LINUX_DIR}/.config
echo "CONFIG_RD_BZIP2=n" >> ${LINUX_DIR}/.config
diff --git a/package/lz4/Makefile b/package/lz4/Makefile
index 7ad0f69e3..e6faaa7b2 100644
--- a/package/lz4/Makefile
+++ b/package/lz4/Makefile
@@ -30,8 +30,17 @@ $(eval $(call HOST_template,LZ4,lz4,${PKG_VERSION}-${PKG_RELEASE}))
$(eval $(call PKG_template,LZ4,lz4,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_template,LIBLZ4,liblz4,${PKG_VERSION}-${PKG_RELEASE},${PKGSS_LIBLZ4},${PKGSD_LIBLZ4},${PKGSC_LIBLZ4},${PKG_OPTS}))
+HOST_STYLE:= manual
CONFIG_STYLE:= manual
+host-build:
+ (cd ${WRKBUILD} && env ${HOST_MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \
+ ${HOST_MAKE_FLAGS} ${HOST_ALL_TARGET}) $(MAKE_TRACE)
+
+lz4-hostinstall:
+ cd ${WRKBUILD} && env ${HOST_MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \
+ ${HOST_FAKE_FLAGS} DESTDIR='${STAGING_HOST_DIR}' ${HOST_INSTALL_TARGET} $(MAKE_TRACE)
+
lz4-install:
${INSTALL_DIR} ${IDIR_LZ4}/usr/bin
${CP} ${WRKINST}/usr/bin/* ${IDIR_LZ4}/usr/bin
diff --git a/package/lz4/patches/patch-Makefile.orig b/package/lz4/patches/patch-Makefile.orig
deleted file mode 100644
index 5102f1128..000000000
--- a/package/lz4/patches/patch-Makefile.orig
+++ /dev/null
@@ -1,26 +0,0 @@
---- lz4-r118.orig/Makefile 2014-06-26 11:36:13.000000000 +0200
-+++ lz4-r118/Makefile 2014-06-30 07:41:17.000000000 +0200
-@@ -55,19 +55,10 @@ else
- EXT =
- endif
-
--# OS X linker doesn't support -soname, and use different extension
--# see : https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html
--ifeq ($(shell uname), Darwin)
-- SONAME_FLAGS =
-- SHARED_EXT = dylib
-- SHARED_EXT_MAJOR = $(LIBVER_MAJOR).$(SHARED_EXT)
-- SHARED_EXT_VER = $(LIBVER).$(SHARED_EXT)
--else
-- SONAME_FLAGS = -Wl,-soname=liblz4.$(SHARED_EXT).$(LIBVER_MAJOR)
-- SHARED_EXT = so
-- SHARED_EXT_MAJOR = $(SHARED_EXT).$(LIBVER_MAJOR)
-- SHARED_EXT_VER = $(SHARED_EXT).$(LIBVER)
--endif
-+SONAME_FLAGS = -Wl,-soname=liblz4.$(SHARED_EXT).$(LIBVER_MAJOR)
-+SHARED_EXT = so
-+SHARED_EXT_MAJOR = $(SHARED_EXT).$(LIBVER_MAJOR)
-+SHARED_EXT_VER = $(SHARED_EXT).$(LIBVER)
-
- TEXT = lz4.c lz4.h lz4hc.c lz4hc.h \
- lz4_format_description.txt Makefile NEWS LICENSE README.md \
diff --git a/package/lz4/patches/patch-programs_Makefile.orig b/package/lz4/patches/patch-programs_Makefile.orig
deleted file mode 100644
index 02e153ed9..000000000
--- a/package/lz4/patches/patch-programs_Makefile.orig
+++ /dev/null
@@ -1,22 +0,0 @@
---- lz4-r118.orig/programs/Makefile 2014-06-26 11:36:13.000000000 +0200
-+++ lz4-r118/programs/Makefile 2014-06-30 07:44:45.000000000 +0200
-@@ -33,8 +33,8 @@
- RELEASE=r118
- DESTDIR=
- PREFIX=/usr
--CC:=$(CC)
--CFLAGS+= -std=c99 -O3 -Wall -W -Wundef -DLZ4_VERSION=\"$(RELEASE)\"
-+CC?=$(CC)
-+CFLAGS+= -std=c99 -Wall -W -Wundef -DLZ4_VERSION=\"$(RELEASE)\"
- FLAGS= -I.. $(CFLAGS)
-
- BINDIR=$(PREFIX)/bin
-@@ -67,7 +67,7 @@ endif
-
- default: lz4 lz4c
-
--all: lz4 lz4c lz4c32 fullbench fullbench32 fuzzer fuzzer32 datagen
-+all: lz4 lz4c
-
- lz4: $(LZ4DIR)/lz4.c $(LZ4DIR)/lz4hc.c bench.c xxhash.c lz4io.c lz4cli.c
- $(CC) $(FLAGS) -DDISABLE_LZ4C_LEGACY_OPTIONS $^ -o $@$(EXT)
diff --git a/scripts/scan-tools.sh b/scripts/scan-tools.sh
index 21f884e3f..0bfb36c3c 100644
--- a/scripts/scan-tools.sh
+++ b/scripts/scan-tools.sh
@@ -285,6 +285,11 @@ if ! which lzma >/dev/null 2>&1; then
host_build_lzma=1
fi
+host_build_lz4=0
+if ! which lz4c >/dev/null 2>&1; then
+ host_build_lz4=1
+fi
+
host_build_lzop=0
if ! which lzop >/dev/null 2>&1; then
host_build_lzop=1
@@ -317,6 +322,7 @@ if [ $host_build_ccache -eq 1 ];then printf "\t%s\n" "select ADK_HOST_BUILD_CCAC
if [ $host_build_cdrtools -eq 1 ];then printf "\t%s\n" "select ADK_HOST_BUILD_CDRTOOLS if ADK_HOST_NEED_CDRTOOLS" >> $topdir/target/config/Config.in.prereq ;fi
if [ $host_build_genext2fs -eq 1 ];then printf "\t%s\n" "select ADK_HOST_BUILD_GENEXT2FS if ADK_HOST_NEED_GENEXT2FS" >> $topdir/target/config/Config.in.prereq ;fi
if [ $host_build_lzma -eq 1 ];then printf "\t%s\n" "select ADK_HOST_BUILD_LZMA if ADK_HOST_NEED_LZMA" >> $topdir/target/config/Config.in.prereq ;fi
+if [ $host_build_lz4 -eq 1 ];then printf "\t%s\n" "select ADK_HOST_BUILD_LZ4 if ADK_HOST_NEED_LZ4" >> $topdir/target/config/Config.in.prereq ;fi
if [ $host_build_lzop -eq 1 ];then printf "\t%s\n" "select ADK_HOST_BUILD_LZOP if ADK_HOST_NEED_LZOP" >> $topdir/target/config/Config.in.prereq ;fi
if [ $host_build_qemu -eq 1 ];then printf "\t%s\n" "select ADK_HOST_BUILD_QEMU if ADK_HOST_NEED_QEMU" >> $topdir/target/config/Config.in.prereq ;fi
diff --git a/target/config/Config.in.tools b/target/config/Config.in.tools
index 194dba7a0..5e8e3ba77 100644
--- a/target/config/Config.in.tools
+++ b/target/config/Config.in.tools
@@ -98,6 +98,14 @@ config ADK_HOST_BUILD_GENEXT2FS
boolean
default n
+config ADK_HOST_NEED_LZ4
+ boolean
+ default n
+
+config ADK_HOST_BUILD_LZ4
+ boolean
+ default n
+
config ADK_HOST_NEED_LZMA
boolean
default n
@@ -179,6 +187,7 @@ config ADK_COMPRESSION_TOOL
default "gzip -n9" if ADK_KERNEL_INITRAMFS_COMPRESSION_GZIP
default "bzip2" if ADK_KERNEL_INITRAMFS_COMPRESSION_BZIP2
default "xz -v --check=crc32 --lzma2=dict=1MiB" if ADK_KERNEL_INITRAMFS_COMPRESSION_XZ
+ default "lz4c -l" if ADK_KERNEL_INITRAMFS_COMPRESSION_LZ4
default "lzma -9" if ADK_KERNEL_INITRAMFS_COMPRESSION_LZMA
default "lzop" if ADK_KERNEL_INITRAMFS_COMPRESSION_LZO
default "gzip -n9"
diff --git a/target/linux/config/Config.in.kernel b/target/linux/config/Config.in.kernel
index 1999b2055..348498936 100644
--- a/target/linux/config/Config.in.kernel
+++ b/target/linux/config/Config.in.kernel
@@ -17,6 +17,10 @@ config ADK_KERNEL_INITRAMFS_COMPRESSION_XZ
select ADK_HOST_NEED_XZ
boolean
+config ADK_KERNEL_INITRAMFS_COMPRESSION_LZ4
+ select ADK_HOST_NEED_LZ4
+ boolean
+
config ADK_KERNEL_INITRAMFS_COMPRESSION_LZMA
select ADK_HOST_NEED_LZMA
boolean
@@ -44,6 +48,12 @@ config ADK_KERNEL_RD_BZIP2
config ADK_KERNEL_KERNEL_BZIP2
boolean
+config ADK_KERNEL_RD_LZ4
+ boolean
+
+config ADK_KERNEL_KERNEL_LZ4
+ boolean
+
config ADK_KERNEL_RD_LZMA
boolean
@@ -137,6 +147,14 @@ config ADK_KERNEL_COMP_XZ
select ADK_KERNEL_KERNEL_XZ
select ADK_KERNEL_INITRAMFS_COMPRESSION_XZ
+config ADK_KERNEL_COMP_LZ4
+ prompt "use LZ4 compression"
+ boolean
+ select ADK_KERNEL_RD_LZ4
+ select ADK_KERNEL_KERNEL_LZ4
+ select ADK_KERNEL_INITRAMFS_COMPRESSION_LZ4
+ depends on ADK_LINUX_X86 || ADK_LINUX_ARM
+
config ADK_KERNEL_COMP_LZMA
prompt "use LZMA compression"
boolean
diff --git a/target/linux/patches/3.15.2/lz4.patch b/target/linux/patches/3.15.2/lz4.patch
new file mode 100644
index 000000000..3106015ab
--- /dev/null
+++ b/target/linux/patches/3.15.2/lz4.patch
@@ -0,0 +1,16 @@
+diff -Nur linux-3.15.2.orig/usr/Kconfig linux-3.15.2/usr/Kconfig
+--- linux-3.15.2.orig/usr/Kconfig 2014-06-26 21:17:52.000000000 +0200
++++ linux-3.15.2/usr/Kconfig 2014-06-30 08:29:00.000000000 +0200
+@@ -174,4 +174,12 @@
+ size is about 10% bigger than gzip; however its speed
+ (both compression and decompression) is the fastest.
+
++config INITRAMFS_COMPRESSION_LZ4
++ bool "LZ4"
++ depends on RD_LZ4
++ help
++ Its compression ratio is the poorest among the choices. The kernel
++ size is about 10% bigger than gzip; however its speed
++ (both compression and decompression) is the fastest.
++
+ endchoice