# Makefile for SPC language
#
SFS 	= ../..
X 	= $(SFS)/bin
I	= $(SFS)/include
L	= $(SFS)/lib
CFLAGS 	= -g -I$I
LIBS	= $(SLIB)
GLIBS	= $(GLIB) $(SLIB)
RLIBS	= $(SLIB) $(ALIB)	
RGLIBS	= $(GLIB) $(SLIB) $(ALIB)
YFLAGS	= -d
#
OBJS	=  spc.o spclex.o output.o
LIB	= $L/libspc.a
.SUFFIXES: .o .c .h .pas .y
YACC 	= /app/bison/bison
#
all:	$X/spc $X/mergerr $(LIB)
#
.y.c:
	$(YACC) $(YFLAGS) $<
	mv spc.tab.c $*.c
.y.o:
	$(YACC) $(YFLAGS) $<
	mv spc.tab.c $*.c
	$(CC) $(CFLAGS) -c $*.c
#
$X/spc : $(OBJS)
	cc $(CFLAGS) $(OBJS) $(LIBS) -o $X/spc
$X/mergerr : mergerr.c
	cc $(CFLAGS) mergerr.c $(LIBS) -o $X/mergerr
#
spc.o spclex.o : spc.h spc.y
#
spclex.o : spctab.h
#
spctab.h : spc.tab.h
	-cmp -s spctab.h spc.tab.h || cp spc.tab.h spctab.h
#
$(LIB):	$(LIB)(pasfunc.o) $(LIB)(sfsfunc.o) $(LIB)(filter.o) $(LIB)(dsp.o) \
	$(LIB)(pgraph.o)
	ranlib $(LIB)
#
pasfunc.o: pasfunc.c spc.h $I/spcc.h
sfsfunc.o: sfsfunc.c spc.h $I/spcc.h
filter.o: filter.c filter.h
dsp.o: dsp.c
