diff options
author | Waldemar Brodkorb <wbx@openadk.org> | 2014-06-30 08:40:35 +0200 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2014-06-30 08:40:35 +0200 |
commit | 8b2ea5fd6a65f35d670eba5c44a7f7f9d561c131 (patch) | |
tree | 249a0a0e9f103e5866b69405223204b5a4fba1f7 | |
parent | eb3f81cc2f161f97954b9b93839a0225bc2bf83b (diff) |
add support for lz4 compressed kernel and initramfs
-rw-r--r-- | mk/image.mk | 9 | ||||
-rw-r--r-- | package/lz4/Makefile | 9 | ||||
-rw-r--r-- | package/lz4/patches/patch-Makefile.orig | 26 | ||||
-rw-r--r-- | package/lz4/patches/patch-programs_Makefile.orig | 22 | ||||
-rw-r--r-- | scripts/scan-tools.sh | 6 | ||||
-rw-r--r-- | target/config/Config.in.tools | 9 | ||||
-rw-r--r-- | target/linux/config/Config.in.kernel | 18 | ||||
-rw-r--r-- | target/linux/patches/3.15.2/lz4.patch | 16 |
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 |