CC = gcc
LIBDIR = /home/tarquin/lib
MANDIR = /home/tarquin/man
BINDIR = /home/tarquin/bin
INCDIR = /home/tarquin/include
DOCDIR = /home/tarquin/doc
OFLAGS = -O3 -ffast-math # -fomit-frame-pointer
CFLAGS = -Wformat -Wimplicit-function-declaration -I/usr/local/include -I. -I$(INCDIR)
DFLAGS = -pg #-g -DDEBUG
LDFLAGS = -L. -L. -L$(LIBDIR)
SO_CFLAGS = -fPIC -Wall -I/usr/local/include -I. -I$(INCDIR)
SO_LDFLAGS = -shared
stanknes_OBJS += main.o
stanknes_OBJS += cmdline.o
stanknes_OBJS += rom.o
stanknes_OBJS += direct.o
stanknes_OBJS += unrom.o
stanknes_OBJS += cnrom.o
stanknes_OBJS += aorom.o
stanknes_OBJS += gnrom.o
stanknes_OBJS += mathops.o
stanknes_OBJS += mmc1.o
stanknes_OBJS += mmc2.o
stanknes_OBJS += mmc3.o
stanknes_OBJS += nsf.o
stanknes_OBJS += rambo1.o
stanknes_OBJS += vrc6.o
stanknes_OBJS += vrc7.o
stanknes_OBJS += fme7.o
stanknes_OBJS += sun4.o
stanknes_OBJS += memmap.o
stanknes_OBJS += newppu.o
stanknes_OBJS += osssound.o
stanknes_OBJS += apu.o
stanknes_OBJS += io.o
stanknes_OBJS += snss.o
stanknes_OBJS += cpu.o
stanknes_OBJS += n6502.o
stanknes_OBJS += xlibgfx.o
stanknes_OBJS += xlibio.o
stanknes_OBJS += t16.o
stanknes_OBJS += pal.o
stanknes_OBJS += p8.o
stanknes_OBJS += t24.o
stanknes_OBJS += luts.o
stanknes_LIBS += -lX11
stanknes_LIBS += -lXext

OBJS += $(stanknes_OBJS)
rominfo_OBJS += rominfo.o

OBJS += $(rominfo_OBJS)
BINTARGETS += stanknes
BINTARGETS += rominfo

LIBINSTALL_TARGETS =
ifdef DEBUG
LIBTARGETS +=
LIBINSTALL_TARGETS +=
endif

TARGETS = $(BINTARGETS) $(LIBTARGETS) $(PLUGINTARGETS)
all: depend $(TARGETS)

clean: .FORCE
	rm -f $(TARGETS) $(OBJS)

realclean: clean
	rm -f .odepend .sodepend *~

distclean: realclean

install: all .FORCE
	$(foreach targ,$(BINTARGETS),cp $(targ) $(BINDIR);)

stanknes: $(stanknes_OBJS)
	$(CC) $(LDFLAGS) $(DFLAGS) -o $@ $(stanknes_OBJS) $(stanknes_LIBS)

rominfo: $(rominfo_OBJS)
	$(CC) $(LDFLAGS) $(DFLAGS) -o $@ $(rominfo_OBJS) $(rominfo_LIBS)

depend: .FORCE
	makedepend -f- -- -Wformat -Wimplicit-function-declaration -I/usr/local/include -I. -I$(INCDIR) -- $(OBJS:.o=.c) > .odepend
	makedepend -f- -o.lo -- -fPIC -Wall -I/usr/local/include -I. -I$(INCDIR) -- $(SO_OBJS:.lo=.c) > .sodepend
	makedepend -f- -o-debug.lo -- -fPIC -Wall -I/usr/local/include -I. -I$(INCDIR) -- $(SO_D_OBJS:-debug.lo=.c) >> .sodepend

%-debug.lo : %.c
	$(CC) $(OFLAGS) $(DFLAGS) $(SO_CFLAGS) -o $@ -c $<

%.lo : %.c
	$(CC) $(OFLAGS) $(SO_CFLAGS) -o $@ -c $<

%.o : %.c
	$(CC) $(DFLAGS) $(OFLAGS) $(CFLAGS) -o $@ -c $<

%.o : %.asm
	nasm -o $@ -f elf $<

.PHONY: all install clean depend realclean dist distclean

.FORCE:

ifdef OBJS
-include .odepend
endif
ifdef SO_OBJS
-include .sodepend
endif
