#
# 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.
#

# /*------------------------------------------------------------\
# |                                                             |
# | Tool   :                 Library FVH102                     |
# |                                                             |
# | File   :                    Makefile                        |
# |                                                             |
# | Behhor :                  Jacomme Ludovic                   |
# |                                                             |
# | Date    :                   04.12.96                        |
# |                                                             |
# \------------------------------------------------------------*/

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

# /*------------------------------------------------------------\
# |                                                             |
# |                            Variables                        |
# |                                                             |
# \------------------------------------------------------------*/

LOCAL_CFLAGS = $(CFLAGS)  -D$(MACHINE)

# /*------------------------------------------------------------\
# |                                                             |
# |                             Include                         |
# |                                                             |
# \------------------------------------------------------------*/

LOCAL_INCLUDE = -I$(LOCAL_TARGET_INC) -I$(ALLIANCE_INCLUDE)

# /*------------------------------------------------------------\
# |                                                             |
# |                             Library                         |
# |                                                             |
# \------------------------------------------------------------*/
# /*------------------------------------------------------------\
# |                                                             |
# |                             Define                          |
# |                                                             |
# \------------------------------------------------------------*/

LOCAL_MBK_DEFINE = -DMUT_H='"$(MUT_H)"'
LOCAL_ABL_DEFINE = -DAUT_H='"$(AUT_H)"' \
                   -DABL_H='"$(ABL_H)"'
LOCAL_FVH_DEFINE = -DBDD_H='"$(BDD_H)"' \
                   -DFSM_H='"$(FSM_H)"' \
                   -DFVH_H='"fvh102.h"'

LOCAL_DEFINE = $(LOCAL_MBK_DEFINE) $(LOCAL_ABL_DEFINE) $(LOCAL_FVH_DEFINE)

LOCAL_HEADER = $(LOCAL_INCLUDE) $(LOCAL_DEFINE)

LOCAL_FVH_LIB    = libFvh102.a
LOCAL_FVH_INC    = fvh102.h

# /*------------------------------------------------------------\
# |                                                             |
# |                             Object                          |
# |                                                             |
# \------------------------------------------------------------*/

LOCAL_FVH_OBJ = fbh_add.o fbh_typ.o fbh_del.o fbh_fre.o fbh_rmv.o \
                fbh_env.o fbh_rin.o fbh_uti.o \
                fbl_y.tab.o fbl_lex.yy.o fbl_bspec.o fbl_util.o \
                fbl_drive.o \
                fvherror.o fvhparse.o fvhdrive.o fvhfbh2fsm.o

LOCAL_OBJ = $(LOCAL_FVH_OBJ)

.c.o : $(LOCAL_TARGET_INC)/$(LOCAL_FVH_INC)
	$(CC) -c $(LOCAL_CFLAGS) $(LOCAL_HEADER) $<

# /*------------------------------------------------------------\
# |                                                             |
# |                         Library Fvh                         |
# |                                                             |
# \------------------------------------------------------------*/

distrib : $(LOCAL_TARGET_INC)/$(LOCAL_FVH_INC) \
          $(LOCAL_TARGET_LIB)/$(LOCAL_FVH_LIB)

$(LOCAL_TARGET_INC)/$(LOCAL_FVH_INC) : $(LOCAL_FVH_INC)
	$(CP) $(LOCAL_FVH_INC) $(LOCAL_TARGET_INC)/$(LOCAL_FVH_INC)

$(LOCAL_TARGET_LIB)/$(LOCAL_FVH_LIB) : $(LOCAL_OBJ)
	$(AR) $(ARFLAGS) $(LOCAL_TARGET_LIB)/$(LOCAL_FVH_LIB) $(LOCAL_FVH_OBJ)
	$(RANLIB) $(LOCAL_TARGET_LIB)/$(LOCAL_FVH_LIB)

fbl_y.tab.o  : fbl_y.tab.c fbl_byacc.h
fbl_bspec.o  : fbl_bspec.c fbl_bspec.h
fbl_util.o   : fbl_util.c fbl_utype.h fbl_util.h fbl_utdef.h
fbl_parse.o  : fbl_parse.c fbl_parse.h
fbl_drive.o  : fbl_drive.c fbl_drive.h
fbl_lex.yy.o : fbl_lex.yy.c fbl_blex.h fbl_y.tab.h

fbl_lex.yy.c : fbl_bcomp.lex
	$(LEX) fbl_bcomp.lex
	$(SED) -e 's/YY/FBL_Y_/g' -e 's/yy/fbl_y_/g' lex.yy.c > fbl_lex.yy.c
	$(RM) lex.yy.c

fbl_y.tab.c : fbl_bcomp.yac
	$(YACC) $(YACCFLAGS) -d fbl_bcomp.yac
	$(SED) -e 's/YY/FBL_Y_/g' -e 's/yy/fbl_y_/g' y.tab.c > fbl_y.tab.c
	$(RM) y.tab.c
	$(SED) -e 's/YY/FBL_Y_/g' -e 's/yy/fbl_y_/g' y.tab.h > fbl_y.tab.h
	$(RM) y.tab.h

# /*------------------------------------------------------------\
# |                                                             |
# |                              Clean                          |
# |                                                             |
# \------------------------------------------------------------*/

clean :
	$(RM) -f $(LOCAL_OBJ)

# /*------------------------------------------------------------\
# |                                                             |
# |                          RealClean                          |
# |                                                             |
# \------------------------------------------------------------*/

realclean : clean
	$(RM) -f $(LOCAL_TARGET_LIB)/$(LOCAL_FVH_LIB) \
                 $(LOCAL_TARGET_INC)/$(LOCAL_FVH_INC)

# /*------------------------------------------------------------\
# |                                                             |
# |                          Clean Object                       |
# |                                                             |
# \------------------------------------------------------------*/

cleanobj :
	$(RM) -f $(LOCAL_OBJ)
