#
# Makefile for vMac
#

# Compile options for Linux
# (Choose only ONE of the CFLAGS lines, one is for debug, the other optimize
CC=gcc
#CFLAGS=-g3 -DFIXEND -D__inline__=inline -Wall -Wno-unused -Wno-format -W -Wmissing-prototypes -Wstrict-prototypes
CFLAGS=-O8 -ffast-math -finline-functions -D__inline__=inline -Wall -Wno-unused -Wno-format -W -Wmissing-prototypes -Wstrict-prototypes

#Compile options for IRIX 6.2
#CC=cc
#CFLAGS=-O2 -Olimit 2048 -D__inline__=__inline -Dinline=__inline -Xcpluscomm

#Compile options for Digital Unix 4.0
#CC=cc
#CFLAGS=-O6 -DFIXEND -D__inline__=__inline -Dinline=__inline

#Compile options for HP-UX (Use FIXEND)
#Sorry, you will have to fiddle with this. I don't know the exact line.
#CC=cc
#CFLAGS=-DFIXEND

.SUFFIXES: .o .c .h .m

INCLUDES=-I./Includes -I./Hardware -I/usr/X11R6/include -I/usr/include -I.

LIBRARIES= -lXext -lX11

OBJS = cpudefs.o custom.o main.o newcpu.o readcpu.o debug.o prefs.o \
       Hardware/IWM.o Hardware/Keyboard.o Hardware/Memory.o Hardware/Mouse.o \
       Hardware/Native.o Hardware/RAM.o Hardware/ROM.o Hardware/RTC.o \
       Hardware/SCC.o Hardware/SCSI.o Hardware/Sony.o Hardware/Sound.o \
       Hardware/VIA.o Hardware/VIA_Interrupts.o Hardware/VIA_Interface.o \
       CPU_Sources/cpu0.o CPU_Sources/cpu1.o CPU_Sources/cpu2.o \
       CPU_Sources/cpu3.o CPU_Sources/cpu4.o CPU_Sources/cpu5.o \
       CPU_Sources/cpu6.o CPU_Sources/cpu7.o CPU_Sources/cpu8.o \
       CPU_Sources/cpu9.o CPU_Sources/cpuA.o CPU_Sources/cpuB.o \
       CPU_Sources/cpuC.o CPU_Sources/cpuD.o CPU_Sources/cpuE.o \
       CPU_Sources/cpuF.o CPU_Sources/cpustbl.o

GUI_OBJ = Unix/Screen-X.o

all: vMac

vMac: $(OBJS) $(GUI_OBJ)
	$(CC) $(OBJS) $(GUI_OBJ) -o vMac \
				-L/usr/X11R6/lib $(LIBRARIES)

clean:
	rm -f *.o
	rm -f Hardware/*.o
	rm -f Unix/*.o
	rm -f CPU_Sources/*.o
	rm -f CPU_Sources/cputbl.h
	rm -f CPU_Sources/cpu?.c
	rm -f CPU_Sources/cpustbl.c
	rm -f CPU_Sources/gencpu
	rm -f vMac

halfclean:
	rm -f *.o
	rm -f Hardware/*.o
	rm -f Unix/*.o
	rm -f CPU_Sources/*.o

CPU_Sources/gencpu: CPU_Sources/gencpu.o readcpu.o cpudefs.o
	$(CC) -o $@ CPU_Sources/gencpu.o readcpu.o cpudefs.o

CPU_Sources/cpustbl.c: CPU_Sources/gencpu
	CPU_Sources/gencpu s >CPU_Sources/cpustbl.c
CPU_Sources/cputbl.h: CPU_Sources/gencpu
	CPU_Sources/gencpu h >CPU_Sources/cputbl.h

CPU_Sources/cpu0.c: CPU_Sources/gencpu
	CPU_Sources/gencpu f 0 >CPU_Sources/cpu0.c
CPU_Sources/cpu1.c: CPU_Sources/gencpu
	CPU_Sources/gencpu f 1 >CPU_Sources/cpu1.c
CPU_Sources/cpu2.c: CPU_Sources/gencpu
	CPU_Sources/gencpu f 2 >CPU_Sources/cpu2.c
CPU_Sources/cpu3.c: CPU_Sources/gencpu
	CPU_Sources/gencpu f 3 >CPU_Sources/cpu3.c
CPU_Sources/cpu4.c: CPU_Sources/gencpu
	CPU_Sources/gencpu f 4 >CPU_Sources/cpu4.c
CPU_Sources/cpu5.c: CPU_Sources/gencpu
	CPU_Sources/gencpu f 5 >CPU_Sources/cpu5.c
CPU_Sources/cpu6.c: CPU_Sources/gencpu
	CPU_Sources/gencpu f 6 >CPU_Sources/cpu6.c
CPU_Sources/cpu7.c: CPU_Sources/gencpu
	CPU_Sources/gencpu f 7 >CPU_Sources/cpu7.c
CPU_Sources/cpu8.c: CPU_Sources/gencpu
	CPU_Sources/gencpu f 8 >CPU_Sources/cpu8.c
CPU_Sources/cpu9.c: CPU_Sources/gencpu
	CPU_Sources/gencpu f 9 >CPU_Sources/cpu9.c

CPU_Sources/cpuA.c: CPU_Sources/gencpu
	CPU_Sources/gencpu f 10 >CPU_Sources/cpuA.c
CPU_Sources/cpuB.c: CPU_Sources/gencpu
	CPU_Sources/gencpu f 11 >CPU_Sources/cpuB.c
CPU_Sources/cpuC.c: CPU_Sources/gencpu
	CPU_Sources/gencpu f 12 >CPU_Sources/cpuC.c
CPU_Sources/cpuD.c: CPU_Sources/gencpu
	CPU_Sources/gencpu f 13 >CPU_Sources/cpuD.c
CPU_Sources/cpuE.c: CPU_Sources/gencpu
	CPU_Sources/gencpu f 14 >CPU_Sources/cpuE.c
CPU_Sources/cpuF.c: CPU_Sources/gencpu
	CPU_Sources/gencpu f 15 >CPU_Sources/cpuF.c

CPU_Sources/cpu0.o: CPU_Sources/cpu0.c CPU_Sources/cputbl.h
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.c -o $@
CPU_Sources/cpu1.o: CPU_Sources/cpu1.c CPU_Sources/cputbl.h
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.c -o $@
CPU_Sources/cpu2.o: CPU_Sources/cpu2.c CPU_Sources/cputbl.h
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.c -o $@
CPU_Sources/cpu3.o: CPU_Sources/cpu3.c CPU_Sources/cputbl.h
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.c -o $@
CPU_Sources/cpu4.o: CPU_Sources/cpu4.c CPU_Sources/cputbl.h
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.c -o $@
CPU_Sources/cpu5.o: CPU_Sources/cpu5.c CPU_Sources/cputbl.h
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.c -o $@
CPU_Sources/cpu6.o: CPU_Sources/cpu6.c CPU_Sources/cputbl.h
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.c -o $@
CPU_Sources/cpu7.o: CPU_Sources/cpu7.c CPU_Sources/cputbl.h
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.c -o $@
CPU_Sources/cpu8.o: CPU_Sources/cpu8.c CPU_Sources/cputbl.h
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.c -o $@
CPU_Sources/cpu9.o: CPU_Sources/cpu9.c CPU_Sources/cputbl.h
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.c -o $@
CPU_Sources/cpuA.o: CPU_Sources/cpuA.c CPU_Sources/cputbl.h
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.c -o $@
CPU_Sources/cpuB.o: CPU_Sources/cpuB.c CPU_Sources/cputbl.h
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.c -o $@
CPU_Sources/cpuC.o: CPU_Sources/cpuC.c CPU_Sources/cputbl.h
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.c -o $@
CPU_Sources/cpuD.o: CPU_Sources/cpuD.c CPU_Sources/cputbl.h
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.c -o $@
CPU_Sources/cpuE.o: CPU_Sources/cpuE.c CPU_Sources/cputbl.h
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.c -o $@
CPU_Sources/cpuF.o: CPU_Sources/cpuF.c CPU_Sources/cputbl.h
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.c -o $@

.m.o:
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.m
.c.o:
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.c -o $@
.c.s:
	$(CC) $(INCLUDES) -S $(CFLAGS) $*.c
.c.i:
	$(CC) $(INCLUDES) -E $(CFLAGS) $*.c > $@
.S.o:
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.S
.s.o:
	$(CC) $(INCLUDES) -c $(CFLAGS) $*.s
