EXECDIR:=/sqlite_journals/is01root
SU:=$(EXECDIR)/_su
BUSYBOX:=$(EXECDIR)/busybox
##############
UNUBI_MTD:=mtd2.bin
WRITE_PARTITION:=recovery_wr
#SERIAL:=-s SSHEX012345
##############
MKBOOTIMG:=mkbootimg
MKBOOTFS:=mkbootfs
UNUBINIZE:=./unubinize.pl
SPLIT_BOOTIMG:=./split_bootimg.pl
#
KERNEL:=$(UNUBI_MTD).out-kernel
##############
TARGET:=donut_symlink_boot.img
FILES:=./ramdisk/init.rc
BOOTIMG:=my_mkboot.img
RAMDISKDIR:=ramdisk
RAMDISK:=my_ramdisk.img
UBICFG:=ubi.cfg
CMDLINE:="console=ttyMSM2,115200n8 androidboot.hardware=qcom"
#############
.PHONY:all
all:copy
#push_bootimage
#all:pull unubi patch copy push_bootimage
#reboot

#ubi
.PHONY:ubi
ubi:$(TARGET)


$(TARGET):$(BOOTIMG) $(UBICFG)
	ubinize -o $@ -p 128KiB -m 2048 -O 256 $(UBICFG)

#mkboot
$(BOOTIMG):$(RAMDISK) $(KERNEL)
	$(MKBOOTIMG) --kernel $(KERNEL) --ramdisk $(RAMDISK) --cmdline $(CMDLINE) --base 0x20000000 -o $@

$(RAMDISK):$(FILES)
	rm -rf ramdisk/*~
	$(MKBOOTFS) $(RAMDISKDIR) > $(RAMDISK)

$(FILES):

.PHONY:copy
copy:
	adb $(SERIAL) shell $(SU) 0 $(BUSYBOX) mkdir -p /data/data_ex
	adb $(SERIAL) shell $(SU) 0 $(BUSYBOX) mkdir -p /data/data_ex/donut_orig
	adb $(SERIAL) shell $(SU) 0 $(BUSYBOX) cp -a /data/* /data/data_ex/donut_orig/
	adb $(SERIAL) shell $(SU) 0 $(BUSYBOX) mkdir -p /data/system_ex
	adb $(SERIAL) shell $(SU) 0 $(BUSYBOX) mkdir -p /data/system_ex/donut_orig
	adb $(SERIAL) shell $(SU) 0 $(BUSYBOX) cp -a /system/* /data/system_ex/donut_orig/
#	adb $(SERIAL) shell $(SU) 0 $(BUSYBOX) rm -rf  /data/data_ex/donut_orig/system_ex


.PHONY:pull
pull:pull_clean
	adb $(SERIAL) shell mkdir /data/backup0
	adb $(SERIAL) shell chmod 777 /data/backup0
	adb $(SERIAL) shell $(SU) 0 dd if=/dev/mtd/mtd0 of=/data/backup0/mtd0.bin
	adb $(SERIAL) shell $(SU) 0 dd if=/dev/mtd/mtd2 of=/data/backup0/mtd2.bin
	adb $(SERIAL) shell $(SU) 0 chmod 444 /data/backup0/mtd0.bin
	adb $(SERIAL) shell $(SU) 0 chmod 444 /data/backup0/mtd2.bin
	adb $(SERIAL) pull /data/backup0/$(UNUBI_MTD)
	cp -v $(UNUBI_MTD) $(basename $(UNUBI_MTD))_`md5sum $(UNUBI_MTD) | awk '{print $$1}'`.bin
	adb shell $(SU) 0 $(BUSYBOX)  cp /data/backup0/$(UNUBI_MTD) "/data/backup0/$(basename $(UNUBI_MTD))_\`$(BUSYBOX) md5sum /data/backup0/$(UNUBI_MTD) | $(BUSYBOX) awk '{print \$$1}'\`.bin"


.PHONY:unubi
unubi:
	$(UNUBINIZE) $(UNUBI_MTD)
	$(SPLIT_BOOTIMG) $(UNUBI_MTD).out
	mkdir -p ramdisk
	( cd ramdisk; \
	cat ../$(UNUBI_MTD).out-ramdisk.cpio | cpio -i )


.PHONY:patch
patch:
	( cd ramdisk; \
	cp -a init.rc init.rc.bak; \
	patch init.rc < ../init.rc.patch; \
	mv system system0; \
	mv initlogo.rle initlogo.rle.bak; \
	)
	cp -v default.prop ramdisk/default.prop
#	chmod 750 init.rc; \
#	mv init.rc init.rc.bak; \
#	cat init.rc.bak | grep -v '#' > init.rc; \


.PHONY:push_flash_image
push_flash_image:
	adb $(SERIAL) push flash_image /sqlite_journals/is01root

.PHONY:push_bootimage
push_bootimage:$(TARGET)
	adb $(SERIAL) push $(TARGET) /data/backup0/
	adb $(SERIAL) shell $(SU) 0 $(EXECDIR)/flash_image $(WRITE_PARTITION) /data/backup0/$(TARGET)

.PHONY:reboot
reboot:
	adb $(SERIAL) shell $(SU) 0 reboot recovery


.clean:target_donut_clean
target_donut_clean:
	adb $(SERIAL) shell $(SU) 0 $(BUSYBOX) rm -rf /data/data_ex/donut_orig
	adb $(SERIAL) shell $(SU) 0 $(BUSYBOX) rm -rf /data/system_ex/donut_orig


.PHONY:pull_clean
pull_clean:
	rm -f $(UNUBI_MTD) $(UNUBI_MTD).out $(UNUBI_MTD).out-ramdisk.cpio $(UNUBI_MTD).out-kernel
	rm -rf ramdisk

.PHONY:local_clean
local_clean:
	rm -f $(RAMDISK)
	rm -f $(BOOTIMG)
	rm -f $(TARGET)
	rm -rf *~

.PHONY:clean
clean: local_clean
# pull_clean 
#target_donut_clean 
