#------------------------------------------------------------------
# Makefile for VHDL Analyzer of ISRC VHDL Developer's Tookit
#
VDT	= ../..
BIN	= $(VDT)/bin
LIB	= $(VDT)/lib
INC	= $(VDT)/include

#-----------------------------------------------------------------
# Compile Rules and Link Rules
#
DBGFLAG = -g -DDEBUG
LEX	= flex
YACC	= bison
C++	= g++ -static

LFLAGS	= -d
YFLAGS	= -y -d -v -t
CFLAGS	= $(DBGFLAG) -I$(INC)
LDLIBS 	= -L/usr/local/lib -lfl
LIBS	= $(LIB)/libpi.a

.SUFFIXES: .cc
.cc.o:
	$(C++) $(CFLAGS) $(CPPFLAGS) -c $<

#------------------------------------------------------------------
# Program Source
#
TARGET	= van
PARSER	= parseVHDL
LEXER	= lexVHDL
HDRS	= global.h action.h internal.h slStack.h regionCtl.h overLoad.h
SRCS	= main.cc action.cc internal.cc overLoad.cc smart.cc
OBJS	= $(LEXER).o $(PARSER).o $(SRCS:.cc=.o)

####################################################################
all: $(TARGET)

install: $(TARGET)
	install -d $(BIN)
	install $(TARGET) $(BIN)

clean:
	$(RM) $(TARGET) $(OBJS) $(PARSER).cc $(PARSER).h $(LEXER).cc $(LEXER).h y.output y.tab.* lex.yy.* make.out

$(TARGET): $(OBJS) $(LIBS)
	@echo "Building $@ ..."
	$(C++) -o $@ $(OBJS) $(LIBS) $(LDLIBS)

$(LEXER).o: $(LEXER).cc
$(LEXER).cc: $(LEXER).l $(PARSER).h
	$(LEX) $(LEXER).l
	mv lex.yy.c $(LEXER).cc
	@echo "	  $@ was built."

$(PARSER).o: $(PARSER).cc
$(PARSER).cc $(PARSER).h: $(PARSER).y
	$(YACC) $(YFLAGS) $(PARSER).y
	mv y.tab.h $(PARSER).h
	mv y.tab.c $(PARSER).cc
	@echo "	  $(PARSER).cc $(PARSER).h was built."

