PREOS=../../preos/
PREOS_SRC=$(PREOS)/src
PREOS_STDLIB=$(PREOS)/stdlib.9xz
GPL=-WA,-vGPL

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

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=tigcc -c
A68K_INCLUDE=-WA,-ic,-i$(PREOS_SRC)
S2ASM=../bin/s2asm
MAKETIB=tigcc -v --flash-os --outputbin
STRIP=../bin/strip
MV=mv -f
CP=cp -f

SOURCE=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
TOOL=../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 -WA,-vTI89 $(GPL)
	$(MAKETIB) PedroM.o
	$(RM) PedroM.o
	$(MV) pedrom-89.tib ..
	$(RM) *.tib

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

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

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

pedrom: pedrom-89 pedrom-92 pedrom-89t pedrom-v200

clean:
	$(RM) c/*.asm c/*~ version.h
	$(RM) *~ ../pedrom-89.tib ../pedrom-9x.tib ../pedrom-89ti.tib ../pedrom-v2.tib
	$(RM) ../bin/s2asm ../bin/s2asm.exe

