PREOS=../../preos/
PREOS_SRC=$(PREOS)/src
PREOS_STDLIB=$(PREOS)/stdlib.9xz
GPL=

##############################################################################

CC=tigcc
CFLAGS=-Os -fomit-frame-pointer -S -Wall -W
CSFLAGS=-Os -fomit-frame-pointer -S -Wall -W -fno-builtin-memcpy -fno-builtin-memset
INCLUDES=-I. -Ic
ASM=tigcc
A68K=a68k 
A68K_INCLUDE=-ic -i$(PREOS_SRC)
S2ASM=../bin/s2asm
MAKETIB=../bin/maketib
STRIP=../bin/strip
MV=mv -f
CP=cp -f

SOURCE=c/unpack.asm c/qsort.asm c/printf.asm c/md5.asm c/float.asm c/files.asm c/ellipse.asm c/clipline.asm c/bitmap.asm Bcd.asm     Estack2.asm  Heap.asm     Link.asm    Misc.asm     Script.asm   Vat.asm Boot.asm    Estack.asm   Ints.asm     Long.asm    PedroM.asm  Vectors.asm Cert.asm    Flash.asm    Kernel.asm   Memstr.asm  Process.asm  ShellIO.asm Builtin.asm System.asm   Window.asm Dialog.asm  Graph.asm    Library.asm  Misc2.asm   RomVoid.asm  Strings.asm stdlib.bin
TOOL=../bin/maketib ../bin/s2asm

all: pedrom

.PHONY: version.h

../bin/s2asm:
	cd ../bin/ ; make s2asm

../bin/maketib:
	cd ../bin/ ; make maketib

../bin/strip:
	cd ../bin/ ; make strip

$(PREOS_STDLIB): 
	cd $(PREOS) ; make # Far from perfect

stdlib.bin: $(PREOS_STDLIB) $(STRIP)
	$(STRIP) $(PREOS_STDLIB) stdlib.bin

version.h:
	echo " dc.b" \"`date -u +"[%Y%m%d %k:%M]"`\" > version.h

c/bitmap.asm: c/bitmap.c ../bin/s2asm
	$(CC) $(CFLAGS) $(INCLUDES) c/bitmap.c -o c/bitmap.s
	$(S2ASM) c/bitmap.s c/bitmap.asm LBitmap 5
	$(RM) c/bitmap.s

c/clipline.asm: c/clipline.c ../bin/s2asm
	$(CC) $(CFLAGS) $(INCLUDES) c/clipline.c -o c/clipline.s
	$(S2ASM) c/clipline.s c/clipline.asm LClipLine 5
	$(RM) c/clipline.s

c/ellipse.asm: c/ellipse.c ../bin/s2asm
	$(CC) $(CFLAGS) $(INCLUDES) c/ellipse.c -o c/ellipse.s
	$(S2ASM) c/ellipse.s c/ellipse.asm LEllipse 5
	$(RM) c/ellipse.s

c/files.asm: c/files.c ../bin/s2asm
	$(CC) $(CFLAGS) $(INCLUDES) c/files.c -o c/files.s
	$(S2ASM) c/files.s c/files.asm LFiles 5
	$(RM) c/files.s

c/float.asm: c/float.c ../bin/s2asm
	$(CC) $(CFLAGS) $(INCLUDES) c/float.c -o c/float.s
	$(S2ASM) c/float.s c/float.asm LFloat 5
	$(RM) c/float.s

c/md5.asm: c/md5.c ../bin/s2asm
	$(CC) $(CFLAGS) $(INCLUDES) c/md5.c -o c/md5.s
	$(S2ASM) c/md5.s c/md5.asm LMD5 5
	$(RM) c/md5.s

c/printf.asm: c/printf.c ../bin/s2asm
	$(CC) $(CSFLAGS) $(INCLUDES) c/printf.c -o c/printf.s
	$(S2ASM) c/printf.s c/printf.asm LPrintf 5
	$(RM) c/printf.s

c/qsort.asm: c/qsort.c ../bin/s2asm
	$(CC) $(CFLAGS) $(INCLUDES) c/qsort.c -o c/qsort.s
	$(S2ASM) c/qsort.s c/qsort.asm LQsort 5
	$(RM) c/qsort.s

c/side92.asm: c/side.c ../bin/s2asm
	$(CC) $(CSFLAGS) -DPEDROM -DTI92P $(INCLUDES) c/side.c -o c/side92.s
	$(S2ASM) c/side92.s c/side92.asm LSide 5
	$(RM) c/side92.s

c/side89.asm: c/side.c ../bin/s2asm
	$(CC) $(CSFLAGS) -DPEDROM -DTI89 $(INCLUDES) c/side.c -o c/side89.s
	$(S2ASM) c/side89.s c/side89.asm LSide 5
	$(RM) c/side89.s

c/unpack.asm: c/unpack.c ../bin/s2asm
	$(CC) $(CFLAGS) $(INCLUDES) c/unpack.c -o c/unpack.s
	$(S2ASM) c/unpack.s c/unpack.asm LUnpack 5
	$(RM) c/unpack.s

pedrom-89: $(TOOL) $(SOURCE) c/side89.asm version.h
	$(A68K) $(A68K_INCLUDE) PedroM.asm -vTI89 $(GPL)
	$(MAKETIB) PedroM.o
	$(RM) PedroM.o
	$(MV) PedroM.tib pedrom-89.tib

pedrom-92: $(TOOL) $(SOURCE) c/side92.asm version.h
	$(A68K) $(A68K_INCLUDE) PedroM.asm -vTI92P $(GPL)
	$(MAKETIB) PedroM.o
	$(RM) PedroM.o
	$(MV) PedroM.tib pedrom-92.tib

pedrom-89t: $(TOOL) $(SOURCE) c/side89.asm version.h
	$(A68K) $(A68K_INCLUDE) PedroM.asm -vTI89TI $(GPL)
	$(MAKETIB) PedroM.o
	$(RM) PedroM.o
	$(MV) PedroM.tib pedrom-89t.tib

pedrom-v200: $(TOOL) $(SOURCE) c/side92.asm version.h
	$(A68K) $(A68K_INCLUDE) PedroM.asm -vV200 $(GPL)
	$(MAKETIB) PedroM.o
	$(RM) PedroM.o
	$(MV) PedroM.tib pedrom-v200.tib

pedrom: pedrom-89 pedrom-92 pedrom-89t pedrom-v200
	$(MV) *.tib ..

clean:
	$(RM) c/*.asm c/*~ version.h
	$(RM) *~ pedrom-89.tib pedrom-92.tib pedrom-89t.tib pedrom-v200.tib
	$(RM) stdlib.bin

