# Makefile for UAE (Un*x Amiga Emulator)
#
# Copyright 1995,1996 Bernd Schmidt
# Copyright 1996 Ed Hanway

.SUFFIXES: .o .c .h

# If you have a Pentium, you can get better code if you use the commented
# line.
# Only gcc 2.7.x understands this. Use an empty "PENTIUMOPT =" line
# if you use gcc 2.6.x, or a non-x86 architecture.
# PENTIUMOPT = -malign-jumps=0 -malign-loops=0
PENTIUMOPT =

# Don't change anything below this line, except maybe the search paths
# for X11 (X11R6 could be X11R5 on your system)

INCLUDES=-Iinclude

OBJS = main.o newcpu.o memory.o debug.o custom.o cia.o disk.o $(GFXOBJS) \
       autoconf.o os.o ersatz.o filesys.o hardfile.o keybuf.o readcpu.o \
       cpu0.o cpu1.o cpu2.o cpu3.o cpu4.o cpu5.o cpu6.o cpu7.o \
       cpu8.o cpu9.o cpuA.o cpuB.o cpuC.o cpuD.o cpuE.o cpuF.o cpustbl.o
       
all:
	@echo "Use one of the following:"
	@echo "make dos-null -- DOS debug only interface"
	@echo "make dos-grx -- DOS GRX lib svga interface"

dos-null:
	$(MAKE) \
		GFXOBJS=dos-null.o \
		CFLAGS='-ansi -pedantic -D__DOS__\
		-Wall -Wno-unused -W -Wmissing-prototypes -Wstrict-prototypes \
		-O3 -fomit-frame-pointer -fstrength-reduce -funroll-loops \
		$(PENTIUMOPT)' \
		progs

dos-grx:
	$(MAKE) \
		GFXLDFLAGS='-lgrx -lpc' \
		GFXOBJS=dos-grx.o \
		CFLAGS='-ansi -pedantic -D__DOS__\
		-Wall -Wno-unused -W -Wmissing-prototypes -Wstrict-prototypes \
		-O3 -fomit-frame-pointer -fstrength-reduce -funroll-loops \
		$(PENTIUMOPT)' \
		progs

progs: uae.exe readdisk.exe

install:

readdisk.exe: readdisk.o
	$(CC) readdisk.o -o readdisk $(LDFLAGS) $(DEBUGFLAGS)
	coff2exe readdisk

uae.exe: $(OBJS)
	$(CC) $(OBJS) -o uae $(GFXLDFLAGS) $(LDFLAGS) $(DEBUGFLAGS)
	coff2exe uae

clean:
	-del *.o
	-del uae
	-del uae.exe
	-del readdisk
	-del readdisk.exe
	-del gencpu
	-del gencpu.exe
	-del genblitter
	-del genblitter.exe
	-del cpu?.c
	-del blit.h
	-del cputbl.h
	-del cpustbl.c

dos-grx.o: dos-grx.c
	$(CC) $(INCLUDES) -c $(INCDIRS) -O3 -fomit-frame-pointer -fstrength-reduce -funroll-loops $(DEBUGFLAGS) $*.c

blit.h: genblitter.exe
	genblitter >blit.h

genblitter.exe: genblitter.o
	$(CC) -o genblitter $?
	coff2exe genblitter
gencpu.exe: gencpu.o readcpu.o
	$(CC) -o gencpu gencpu.o readcpu.o
	coff2exe gencpu

custom.o: blit.h

cpustbl.c: gencpu.exe
	gencpu s >cpustbl.c
cputbl.c: gencpu.exe
	gencpu t >cputbl.c
cputbl.h: gencpu.exe
	gencpu h >cputbl.h

cpu0.c: gencpu.exe
	gencpu f 0 >cpu0.c
cpu1.c: gencpu.exe
	gencpu f 1 >cpu1.c
cpu2.c: gencpu.exe
	gencpu f 2 >cpu2.c
cpu3.c: gencpu.exe
	gencpu f 3 >cpu3.c
cpu4.c: gencpu.exe
	gencpu f 4 >cpu4.c
cpu5.c: gencpu.exe
	gencpu f 5 >cpu5.c
cpu6.c: gencpu.exe
	gencpu f 6 >cpu6.c
cpu7.c: gencpu.exe
	gencpu f 7 >cpu7.c
cpu8.c: gencpu.exe
	gencpu f 8 >cpu8.c
cpu9.c: gencpu.exe
	gencpu f 9 >cpu9.c
cpuA.c: gencpu.exe
	gencpu f 10 >cpuA.c
cpuB.c: gencpu.exe
	gencpu f 11 >cpuB.c
cpuC.c: gencpu.exe
	gencpu f 12 >cpuC.c
cpuD.c: gencpu.exe
	gencpu f 13 >cpuD.c
cpuE.c: gencpu.exe
	gencpu f 14 >cpuE.c
cpuF.c: gencpu.exe
	gencpu f 15 >cpuF.c

# Compiling these without debugging info speeds up the compilation
# if you have limited RAM (<= 8M)
cpu0.o: cpu0.c
	$(CC) $(INCLUDES) -c $(INCDIRS) $(CFLAGS) $*.c
cpu1.o: cpu1.c
	$(CC) $(INCLUDES) -c $(INCDIRS) $(CFLAGS) $*.c
cpu2.o: cpu2.c
	$(CC) $(INCLUDES) -c $(INCDIRS) $(CFLAGS) $*.c
cpu3.o: cpu3.c
	$(CC) $(INCLUDES) -c $(INCDIRS) $(CFLAGS) $*.c
cpu4.o: cpu4.c
	$(CC) $(INCLUDES) -c $(INCDIRS) $(CFLAGS) $*.c
cpu5.o: cpu5.c
	$(CC) $(INCLUDES) -c $(INCDIRS) $(CFLAGS) $*.c
cpu6.o: cpu6.c
	$(CC) $(INCLUDES) -c $(INCDIRS) $(CFLAGS) $*.c
cpu7.o: cpu7.c
	$(CC) $(INCLUDES) -c $(INCDIRS) $(CFLAGS) $*.c
cpu8.o: cpu8.c
	$(CC) $(INCLUDES) -c $(INCDIRS) $(CFLAGS) $*.c
cpu9.o: cpu9.c
	$(CC) $(INCLUDES) -c $(INCDIRS) $(CFLAGS) $*.c
cpuA.o: cpuA.c
	$(CC) $(INCLUDES) -c $(INCDIRS) $(CFLAGS) $*.c
cpuB.o: cpuB.c
	$(CC) $(INCLUDES) -c $(INCDIRS) $(CFLAGS) $*.c
cpuC.o: cpuC.c
	$(CC) $(INCLUDES) -c $(INCDIRS) $(CFLAGS) $*.c
cpuD.o: cpuD.c
	$(CC) $(INCLUDES) -c $(INCDIRS) $(CFLAGS) $*.c
cpuE.o: cpuE.c
	$(CC) $(INCLUDES) -c $(INCDIRS) $(CFLAGS) $*.c
cpuF.o: cpuF.c
	$(CC) $(INCLUDES) -c $(INCDIRS) $(CFLAGS) $*.c
       
.c.o:
	$(CC) $(INCLUDES) -c $(INCDIRS) $(CFLAGS) $(DEBUGFLAGS) $*.c
.c.s:
	$(CC) $(INCLUDES) -S $(INCDIRS) $(CFLAGS) $*.c

# Some more dependencies...
gencpu.o: table68k
cpu0.o: cputbl.h
cpu1.o: cputbl.h
cpu2.o: cputbl.h
cpu3.o: cputbl.h
cpu4.o: cputbl.h
cpu5.o: cputbl.h
cpu6.o: cputbl.h
cpu7.o: cputbl.h
cpu8.o: cputbl.h
cpu9.o: cputbl.h
cpuA.o: cputbl.h
cpuB.o: cputbl.h
cpuC.o: cputbl.h
cpuD.o: cputbl.h
cpuE.o: cputbl.h
cpuF.o: cputbl.h
cpustbl.o: cputbl.h
cputbl.o: cputbl.h

main.o: config.h
cia.o: config.h
custom.o: config.h
newcpu.o: config.h
autoconf.o: config.h
xwin.o: config.h
svga.o: config.h
os.o: config.h
memory.o: config.h
gencpu.o: config.h
genblitter.o: config.h
debug.o: config.h
ersatz.o: config.h
disk.o: config.h
