From ef889bde7fa5239184ffc24dde29cd3612aeaea4 Mon Sep 17 00:00:00 2001 From: Abdoulaye Walsimou Gaye Date: Wed, 25 Jan 2012 00:19:51 +0100 Subject: Build system: root filesystem generation: create/use generic macros Signed-off-by: Abdoulaye Walsimou Gaye --- mk/buildsystem.mk | 3 +- mk/fs.mk | 120 +++++++++++++++++++++++++++++++----------------------- mk/packages.mk | 17 ++++---- mk/rootfs.mk | 41 ++++++++----------- 4 files changed, 96 insertions(+), 85 deletions(-) (limited to 'mk') 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 # \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") -- cgit v1.2.3