summaryrefslogtreecommitdiff
path: root/mk
diff options
context:
space:
mode:
authorAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2012-01-25 00:19:51 +0100
committerAbdoulaye Walsimou Gaye <awg@embtoolkit.org>2012-01-25 00:19:51 +0100
commitef889bde7fa5239184ffc24dde29cd3612aeaea4 (patch)
tree6ac2091725ba3457f7ec6684cad5e8844195bcf9 /mk
parentdd6ee055561aa48efb8869f9fa88ed289e1ef7d5 (diff)
downloadembtoolkit-ef889bde7fa5239184ffc24dde29cd3612aeaea4.tar.gz
embtoolkit-ef889bde7fa5239184ffc24dde29cd3612aeaea4.tar.bz2
embtoolkit-ef889bde7fa5239184ffc24dde29cd3612aeaea4.tar.xz
Build system: root filesystem generation: create/use generic macros
Signed-off-by: Abdoulaye Walsimou Gaye <awg@embtoolkit.org>
Diffstat (limited to 'mk')
-rw-r--r--mk/buildsystem.mk3
-rw-r--r--mk/fs.mk120
-rw-r--r--mk/packages.mk17
-rw-r--r--mk/rootfs.mk41
4 files changed, 96 insertions, 85 deletions
diff --git a/mk/buildsystem.mk b/mk/buildsystem.mk
index 77ef1ad..39341ec 100644
--- a/mk/buildsystem.mk
+++ b/mk/buildsystem.mk
@@ -115,7 +115,7 @@ define __embtk_mk_startbuild
$(call embtk_echo_blue,"\tInitramfs : $(if $(CONFIG_EMBTK_ROOTFS_HAVE_INITRAMFS_CPIO),Yes,No)")
$(call embtk_echo_blue,"\tsqashFS : $(if $(CONFIG_EMBTK_ROOTFS_HAVE_SQUASHFS),Yes,No)")
$(call embtk_echo_blue,"\tJFFS2 : $(if $(CONFIG_EMBTK_ROOTFS_HAVE_JFFS2),Yes,No)"))
- $(MAKE) buildtoolchain host_packages_build rootfs_build successful_build
+ $(MAKE) buildtoolchain rootfs_build successful_build
endef
startbuild:
@@ -168,5 +168,4 @@ mkinitialpath:
rmallpath:
$(Q)rm -rf $(PACKAGES_BUILD)* $(ROOTFS)* $(TOOLS)* $(TOOLS_BUILD)*
$(Q)rm -rf $(SYSROOT)* $(HOSTTOOLS)* $(EMBTK_GENERATED)/rootfs-*
- $(Q)rm -rf $(EMBTK_GENERATED)/initramfs-*
$(Q)$(if $(CONFIG_EMBTK_CACHE_PATCHES),,rm -rf $(DOWNLOAD_DIR)/*.patch)
diff --git a/mk/fs.mk b/mk/fs.mk
index 7e795ec..a3006b4 100644
--- a/mk/fs.mk
+++ b/mk/fs.mk
@@ -1,6 +1,6 @@
################################################################################
# Embtoolkit
-# Copyright(C) 2009-2011 Abdoulaye Walsimou GAYE.
+# Copyright(C) 2009-2012 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
@@ -18,62 +18,82 @@
################################################################################
#
# \file fs.mk
-# \brief fs.mk of Embtoolkit, targets for sereval filesystems build.
+# \brief fs.mk of Embtoolkit, macros for sereval filesystems build.
# \author Abdoulaye Walsimou GAYE <awg@embtoolkit.org>
# \date August 2009
################################################################################
-JFFS2_ROOTFS := $(EMBTK_GENERATED)/rootfs-$(GNU_TARGET)-$(EMBTK_MCU_FLAG).jffs2
-BZIP2_ROOTFS := rootfs-$(GNU_TARGET)-$(EMBTK_MCU_FLAG).tar.bz2
-SQUASHFS_ROOTFS := $(EMBTK_GENERATED)/rootfs-$(GNU_TARGET)-$(EMBTK_MCU_FLAG).squashfs
-INITRAMFS_ROOTFS := $(EMBTK_GENERATED)/initramfs-$(GNU_TARGET)-$(EMBTK_MCU_FLAG)
-
-build_rootfs_devnodes:
- $(call embtk_pinfo,"Populating device nodes of the rootfs...")
- $(Q)$(FAKEROOT_BIN) -s $(FAKEROOT_ENV_FILE) -- $(MAKEDEVS_BIN) \
- -d $(EMBTK_ROOT)/src/devices_table.txt $(ROOTFS)
-
-build_tarbz2_rootfs:
+#
+# TAR.BZ2 rootfs macro
+#
+__embtk_tarbz2_rootdir = $(strip $(1))
+__embtk_tarbz2_rootfs = $(strip $(2))
+define embtk_rootfs_mktarbz2
$(call embtk_pinfo,"Generating TAR.BZ2 file of the rootfs...")
- @cd $(ROOTFS) ; $(FAKEROOT_BIN) -i $(FAKEROOT_ENV_FILE) -- \
- tar cjf rootfs-$(GNU_TARGET)-$(EMBTK_MCU_FLAG).tar.bz2 * ; \
- mv $(BZIP2_ROOTFS) $(EMBTK_GENERATED)/
+ cd $(__embtk_tarbz2_rootdir); \
+ $(FAKEROOT_BIN) -i $(FAKEROOT_ENV_FILE) -- \
+ tar cjf $(__embtk_tarbz2_rootfs) *; \
+ mv $(__embtk_tarbz2_rootfs) $(EMBTK_GENERATED)/
+endef
-build_jffs2_rootfs:
+#
+# JFFS2 rootfs macro
+#
+__embtk_mkjffs2 := $(HOSTTOOLS)/usr/sbin/mkfs.jffs2
+__embtk_sumtool := $(HOSTTOOLS)/usr/sbin/sumtool
+__embtk_jffs2_eraseblksz := $(CONFIG_EMBTK_ROOTFS_HAVE_JFFS2_ERASEBLOCKSIZE)
+__embtk_jffs2_pad := $(CONFIG_EMBTK_ROOTFS_HAVE_JFFS2_ERASEBLOCKSIZE)
+__embtk_jffs2_pagesz := $(CONFIG_EMBTK_ROOTFS_HAVE_JFFS2_PAGESIZE)
+__embtk_jffs2_cleanmarkersz := $(CONFIG_EMBTK_ROOTFS_HAVE_JFFS2_CLEANMARKERSIZE)
+__embtk_jffs2_rootdir = $(strip $(1))
+__embtk_jffs2_rootfs = $(strip $(2))
+define embtk_rootfs_mkjffs2
$(call embtk_pinfo,"Generating JFFS2 rootfs..")
- @$(FAKEROOT_BIN) -i $(FAKEROOT_ENV_FILE) -- \
- $(HOSTTOOLS)/usr/sbin/mkfs.jffs2 \
- --eraseblock=$(CONFIG_EMBTK_ROOTFS_HAVE_JFFS2_ERASEBLOCKSIZE) \
- --pad=$(CONFIG_EMBTK_ROOTFS_HAVE_JFFS2_ERASEBLOCKSIZE) \
- --pagesize=$(CONFIG_EMBTK_ROOTFS_HAVE_JFFS2_PAGESIZE) \
- --cleanmarker=$(CONFIG_EMBTK_ROOTFS_HAVE_JFFS2_CLEANMARKERSIZE) \
- $(if $(CONFIG_EMBTK_TARGET_ARCH_LITTLE_ENDIAN), \
- --little-endian, --big-endian) \
- -n --root=$(ROOTFS) -o $(JFFS2_ROOTFS).temp
- @$(FAKEROOT_BIN) -i $(FAKEROOT_ENV_FILE) -- \
- $(HOSTTOOLS)/usr/sbin/sumtool \
- --eraseblock=$(CONFIG_EMBTK_ROOTFS_HAVE_JFFS2_ERASEBLOCKSIZE) \
- --cleanmarker=$(CONFIG_EMBTK_ROOTFS_HAVE_JFFS2_CLEANMARKERSIZE) \
- $(if $(CONFIG_EMBTK_TARGET_ARCH_LITTLE_ENDIAN), \
- --littleendian, --bigendian) \
- -n -p -i $(JFFS2_ROOTFS).temp -o $(JFFS2_ROOTFS)
- @rm -rf $(JFFS2_ROOTFS).temp
+ $(FAKEROOT_BIN) -i $(FAKEROOT_ENV_FILE) -- \
+ $(__embtk_mkjffs2) \
+ --eraseblock=$(__embtk_jffs2_eraseblksz) \
+ --pad=$(__embtk_jffs2_pad) \
+ --pagesize=$(__embtk_jffs2_pagesz) \
+ --cleanmarker=$(__embtk_jffs2_cleanmarkersz) \
+ $(if $(CONFIG_EMBTK_TARGET_ARCH_LITTLE_ENDIAN), \
+ --little-endian,--big-endian) \
+ -n --root=$(__embtk_jffs2_rootdir) \
+ -o $(__embtk_jffs2_rootfs).temp
+ $(__embtk_sumtool) \
+ --eraseblock=$(__embtk_jffs2_eraseblksz) \
+ --cleanmarker=$(__embtk_jffs2_cleanmarkersz) \
+ $(if $(CONFIG_EMBTK_TARGET_ARCH_LITTLE_ENDIAN), \
+ --littleendian,--bigendian) \
+ -n -p -i $(__embtk_jffs2_rootfs).temp -o $(__embtk_jffs2_rootfs)
+ rm -rf $(__embtk_jffs2_rootfs).temp
+endef
-squashfs_rootfs_opts := $(ROOTFS) $(SQUASHFS_ROOTFS)
-ifeq ($(CONFIG_EMBTK_SQUASHFS_TOOLS_VERSION_3_4),y)
-squashfs_rootfs_opts += $(if $(CONFIG_EMBTK_TARGET_ARCH_LITTLE_ENDIAN),-le,-be)
-endif
-squashfs_rootfs_opts += -all-root
-
-build_squashfs_rootfs:
+#
+# SQUASHFS rootfs macro
+#
+__embtk_mksquashfs := $(MKSQUASHFS_BIN)
+__embtk_squashfs_rootdir = $(strip $(1))
+__embtk_squashfs_rootfs = $(strip $(2))
+define embtk_rootfs_mksquashfs
$(call embtk_pinfo,"Generating SQUASHFS rootfs...")
- $(FAKEROOT_BIN) -i $(FAKEROOT_ENV_FILE) -- \
- $(MKSQUASHFS_BIN) $(squashfs_rootfs_opts)
-
-build_initramfs_archive:
- $(call embtk_pinfo,"Generating cpio archive for INITRAMFS...")
- @$(FAKEROOT_BIN) -i $(FAKEROOT_ENV_FILE) -- \
- $(EMBTK_ROOT)/scripts/mkinitramfs $(ROOTFS) \
- $(if $(EMBTK_ROOTFS_HAVE_INITRAMFS_CPIO_GZIPED),gzip,bzip2) \
- $(INITRAMFS_ROOTFS)
+ $(FAKEROOT_BIN) -i $(FAKEROOT_ENV_FILE) -- \
+ $(__embtk_mksquashfs) \
+ $(__embtk_squashfs_rootdir) $(__embtk_squashfs_rootfs) \
+ $(if $(CONFIG_EMBTK_SQUASHFS_TOOLS_VERSION_3_4), \
+ $(if $(CONFIG_EMBTK_TARGET_ARCH_LITTLE_ENDIAN),-le,-be))\
+ -all-root
+endef
+#
+# CPIO (initramfs) rootfs macro
+#
+__embtk_mkinitramfs := $(EMBTK_ROOT)/scripts/mkinitramfs
+__embtk_initramfs_rootdir = $(strip $(1))
+__embtk_initramfs_rootfs = $(strip $(2))
+define embtk_rootfs_mkinitramfs
+ $(FAKEROOT_BIN) -i $(FAKEROOT_ENV_FILE) -- \
+ $(__embtk_mkinitramfs) \
+ $(__embtk_initramfs_rootdir) \
+ $(if $(EMBTK_ROOTFS_HAVE_INITRAMFS_CPIO_GZIPED),gzip,bzip2) \
+ $(__embtk_initramfs_rootfs)
+endef
diff --git a/mk/packages.mk b/mk/packages.mk
index 2c4a9ec..4c0e0d2 100644
--- a/mk/packages.mk
+++ b/mk/packages.mk
@@ -1,6 +1,6 @@
################################################################################
# Embtoolkit
-# Copyright(C) 2009-2011 Abdoulaye Walsimou GAYE.
+# Copyright(C) 2009-2012 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
@@ -31,8 +31,11 @@ HOSTTOOLS_COMPONENTS-y := mkimage_install pkgconfig_install
include $(EMBTK_ROOT)/mk/mkimage.mk
include $(EMBTK_ROOT)/mk/mtd-utils.mk
include $(EMBTK_ROOT)/mk/pkgconfig.mk
-
+include $(EMBTK_ROOT)/mk/fakeroot.mk
+include $(EMBTK_ROOT)/mk/makedevs.mk
+include $(EMBTK_ROOT)/mk/squashfs.mk
include $(EMBTK_ROOT)/mk/zlib_host.mk
+
HOSTTOOLS_COMPONENTS-$(CONFIG_EMBTK_HOST_HAVE_ZLIB) += zlib_host_install
@@ -80,13 +83,11 @@ include $(EMBTK_ROOT)/packages/busybox/busybox.mk
#
# Targets for host machine
#
+define __embtk_hostpkgs_build
+ $(if $(HOSTTOOLS_COMPONENTS-y),$(MAKE) $(HOSTTOOLS_COMPONENTS-y),true)
+endef
host_packages_build:
-ifeq ($(HOSTTOOLS_COMPONENTS-y),)
-else
- $(call embtk_pinfo,"Building extra packages intended to run \
- on your host machine ...")
- @$(MAKE) $(HOSTTOOLS_COMPONENTS-y)
-endif
+ $(Q)$(__embtk_hostpkgs_build)
#
# Generic implicite rules
diff --git a/mk/rootfs.mk b/mk/rootfs.mk
index dd652a2..80b3515 100644
--- a/mk/rootfs.mk
+++ b/mk/rootfs.mk
@@ -30,27 +30,16 @@ FILESYSTEMS-y :=
#include various filesystems targets
include $(EMBTK_ROOT)/mk/fs.mk
+ROOTFS_JFFS2 := $(EMBTK_GENERATED)/rootfs-$(GNU_TARGET)-$(EMBTK_MCU_FLAG)-$(__embtk_toolchain_clib).jffs2
+ROOTFS_TARBZ2 := rootfs-$(GNU_TARGET)-$(EMBTK_MCU_FLAG)-$(__embtk_toolchain_clib).tar.bz2
+ROOTFS_SQUASHFS := $(EMBTK_GENERATED)/rootfs-$(GNU_TARGET)-$(EMBTK_MCU_FLAG)-$(__embtk_toolchain_clib).squashfs
+ROOTFS_INITRAMFS := $(EMBTK_GENERATED)/rootfs-$(GNU_TARGET)-$(EMBTK_MCU_FLAG)-$(__embtk_toolchain_clib).initramfs
-#host tools in order to build root filesystems: fakeroot and makedevs.
-include $(EMBTK_ROOT)/mk/fakeroot.mk
-include $(EMBTK_ROOT)/mk/makedevs.mk
-ROOTFS_HOSTTOOLS-y += makedevs_install fakeroot_install
+HOSTTOOLS_COMPONENTS-y += makedevs_install fakeroot_install
+HOSTTOOLS_COMPONENTS-$(CONFIG_EMBTK_ROOTFS_HAVE_JFFS2) += mtdutils_host_install
+HOSTTOOLS_COMPONENTS-$(CONFIG_EMBTK_ROOTFS_HAVE_SQUASHFS) += squashfs_tools_install
-#Does CPIO archive for initramfs selected?
-FILESYSTEMS-$(CONFIG_EMBTK_ROOTFS_HAVE_INITRAMFS_CPIO) += build_initramfs_archive
-
-#Does jffs2 filesystem selected?
-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_tools_install
-FILESYSTEMS-$(CONFIG_EMBTK_ROOTFS_HAVE_SQUASHFS) += build_squashfs_rootfs
-ifeq ($(CONFIG_EMBTK_ROOTFS_HAVE_SQUASHFS),y)
-include $(EMBTK_ROOT)/mk/squashfs.mk
-endif
-
-#Files to strip if requested
+# Files to strip if requested
ifeq ($(CONFIG_EMBTK_TARGET_STRIPPED),y)
ROOTFS_STRIPPED_FILES := `find $$ROOTFS/lib -type f -name *.so*`
ROOTFS_STRIPPED_FILES += `find $$ROOTFS/usr/lib -type f -name *.so*`
@@ -74,7 +63,6 @@ endef
define __embtk_rootfs_cleanup
$(foreach pkg-n,$(__embtk_rootfs_pkgs-n),$(MAKE) $(pkg-n)_clean;)
rm -rf $(EMBTK_GENERATED)/rootfs-$(GNU_TARGET)-$(EMBTK_MCU_FLAG)*
- rm -rf $(EMBTK_GENERATED)/initramfs-$(GNU_TARGET)-$(EMBTK_MCU_FLAG)*
endef
define __embtk_rootfs_mkinitpath
@@ -124,16 +112,19 @@ define __embtk_rootfs_build
$(MAKE) $(ROOTFS_HOSTTOOLS-y) $(ROOTFS_COMPONENTS-y)
$(__embtk_rootfs_mkdevnodes)
$(__embtk_rootfs_fill)
- $(MAKE) build_tarbz2_rootfs $(FILESYSTEMS-y)
+ $(call embtk_rootfs_mktarbz2,$(ROOTFS),$(ROOTFS_TARBZ2))
+ $(if $(CONFIG_EMBTK_ROOTFS_HAVE_INITRAMFS_CPIO),
+ $(call embtk_rootfs_mkinitramfs,$(ROOTFS),$(ROOTFS_INITRAMFS)))
+ $(if $(CONFIG_EMBTK_ROOTFS_HAVE_JFFS2),
+ $(call embtk_rootfs_mkjffs2,$(ROOTFS),$(ROOTFS_JFFS2)))
+ $(if $(CONFIG_EMBTK_ROOTFS_HAVE_SQUASHFS),
+ $(call embtk_rootfs_mksquashfs,$(ROOTFS),$(ROOTFS_SQUASHFS)))
rm -rf $(ROOTFS)
$(call embtk_pinfo,"Selected root filesystems built successfully!")
endef
-rootfs_build:
+rootfs_build: host_packages_build
$(Q)$(__embtk_rootfs_build)
-
-# Download target for offline build
-packages_fetch:: $(patsubst %_install,download_%,$(ROOTFS_HOSTTOOLS-y))
else
rootfs_build:
$(call embtk_pinfo,"Build of root filesystem not selected")