CFLAGS = -I../../../libpp_base/src/include -I../include -I.. -W -Wall -g -D_REENTRANT -D_GNU_SOURCE -DPP_BOARD_PEMX
LDLFAGS = -L. -L../../../libpp_base/src/test

SRCDIR = ..

LSRCS =         $(SRCDIR)/cd.c \
		$(SRCDIR)/as_op_print.c \
		$(SRCDIR)/as_op_semcheck.c \
		$(SRCDIR)/as_op_tagsec.c \
                $(SRCDIR)/as_op_get_qid.c \
                $(SRCDIR)/as_op_type_compare.c
                

LIBSRC =        cdlparser.tab.c \
		lex.pp_cd_yy.c

SRCS =		main.c

LIBOBJS  = $(LIBSRC:.c=.o) $(LSRCS:$(SRCDIR)/%.c=%.o)
OBJS     = $(SRCS:.c=.o)

all: libcd.a test_union

libcd.a: $(LIBOBJS)
	$(AR) r $@ $(LIBOBJS)

test_union: $(OBJS) libcd.a
	$(CC) -o $@ $(OBJS) $(LDLFAGS) -lcd -lbase -lpthread

$(SRCDIR)/cdlparser.tab.c $(SRCDIR)/cdlparser.tab.h: $(SRCDIR)/cdlparser.y
	bison -p pp_cd_yy -d --output-file=$@ $<

$(SRCDIR)/lex.pp_cd_yy.c: $(SRCDIR)/cdlparser.tab.h $(SRCDIR)/cdlparser.l
	flex -Ppp_cd_yy $(SRCDIR)/cdlparser.l

install: all
	./test_union all.cdl

clean:
	rm -f $(SRCDIR)/lex.pp_cd_yy.c $(SRCDIR)/cdlparser.tab.c $(SRCDIR)/cdlparser.tab.h cdl libcd.a *.o *~ .depend

%.o: $(SRCDIR)/%.c
	$(CC) $(CFLAGS) -c $< -o $@

.depend: $(LSRCS) $(SRCS) 
	$(CC) -M $(CFLAGS) $(LSRCS) $(SRCS) | sed 's/^.*\.o/& $@/g' > $@

cdlparser.tab.c cdlparser.tab.h lex.pp_cd_yy.c: ../include/pp/cd.h
-include .depend

