#
#	Makefile -- Build instructions for AtmarkTechno/Armadillo-J.Jffs2
#

ROMFSIMG = $(IMAGEDIR)/romfs.img
IMAGE    = $(IMAGEDIR)/image.bin
TOOLS    = $(ROOTDIR)/tools

ROMFS_DIRS = bin dev etc home lib mnt proc usr var root etc/dhcpc home/guest home/guest/pub

all:

clean:

romfs:
	rm -rf $(ROMFSDIR) || mkdir -p $(ROMFSDIR)
	for i in $(ROMFS_DIRS); do \
		[ -d $(ROMFSDIR)/$$i ] || mkdir -p $(ROMFSDIR)/$$i; \
	done
	$(ROMFSINST) -s /var/tmp /tmp
	$(ROMFSINST) -s /bin /sbin
	$(ROMFSINST) /etc
	$(ROMFSINST) /home

	$(ROMFSINST) ../../Generic/romfs/etc/services /etc/services

image:
	@make image_S-type_2M
#	@make image_C-type_2M
#	@make image_C-type_4M

image_S-type_2M:
	[ -d $(IMAGEDIR) ] || mkdir -p $(IMAGEDIR)
	$(TOOLS)/mkfs.jffs2 -U --pad=1376256 -D device_table.txt \
		-r $(ROMFSDIR) -o $(ROMFSIMG)
	$(CROSS_COMPILE)objcopy --output-target=binary --gap-fill=0 \
		$(ROOTDIR)/$(LINUXDIR)/linux $(IMAGE)
	gzip -f $(IMAGE) 
	mv -f $(IMAGE).gz $(IMAGE)

	@ USERMAX=1376256; KERNELMAX=458752; \
	usersize=`wc -c $(ROMFSIMG) | awk '{ print $$1 }'`; \
	kernelsize=`wc -c $(IMAGE) | awk '{ print $$1 }'`; \
	if [ $$usersize -gt $$USERMAX ] || [ $$kernelsize -gt $$KERNELMAX ]; then \
	echo "[ERROR!] Created kernel or userland size is TOO BIG"; \
	echo "userland size: $$usersize, max : $$USERMAX"; \
	echo "kernal size: $$kernelsize, max : $$KERNELMAX"; \
	exit 1; fi

	dd if=$(ROMFSIMG) of=$(IMAGE) bs=1024 seek=448
	-$(TOOLS)/cksum -b -o 2 $(IMAGE) | cat $(IMAGE) - > $(IMAGE).cksum


image_C-type_2M:
	[ -d $(IMAGEDIR) ] || mkdir -p $(IMAGEDIR)
	$(TOOLS)/mkfs.jffs2 -U --pad=1572864 -D device_table.txt \
		-r $(ROMFSDIR) -o $(ROMFSIMG)
	$(CROSS_COMPILE)objcopy --output-target=binary --gap-fill=0 \
		$(ROOTDIR)/$(LINUXDIR)/linux $(IMAGE)
	gzip -f $(IMAGE) 
	mv -f $(IMAGE).gz $(IMAGE)

	@ USERMAX=1572864; KERNELMAX=458752; \
	usersize=`wc -c $(ROMFSIMG) | awk '{ print $$1 }'`; \
	kernelsize=`wc -c $(IMAGE) | awk '{ print $$1 }'`; \
	if [ $$usersize -gt $$USERMAX ] || [ $$kernelsize -gt $$KERNELMAX ]; then \
	echo "[ERROR!] Created kernel or userland size is TOO BIG"; \
	echo "userland size: $$usersize, max : $$USERMAX"; \
	echo "kernal size: $$kernelsize, max : $$KERNELMAX"; \
	exit 1; fi

	dd if=$(ROMFSIMG) of=$(IMAGE) bs=1024 seek=448
	-$(TOOLS)/cksum -b -o 2 $(IMAGE) | cat $(IMAGE) - > $(IMAGE).cksum

image_C-type_4M:
	[ -d $(IMAGEDIR) ] || mkdir -p $(IMAGEDIR)
	$(TOOLS)/mkfs.jffs2 -U --pad=3670016 -D device_table.txt \
		-r $(ROMFSDIR) -o $(ROMFSIMG)
	$(CROSS_COMPILE)objcopy --output-target=binary --gap-fill=0 \
		$(ROOTDIR)/$(LINUXDIR)/linux $(IMAGE)
	gzip -f $(IMAGE) 
	mv -f $(IMAGE).gz $(IMAGE)

	@ USERMAX=3670016; KERNELMAX=458752; \
	usersize=`wc -c $(ROMFSIMG) | awk '{ print $$1 }'`; \
	kernelsize=`wc -c $(IMAGE) | awk '{ print $$1 }'`; \
	if [ $$usersize -gt $$USERMAX ] || [ $$kernelsize -gt $$KERNELMAX ]; then \
	echo "[ERROR!] Created kernel or userland size is TOO BIG"; \
	echo "userland size: $$usersize, max : $$USERMAX"; \
	echo "kernal size: $$kernelsize, max : $$KERNELMAX"; \
	exit 1; fi

	dd if=$(ROMFSIMG) of=$(IMAGE) bs=1024 seek=448
	-$(TOOLS)/cksum -b -o 2 $(IMAGE) | cat $(IMAGE) - > $(IMAGE).cksum
