kumquat-buildroot/target/ext2/ext2root.mk
Eric Andersen 0a87bc7b58 Patch from gtj -- http://bugs.uclibc.org/view.php?id=39
0000039: Adds options to ext2 filesystem creation

Adds ability to specify block and inode counts, reserved blocks, permissions
squash and device table in the configuration.

Also adds capability to gzip output and to copy the resulting image to a
secondary location like a tftp server's root directory.
2005-01-23 10:53:06 +00:00

114 lines
3.2 KiB
Makefile

#############################################################
#
# genext2fs to build to target ext2 filesystems
#
#############################################################
GENEXT2_DIR=$(BUILD_DIR)/genext2fs-1.3
GENEXT2_SOURCE=genext2fs_1.3.orig.tar.gz
GENEXT2_SITE=http://ftp.debian.org/debian/pool/main/g/genext2fs
$(DL_DIR)/$(GENEXT2_SOURCE):
$(WGET) -P $(DL_DIR) $(GENEXT2_SITE)/$(GENEXT2_SOURCE)
$(GENEXT2_DIR)/.unpacked: $(DL_DIR)/$(GENEXT2_SOURCE)
zcat $(DL_DIR)/$(GENEXT2_SOURCE) | tar -C $(BUILD_DIR) -xvf -
mv $(GENEXT2_DIR).orig $(GENEXT2_DIR)
toolchain/patch-kernel.sh $(GENEXT2_DIR) target/ext2/ genext2fs*.patch
touch $(GENEXT2_DIR)/.unpacked
$(GENEXT2_DIR)/.configured: $(GENEXT2_DIR)/.unpacked
chmod a+x $(GENEXT2_DIR)/configure
(cd $(GENEXT2_DIR); rm -rf config.cache; \
./configure \
--prefix=$(STAGING_DIR) \
);
touch $(GENEXT2_DIR)/.configured
$(GENEXT2_DIR)/genext2fs: $(GENEXT2_DIR)/.configured
$(MAKE) CFLAGS="-Wall -O2 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE \
-D_FILE_OFFSET_BITS=64" -C $(GENEXT2_DIR);
touch -c $(GENEXT2_DIR)/genext2fs
genext2fs: $(GENEXT2_DIR)/genext2fs
#############################################################
#
# Build the ext2 root filesystem image
#
#############################################################
# How much KB we want to add to the calculated size for slack space
GENEXT2_REALSIZE=$(subst total,, $(shell LANG=C du $(TARGET_DIR) -s -c -k | grep total ))
GENEXT2_ADDTOROOTSIZE=$(shell if [ $(GENEXT2_REALSIZE) -ge 20000 ] ; then echo 16384; else echo 16; fi)
GENEXT2_SIZE=$(shell expr $(GENEXT2_REALSIZE) + $(GENEXT2_ADDTOROOTSIZE) + 200)
# We currently add about 400 device nodes, so add that into the total
GENEXT2_INODES=$(shell expr $(shell find $(TARGET_DIR) | wc -l) + 400)
#GENEXT2_SIZE=100000
EXT2_OPTS :=
ifeq ($(strip $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)),0)
EXT2_OPTS += -b $(GENEXT2_SIZE)
else
EXT2_OPTS += -b $(strip $(BR2_TARGET_ROOTFS_EXT2_BLOCKS))
endif
ifeq ($(strip $(BR2_TARGET_ROOTFS_EXT2_INODES)),0)
EXT2_OPTS += -i $(GENEXT2_INODES)
else
EXT2_OPTS += -i $(strip $(BR2_TARGET_ROOTFS_EXT2_INODES))
endif
ifeq ($(strip $(BR2_TARGET_ROOTFS_EXT2_SQUASH)),y)
EXT2_OPTS += -q
endif
ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_RESBLKS)),0)
EXT2_OPTS += -r $(strip $(BR2_TARGET_ROOTFS_EXT2_RESBLKS))
endif
EXT2_DEVFILE := $(strip $(subst ",,$(BR2_TARGET_ROOTFS_EXT2_DEVFILE)))
ifneq ($(EXT2_DEVFILE),)
EXT2_OPTS += -D $(EXT2_DEVFILE)
endif
EXT2_BASE := $(subst ",,$(BR2_TARGET_ROOTFS_EXT2_OUTPUT))
ifeq ($(strip $(BR2_TARGET_ROOTFS_EXT2_GZ)),y)
EXT2_TARGET := $(EXT2_BASE).gz
else
EXT2_TARGET := $(EXT2_BASE)
endif
$(EXT2_BASE): genext2fs
-@find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIP) 2>/dev/null || true;
@rm -rf $(TARGET_DIR)/usr/man
@rm -rf $(TARGET_DIR)/usr/share/man
@rm -rf $(TARGET_DIR)/usr/info
$(GENEXT2_DIR)/genext2fs \
-d $(TARGET_DIR) \
$(EXT2_OPTS) \
$(EXT2_BASE)
$(EXT2_BASE).gz: $(EXT2_BASE)
@gzip --best -fv $(EXT2_BASE)
EXT2_COPYTO := $(strip $(subst ",,$(BR2_TARGET_ROOTFS_EXT2_COPYTO)))
ext2root: $(EXT2_TARGET)
@ls -l $(EXT2_TARGET)
ifneq ($(EXT2_COPYTO),)
@cp -f $(EXT2_TARGET) $(EXT2_COPYTO)
endif
ext2root-source: $(DL_DIR)/$(GENEXT2_SOURCE)
ext2root-clean:
-$(MAKE) -C $(GENEXT2_DIR) clean
ext2root-dirclean:
rm -rf $(GENEXT2_DIR)