kumquat-buildroot/target/squashfs/squashfsroot.mk
Peter Korsgaard 7092bd901d squashfs: add v4.0 support and version selection
Squashfs 4.0 is needed to create file systems for the mainline squashfs
version (mainline from 2.6.29). This is unfortunately not compatible with
the old 3.x version and the external kernel patches, so add a choice
between the 2 versions.
2009-04-06 09:21:36 +00:00

95 lines
3.3 KiB
Makefile

#############################################################
#
# mksquashfs to build to target squashfs filesystems
#
#############################################################
SQUASHFS_VERSION:=$(strip $(subst ",,$(BR2_TARGET_ROOTFS_SQUASHFS_VERSION)))
#"))
SQUASHFS_DIR:=$(BUILD_DIR)/squashfs$(SQUASHFS_VERSION)
SQUASHFS_SOURCE:=squashfs$(SQUASHFS_VERSION).tar.gz
SQUASHFS_SITE:=http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/squashfs
SQUASHFS_CAT:=$(ZCAT)
$(DL_DIR)/$(SQUASHFS_SOURCE):
$(call DOWNLOAD,$(SQUASHFS_SITE),$(SQUASHFS_SOURCE))
$(SQUASHFS_DIR)/.unpacked: $(DL_DIR)/$(SQUASHFS_SOURCE) #$(SQUASHFS_PATCH)
$(SQUASHFS_CAT) $(DL_DIR)/$(SQUASHFS_SOURCE) | tar -C $(BUILD_DIR) -xvf -
toolchain/patch-kernel.sh $(SQUASHFS_DIR) target/squashfs/ squashfs\*.patch
touch $@
$(SQUASHFS_DIR)/squashfs-tools/mksquashfs: $(SQUASHFS_DIR)/.unpacked
$(MAKE) -C $(SQUASHFS_DIR)/squashfs-tools
squashfs: $(SQUASHFS_DIR)/squashfs-tools/mksquashfs
squashfs-source: $(DL_DIR)/$(SQUASHFS_SOURCE)
squashfs-clean:
-$(MAKE) -C $(SQUASHFS_DIR)/squashfs-tools clean
squashfs-dirclean:
rm -rf $(SQUASHFS_DIR)
#############################################################
#
# Build the squashfs root filesystem image
#
#############################################################
ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS_3),y)
# 4.x is always little endian
ifeq ($(BR2_ENDIAN),"BIG")
SQUASHFS_ENDIANNESS=-be
else
SQUASHFS_ENDIANNESS=-le
endif
endif
SQUASHFS_TARGET:=$(IMAGE).squashfs
squashfsroot: host-fakeroot makedevs squashfs
-@find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIPCMD) 2>/dev/null || true
ifneq ($(BR2_HAVE_MANPAGES),y)
@rm -rf $(TARGET_DIR)/usr/man
endif
ifneq ($(BR2_HAVE_INFOPAGES),y)
@rm -rf $(TARGET_DIR)/usr/info
endif
$(if $(TARGET_LDCONFIG),test -x $(TARGET_LDCONFIG) && $(TARGET_LDCONFIG) -r $(TARGET_DIR) 2>/dev/null)
# Use fakeroot to pretend all target binaries are owned by root
rm -f $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(SQUASHFS_TARGET))
touch $(PROJECT_BUILD_DIR)/.fakeroot.00000
cat $(PROJECT_BUILD_DIR)/.fakeroot* > $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(SQUASHFS_TARGET))
echo "chown -R 0:0 $(TARGET_DIR)" >> $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(SQUASHFS_TARGET))
ifneq ($(TARGET_DEVICE_TABLE),)
# Use fakeroot to pretend to create all needed device nodes
echo "$(HOST_DIR)/usr/bin/makedevs -d $(TARGET_DEVICE_TABLE) $(TARGET_DIR)" \
>> $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(SQUASHFS_TARGET))
endif
# Use fakeroot so mksquashfs believes the previous fakery
echo "$(SQUASHFS_DIR)/squashfs-tools/mksquashfs " \
"$(TARGET_DIR) $(SQUASHFS_TARGET) " \
"-noappend $(SQUASHFS_ENDIANNESS)" \
>> $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(SQUASHFS_TARGET))
chmod a+x $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(SQUASHFS_TARGET))
$(HOST_DIR)/usr/bin/fakeroot -- $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(SQUASHFS_TARGET))
chmod 0644 $(SQUASHFS_TARGET)
-@rm -f $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(SQUASHFS_TARGET))
squashfsroot-source: squashfs-source
squashfsroot-clean:
-$(MAKE) -C $(SQUASHFS_DIR) clean
squashfsroot-dirclean:
rm -rf $(SQUASHFS_DIR)
#############################################################
#
# Toplevel Makefile options
#
#############################################################
ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS),y)
TARGETS+=squashfsroot
endif