PROGRAM = main
o	= .o
LDOBJS  = _object$o Object$o Object-imp$o Object-lib$o \
	  Expression$o Scanner$o CokeScanner$o \
	  VPU$o compile$o \
	  libcvpu.a libvpu.a libopcodes.a libbfd.a libiberty.a libintl.a
USYS	= $(shell uname -s | tr 'A-Z' 'a-z')
UMAC	= $(shell uname -m | sed 's/i[456789]86/i386/;s/Power Macintosh/ppc/')
ARCH	= VPU-$(USYS)-$(UMAC)
LDLIBS  = -lstdc++ -lreadline
SHOBJS	= 
IDC  = idc -k -Wc,-pipe
SWIG = swig -pepsi

all : $(SHOBJS) $(LDOBJS) $(PROGRAM)

%.so : %.st
	$(IDC) -s $<

%.o : %.st
	$(IDC) -c $<

%.a : $(ARCH)/%.a
	cp $< $@
	ranlib $@

$(ARCH)/libcvpu.a : lib/cvpu.cc
	$(MAKE) -C lib # ABI_FLAG="-arch $(ARCH)"
	rm -f $(ARCH)/libcvpu.a
	mv lib/libcvpu.a $(ARCH)/libcvpu.a
	$(MAKE) -C lib clean

% : %.st $(LDOBJS)
	$(IDC) $< $(LDOBJS) $(LDLIBS)

run : all
	./$(PROGRAM) < test.k

WINOBJS	= ExternalLibrary$o XSetWindowAttributes$o XGCValues$o XEvent$o Xlib$o Window-lib$o Window-x11$o Matrix$o Font$o

test : test.st $(LDOBJS) $(WINOBJS)
	$(IDC) -J/usr/X11R6/include test.st $(LDOBJS) $(WINOBJS) $(LDLIBS) -L/usr/X11R6/lib -lX11

test-widgets : test-widgets.st $(LDOBJS) $(WINOBJS)
	$(IDC) -J/usr/X11R6/include test-widgets.st $(LDOBJS) $(WINOBJS) $(LDLIBS) -L/usr/X11R6/lib -lX11 -lXext

CAIROBJS = $(WINOBJS) libcairo$o cairo$o cairo-xlib$o

cairo-app : cairo-app.st $(LDOBJS) $(CAIROBJS)
	$(IDC) -J/usr/X11R6/include -J/usr/local/include/cairo cairo-app.st \
		$(LDOBJS) $(CAIROBJS) $(LDLIBS) -L/usr/local/lib -lcairo -L/usr/X11R6/lib -lX11 -lXext

libcairo$o : libcairo.st
	$(IDC) -J/usr/local/include/cairo -c libcairo.st

libcairo.st : libcairo.i
	$(SWIG) -I/usr/local/include/cairo libcairo.i

libXlib$o : libXlib.st
	$(IDC) -J/usr/X11R6/include/X11 -c libXlib.st

libXlib.st : libXlib.i
	$(SWIG) -I/usr/X11R6/include/X11 libXlib.i

C99OBJS	= 

C99 : C99.st $(LDOBJS) $(C99OBJS)
	$(IDC) C99.st $(LDOBJS) $(C99OBJS) $(LDLIBS)

stats : .FORCE
	sort -u $(LDOBJS:$o=.st) | wc -l

tidy: .FORCE
	rm -f *~

clean : tidy .FORCE
	rm -f $(PROGRAM) $(PROGRAM).c $(LIBS) *.exe *.so.c *.so *.o.c *.o .gdb* *.a
	rm -f test test.c
	rm -f MC MC.c
	rm -f C99 C99.c
	rm -f kgi kgi.c
	rm -f test-widgets test-widgets.c
	rm -f monty monty.c
	rm -f cairo-app cairo-app.c NONE

spotless : clean .FORCE
#	rm -f libcairo*.st
#	rm -f libXlib*.st

.FORCE :
