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

#******************************************************************************#
#*                                                                            *#
#*                    CAO & VLSI's cad tools chain Alliance                   *#
#*                                                                            *#
#*     Product  : STANDARD CELLS PLACER AND ROUTER                            *#
#*     File     : @(#) Makefile                                               *#
#*     Contents :                                                             *#
#*                                                                            *#
#*     (c) Copyright 1992 Laboratoire MASI equipe CAO & VLSI                  *#
#*     All rights reserved                                                    *#
#*     Hot line  : cao-vlsi@masi.ibp.fr (e-mail)                              *#
#*                                                                            *#
#*     Author(s)   : El housseine REJOUAN               Date : 13/01/1993     *#
#*     Modified by : El housseine REJOUAN               Date : 08/10/1993     *#
#*     Modified by :                                    Date : ../../....     *#
#*     Modified by :                                    Date : ../../....     *#
#*                                                                            *#
#******************************************************************************#


#******************************************************************************#
#*			LIBRARY PATH & INCLUDE PATH                           *#
#******************************************************************************#
include $(TOP)/etc/$(MACHINE).mk
include $(TOP)/etc/libraries.mk

ALC_INC = -I$(ALLIANCE_INCLUDE) \
          -DMLU_H='<$(MLU_H)>' \
          -DMPU_H='<$(MPU_H)>' \
          -DMLO_H='<$(MLO_H)>' \
          -DMPH_H='<$(MPH_H)>' \
          -DAPR_H='<$(APR_H)>' \
          -DMUT_H='<$(MUT_H)>'

ALC_LIB = -L$(ALLIANCE_LIB) \
           $(MLU_L) \
           $(MPU_L) \
           $(MCP_L) \
           $(MAP_L) \
           $(MMG_L) \
           $(MCL_L) \
           $(MGL_L) \
           $(MAL_L) \
           $(MVL_L) \
           $(MEL_L) \
           $(MSL_L) \
           $(MHL_L) \
           $(RCN_L) \
           $(MLO_L) \
           $(MPH_L) \
           $(APR_L) \
           $(MUT_L)

SCR_LIB = $(ALC_LIB) -lm

LOCAL_SCR_DEFINE = -DALLIANCE_VERSION=$(ALLIANCE_VERSION)

#******************************************************************************#
#*                      FLAGS FOR COMPILATION                                 *#
#******************************************************************************#
LOCAL_TRGBIN = $(TARGET_BIN)

LOCAL_FLAGS = $(CFLAGS) -O4

#******************************************************************************#
#*			SOURCES FILES FOR SCR				      *#
#******************************************************************************#
SCR_SOURCES = ScrSesame.c LoadDataBase.c ViewDataBase.c \
              GlobalRouter.c main.c

#******************************************************************************#
#*			HEADERS FILES FOR SCR				      *#
#******************************************************************************#
SCR_HEADERS = ScrDataBase.h LoadDataBase.h \
              ViewDataBase.h GlobalRouter.h SCR_Type.h

#******************************************************************************#
#*			OBJ. FILES FOR SCR				      *#
#******************************************************************************#
SCR_OBJS   = ScrSesame.o LoadDataBase.o ViewDataBase.o GlobalRouter.o \
             y.tab.o lex.yy.o main.o

#******************************************************************************#
#*	                 ALLIANCE DISTRIBUTION INPUT                          *#
#******************************************************************************#
distrib : $(LOCAL_TRGBIN)/scr


#******************************************************************************#
#*	      EXECUTABLE FOR STANDARD CELLS PLACER AND ROUTER                 *#
#******************************************************************************#
$(LOCAL_TRGBIN)/scr : $(SCR_OBJS) $(SCR_HEADERS)
	$(CC) $(ALC_INC) $(LOCAL_FLAGS) -o $(LOCAL_TRGBIN)/scr $(SCR_OBJS) $(SCR_LIB) 
	$(STRIP) $(LOCAL_TRGBIN)/scr

#******************************************************************************#
#*			OBJ. LEX and YACC 				      *#
#******************************************************************************#
y.tab.c : scr.yac SCR_Type.h
	$(YACC) $(YACCFLAGS) -d scr.yac

y.tab.o : y.tab.c
	$(CC) $(ALC_INC) $(LOCAL_FLAGS) -c y.tab.c -o y.tab.o

lex.yy.c : scr.lex SCR_Type.h
	$(LEX) scr.lex

lex.yy.o : lex.yy.c
	$(CC) $(ALC_INC) $(LOCAL_FLAGS) -c lex.yy.c -o lex.yy.o

#******************************************************************************#
#*			OBJS FILES FOR SCR				      *#
#******************************************************************************#
ScrSesame.o : ScrSesame.c 
	$(CC) $(ALC_INC) $(LOCAL_FLAGS) -c ScrSesame.c -o ScrSesame.o

LoadDataBase.o : LoadDataBase.c SCR_Type.h
	$(CC) $(ALC_INC) $(LOCAL_FLAGS) -c LoadDataBase.c -o LoadDataBase.o

ViewDataBase.o : ViewDataBase.c SCR_Type.h
	$(CC) $(ALC_INC) $(LOCAL_FLAGS) -c ViewDataBase.c -o ViewDataBase.o

GlobalRouter.o : GlobalRouter.c SCR_Type.h
	$(CC) $(ALC_INC) $(LOCAL_FLAGS) -c GlobalRouter.c -o GlobalRouter.o

main.o : main.c $(SCR_HEADERS)
	$(CC) $(ALC_INC) $(LOCAL_FLAGS) $(LOCAL_SCR_DEFINE) -c main.c -o main.o

#******************************************************************************#
#*			                             			      *#
#******************************************************************************#
clean :
	$(RM) -f $(SCR_OBJS) distrib 

realclean : clean
	$(RM) -f $(LOCAL_TRGBIN)/scr

flow :
	cflow -r $(ALC_INC) $(SCR_SOURCES)  > scr.rflow
	cflow  $(ALC_INC) $(SCR_SOURCES) > scr.flow

ctags :
	/USR/ucb/ctags -v $(SCR_SOURCES) | sort -f > scr.index

lint :
	lint $(ALC_INC) $(SCR_SOURCES) > scr.lint

#******************************************************************************#
