# Makefile for patching firmware 3.2.0

# Set MARK for device: 3=OldTouch, 4=NewTouch/Mini/Glo/AuraHD, 5=Aura
# But it doesn't really matter because libnickel is the same for all.
#
MARK=4

# Firmware version 3.2.0 specifics
#
VERSION_MAJOR=3
VERSION_MINOR=2
VERSION_PATCH=0
FIRMWARE_URL=http://download.kobobooks.com/firmwares/kobo$(MARK)/kobocares
FIRMWARE_ZIP=kobo-update-$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH).zip
DISTFILE_ZIP=make_patch_$(VERSION_MAJOR)_$(VERSION_MINOR)_$(VERSION_PATCH).zip

# Nothing below here should need to be changed.
#

.PHONY: all dist clean realclean

all: KoboRoot.tgz
	@echo
	@echo "  Copy KoboRoot.tgz to the .kobo directory of your device,"
	@echo "  safely eject, and the device should update and restart."
	@echo

dist: $(DISTFILE_ZIP)

clean:
	rm -f usr/local/Kobo/libnickel.so.1.0.0
	-rmdir -p --ignore-fail-on-non-empty usr/local/Kobo
	rm -f $(FIRMWARE_ZIP).check
	rm -f libnickel.so.1.0.0
	rm -f patch32lsb
	rm -f KoboRoot.tgz

realclean: clean
	rm -f $(FIRMWARE_ZIP)

$(DISTFILE_ZIP): Makefile README.txt patch32lsb.c patch32lsb.conf \
		$(FIRMWARE_ZIP).md5sum.[345]
	rm -f $@
	zip $@ $^

patch32lsb: patch32lsb.c
	gcc -Wall -o $@ $^

$(FIRMWARE_ZIP):
	wget $(FIRMWARE_URL)/$(FIRMWARE_ZIP)

$(FIRMWARE_ZIP).check: $(FIRMWARE_ZIP).md5sum.$(MARK) $(FIRMWARE_ZIP)
	md5sum --check $<
	touch $@

libnickel.so.1.0.0: $(FIRMWARE_ZIP) $(FIRMWARE_ZIP).check
	unzip -p $< KoboRoot.tgz | tar xzm --strip-components=4 ./usr/local/Kobo/libnickel.so.1.0.0

usr/local/Kobo/libnickel.so.1.0.0: libnickel.so.1.0.0 patch32lsb patch32lsb.conf
	mkdir -p usr/local/Kobo
	./patch32lsb -p patch32lsb.conf -i $< -o $@
	chmod --reference=$< $@

KoboRoot.tgz: usr/local/Kobo/libnickel.so.1.0.0
	rm -f $@
	tar czf $@ ./$^
