#
# This file is part of the Alliance CAD System
# Copyright (C) Laboratoire LIP6 - Dpartement ASIM
# Universite Pierre et Marie Curie
# 
# Home page          : http://www-asim.lip6.fr/alliance/
# E-mail support     : mailto:alliance-support@asim.lip6.fr
# 
# This progam is  free software; you can redistribute it  and/or modify it
# under the  terms of the GNU  General Public License as  published by the
# Free Software Foundation;  either version 2 of the License,  or (at your
# option) any later version.
# 
# Alliance VLSI  CAD System  is distributed  in the hope  that it  will be
# useful, but WITHOUT  ANY WARRANTY; without even the  implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
# 
# You should have received a copy  of the GNU General Public License along
# with the GNU C Library; see the  file COPYING. If not, write to the Free
# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#

include $(TOP)/etc/$(MACHINE).mk
include $(TOP)/etc/libraries.mk

LOCAL_TRGLIB      = $(TARGET_LIB)
LOCAL_TRGINC      = $(TARGET_INCLUDE)

LOCAL_INC         = ../include

LOCAL_CFLAGS      = $(CFLAGS) -c
LOCAL_CPPFLAGS    = $(CPPFLAGS) -I$(LOCAL_INC) \
                    -I$(ALLIANCE_INCLUDE) \
                    -DMUT_H='<$(MUT_H)>' \
                    -DBEH_H='<$(BEH_H)>' \
                    -DBHL_H='<$(BHL_H)>' \
                    -DBVL_H='<bvl111.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

distrib : $(LOCAL_TRGLIB)/libBvl111.a

$(LOCAL_TRGLIB)/libBvl111.a : $(LOCAL_OBJECTS)
	$(CP) $(LOCAL_INC)/bvl111.h $(LOCAL_TRGINC)
	$(AR) $(LOCAL_ARFLAGS) $(LOCAL_TRGLIB)/libBvl111.a $(LOCAL_OBJECTS)
	-$(RANLIB) $(LOCAL_TRGLIB)/libBvl111.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

clean :
	-$(RM) -f $(LOCAL_OBJECTS)
	-$(RM) -f ../behave/y.tab.c ../behave/y.tab.h ../behave/lex.yy.c
	-$(RM) -f distrib

realclean : clean
	-$(RM) -f $(LOCAL_TRGLIB)/libBvl111.a $(LOCAL_TRGINC)/bvl111.h

