diff options
| -rw-r--r-- | package/mtd/Config.in | 99 | ||||
| -rw-r--r-- | package/mtd/Makefile.in | 3 | ||||
| -rw-r--r-- | package/mtd/mtd.mk | 98 | ||||
| -rw-r--r-- | target/jffs2/Config.in | 58 | ||||
| -rw-r--r-- | target/jffs2/jffs2root.mk | 73 | 
5 files changed, 302 insertions, 29 deletions
diff --git a/package/mtd/Config.in b/package/mtd/Config.in new file mode 100644 index 000000000..a6cd22d62 --- /dev/null +++ b/package/mtd/Config.in @@ -0,0 +1,99 @@ + +menuconfig BR2_PACKAGE_MTD +	bool "mtd/jffs2 utilities" +	default n +	help +	  Build mtd/jffs utilities + +config BR2_PACKAGE_MTD_FLASH_ERASE +	bool "flash_erase" +	default y +	depends on BR2_PACKAGE_MTD +	 +config BR2_PACKAGE_MTD_FLASH_ERASEASLL +	bool "flash_eraseall" +	default y +	depends on BR2_PACKAGE_MTD + +config BR2_PACKAGE_MTD_FLASH_INFO +	bool "flash_info" +	default y +	depends on BR2_PACKAGE_MTD + +config BR2_PACKAGE_MTD_FLASH_LOCK +	bool "flash_loco" +	default y +	depends on BR2_PACKAGE_MTD + +config BR2_PACKAGE_MTD_FLASH_UNLOCK +	bool "flash_unlock" +	default y +	depends on BR2_PACKAGE_MTD + +config BR2_PACKAGE_MTD_FLASHCP +	bool "flashcp" +	default y +	depends on BR2_PACKAGE_MTD + +config BR2_PACKAGE_MTD_JFFS2DUMP +	bool "jffs2dump" +	default y +	depends on BR2_PACKAGE_MTD + +config BR2_PACKAGE_MTD_FTL_CHECK +	bool "ftl_check" +	default y +	depends on BR2_PACKAGE_MTD + +config BR2_PACKAGE_MTD_FTL_FORMAT +	bool "ftl_format" +	default y +	depends on BR2_PACKAGE_MTD +	 +config BR2_PACKAGE_MTD_NFTL_FORMAT +	bool "nftl_format" +	default y +	depends on BR2_PACKAGE_MTD +	 +config BR2_PACKAGE_MTD_NFTLDUMP +	bool "nftldump" +	default y +	depends on BR2_PACKAGE_MTD +	 +config BR2_PACKAGE_MTD_MKFSJFFS2 +	bool "mkfs.jffs2" +	default y +	depends on BR2_PACKAGE_MTD +	 +config BR2_PACKAGE_MTD_MKFSJFFS +	bool "mkfs.jffs" +	default y +	depends on BR2_PACKAGE_MTD + +config BR2_PACKAGE_MTD_NANDDUMP +	bool "nanddump" +	default y +	depends on BR2_PACKAGE_MTD +	 +config BR2_PACKAGE_MTD_NANDWRITE +	bool "nandwrite" +	default y +	depends on BR2_PACKAGE_MTD +	 +config BR2_PACKAGE_MTD_MTD_DEBUG +	bool "mtd_debug" +	default y +	depends on BR2_PACKAGE_MTD +	 +config BR2_PACKAGE_MTD_DOCFDISK +	bool "docfdisk" +	default y +	depends on BR2_PACKAGE_MTD +	 +config BR2_PACKAGE_MTD_DOC_LOADBIOS +	bool "doc_loadbios" +	default y +	depends on BR2_PACKAGE_MTD +	 + +	 diff --git a/package/mtd/Makefile.in b/package/mtd/Makefile.in new file mode 100644 index 000000000..d8c9cd7aa --- /dev/null +++ b/package/mtd/Makefile.in @@ -0,0 +1,3 @@ +ifeq ($(strip $(BR2_PACKAGE_MTD)),y) +TARGETS+=mtd +endif diff --git a/package/mtd/mtd.mk b/package/mtd/mtd.mk new file mode 100644 index 000000000..ea1cf31f1 --- /dev/null +++ b/package/mtd/mtd.mk @@ -0,0 +1,98 @@ +############################################################# +# +# mtd provides jffs2 utilities +# +############################################################# +MTD_SOURCE=mtd_20041007.orig.tar.gz +MTD_SITE=http://ftp.debian.org/debian/pool/main/m/mtd + +############################################################# +# +# Build mkfs.jffs2 for use on the local host system if +# needed by target/jffs2root. +# If /sbin/mkfs.jffs2 already exists, no make is needed +# +############################################################# +MKFS_JFFS2=$(shell which mkfs.jffs2 2>/dev/null || echo $(STAGING_DIR)/bin/mkfs.jffs2) + +MTD_HOST_DIR	:=	$(TOOL_BUILD_DIR)/mtd-20041007.orig + +$(DL_DIR)/$(MTD_SOURCE): +	$(WGET) -P $(DL_DIR) $(MTD_SITE)/$(MTD_SOURCE) + +$(MTD_HOST_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE) +	zcat $(DL_DIR)/$(MTD_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) - +	touch $(MTD_HOST_DIR)/.unpacked + +$(MTD_HOST_DIR)/util/mkfs.jffs2: $(MTD_HOST_DIR)/.unpacked +	CFLAGS=-I$(LINUX_HEADERS_DIR)/include \ +		$(MAKE) LINUXDIR=$(LINUX_DIR) -C $(MTD_HOST_DIR)/util mkfs.jffs2 +	 +$(STAGING_DIR)/bin/mkfs.jffs2:	$(MTD_HOST_DIR)/util/mkfs.jffs2 +	cp -f $(MTD_HOST_DIR)/util/mkfs.jffs2 $(STAGING_DIR)/bin +	 +mtd-host: $(MKFS_JFFS2) + +mtd-host-source: $(DL_DIR)/$(MTD_SOURCE) + +mtd-host-clean: +	-$(MAKE) -C $(MTD_HOST_DIR) clean + +mtd-host-dirclean: +	rm -rf $(MTD_HOST_DIR) + +############################################################# +# +# build mtd for use on the target system +# +############################################################# +MTD_DIR:=$(BUILD_DIR)/mtd-20041007.orig + +$(MTD_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE) +	zcat $(DL_DIR)/$(MTD_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - +	touch $(MTD_DIR)/.unpacked + +MTD_TARGETS_n := +MTD_TARGETS_y := + +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_ERASE) 		+= flash_erase +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_ERASEALL) 	+= flash_eraseall +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_INFO) 		+= flash_info +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_LOCK) 		+= flash_lock +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_UNLOCK)  	+= flash_unlock +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASHCP) 			+= flashcp +MTD_TARGETS_$(BR2_PACKAGE_MTD_MKFSJFFS2)  		+= mkfs.jffs2 +MTD_TARGETS_$(BR2_PACKAGE_MTD_MKFSJFFS) 			+= mkfs.jffs +MTD_TARGETS_$(BR2_PACKAGE_MTD_JFFS2DUMP)  		+= jffs2dump +MTD_TARGETS_$(BR2_PACKAGE_MTD_FTL_CHECK)  		+= ftl_check +MTD_TARGETS_$(BR2_PACKAGE_MTD_FTL_FORMAT) 		+= ftl_format +MTD_TARGETS_$(BR2_PACKAGE_MTD_NFTLDUMP) 			+= nftldump +MTD_TARGETS_$(BR2_PACKAGE_MTD_NFTL_FORMAT) 		+= nftl_format +MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDDUMPP)  		+= nanddump +MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDWRITE)  		+= nandwrite +MTD_TARGETS_$(BR2_PACKAGE_MTD_MTD_DEBUG)  		+= mtd_debug +MTD_TARGETS_$(BR2_PACKAGE_MTD_DOCFDISK) 			+= docfdisk +MTD_TARGETS_$(BR2_PACKAGE_MTD_DOC_LOADBIOS)  	+= doc_loadbios + +MTD_BUILD_TARGETS := $(addprefix $(MTD_DIR)/util/, $(MTD_TARGETS_y)) + +$(MTD_BUILD_TARGETS): $(MTD_DIR)/.unpacked +	CFLAGS="-I$(LINUX_HEADERS_DIR)/include $(TARGET_CFLAGS)" \ +	$(MAKE)	CC=$(TARGET_CC) LINUXDIR=$(LINUX_DIR) -C $(MTD_DIR)/util + +MTD_TARGETS := $(addprefix $(TARGET_DIR)/usr/sbin/, $(MTD_TARGETS_y)) + +$(MTD_TARGETS): $(TARGET_DIR)/usr/sbin/% : $(MTD_DIR)/util/% +	cp -f $< $@ + +mtd: $(MTD_TARGETS) + +mtd-source: $(DL_DIR)/$(MTD_SOURCE) + +mtd-clean: +	-$(MAKE) -C $(MTD_DIR) clean +	 +mtd-dirclean: +	rm -rf $(MTD_DIR) + + diff --git a/target/jffs2/Config.in b/target/jffs2/Config.in index 0d79dd1ff..4f5edac4c 100644 --- a/target/jffs2/Config.in +++ b/target/jffs2/Config.in @@ -1,6 +1,60 @@ -config BR2_TARGET_ROOTFS_JFFS2 -	bool "jffs2 root filesystem for the target device" + +menuconfig BR2_TARGET_ROOTFS_JFFS2 +	bool "Build jffs2 root filesystem for the target device"  	default n  	help  	  Build a jffs2 root filesystem +config BR2_TARGET_ROOTFS_JFFS2_EBSIZE +	hex "Erase block size" +	depends on BR2_TARGET_ROOTFS_JFFS2 +	default 0x20000 +	 +config BR2_TARGET_ROOTFS_JFFS2_PAD +	bool "Pad output" +	depends on BR2_TARGET_ROOTFS_JFFS2 +	 +config BR2_TARGET_ROOTFS_JFFS2_PADSIZE +	hex "Pad output size (0x0 = to end of EB)" +	depends on BR2_TARGET_ROOTFS_JFFS2_PAD +	default 0x0 +	help +		Set to 0x0 to pad to end of erase block.	 +	 +choice +	prompt "Endianess" +	default BR2_TARGET_ROOTFS_JFFS2_LE +	depends on BR2_TARGET_ROOTFS_JFFS2 +	 +config BR2_TARGET_ROOTFS_JFFS2_LE +	bool "little-endian" +	depends on 	BR2_TARGET_ROOTFS_JFFS2 +	 +config BR2_TARGET_ROOTFS_JFFS2_BE +	bool "big-endian" +	depends on 	BR2_TARGET_ROOTFS_JFFS2 +	 +endchoice + +config BR2_TARGET_ROOTFS_JFFS2_SQUASH +	bool "Make all files be owned by root" +	depends on 	BR2_TARGET_ROOTFS_JFFS2 + +config BR2_TARGET_ROOTFS_JFFS2_DEVFILE +	string "Location of device table file" +	depends on BR2_TARGET_ROOTFS_JFFS2 +	default "target/default/device_table.txt" +	 +config BR2_TARGET_ROOTFS_JFFS2_OUTPUT +	string "Output File" +	depends on BR2_TARGET_ROOTFS_JFFS2 +	default "$(IMAGE).jffs2" +	 +config BR2_TARGET_ROOTFS_JFFS2_COPYTO +	string "also copy the image to..." +	depends on 	BR2_TARGET_ROOTFS_JFFS2 +	default "" +	help +		Copies the resulting image to a secondary location. +		 +	 diff --git a/target/jffs2/jffs2root.mk b/target/jffs2/jffs2root.mk index ee23d9b41..3e64a62d5 100644 --- a/target/jffs2/jffs2root.mk +++ b/target/jffs2/jffs2root.mk @@ -1,49 +1,68 @@  #############################################################  # -# mtd provides us with mkfs.jffs2, to target JFFS2 filesystems +# Build the jffs2 root filesystem image  #  ############################################################# -MTD_DIR:=$(BUILD_DIR)/mtd-20011217 -MTD_SOURCE=mtd_20011217.orig.tar.gz -MTD_SITE=http://ftp.debian.org/debian/pool/main/m/mtd -MKFS_JFFS2=$(shell which mkfs.jffs2 2>/dev/null || echo $(MTD_DIR)/util/mkfs.jffs2) +JFFS2_OPTS := -e $(strip $(BR2_TARGET_ROOTFS_JFFS2_EBSIZE)) -$(DL_DIR)/$(MTD_SOURCE): -	$(WGET) -P $(DL_DIR) $(MTD_SITE)/$(MTD_SOURCE) +ifeq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_PAD)),y) +JFFS2_OPTS += -p  +ifneq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE)),0x0) +JFFS2_OPTS += $(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE)) +endif +endif -$(MTD_DIR)/.unpacked: $(DL_DIR)/$(MTD_SOURCE) -	zcat $(DL_DIR)/$(MTD_SOURCE) | tar -C $(BUILD_DIR) -xvf - -	touch $(MTD_DIR)/.unpacked +ifeq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_SQUASH)),y) +JFFS2_OPTS += -q +endif -$(MTD_DIR)/util/mkfs.jffs2: $(MTD_DIR)/.unpacked -	CFLAGS=-I$(LINUX_HEADERS_DIR)/include $(MAKE) LINUXDIR=$(LINUX_DIR) -C $(MTD_DIR)/util +ifeq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_LE)),y) +JFFS2_OPTS += -l +endif -mtd: $(MKFS_JFFS2) +ifeq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_BE)),y) +JFFS2_OPTS += -b +endif +JFFS2_DEVFILE = $(strip $(subst ",,$(BR2_TARGET_ROOTFS_JFFS2_DEVFILE))) +ifneq ($(JFFS2_DEVFILE),) +JFFS2_OPTS += -D $(JFFS2_DEVFILE) +endif + +JFFS2_TARGET := $(subst ",,$(BR2_TARGET_ROOTFS_JFFS2_OUTPUT)) -#############################################################  # -# Build the jffs2 root filesystem image +# mtd-host is a dependency which builds a local copy of mkfs.jffs2 if it's needed. +# the actual build is done from package/mtd/mtd.mk and it sets the +# value of MKFS_JFFS2 to either the previously installed copy or the one +# just built.  # -############################################################# - -jffs2root: mtd -	#-@find $(TARGET_DIR)/lib -type f -name \*.so\* | xargs $(STRIP) --strip-unneeded 2>/dev/null || true; +$(JFFS2_TARGET): mtd-host  	-@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 -	$(MKFS_JFFS2) --pad --little-endian --squash -e 0x20000 \ -		-D target/default/device_table.txt -d $(TARGET_DIR) \ -		-o $(IMAGE).jffs2 +	$(MKFS_JFFS2) \ +		$(JFFS2_OPTS) \ +		-d $(BUILD_DIR)/root \ +		-o $(JFFS2_TARGET) +	@ls -l $(JFFS2_TARGET) + +JFFS2_COPYTO := $(strip $(subst ",,$(BR2_TARGET_ROOTFS_JFFS2_COPYTO))) + +jffs2root: $(JFFS2_TARGET) +ifneq ($(JFFS2_COPYTO),) +	@cp -f $(JFFS2_TARGET) $(JFFS2_COPYTO) +endif	 -jffs2root-source: $(DL_DIR)/$(MTD_SOURCE) +jffs2root-source: mtd-host-source -jffs2root-clean: -	-$(MAKE) -C $(MTD_DIR) clean +jffs2root-clean: mtd-host-clean +	-rm -f $(JFFS2_TARGET) -jffs2root-dirclean: -	rm -rf $(MTD_DIR) +jffs2root-dirclean: mtd-host-dirclean +	-rm -f $(JFFS2_TARGET)  | 
