SHELL = /bin/bash

PWD = $(shell pwd)
VER :="07.24"
#Develop state
DEVELOP :=0
FIRMWARE_VERSION="A1D-500-V6."$(VER)
PROFILE ?=A1-EVB
RAMDISK_SIZE ?=34816
TARGETDIR :=target
BRAND ?=AC
FIRMWAREDIR := firmware_images
SDKOUTDIR := sdk/output
A1DEBUG :=0

all:
	make sdk
	@printf "Compiling ACTiApps ...\n"
	make -C ACTiApps all install
	make bsdiff
	@cp -af myRootfs/$(BRAND)/* $(TARGETDIR)/
	@cp -af myRootfs/Common/* $(TARGETDIR)/
	@cp -af myRootfs/WebUI $(TARGETDIR)/
	@rm $(TARGETDIR)/WebUI/images/*-info.png
	@rm $(TARGETDIR)/WebUI/control/NB/*.cab
	@echo "FIRMWARE_VERSION='$(FIRMWARE_VERSION)-$(BRAND)'" > $(TARGETDIR)/etc/default/firmware_version.conf
	@echo `date` > $(TARGETDIR)/etc/default/Build_date
	@cp -af Devcap/eeprom $(TARGETDIR)/etc/init.d
	@cp -af Devcap/devcap_pool  $(TARGETDIR)/etc/default
	@find $(TARGETDIR)/ -name '.svn' | xargs rm -rf
	@if [ -e $(TARGETDIR)/etc/init.d/S90dhcpc ]; then \
		mv $(TARGETDIR)/etc/init.d/S90dhcpc $(TARGETDIR)/etc/init.d/K90dhcpc; \
	fi
	@if [ -e $(TARGETDIR)/etc/init.d/S90ntp ]; then \
		mv $(TARGETDIR)/etc/init.d/S90ntp $(TARGETDIR)/etc/init.d/K90ntp; \
	fi
#	@if [ -e $(TARGETDIR)/etc/init.d/S40network ]; then \
		mv $(TARGETDIR)/etc/init.d/S40network $(TARGETDIR)/etc/init.d/K40network; \
	fi
#	@if [ -e $(TARGETDIR)/etc/init.d/S30camera ]; then \
#		mv $(TARGETDIR)/etc/init.d/S30camera $(TARGETDIR)/etc/init.d/K30camera;\
#	fi
	@pushd sdk; \
	make -C usr/root.fs RAMDISK_SIZE=$(RAMDISK_SIZE) target; \
	if [ ! -c output/target/dev/console ]; then \
		rm output/target/dev/console; \
		mknod -m 660 output/target/dev/console c 5 1; \
	fi ; \
	if [ ! -c output/target/dev/null ]; then \
		rm output/target/dev/null; \
		mknod -m 660 output/target/dev/null c 1 3; \
	fi ; \
	make RAMDISK_SIZE=$(RAMDISK_SIZE) strip-modules strip-gcc-libs strip-apps publish-ramdisk bootpImage; \
	popd
	@rm $(SDKOUTDIR)/make-rootfs-ext2-ramdisk.cmd
	@if [ $(DEVELOP) -eq 1 ]; then \
		cp $(SDKOUTDIR)/bootpImage.ub /tftpboot/; \
	fi 
	@cp $(SDKOUTDIR)/bootpImage.ub $(FIRMWAREDIR)/
	@cp $(TARGETDIR)/etc/default/firmware_version.conf $(FIRMWAREDIR)/version.conf
#	make mk_jffs2fs
	make mkimage

sdk:
	@if [ ! -f sdk/config.cache ]; then \
        make -C sdk configure TARGET_PROFILE=$(PROFILE) RAMDISK_SIZE=$(RAMDISK_SIZE); \
		sed -ie "s/-include config.cache/include config.cache/" sdk/Makefile; \
	fi
	sed -ie "s/export STRIP_MODULES=no/export STRIP_MODULES=yes/" sdk/config.cache
	@printf "Compiling Uboot & Firmware ...\n"
	@pushd sdk; \
    make uboot firmware;\
    popd

toolchain:
	@printf "Building toolchain...\n"
	make -C sdk toolchain-install
	
mk_jffs2fs:
	sdk/build/host/bin/mkfs.jffs2 -r ./config -o config.jffs2 -e 0x40000 --pad=0x0120000

mkimage:
	@printf "Build Firmware image (.upg,.md5)\n"
	@pushd $(FIRMWAREDIR); \
	tar -zcf $(FIRMWARE_VERSION)-$(BRAND).upg bootpImage.ub version.conf fw_upg_patch --exclude-vcs; \
	MD5=`md5sum $(FIRMWARE_VERSION)-$(BRAND).upg |cut -d' ' -f1`; \
	echo -e IMG_MD5=\'$$MD5\'\\n > $(FIRMWARE_VERSION)-$(BRAND).md5; \
	mv $(FIRMWARE_VERSION)-$(BRAND).upg GPL_Camera_V6.upg; \
	popd
#	dd if=config.jffs2 of=firmware.img conv=notrunc bs=1K seek=1152 count=11264
	@cp -a ACTiApps/aistreamer* $(FIRMWAREDIR)/
	@cp -a linux/vmlinux $(FIRMWAREDIR)/
	@cp -a linux/System.map $(FIRMWAREDIR)/

#create diff file for oem scheme
FILES=$(shell ls -Xr myRootfs/WebUI/control/NB/*.cab)
bsdiff:	
	@for d in $(FILES) ; do	\
		f=`echo $$d |awk -F. '{print $$1}'`; \
		echo "bsdiff myRootfs/WebUI/control/nvA1Media.cab $$d $$f.diff";  \
		bsdiff myRootfs/WebUI/control/nvA1Media.cab $$d $$f.diff; \
	done

.PHONY: sdk
