# $FreeWRT$
#-
# This file is part of the FreeWRT project. FreeWRT is copyrighted
# material, please see the LICENCE file in the top-level directory
# or at http://www.freewrt.org/license for details.

include $(TOPDIR)/rules.mk

KDIR:=$(BUILD_DIR)/linux-$(KERNEL)-$(BOARD)

# compile and install loader
lzma-loader-clean:
	$(MAKE) -C lzma-loader clean

lzma-loader-prepare:
	$(MAKE) -C lzma-loader prepare

lzma-loader-compile: lzma-loader-prepare
	$(MAKE) -C lzma-loader compile

$(KDIR)/vmlinux.lzma: $(KDIR)/vmlinux
	cat $^ | $(STAGING_DIR)/bin/lzma e -si -so -eos -lc1 -lp2 -pb2 > $@ || (rm -f $@ && false)

$(KDIR)/loader.tmp.gz: lzma-loader-compile

install-prepare:
	find $(KDIR)/root -type f ! -perm -0100 | xargs chmod 0644
	find $(KDIR)/root -type f -perm -0100 | xargs chmod 0755
	find $(KDIR)/root -type d | xargs chmod 0755
	chmod 4755 $(KDIR)/root/bin/busybox
	mkdir -p $(KDIR)/root/tmp
	chmod 0777 $(KDIR)/root/tmp

ifneq ($(FWRT_BIG_ENDIAN),y)
JFFS2_OPTS:=	--little-endian --pad --squash-uid
SQUASHFS_OPTS:=	-le -nopad -noappend -root-owned 
else
JFFS2_OPTS:=	--big-endian --pad --squash-uid
SQUASHFS_OPTS:=	-be -nopad -noappend -root-owned
endif
ifeq ($(FS),jffs2)
SUFFIX:=development
endif
ifeq ($(FS),squashfs)
SUFFIX:=production
endif

ifeq ($(FWRT_TARGET_ROOTFS_JFFS2),y)
$(KDIR)/root.jffs2-64k:
	rm -f $(KDIR)/root.jffs2-64k
	$(STAGING_DIR)/bin/mkfs.jffs2 $(JFFS2_OPTS) -e 0x10000 \
		-o $(KDIR)/root.jffs2-64k -d $(KDIR)/root $(MAKE_TRACE)
$(KDIR)/root.jffs2-128k:
	rm -f $(KDIR)/root.jffs2-128k
	$(STAGING_DIR)/bin/mkfs.jffs2 $(JFFS2_OPTS) -e 0x20000 \
		-o $(KDIR)/root.jffs2-128k -d $(KDIR)/root $(MAKE_TRACE)
endif

ifeq ($(FWRT_TARGET_ROOTFS_SQUASHFS_OVERLAY),y)
$(KDIR)/root.squashfs:
	rm -f $(KDIR)/root.squashfs
	$(STAGING_DIR)/bin/mksquashfs-lzma $(KDIR)/root \
		$(KDIR)/root.squashfs $(SQUASHFS_OPTS) $(MAKE_TRACE)
endif


$(KDIR)/loader.tmp.gz:
	$(CP) $(BUILD_DIR)/loader.gz $@
	echo -ne "\\x00" >> $@

ifeq ($(FS),squashfs)
$(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS).trx: $(KDIR)/loader.tmp.gz $(KDIR)/root.$(FS) $(KDIR)/vmlinux.lzma
	$(STAGING_DIR)/bin/trx -o $@ $(KDIR)/loader.tmp.gz $(KDIR)/vmlinux.lzma $(TRXALIGN) $(KDIR)/root.$(FS) -a 1024 $(MAKE_TRACE)
endif

ifeq ($(FS),jffs2)
$(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS)-64k.trx: $(KDIR)/loader.tmp.gz $(KDIR)/root.$(FS)-64k $(KDIR)/vmlinux.lzma
	$(STAGING_DIR)/bin/trx -o $@ $(KDIR)/loader.tmp.gz $(KDIR)/vmlinux.lzma $(TRXALIGN) $(KDIR)/root.$(FS)-64k -a 0x10000 $(MAKE_TRACE)

$(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS)-128k.trx: $(KDIR)/loader.tmp.gz $(KDIR)/root.$(FS)-128k $(KDIR)/vmlinux.lzma
	$(STAGING_DIR)/bin/trx -o $@ $(KDIR)/loader.tmp.gz $(KDIR)/vmlinux.lzma $(TRXALIGN) $(KDIR)/root.$(FS)-128k -a 0x20000 $(MAKE_TRACE)
endif

ifeq ($(FWRT_LINUX_2_4_BRCM_ASUS_WL500G),y)
ifeq ($(FS),jffs2)
MTD_ERASESIZE:=-64k
endif
$(BIN_DIR)/freewrt-asus-wl500g-$(BOARD)-$(KERNEL)-$(SUFFIX).bin: $(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS)$(MTD_ERASESIZE).trx
	@cp $< $@
install: $(BIN_DIR)/freewrt-asus-wl500g-$(BOARD)-$(KERNEL)-$(SUFFIX).bin
endif

ifeq ($(FWRT_LINUX_2_4_BRCM_ASUS_WL500G_DELUXE),y)
ifeq ($(FS),jffs2)
MTD_ERASESIZE:=-64k
endif
$(BIN_DIR)/freewrt-asus-wl500g-deluxe-$(BOARD)-$(KERNEL)-$(SUFFIX).bin: $(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS)$(MTD_ERASESIZE).trx
	@cp $< $@
install: $(BIN_DIR)/freewrt-asus-wl500g-deluxe-$(BOARD)-$(KERNEL)-$(SUFFIX).bin
endif

ifeq ($(FWRT_LINUX_2_4_BRCM_ASUS_WL500G_PREMIUM),y)
ifeq ($(FS),jffs2)
MTD_ERASESIZE:=-64k
endif
$(BIN_DIR)/freewrt-asus-wl500g-premium-$(BOARD)-$(KERNEL)-$(SUFFIX).bin: $(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS)$(MTD_ERASESIZE).trx
	@cp $< $@
install: $(BIN_DIR)/freewrt-asus-wl500g-premium-$(BOARD)-$(KERNEL)-$(SUFFIX).bin
endif

ifeq ($(FWRT_LINUX_2_4_BRCM_LINKSYS_WRT54G_1_0),y)
ifeq ($(FS),jffs2)
MTD_ERASESIZE:=-64k
endif
$(BIN_DIR)/freewrt-linksys-wrt54g-v1.0-$(BOARD)-$(KERNEL)-$(SUFFIX).bin: $(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS)$(MTD_ERASESIZE).trx
	$(STAGING_DIR)/bin/addpattern -4 -p W54G -v v4.20.6 -i $< -o $@ -g
install: $(BIN_DIR)/freewrt-linksys-wrt54g-v1.0-$(BOARD)-$(KERNEL)-$(SUFFIX).bin
endif

ifeq ($(FWRT_LINUX_2_4_BRCM_LINKSYS_WRT54G_1_1),y)
ifeq ($(FS),jffs2)
MTD_ERASESIZE:=-64k
endif
$(BIN_DIR)/freewrt-linksys-wrt54g-v1.1-$(BOARD)-$(KERNEL)-$(SUFFIX).bin: $(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS)$(MTD_ERASESIZE).trx
	$(STAGING_DIR)/bin/addpattern -4 -p W54G -v v4.20.6 -i $< -o $@ -g
install: $(BIN_DIR)/freewrt-linksys-wrt54g-v1.1-$(BOARD)-$(KERNEL)-$(SUFFIX).bin
endif

ifeq ($(FWRT_LINUX_2_4_BRCM_LINKSYS_WRT54G_2_0),y)
ifeq ($(FS),jffs2)
MTD_ERASESIZE:=-64k
endif
$(BIN_DIR)/freewrt-linksys-wrt54g-v2.0-$(BOARD)-$(KERNEL)-$(SUFFIX).bin: $(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS)$(MTD_ERASESIZE).trx
	$(STAGING_DIR)/bin/addpattern -4 -p W54G -v v4.20.6 -i $< -o $@ -g
install: $(BIN_DIR)/freewrt-linksys-wrt54g-v2.0-$(BOARD)-$(KERNEL)-$(SUFFIX).bin
endif

ifeq ($(FWRT_LINUX_2_4_BRCM_LINKSYS_WRT54G_2_2),y)
ifeq ($(FS),jffs2)
MTD_ERASESIZE:=-64k
endif
$(BIN_DIR)/freewrt-linksys-wrt54g-v2.2-$(BOARD)-$(KERNEL)-$(SUFFIX).bin: $(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS)$(MTD_ERASESIZE).trx
	$(STAGING_DIR)/bin/addpattern -4 -p W54G -v v4.20.6 -i $< -o $@ -g
install: $(BIN_DIR)/freewrt-linksys-wrt54g-v2.2-$(BOARD)-$(KERNEL)-$(SUFFIX).bin
endif

ifeq ($(FWRT_LINUX_2_4_BRCM_LINKSYS_WRT54G_3),y)
ifeq ($(FS),jffs2)
MTD_ERASESIZE:=-64k
endif
$(BIN_DIR)/freewrt-linksys-wrt54g-v3-$(BOARD)-$(KERNEL)-$(SUFFIX).bin: $(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS)$(MTD_ERASESIZE).trx
	$(STAGING_DIR)/bin/addpattern -4 -p W54G -v v4.20.6 -i $< -o $@ -g
install: $(BIN_DIR)/freewrt-linksys-wrt54g-v3-$(BOARD)-$(KERNEL)-$(SUFFIX).bin
endif

ifeq ($(FWRT_LINUX_2_4_BRCM_LINKSYS_WRT54GL),y)
ifeq ($(FS),jffs2)
MTD_ERASESIZE:=-64k
endif
$(BIN_DIR)/freewrt-linksys-wrt54gl-$(BOARD)-$(KERNEL)-$(SUFFIX).bin: $(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS)$(MTD_ERASESIZE).trx
	$(STAGING_DIR)/bin/addpattern -4 -p W54G -v v4.20.6 -i $< -o $@ -g
install: $(BIN_DIR)/freewrt-linksys-wrt54gl-$(BOARD)-$(KERNEL)-$(SUFFIX).bin
endif
ifeq ($(FWRT_LINUX_2_4_BRCM_LINKSYS_WRT54G3G),y)
ifeq ($(FS),jffs2)
MTD_ERASESIZE:=-64k
endif
$(BIN_DIR)/freewrt-linksys-wrt54g3g-$(BOARD)-$(KERNEL)-$(SUFFIX).bin: $(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS)$(MTD_ERASESIZE).trx
	$(STAGING_DIR)/bin/addpattern -4 -p W54G -v v4.20.6 -i $< -o $@ -g
install: $(BIN_DIR)/freewrt-linksys-wrt54g3g-$(BOARD)-$(KERNEL)-$(SUFFIX).bin
endif
ifeq ($(FWRT_LINUX_2_4_BRCM_LINKSYS_WRT54GS_4),y)
ifeq ($(FS),jffs2)
MTD_ERASESIZE:=-64k
endif
$(BIN_DIR)/freewrt-linksys-wrt54gs-v4-$(BOARD)-$(KERNEL)-$(SUFFIX).bin: $(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS)$(MTD_ERASESIZE).trx
	$(STAGING_DIR)/bin/addpattern -4 -p W54s -v v1.05.2 -i $< -o $@ -g
install: $(BIN_DIR)/freewrt-linksys-wrt54gs-v4-$(BOARD)-$(KERNEL)-$(SUFFIX).bin
endif

ifeq ($(FWRT_LINUX_2_4_BRCM_LINKSYS_WRT54GS_1_0),y)
ifeq ($(FS),jffs2)
MTD_ERASESIZE:=-128k
endif
$(BIN_DIR)/freewrt-linksys-wrt54gs-v1.0-$(BOARD)-$(KERNEL)-$(SUFFIX).bin: $(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS)$(MTD_ERASESIZE).trx
	$(STAGING_DIR)/bin/addpattern -4 -p W54S -v v4.70.6 -i $< -o $@ -g
install: $(BIN_DIR)/freewrt-linksys-wrt54gs-v1.0-$(BOARD)-$(KERNEL)-$(SUFFIX).bin
endif

ifeq ($(FWRT_LINUX_2_4_BRCM_LINKSYS_WRT54GS_1_1),y)
ifeq ($(FS),jffs2)
MTD_ERASESIZE:=-128k
endif
$(BIN_DIR)/freewrt-linksys-wrt54gs-v1.1-$(BOARD)-$(KERNEL)-$(SUFFIX).bin: $(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS)$(MTD_ERASESIZE).trx
	$(STAGING_DIR)/bin/addpattern -4 -p W54S -v v4.70.6 -i $< -o $@ -g
install: $(BIN_DIR)/freewrt-linksys-wrt54gs-v1.1-$(BOARD)-$(KERNEL)-$(SUFFIX).bin
endif

ifeq ($(FWRT_LINUX_2_4_BRCM_NETGEAR_WGT634U),y)
ifeq ($(FS),jffs2)
MTD_ERASESIZE:=-128k
endif
$(BIN_DIR)/freewrt-netgear-wgt634u-$(BOARD)-$(KERNEL)-$(SUFFIX).bin: $(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS)$(MTD_ERASESIZE).trx
	dd if=$(BUILD_DIR)/loader.elf of=$@ bs=131072 conv=sync
	cat $(STAGING_DIR)/freewrt-$(BOARD)-$(KERNEL)-$(FS).trx >> $@
install: $(BIN_DIR)/freewrt-netgear-wgt634u-$(BOARD)-$(KERNEL)-$(SUFFIX).bin
endif
