## Makefile for pz

TARGET = pz
PRCNAME = $(TARGET).prc
APPNAME = "pz"
APPID = "PZIP"

ZLIB_DIR = zlib-1.1.3
APP_CFLAGS = -I$(ZLIB_DIR)

CRT0 = crt0.o
OBJS = entry.o $(TARGET).o db_list.o db_form.o arch_form.o db_info.o \
	read_form.o progress.o table.o util.o stream.o compress_db.o \
	uncompress_db.o $(CRT0)
LIBS = -lgcc -L$(ZLIB_DIR) -lz

BITMAPS = $(TARGET).pbitm watch.pbitm

CC = m68k-palmos-coff-gcc
ASMFLAGS = -Wall
CFLAGS = -Wall -Wmissing-prototypes -O2 $(APP_CFLAGS)
LDFLAGS = -Wall -nostartfiles

PILRC = pilrc
OBJRES = m68k-palmos-coff-obj-res
BUILDPRC = build-prc
PILOTXFER = pilot-xfer

CPP = awk -F1 -f cpp.awk

all: $(PRCNAME)

both: $(PRCNAME) unpz.prc

always:

unpz.prc: always
	@if [ ! -f unpz/Makefile ]; \
	 then mkdir unpz; ln -s ../Makefile-unpz unpz/Makefile; fi
	cd unpz; $(MAKE) ../unpz.prc

send-unpz: unpz.prc
	$(PILOTXFER) -i unpz.prc

clean-unpz:
	-rm -rf unpz

.S.o:
	$(CC) $(ASMFLAGS) -c $<

.c.o:
	$(CC) $(CFLAGS) -c $<

.c.s:
	$(CC) $(CFLAGS) -S $<

.cc.o:
	$(CC) $(CFLAGS) -c $<

.cc.s:
	$(CC) $(CFLAGS) -S $<

$(PRCNAME): code0000.$(TARGET).grc code0001.$(TARGET).grc data0000.$(TARGET).grc pref0000.$(TARGET).grc rloc0000.$(TARGET).grc bin.res
	$(BUILDPRC) $(PRCNAME) $(APPNAME) $(APPID) code0001.$(TARGET).grc code0000.$(TARGET).grc data0000.$(TARGET).grc *.bin pref0000.$(TARGET).grc rloc0000.$(TARGET).grc

code0000.$(TARGET).grc: $(TARGET)
	$(OBJRES) $(TARGET)

code0001.$(TARGET).grc: code0000.$(TARGET).grc

data0000.$(TARGET).grc: code0000.$(TARGET).grc

pref0000.$(TARGET).grc: code0000.$(TARGET).grc

rloc0000.$(TARGET).grc: code0000.$(TARGET).grc

$(TARGET): $(OBJS) $(ZLIB_DIR)/libz.a
	$(CC) $(LDFLAGS) $(OBJS) $(LIBS) -o $(TARGET)

$(CRT0):
	@rm -f $(CRT0); \
	 touch dummy.o; \
	 crt0=`$(CC) -v dummy.o 2>&1 | tr ' ' '\012' | grep '$(CRT0)$$'`; \
	 rm -f dummy.o; \
	 echo cp $$crt0 $(CRT0); \
	 cp $$crt0 $(CRT0)

$(ZLIB_DIR)/zlib.h:
	# wget ftp://ftp.uu.net/graphics/png/src/zlib-1.1.3.tar.gz
	# gzip -dc zlib-1.1.3.tar.gz | tar xvf -
	# patch -p0 < zlib-1.1.3.diff
	@false

$(ZLIB_DIR)/libz.a:
	cd $(ZLIB_DIR); $(MAKE)

bin.res: $(TARGET).rcp $(TARGET)_rcp.h $(BITMAPS)
	-rm -f *.bin bin.res
	$(CPP) < $(TARGET).rcp > $(TARGET)_.rcp
	$(CPP) < $(TARGET)_rcp.h > $(TARGET)_rcp_.h
	$(PILRC) $(TARGET)_.rcp .
	-rm -f $(TARGET)_.rcp $(TARGET)_rcp_.h
	# because PilRC ignores NOSAVEBEHIND of forms...
	echo -n ' ' | tr ' ' '\300' | dd bs=1 seek=42 conv=notrunc of=tFRM03e8.bin
	echo -n ' ' | tr ' ' '\300' | dd bs=1 seek=42 conv=notrunc of=tFRM044c.bin
	echo -n ' ' | tr ' ' '\300' | dd bs=1 seek=42 conv=notrunc of=tFRM05dc.bin
	# because PilRC doesn't support DEFAULTBUTTONID of alerts...
	echo -n ' ' | tr ' ' '\001' | dd bs=1 seek=7 conv=notrunc of=Talt044c.bin
	echo -n ' ' | tr ' ' '\001' | dd bs=1 seek=7 conv=notrunc of=Talt04b0.bin
	echo -n ' ' | tr ' ' '\001' | dd bs=1 seek=7 conv=notrunc of=Talt0514.bin
	echo -n ' ' | tr ' ' '\002' | dd bs=1 seek=7 conv=notrunc of=Talt0578.bin
	touch bin.res

send: $(PRCNAME)
	$(PILOTXFER) -i $(PRCNAME)

depend:
	makedepend -Y -I. *.c

clean:
	-rm -f *.o $(TARGET) *.grc *.bin bin.res

veryclean: clean
	-rm -f $(PRCNAME) pilot.ram pilot.scratch

$(TARGET).o: $(TARGET).h $(TARGET)_rcp.h
db_list.o: $(TARGET).h
db_form.o: $(TARGET).h $(TARGET)_rcp.h
arch_form.o: $(TARGET).h $(TARGET)_rcp.h
db_info.o: $(TARGET).h $(TARGET)_rcp.h
read_form.o: $(TARGET).h $(TARGET)_rcp.h
progress.o: $(TARGET).h $(TARGET)_rcp.h
table.o: $(TARGET).h
util.o: $(TARGET).h
stream.o: $(TARGET).h
compress_db.o: $(TARGET).h $(ZLIB_DIR)/zlib.h
uncompress_db.o: $(TARGET).h $(ZLIB_DIR)/zlib.h
