#
# 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_CFLAGS      = $(CFLAGS) -c -DMUT_H='<$(MUT_H)>' -DMLO_H='<$(MLO_H)>'
LOCAL_CPPFLAGS    = $(CPPFLAGS) -I$(ALLIANCE_INCLUDE)
LOCAL_YACCFLAGS   = $(YACCFLAGS) -d 
LOCAL_LEXFLAGS    = $(LEXFLAGS)

LOCAL_ARFLAGS     = $(ARFLAGS)

LOCAL_OBJECTS    = ../mbkvhdl/mvl_parse.o ../mbkvhdl/mvl_drive.o \
                   ../struct/y.tab.o      ../struct/lex.yy.o     \
                   ../struct/mvl_sspec.o  ../util/mvl_util.o

distrib : $(LOCAL_TRGLIB)/libMvl409.a

$(LOCAL_TRGLIB)/libMvl409.a : $(LOCAL_OBJECTS)
	$(AR) $(LOCAL_ARFLAGS) $(LOCAL_TRGLIB)/libMvl409.a $(LOCAL_OBJECTS)
	-$(RANLIB) $(LOCAL_TRGLIB)/libMvl409.a

../mbkvhdl/mvl_parse.o : ../mbkvhdl/mvl_parse.c ../mbkvhdl/mvl_parse.h
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) ../mbkvhdl/mvl_parse.c

../mbkvhdl/mvl_drive.o : ../mbkvhdl/mvl_drive.c ../mbkvhdl/mvl_drive.h 
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) ../mbkvhdl/mvl_drive.c

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

../struct/lex.yy.c : ../struct/mvl_scomp.lex ../struct/mvl_stype.h
	$(LEX) $(LOCAL_LEXFLAGS)../struct/mvl_scomp.lex
	$(SED) -e 's/YY/MVL_Y_/g' -e 's/yy/mvl_y_/g' lex.yy.c > ../struct/lex.yy.c
	$(RM) lex.yy.c

../struct/y.tab.c : ../struct/mvl_scomp.yac ../struct/mvl_stype.h
	$(YACC) $(LOCAL_YACCFLAGS) ../struct/mvl_scomp.yac
	$(SED) -e 's/YY/MVL_Y_/g' -e 's/yy/mvl_y_/g' y.tab.c > ../struct/y.tab.c
	$(RM) y.tab.c
	$(SED) -e 's/YY/MVL_Y_/g' -e 's/yy/mvl_y_/g' y.tab.h > ../struct/y.tab.h
	$(RM) y.tab.h

../struct/y.tab.o : ../struct/y.tab.c ../struct/mvl_syacc.h
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) ../struct/y.tab.c
	$(MV) y.tab.o ../struct

../struct/mvl_sspec.o : ../struct/mvl_sspec.c ../struct/mvl_sspec.h
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) ../struct/mvl_sspec.c
	$(MV) mvl_sspec.o ../struct

../util/mvl_util.o : ../util/mvl_util.c ../util/mvl_utype.h ../util/mvl_util.h
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) ../util/mvl_util.c
	$(MV) mvl_util.o ../util

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

realclean : clean
	-$(RM) -f $(LOCAL_TRGLIB)/libMvl409.a

