#
# $Id: Makefile,v 1.4 1996/02/28 00:29:45 ms Exp $
#

prefix = /usr
bindir = $(prefix)/bin
docdir = $(prefix)/doc

CC = gcc
CXX = g++
CFLAGS = -Wall -O2 -funroll-loops -finline-functions
CXXFLAGS = $(CFLAGS)
LDFLAGS =  # -static

# If you need to manually define something 
# e.g. -Dsolaris2
DEFS =

# Uncomment this if you compile on a Silicon Graphics Indigo compatible workstation
#AUDIOLIB = -laudio

# Uncomment this if you use an old libg++.so
#OLDIOS = -liostream

LIBS = $(OLDIOS) $(AUDIOLIB)
INCS = -I. -Iinclude

# sidgui stuff
XFORMLIB = -L/usr/X11R6/lib -lxforms
XFORMINC = -I/usr/X11R6/include/X11
XLIB = -L/usr/X11R6/lib -lX11
XINC = -I/usr/X11R6/include

GUILIBS = $(LIBS) $(XFORMLIB) $(XLIB)
GUIINCS = $(INCS) $(XFORMINC) $(XINC)
# end of sidgui stuff


.SUFFIXES:
.SUFFIXES: .c .cxx .d .h .o

mpusrc = mos_6510/reset.c mos_6510/ramrom.c mos_6510/6510_.cxx
mpuobj = mos_6510/reset.o mos_6510/ramrom.o mos_6510/6510_.o

sidsrc = mos_6581/config.cxx mos_6581/regeval.cxx mos_6581/freqcalc.cxx \
	 mos_6581/envelope.cxx mos_6581/speed.c mos_6581/samples.cxx \
	 mos_6581/6581_.cxx
sidobj = mos_6581/config.o mos_6581/regeval.o mos_6581/freqcalc.o \
	 mos_6581/envelope.o mos_6581/speed.o mos_6581/samples.o \
	 mos_6581/6581_.o
guiobj = gui.o 
guisrc = gui.c 


othersrc = fformat_.cxx psid_.cxx mus_.cxx info_.cxx sid_.cxx \
           pp_.cxx sidtune.cxx
otherobj = $(othersrc:.cxx=.o)

cxxsources = sidplay.cxx

all:		depend \
		$(cxxsources:.cxx=.o) \
		$(mpusrc:.cxx=.o) $(mpusrc:.c=.o) \
		$(sidsrc:.cxx=.o) $(sidsrc:.c=.o) \
		$(othersrc:.cxx=.o) $(othersrc:.c=.o) \
		sidplay \
		$(guisrc:.cxx=.o) $(guisrc:.c=.o) \
		sidgui

.PHONY: depend
depend:		$(cxxsources:.cxx=.d) \
		$(mpusrc:.cxx=.d) $(mpusrc:.c=.d) \
		$(sidsrc:.cxx=.d) $(sidsrc:.c=.d) \
		$(othersrc:.cxx=.d) $(othersrc:.c=.d) \
		$(guisrc:.cxx=.d) $(guisrc:.c=.d)

%.d:		%.c
		$(CC) -M $(INCS) $(GUIINCS) $(DEFS) $< > $@

%.d:		%.cxx
		$(CXX) -M $(INCS) $(GUIINCS) $(DEFS) $< > $@

%.o:		%.c
		$(CC) $(CFLAGS) $(INCS) $(GUIINCS) $(DEFS) -c $< -o $@

%.o:		%.cxx
		$(CXX) $(CXXFLAGS) $(INCS) $(GUIINCS) $(DEFS) -c $< -o $@

sidplay:	sidplay.o $(mpuobj) $(sidobj) $(otherobj)
		$(CXX) sidplay.o $(mpuobj) $(sidobj) $(otherobj) \
		  $(LDFLAGS) $(LIBS) -o sidplay
#		$(CXX) $< $(mpuobj) $(sidobj) $(otherobj) \
#         $(LDFLAGS) $(LIBS) -o $@
		strip $@

sidgui:	        sidgui.o $(guiobj) $(mpuobj) $(sidobj) $(otherobj)
		$(CXX) sidgui.o $(guiobj) $(mpuobj) $(sidobj) $(otherobj) \
		  $(LDFLAGS) $(GUILIBS) -o sidgui
#		$(CXX) $< $(mpuobj) $(sidobj) $(otherobj) \
#         $(LDFLAGS) $(LIBS) -o $@
		strip $@


install:	all
		cp -f sidplay $(bindir)
		cp -f sidgui $(bindir)
		mkdir $(docdir)/sidplay
		cp README.* $(docdir)/sidplay

.PHONY: clean
clean:
		rm -f `find . -name '*.[do]'`
		rm -f sidplay
		rm -f sidgui
