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
ARCH	= $(shell arch)
LDLIBS  = -lstdc++
SHOBJS	= 

IDC = idc -k -Wc,-pipe

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

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

spotless : clean .FORCE

.FORCE :
