#
# 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
include local.mk

VER_1    = 3
VER_2    = 00
VERSION  = $(VER_1).$(VER_2)
VER_NUM  = $(VER_1)$(VER_2)
LIB_NAME = vrd 
DRUC_LIB = libVrd$(VER_NUM).a
DRUC_INC = vrd$(VER_NUM).h
DRUC_BIN = druc


ALC_INC = -I$(ALLIANCE_INCLUDE) \
          -DMPU_H='"$(MPU_H)"' \
          -DMPH_H='"$(MPH_H)"' \
          -DMUT_H='"$(MUT_H)"' \
          -DRDS_H='"$(RDS_H)"' \
          -DRPR_H='"$(RPR_H)"' \
          -DRFM_H='"$(RFM_H)"' \
          -DRUT_H='"$(RUT_H)"' \
          -DRWI_H='"$(RWI_H)"' \
          -DRTL_H='"$(RTL_H)"'

ALC_LIB = -L$(ALLIANCE_LIB) \
          $(RTL_L) \
          $(RGS_L) \
          $(RCF_L) \
          $(RFM_L) \
          $(RPR_L) \
          $(RWI_L) \
          $(RUT_L) \
          $(RDS_L) \
          $(MPU_L) \
          $(MCP_L) \
          $(MAP_L) \
          $(MMG_L) \
          $(MPH_L) \
          $(MUT_L)


HEADERS = drucbath.h      \
          drucgral.h      \
          drucmin.h       \
          vmcerror.h      \
          vmcunify.h      \
          vmcaract.h      \
          vmcmesur.h      \
          drucring.h      \
          vmcasmld.h      \
          vmcrelat.h      \
          druchier.h      \
          drucutil.h      \
          defdefin.h      \
          defunion.h      \
          definter.h      \
          definclu.h      \
          defexclu.h      \
          defresiz.h      \
          deftools.h      \
          vmcerror.h      \
          drucompi.h      \
          vmctools.h      \
          drucutil.h      \
          drucyac.h         

SOURCES = drucbath.c      \
          drucmin.c       \
          lex.yy.c        \
          vmcerror.c      \
          vmcunify.c      \
          drucompi.c      \
          vmcaract.c      \
          vmcmesur.c      \
          drucyac.c       \
          drucgral.c      \
          drucring.c      \
          vmcasmld.c      \
          vmcrelat.c      \
          druchier.c      \
          drucutil.c      \
          defdefin.c      \
          defunion.c      \
          definter.c      \
          definclu.c      \
          defexclu.c      \
          defresiz.c      \
          deftools.c      \
          vmctools.c	  \
          drucgral_test.c     

OBJ     = drucyac.o       \
          drucutil.o      \
          lex.yy.o        \
          vmctools.o      \
          vmcerror.o      \
          drucompi.o      \
          druchier.o      \
          vmcunify.o      \
          vmcasmld.o      \
          vmcmesur.o      \
          vmcaract.o      \
          vmcrelat.o      \
          defdefin.o      \
          defunion.o      \
          definter.o      \
          definclu.o      \
          defexclu.o      \
          defresiz.o      \
          deftools.o      \
          drucmin.o    

OBJ_LIB = $(OBJ)          \
          drucgral.o     

OBJ_TST = $(OBJ_LIB)      \
          drucgral_test.o     

OBJ_EXE = $(OBJ)          \
          drucring.o      \
          drucbath.o


EXTRAFLAGS = $(ALC_INC) \
             -DVERSION='"$(VERSION)"' \
	     -D$(MACHINE) \
             -DALLIANCE_VERSION=$(ALLIANCE_VERSION)

all: distrib

distrib : $(TARGET_INCLUDE)/$(DRUC_INC) \
          $(TARGET_BIN)/$(DRUC_BIN) \
          $(TARGET_LIB)/$(DRUC_LIB)

$(TARGET_INCLUDE)/$(DRUC_INC) : drucgral.h
	$(CP) drucgral.h $(TARGET_INCLUDE)/$(DRUC_INC)

$(TARGET_BIN)/$(DRUC_BIN) : $(OBJ_EXE)
	$(CC) $(CFLAGS) $(OBJ_EXE) $(ALC_LIB) -lm  -o  $(TARGET_BIN)/$(DRUC_BIN)
	$(STRIP) $(TARGET_BIN)/$(DRUC_BIN)

$(TARGET_LIB)/$(DRUC_LIB) : $(OBJ_LIB)
	$(AR) $(ARFLAGS) $(TARGET_LIB)/$(DRUC_LIB) $(OBJ_LIB)
	$(RANLIB) $(TARGET_LIB)/$(DRUC_LIB) 

.c.o        : $(HEADERS)
	$(CC) $(CFLAGS) $(EXTRAFLAGS) -c $<

lex.yy.o : drucompi.lex drucompi.yac
	$(LEX) drucompi.lex
	$(CC) $(CFLAGS) $(EXTRAFLAGS) -c lex.yy.c

drucyac.o : drucompi.yac 
	$(YACC) -d drucompi.yac
	$(MV) drucompi.yac.tab.c drucyac.c
	$(CC) $(CFLAGS) $(EXTRAFLAGS) -c drucyac.c

clean:
	$(RM) -f $(OBJ_EXE) lex.yy.c drucompi.yac.tab.* drucompi.yac.output drucgral.o

realclean: clean
	$(RM) -f $(TARGET_INCLUDE)/$(DRUC_INC)  $(TARGET_BIN)/$(DRUC_BIN)  $(TARGET_LIB)/$(DRUC_LIB)


