#
# 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   :                     LYNX                           |
# |                                                             |
# | File   :                   Makefile                         |
# |                                                             |
# | Author :                 Jacomme Ludovic                    |
# |                                                             |
# | Date   :                    10.01.96                        |
# |                                                             |
# \------------------------------------------------------------*/

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

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

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

# /*------------------------------------------------------------\
# |                                                             |
# |                             Binary                          |
# |                                                             |
# \------------------------------------------------------------*/

LOCAL_TARGET_BIN = $(TARGET_BIN)

LOCAL_LYNX_BIN = lynx
LOCAL_FLAT_BIN = flatrds

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

LOCAL_INCLUDE = -I$(ALLIANCE_INCLUDE)

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

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


LOCAL_RDS_LIB = -L$(ALLIANCE_LIB) \
                $(RTL_L) \
                $(RGS_L) \
                $(RCF_L) \
                $(RFM_L) \
                $(RPR_L) \
                $(RWI_L) \
                $(RUT_L) \
                $(RDS_L)

LOCAL_LIB = $(LOCAL_RDS_LIB) $(LOCAL_MBK_LIB)

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

LOCAL_MBK_DEFINE = -DMUT_H='"$(MUT_H)"' \
                   -DMLO_H='"$(MLO_H)"' \
                   -DMPH_H='"$(MPH_H)"'

LOCAL_RDS_DEFINE = -DRDS_H='"$(RDS_H)"' \
                   -DRPR_H='"$(RPR_H)"' \
                   -DRFM_H='"$(RFM_H)"' \
                   -DRUT_H='"$(RUT_H)"' \
                   -DRWI_H='"$(RWI_H)"' \
                   -DRTL_H='"$(RTL_H)"'

LOCAL_RCN_DEFINE = -DRCN_H='"$(RCN_H)"'

LOCAL_LYNX_DEFINE = -DALLIANCE_VERSION=$(ALLIANCE_VERSION)

LOCAL_DEFINE = $(LOCAL_MBK_DEFINE) $(LOCAL_RDS_DEFINE) $(LOCAL_LYNX_DEFINE)
LOCAL_HEADER = $(LOCAL_INCLUDE) $(LOCAL_DEFINE) $(LOCAL_RCN_DEFINE)

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

LOCAL_LYNX_OBJ = lynx.o     error.o    parse.o   mbkrds.o    \
                 interval.o box.o      hole.o    diffusion.o \
                 pattern.o  cutelbow.o extract.o netlist.o \
                 addlynxrcn.o Windows95.o inter.o chklynxrcn.o \
                 buildrcn.o znc.o


LOCAL_FLAT_OBJ = flatrds.o

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

# /*------------------------------------------------------------\
# |                                                             |
# |                             Lynx                            |
# |                                                             |
# \------------------------------------------------------------*/

distrib : all

all : $(LOCAL_TARGET_BIN)/$(LOCAL_LYNX_BIN) \
      $(LOCAL_TARGET_BIN)/$(LOCAL_FLAT_BIN)

force : $(LOCAL_LYNX_OBJ) $(LOCAL_FLAT_OBJ)
	$(CC) $(LOCAL_CFLAGS) -o $(LOCAL_TARGET_BIN)/$(LOCAL_LYNX_BIN) \
	$(LOCAL_LYNX_OBJ) $(LOCAL_LIB) -lm
	$(CC) $(LOCAL_CFLAGS) -o $(LOCAL_TARGET_BIN)/$(LOCAL_FLAT_BIN) \
	$(LOCAL_FLAT_OBJ) $(LOCAL_LIB) -lm

$(LOCAL_TARGET_BIN)/$(LOCAL_LYNX_BIN) : $(LOCAL_LYNX_OBJ)
	$(CC) $(LOCAL_CFLAGS) -o $(LOCAL_TARGET_BIN)/$(LOCAL_LYNX_BIN) \
	$(LOCAL_LYNX_OBJ) $(LOCAL_LIB) -lm
	$(STRIP) $(LOCAL_TARGET_BIN)/$(LOCAL_LYNX_BIN)

$(LOCAL_TARGET_BIN)/$(LOCAL_FLAT_BIN) : $(LOCAL_FLAT_OBJ)
	$(CC) $(LOCAL_CFLAGS) -o $(LOCAL_TARGET_BIN)/$(LOCAL_FLAT_BIN) \
	$(LOCAL_FLAT_OBJ) $(LOCAL_LIB) -lm
	$(STRIP) $(LOCAL_TARGET_BIN)/$(LOCAL_FLAT_BIN)

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

clean :
	$(RM) -f $(LOCAL_FLAT_OBJ) \
                 $(LOCAL_LYNX_OBJ)


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

realclean : clean
	$(RM) -f $(LOCAL_TARGET_BIN)/$(LOCAL_LYNX_BIN) \
	         $(LOCAL_TARGET_BIN)/$(LOCAL_FLAT_BIN)
