# http://homepages.enterprise.net/jmarshall/palmos/build-prct.html

VERSION=2.15
MAKE = make
XOBJS = diddlebug.o shape.o xfer.o util.o
XCC = m68k-palmos-coff-gcc
XCFLAGS = -O2 #-DDIDDLEDEBUG
PILRC = pilrc
TXT2BITM = txt2bitm
OBJRES = m68k-palmos-coff-obj-res
MULTILINK = multilink
BUILDPRC = build-prc
ICONTEXT = DiddleBug
APPID = DIDB
PILOTLINK=pilot-xfer
PRCS = english.ts-prc hangul.ts-prc spanish.ts-prc german.ts-prc french.ts-prc japanese.ts-prc portugese.ts-prc czech.ts-prc
LOCALIZATIONS = hangul spanish french german japanese portugese czech
UPLOAD = cat ~/.ftp_passwd | ftp-upload --ignore-quit-failure --verbose --host=ftp.blevins.simplenet.com --user=blevins.simplenet.com --password-stdin --dir=diddlebug
TEXT_FILES = TODO ChangeLog BUGS index.htm manual.htm download.htm plugins.htm faq.htm snap.htm

.SUFFIXES: .ts-prc .ts-grc .ts-bin .ts-obj .ts-dep

default: diddlebug.prc

diddlebug.prc: english.ts-prc
	cp diddlebug-english.prc diddlebug.prc

all: $(PRCS)
	cp diddlebug-english.prc diddlebug.prc
	make plugs
	make hack

plugs:
	cd ibplug-src; make install

hack:
	cd dbscHack; make install

hack-clean:
	cd dbscHack; make clean

plug-clean:
	-for localz in $(LOCALIZATIONS); do \
	    rm -f plugins-$$localz/* ; \
	done
	cd ibplug-src; make clean

localization-clean:
	-rm -f diddlebug-english.prc
	-for localz in $(LOCALIZATIONS); do \
	  rm -f diddlebug-$$localz.prc ; \
	done

.ts-bin.ts-prc:
#	cp rloc-with-3 rloc0000.diddlebug.grc
#	m68k-palmos-coff-objcopy -O binary -R .text -R .data -R .bss diddlebug code0002.diddlebug.grc
	$(BUILDPRC) diddlebug-$*.prc $(ICONTEXT) $(APPID) code0001.diddlebug.grc code0000.diddlebug.grc data0000.diddlebug.grc *.bin pref000?.diddlebug.grc
	touch $*.ts-prc

.ts-grc.ts-bin:
	sed -f $*.sed -e 's/VERSION_STAMP/$(VERSION)/g' diddlebug.rcp.in > diddlebug.rcp
	sed -f $*.sed menu_shortcuts.h.in > menu_shortcuts.h
	rm -f *.bin *.ts-bin
	if test $* = japanese ; then \
	    pilrc-japanese -J diddlebug.rcp ; \
	else \
	    pilrc diddlebug.rcp ; \
	fi
	touch $*.ts-bin

.ts-obj.ts-grc:
	sed -f $*.sed menu_shortcuts.h.in > menu_shortcuts.h
	$(XCC) $(XOBJS) -o diddlebug
	$(OBJRES) diddlebug
	rm *.o
	touch $*.ts-grc

english.ts-obj: generic.ts-dep
	sed -f english.sed menu_shortcuts.h.in > menu_shortcuts.h
	$(MAKE) $(XOBJS)
	touch $@
	touch generic.ts-dep

hangul.ts-obj: generic.ts-dep
	sed -f hangul.sed menu_shortcuts.h.in > menu_shortcuts.h
	$(MAKE) $(XOBJS)
	touch $@
	touch generic.ts-dep

spanish.ts-obj: generic.ts-dep
	sed -f spanish.sed menu_shortcuts.h.in > menu_shortcuts.h
	$(MAKE) $(XOBJS)
	touch $@
	touch generic.ts-dep

german.ts-obj: generic.ts-dep
	sed -f german.sed menu_shortcuts.h.in > menu_shortcuts.h
	$(MAKE) $(XOBJS)
	touch $@
	touch generic.ts-dep

french.ts-obj: generic.ts-dep
	sed -f french.sed menu_shortcuts.h.in > menu_shortcuts.h
	$(MAKE) $(XOBJS)
	touch $@
	touch generic.ts-dep

japanese.ts-obj: generic.ts-dep
	sed -f japanese.sed menu_shortcuts.h.in > menu_shortcuts.h
	$(MAKE) $(XOBJS)
	touch $@
	touch generic.ts-dep

portugese.ts-obj: generic.ts-dep
	sed -f portugese.sed menu_shortcuts.h.in > menu_shortcuts.h
	$(MAKE) $(XOBJS)
	touch $@
	touch generic.ts-dep

czech.ts-obj: generic.ts-dep
	sed -f czech.sed menu_shortcuts.h.in > menu_shortcuts.h
	$(MAKE) $(XOBJS)
	touch $@
	touch generic.ts-dep

generic.ts-dep: diddlebug.rcp.in menu_shortcuts.h.in diddlebug.h diddlebug.c shape.c tododb.c datedb.c xfer.c xfer.h tododb.h datedb.h diddlebugRsc.h
	touch $@

diddlebug.o: generic.ts-dep diddlebug.c diddlebug.h diddlebugRsc.h util.h menu_shortcuts.h.in
	$(XCC) $(XCFLAGS) -c diddlebug.c

shape.o: generic.ts-dep shape.c diddlebug.h diddlebugRsc.h
	$(XCC) $(XCFLAGS) -c shape.c

util.o: generic.ts-dep util.c util.h
	$(XCC) $(XCFLAGS) -c util.c

xfer.o: generic.ts-dep xfer.c xfer.h
	$(XCC) $(XCFLAGS) -c xfer.c

multidef.o: multidef.s
	$(XCC) -c multidef.s

send: diddlebug.prc
	$(PILOTLINK) -i diddlebug.prc

clean: plug-clean
	-rm -f *.[oa] diddlebug *.bin *.ts* diddlebug.rcp *.grc *~

distclean: clean localization-clean hack-clean
	-rm -f plugins/*
	-rm -f *.prc *.zip *.tar *.tar.gz

dist: all
	rm diddlebug-english.prc
	./html_stamp.pl $(VERSION)
	zip diddlebug-$(VERSION).zip diddlebug.prc diddleSnapHack.prc $(TEXT_FILES) *.gif COPYING plugins/*
	for localz in $(LOCALIZATIONS) ; do \
	    zip diddlebug-$$localz-$(VERSION).zip diddleSnapHack.prc diddlebug-$$localz.prc *.gif COPYING $(TEXT_FILES) plugins-$$localz/* ; \
	done
	make plug-clean
	make localization-clean
	make hack-clean
	tar cvf diddlebug-src-$(VERSION).tar $(TEXT_FILES) *.prc Makefile *.c multidef.s *.h *.pbitm *.rcp.in *.h.in *.bmp *.sed rloc-with-3 *.gif plugins plugins-hangul plugins-spanish plugins-german plugins-french plugins-japanese plugins-portugese plugins-czech ibplug-src dbscHack
	gzip -9 diddlebug-src-$(VERSION).tar

upload-localz:
	for localz in $(LOCALIZATIONS) ; do \
	    $(UPLOAD) --binary diddlebug-$$localz-$(VERSION).zip ; \
	done

upload-textfiles:
	$(UPLOAD) --ascii $(TEXT_FILES)
	cd gallery; $(UPLOAD) --ascii gallery.htm

upload:
	$(UPLOAD) --binary diddlebug-$(VERSION).zip diddlebug.prc diddleSnapHack.prc diddlebug-src-$(VERSION).tar.gz plugins/*.prc
	make upload-localz
	make upload-textfiles

