include $(ALLIANCE_TOP)/etc/$(ALLIANCE_OS).mk
include $(ALLIANCE_TOP)/etc/libraries.mk


#LEX  = /usr/bin/flex
#YACC = /usr/bin/bison
#SED  = /bin/sed
#CC   = /usr/bin/gcc
#MV   = /bin/mv
#CP   = /bin/cp
#AR   = /usr/bin/ar
#RM   = /bin/rm

LOCAL_TRGLIB      = ..
LOCAL_TRGINC      = ..

LOCAL_INC         = .

LOCAL_CFLAGS      = $(CFLAGS) -c -g
LOCAL_CPPFLAGS    = $(CPPFLAGS) -I$(LOCAL_INC) -I$(ALLIANCE_INCLUDE) \
                    -DMUT_H='<$(MUT_H)>' -DBEH_H='<$(BEH_H)>' \
                    -DLOG_H='<$(LOG_H)>'

LOCAL_YACCFLAGS   = $(YACCFLAGS) -d
LOCAL_LEXFLAGS    = $(LEXFLAGS)

LOCAL_ARFLAGS     = $(ARFLAGS)

LOCAL_OBJECTS    = ../behvhdl/bvl_parse.o ../behvhdl/bvl_drive.o \
                   ../behave/bvl_bspec.o  ../util/bvl_util.o     \
                   ../behave/y.tab.o      ../behave/lex.yy.o

$(LOCAL_TRGLIB)/libBvl999.a : $(LOCAL_OBJECTS)
	$(CP) $(LOCAL_INC)/bvl999.h $(LOCAL_TRGINC)
	$(AR) $(LOCAL_ARFLAGS) $(LOCAL_TRGLIB)/libBvl999.a $(LOCAL_OBJECTS)
	-$(RANLIB) $(LOCAL_TRGLIB)/libBvl999.a

../behvhdl/bvl_parse.o : ../behvhdl/bvl_parse.c ../behvhdl/bvl_parse.h
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) ../behvhdl/bvl_parse.c

../behvhdl/bvl_drive.o : ../behvhdl/bvl_drive.c ../behvhdl/bvl_drive.h 
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) ../behvhdl/bvl_drive.c

../behave/lex.yy.o : ../behave/lex.yy.c ../behave/bvl_blex.h ../behave/y.tab.h
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) ../behave/lex.yy.c
	$(MV) lex.yy.o ../behave

../behave/lex.yy.c : ../behave/bvl_bcomp.lex ../behave/y.tab.h
	$(LEX) $(LOCAL_LEXFLAGS) ../behave/bvl_bcomp.lex
	$(SED) -e 's/YY/BVL_Y_/g' -e 's/yy/bvl_y_/g' lex.yy.c > ../behave/lex.yy.c
	$(RM) lex.yy.c

../behave/y.tab.c : ../behave/bvl_bcomp.yac
	$(YACC) $(LOCAL_YACCFLAGS) ../behave/bvl_bcomp.yac
	$(SED) -e 's/YY/BVL_Y_/g' -e 's/yy/bvl_y_/g' y.tab.c > ../behave/y.tab.c
	$(RM) y.tab.c
	$(SED) -e 's/YY/BVL_Y_/g' -e 's/yy/bvl_y_/g' y.tab.h > ../behave/y.tab.h
	$(RM) y.tab.h

../behave/y.tab.o : ../behave/y.tab.c ../behave/bvl_byacc.h
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) ../behave/y.tab.c
	$(MV) y.tab.o ../behave

../behave/bvl_bspec.o : ../behave/bvl_bspec.c ../behave/bvl_bspec.h
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) ../behave/bvl_bspec.c
	$(MV) bvl_bspec.o ../behave

../util/bvl_util.o : ../util/bvl_util.c ../util/bvl_utype.h ../util/bvl_util.h
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) ../util/bvl_util.c
	$(MV) bvl_util.o ../util

distrib : $(LOCAL_TRGLIB)/libBvl999.a
	@touch distrib
	@if [ -f $(LOCAL_TRGLIB)/INSTALLED ] ; then $(RM) $(LOCAL_TRGLIB)/INSTALLED  ; else exit 0 ; fi
	@if [ -f $(LOCAL_TRGINC)/INSTALLED ] ; then $(RM) $(LOCAL_TRGINC)/INSTALLED  ; else exit 0 ; fi

clean :
	-$(RM) -f $(LOCAL_OBJECTS)
	-$(RM) -f $(LOCAL_TRGLIB)/libBvl999.a $(LOCAL_TRGINC)/bvl999.h
	-$(RM) -f distrib
