summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2011-11-12 18:19:07 +0100
committerAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2011-11-12 18:20:49 +0100
commit72904cc3c68385a53d4ad57b4bdc47fdb005e90e (patch)
tree64a52d12b00370df5867d4846f1d5f3036099eee
parent94636cc75e9e02e3809deac6cf175975ccc865bb (diff)
downloadembtoolkit-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--Kconfig1
-rw-r--r--kconfig/squashfs.kconfig66
-rw-r--r--mk/fs.mk4
-rw-r--r--mk/rootfs.mk2
-rw-r--r--mk/squashfs.mk89
5 files changed, 104 insertions, 58 deletions
diff --git a/Kconfig b/Kconfig
index f357b16..550d63b 100644
--- a/Kconfig
+++ b/Kconfig
@@ -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
diff --git a/mk/fs.mk b/mk/fs.mk
index 7f26999..32e9b1b 100644
--- a/mk/fs.mk
+++ b/mk/fs.mk
@@ -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)
-