# Genital Makefile

# Note: No -O flags may be used. Most other optimizations can provided
# -fpack-struct is specified.

AS = nasm
CC = gcc
AFLAGS = -f coff
CFLAGS = -Wall -funroll-loops -mpentium -malign-double -fpack-struct

# add star/cpudebug.o to the end of the OBJECTS list and #define STARSCREAM_DEBUG
# in 68k.c to add support for the Starscream debugger
OBJECTS = misc.o tile.o gfx.o genital.o 68k.o star/star.o raze/raze.o z80.o vdp.o vga.o djkey.o djmouse.o save.o star/cpudebug.o gen68k.o

# target for DOS build
dos: $(OBJECTS)
	$(CC) -o genital.exe $(OBJECTS) $(CFLAGS)

.PHONY: clean
clean:
	del *.o

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

star/star.o: star/star.asm
	cd star
	$(CC) star.c -o star.exe
	star star.asm -hog
	$(AS) star.asm $(AFLAGS)
	cd ..

star/cpudebug.o: star/cpudebug.c
	cd star
	$(CC) -c cpudebug.c -o cpudebug.o
	cd ..

68k.o: 68k.c
	$(CC) -c 68k.c -o 68k.o $(CFLAGS)

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

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

gfx.o: gfx.c gfx_rend.h font.h
	$(CC) -c gfx.c -o gfx.o $(CFLAGS)

tile.o: tile.asm
	$(AS) tile.asm $(AFLAGS)

misc.o: misc.asm
	$(AS) misc.asm $(AFLAGS)

djkey.o: djkey.asm
	$(AS) djkey.asm $(AFLAGS)

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

raze/raze.o: raze/raze.asm
	cd raze
	make raze.o
	cd ..

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

gen68k.o: gen68k.c
	$(CC) -c gen68k.c $(CFLAGS)
	
djmouse.o: djmouse.asm
	$(AS) djmouse.asm $(AFLAGS)
