diff options
author | Abdoulaye Walsimou Gaye <awg@embtoolkit.org> | 2011-11-12 18:19:07 +0100 |
---|---|---|
committer | Abdoulaye Walsimou Gaye <awg@embtoolkit.org> | 2011-11-12 18:20:49 +0100 |
commit | 72904cc3c68385a53d4ad57b4bdc47fdb005e90e (patch) | |
tree | 64a52d12b00370df5867d4846f1d5f3036099eee | |
parent | 94636cc75e9e02e3809deac6cf175975ccc865bb (diff) | |
download | embtoolkit-72904cc3c68385a53d4ad57b4bdc47fdb005e90e.tar.gz embtoolkit-72904cc3c68385a53d4ad57b4bdc47fdb005e90e.tar.bz2 embtoolkit-72904cc3c68385a53d4ad57b4bdc47fdb005e90e.tar.xz |
Rootfs: squashfs: improve generation of squashfs rootfs
Give ability to build squashfs3.0 type of rootfs (for linux kernel prior to linux-2.6.29)
Give ability to build squashfs4.0 type of rootfs (for linux kernel linux-2.6.29 and later)
Signed-off-by: Abdoulaye Walsimou Gaye <awg@embtoolkit.org>
-rw-r--r-- | Kconfig | 1 | ||||
-rw-r--r-- | kconfig/squashfs.kconfig | 66 | ||||
-rw-r--r-- | mk/fs.mk | 4 | ||||
-rw-r--r-- | mk/rootfs.mk | 2 | ||||
-rw-r--r-- | mk/squashfs.mk | 89 |
5 files changed, 104 insertions, 58 deletions
@@ -120,5 +120,6 @@ config EMBTK_HAVE_ROOTFS if EMBTK_HAVE_ROOTFS source kconfig/fs.kconfig source kconfig/mtdutils.kconfig +source kconfig/squashfs.kconfig source kconfig/packages.kconfig endif diff --git a/kconfig/squashfs.kconfig b/kconfig/squashfs.kconfig new file mode 100644 index 0000000..c22e027 --- /dev/null +++ b/kconfig/squashfs.kconfig @@ -0,0 +1,66 @@ +################################################################################ +# Embtoolkit +# Copyright(C) 2011 Abdoulaye Walsimou GAYE. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +################################################################################ +# +# \file squashfs.kconfig +# \brief squashfs.kconfig of Embtoolkit. +# \author Abdoulaye Walsimou GAYE <awg@embtoolkit.org> +# \date August 2011 +################################################################################ + +config EMBTK_HAVE_SQUASHFS_TOOLS + bool "Have squashfs host tools" + select EMBTK_SQUASHFS_TOOLS_PKG_IS_TARGZ + select EMBK_HOST_HAVE_ZLIB + help + Say Y to build host tools needed to generate squashfs + filesystem. + + Squashfs is a compressed read-only filesystem for Linux. + Squashfs is intended for general read-only filesystem use, + for archival use (i.e. in cases where a .tar.gz file may be + used), and in constrained block device/memory systems + (e.g. embedded systems) where low overhead is needed. + +choice + prompt "squashfs tool version you wish" + depends on EMBTK_HAVE_SQUASHFS_TOOLS + help + Here you can choose which version of squashfs you want to use. + + config EMBTK_SQUASHFS_TOOLS_VERSION_4_2 + bool "squashfs4.2" + select EMBTK_SQUASHFS_TOOLS_NEED_PATCH + config EMBTK_SQUASHFS_TOOLS_VERSION_3_4 + bool "squashfs3.4" + select EMBTK_SQUASHFS_TOOLS_NEED_PATCH +endchoice + +config EMBTK_SQUASHFS_TOOLS_VERSION_STRING + string + default "4.2" if EMBTK_SQUASHFS_TOOLS_VERSION_4_2 + default "3.4" if EMBTK_SQUASHFS_TOOLS_VERSION_3_4 + +config EMBTK_SQUASHFS_TOOLS_NEED_PATCH + bool +config EMBTK_SQUASHFS_TOOLS_NEED_AUTORECONF + bool +config EMBTK_SQUASHFS_TOOLS_PKG_IS_TARGZ + bool +config EMBTK_SQUASHFS_TOOLS_PKG_IS_TARBZ2 + bool @@ -62,7 +62,9 @@ build_jffs2_rootfs: build_squashfs_rootfs: $(call embtk_pinfo,"Generating SQUASHFS rootfs...") $(FAKEROOT_BIN) -i $(FAKEROOT_ENV_FILE) -- \ - $(MKSQUASHFS_BIN) $(ROOTFS) $(SQUASHFS_ROOTFS) + $(MKSQUASHFS_BIN) $(ROOTFS) $(SQUASHFS_ROOTFS) \ + $(if $(CONFIG_EMBTK_TARGET_ARCH_LITTLE_ENDIAN),-le,-be) \ + -all-root build_initramfs_archive: $(call embtk_pinfo,"Generating cpio archive for INITRAMFS...") diff --git a/mk/rootfs.mk b/mk/rootfs.mk index e477481..56d0e47 100644 --- a/mk/rootfs.mk +++ b/mk/rootfs.mk @@ -45,7 +45,7 @@ ROOTFS_HOSTTOOLS-$(CONFIG_EMBTK_ROOTFS_HAVE_JFFS2) += mtdutils_host_install FILESYSTEMS-$(CONFIG_EMBTK_ROOTFS_HAVE_JFFS2) += build_jffs2_rootfs #Does squashfs filesystem selected? -ROOTFS_HOSTTOOLS-$(CONFIG_EMBTK_ROOTFS_HAVE_SQUASHFS) += squashfs_host_install +ROOTFS_HOSTTOOLS-$(CONFIG_EMBTK_ROOTFS_HAVE_SQUASHFS) += squashfs_tools_install FILESYSTEMS-$(CONFIG_EMBTK_ROOTFS_HAVE_SQUASHFS) += build_squashfs_rootfs ifeq ($(CONFIG_EMBTK_ROOTFS_HAVE_SQUASHFS),y) include $(EMBTK_ROOT)/mk/squashfs.mk diff --git a/mk/squashfs.mk b/mk/squashfs.mk index ea0a429..c0beffe 100644 --- a/mk/squashfs.mk +++ b/mk/squashfs.mk @@ -23,60 +23,37 @@ # \date August 2009 ################################################################################ -SQUASHFS_VERSION := 4.0 -SQUASHFS_SITE := http://downloads.sourceforge.net/project/squashfs/squashfs -SQUASHFS_PACKAGE := squashfs$(SQUASHFS_VERSION).tar.gz -SQUASHFS_HOST_BUILD_DIR := $(TOOLS_BUILD)/squashfs-build -SQUASHFS_TARGET_BUILD_DIR := $(PACKAGES_BUILD)/squashfs-build - -MKSQUASHFS_BIN := $(HOSTTOOLS)/usr/bin/mksquashfs -UNSQUASHFS_BIN := $(HOSTTOOLS)/usr/bin/unsquashfs - -squashfs_host_install: - @test -e $(SQUASHFS_HOST_BUILD_DIR)/.installed || \ - $(MAKE) $(SQUASHFS_HOST_BUILD_DIR)/.installed - -squashfs_target_install: $(SQUASHFS_TARGET_BUILD_DIR)/.installed - -#squashfs for host -$(SQUASHFS_HOST_BUILD_DIR)/.installed: download_squashfs \ - $(SQUASHFS_HOST_BUILD_DIR)/.decompressed - @CC=$(HOSTCC_CACHED) \ - $(MAKE) -C $(TOOLS_BUILD)/squashfs$(SQUASHFS_VERSION)/squashfs-tools - test -z $(HOSTTOOLS)/usr/bin || mkdir -p $(HOSTTOOLS)/usr/bin - @install $(TOOLS_BUILD)/squashfs$(SQUASHFS_VERSION)/squashfs-tools/\ - mksquashfs $(HOSTTOOLS)/usr/bin/ - @install $(TOOLS_BUILD)/squashfs$(SQUASHFS_VERSION)/squashfs-tools/\ - unsquashfs $(HOSTTOOLS)/usr/bin/ - @touch $@ - -$(SQUASHFS_HOST_BUILD_DIR)/.decompressed: - $(call embtk_pinfo,"Decompressing $(SQUASHFS_PACKAGE)...") - @tar -C $(TOOLS_BUILD) -xzvf $(DOWNLOAD_DIR)/$(SQUASHFS_PACKAGE) - @mkdir -p $(SQUASHFS_HOST_BUILD_DIR) - @touch $@ - -squashfs_host_clean: +SQUASHFS_TOOLS_NAME := squashfs +SQUASHFS_TOOLS_VERSION := $(call embtk_get_pkgversion,squashfs_tools) +SQUASHFS_TOOLS_SITE := http://sourceforge.net/projects/squashfs/files/squashfs/squashfs$(SQUASHFS_TOOLS_VERSION) +SQUASHFS_TOOLS_PACKAGE := squashfs$(SQUASHFS_TOOLS_VERSION).tar.gz +SQUASHFS_TOOLS_SRC_DIR := $(TOOLS_BUILD)/squashfs$(SQUASHFS_TOOLS_VERSION) +SQUASHFS_TOOLS_BUILD_DIR := $(SQUASHFS_TOOLS_SRC_DIR)/squashfs-tools + +MKSQUASHFS_BIN := $(HOSTTOOLS)/usr/bin/mksquashfs +UNSQUASHFS_BIN := $(HOSTTOOLS)/usr/bin/unsquashfs + +SQUASHFS_TOOLS_DEPS := zlib_host_install + +squashfs_tools_install: $(SQUASHFS_TOOLS_DEPS) + $(Q)test -e $(SQUASHFS_TOOLS_BUILD_DIR)/.installed || \ + $(MAKE) $(SQUASHFS_TOOLS_BUILD_DIR)/.installed + +$(SQUASHFS_TOOLS_BUILD_DIR)/.installed: download_squashfs_tools \ + $(SQUASHFS_TOOLS_BUILD_DIR)/.decompressed + $(Q)$(MAKE) -C $(SQUASHFS_TOOLS_BUILD_DIR) \ + CC=$(HOSTCC_CACHED) \ + CPPFLAGS="-I$(HOSTTOOLS)/usr/include" \ + LDFLAGS="-L$(HOSTTOOLS)/usr/lib" + $(Q)mkdir -p $(HOSTTOOLS) + $(Q)mkdir -p $(HOSTTOOLS)/usr + $(Q)mkdir -p $(HOSTTOOLS)/usr/bin + $(Q)install $(SQUASHFS_TOOLS_BUILD_DIR)/mksquashfs $(HOSTTOOLS)/usr/bin + $(Q)install $(SQUASHFS_TOOLS_BUILD_DIR)/unsquashfs $(HOSTTOOLS)/usr/bin + $(Q)touch $@ + +$(SQUASHFS_TOOLS_BUILD_DIR)/.decompressed: + $(call embtk_decompress_pkg,squashfs_tools) + +squashfs_tools_clean: $(call embtk_pinfo,"Cleaning squashfs in host ...") - -#squashfs for target -$(SQUASHFS_TARGET_BUILD_DIR)/.installed: download_squashfs \ - $(SQUASHFS_TARGET_BUILD_DIR)/.decompressed - @touch $@ - -$(SQUASHFS_TARGET_BUILD_DIR)/.decompressed: - $(call embtk_pinfo,"Decompressing $(SQUASHFS_PACKAGE)...") - @tar -C $(PACKAGES_BUILD) -xzvf $(DOWNLOAD_DIR)/$(SQUASHFS_PACKAGE) - @mkdir -p $(SQUASHFS_TARGET_BUILD_DIR) - @touch $@ - -squashfs_target_clean: - $(call embtk_pinfo,"Cleaning squashfs in target ...") - -download_squashfs: - $(call embtk_pinfo,"Downloading $(SQUASHFS_PACKAGE) \ - if necessary...") - @test -e $(DOWNLOAD_DIR)/$(SQUASHFS_PACKAGE) || \ - wget -O $(DOWNLOAD_DIR)/$(SQUASHFS_PACKAGE) \ - $(SQUASHFS_SITE)/squashfs$(SQUASHFS_VERSION)/$(SQUASHFS_PACKAGE) - |