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

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

LOCAL_CC = $(CC)

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

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

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

LOCAL_INCLUDE = -I$(MOTIF_INCLUDE)    -I$(X11_INCLUDE) \
                -I$(LOCAL_TARGET_INC) -I$(ALLIANCE_INCLUDE)

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

LOCAL_XFSM_BIN = xfsm

LOCAL_MOTIF_LIB = -L$(MOTIF_LIB) -lXm

LOCAL_X11_LIB   = -L$(X11_LIB) -lXt -lX11 
# LOCAL_X11_LIB = -L$(X11_LIB) -lXt -lSM -lICE -lX11 

LOCAL_MBK_LIB = -L$(ALLIANCE_LIB) \
                $(MUT_L)

LOCAL_ABL_LIB = -L$(LOCAL_TARGET_LIB) \
                $(ABL_L)              \
                $(AUT_L)

LOCAL_BDD_LIB = -L$(LOCAL_TARGET_LIB) \
                $(BDD_L)

LOCAL_FSM_LIB = -L$(LOCAL_TARGET_LIB) \
                $(FTL_L) \
                $(FKS_L) \
                $(FVH_L) \
                $(FSM_L)

LOCAL_LIB = $(LOCAL_FSM_LIB) \
            $(LOCAL_BDD_LIB)   $(LOCAL_ABL_LIB) $(LOCAL_MBK_LIB)\
	    $(LOCAL_MOTIF_LIB) $(LOCAL_X11_LIB) 

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

LOCAL_X11_DEFINE   = -D_NO_PROTO 
LOCAL_MBK_DEFINE   = -DMUT_H='"$(MUT_H)"'
LOCAL_FSM_DEFINE   = -DFSM_H='"$(FSM_H)"' \
                     -DFTL_H='"$(FTL_H)"' \
                     -DAUT_H='"$(AUT_H)"' \
                     -DABL_H='"$(ABL_H)"' \
                     -DBDD_H='"$(BDD_H)"' 

LOCAL_XFSM_DEFINE = -DXTB_H='"XTB.h"' -DXSB_H='"XSB.h"' \
                    -DXMF_H='"XMF.h"' -DXME_H='"XME.h"' \
                    -DXMV_H='"XMV.h"' -DXMT_H='"XMT.h"' \
                    -DXMS_H='"XMS.h"' -DXMH_H='"XMH.h"' \
                    -DXMX_H='"XMX.h"' -DXFS_H='"XFS.h"' \
                    -DXFSM_DEFAULT_PARAM_NAME='"$(TOP)/etc/$(LOCAL_XFSM_BIN).par"' \
                    -DXMS_FILE_NAME='".$(LOCAL_XFSM_BIN).cfg"' \
                    -DALLIANCE_VERSION=$(ALLIANCE_VERSION) \
                    -DXFSM_TOOL_NAME='"$(LOCAL_XFSM_BIN)"' \
                    -DXFSM_VERSION='"1.02"'

LOCAL_DEFINE = $(LOCAL_X11_DEFINE) $(LOCAL_FSM_DEFINE) $(LOCAL_MBK_DEFINE) \
               $(LOCAL_XFSM_DEFINE) 

LOCAL_HEADER = $(LOCAL_INCLUDE) $(LOCAL_DEFINE)

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

LOCAL_XSB_OBJ = XSB_share.o XSB_parse.o XSB_error.o
LOCAL_XFS_OBJ = XFS_bound.o XFS_error.o XFS_object.o XFS_fsm.o \
                XFS_bdd.o   XFS_select.o
LOCAL_XTB_OBJ = XTB_icon.o XTB_panel.o XTB_menu.o XTB_pixmap.o    \
                XTB_cursor.o XTB_dialog.o
LOCAL_XMX_OBJ = XMX_motif.o XMX_color.o XMX_graphic.o XMX_panel.o  \
                XMX_menu.o XMX_message.o XMX_grid.o XMX_event.o    \
                XMX_cursor.o XMX_dialog.o XMX_view.o \
                XMX_icon.o
LOCAL_XMF_OBJ = XMF_menu.o XMF_panel.o XMF_dialog.o XMF_file.o
LOCAL_XME_OBJ = XME_edit.o XME_select.o XME_search.o XME_menu.o \
                XME_panel.o XME_dialog.o XME_message.o
LOCAL_XMV_OBJ = XMV_view.o XMV_panel.o XMV_menu.o XMV_dialog.o \
                XMV_message.o XMV_map.o
LOCAL_XMT_OBJ = XMT_tools.o XMT_menu.o XMT_panel.o XMT_dialog.o \
                XMT_message.o
LOCAL_XMS_OBJ = XMS_setup.o XMS_menu.o XMS_dialog.o XMS_panel.o 
LOCAL_XMH_OBJ = XMH_help.o XMH_menu.o XMH_panel.o 

LOCAL_OBJ = $(LOCAL_XSB_OBJ) $(LOCAL_XFS_OBJ) $(LOCAL_XTB_OBJ) \
            $(LOCAL_XMX_OBJ) $(LOCAL_XMF_OBJ) $(LOCAL_XME_OBJ) \
            $(LOCAL_XMV_OBJ) $(LOCAL_XMT_OBJ) $(LOCAL_XMS_OBJ) \
            $(LOCAL_XMH_OBJ) xfsm.o

# /*------------------------------------------------------------\
# |                                                             |
# |                              Xfsm                           |
# |                                                             |
# \------------------------------------------------------------*/

distrib : $(LOCAL_TARGET_BIN)/$(LOCAL_XFSM_BIN)

$(LOCAL_TARGET_BIN)/$(LOCAL_XFSM_BIN) : $(LOCAL_OBJ)
	$(LOCAL_CC) $(LOCAL_CFLAGS) -o $(LOCAL_TARGET_BIN)/$(LOCAL_XFSM_BIN) \
                    $(LOCAL_OBJ) $(LOCAL_LIB) -lm
	$(STRIP) $(LOCAL_TARGET_BIN)/$(LOCAL_XFSM_BIN)

xfsm.o : xfsm.c xfsm.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c xfsm.c

# /*------------------------------------------------------------\
# |                                                             |
# |                          Xfsm Share Box                     |
# |                                                             |
# \------------------------------------------------------------*/

XSB_parse.o  : XSB.h XSB_parse.c XSB_parse.h XSB_error.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XSB_parse.c

XSB_error.o  : XSB.h XSB_error.c XSB_error.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XSB_error.c

XSB_share.o  : XSB.h XSB_share.c XSB_share.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XSB_share.c

# /*------------------------------------------------------------\
# |                                                             |
# |                          Xfsm Base                          |
# |                                                             |
# \------------------------------------------------------------*/

XFS_bound.o  : XSB.h XFS.h XFS_bound.c XFS_bound.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XFS_bound.c

XFS_error.o  : XSB.h XFS.h XFS_error.c XFS_error.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XFS_error.c

XFS_bdd.o : XSB.h XFS.h XFS_bdd.c XFS_bdd.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XFS_bdd.c

XFS_fsm.o : XSB.h XFS.h XFS_fsm.c XFS_fsm.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XFS_fsm.c

XFS_place.o : XSB.h XFS.h XFS_place.c XFS_place.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XFS_place.c

XFS_object.o : XSB.h XFS.h XFS_object.c XFS_object.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XFS_object.c

XFS_select.o : XSB.h XFS.h XFS_select.c XFS_select.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XFS_select.c

# /*------------------------------------------------------------\
# |                                                             |
# |                         Xfsm Tools Box                     |
# |                                                             |
# \------------------------------------------------------------*/

XTB_cursor.o  : XTB.h XTB_cursor.c XTB_cursor.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XTB_cursor.c

XTB_dialog.o  : XTB.h XTB_dialog.c XTB_dialog.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XTB_dialog.c

XTB_icon.o    : XTB.h XTB_icon.c XTB_icon.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XTB_icon.c

XTB_menu.o    : XTB.h XTB_menu.c XTB_menu.h 
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XTB_menu.c

XTB_panel.o   : XTB.h XTB_panel.c XTB_panel.h XTB_dialog.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XTB_panel.c

XTB_pixmap.o  : XTB.h XTB_pixmap.c XTB_pixmap.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XTB_pixmap.c

# /*------------------------------------------------------------\
# |                                                             |
# |                          Xfsm Motif X11                     |
# |                                                             |
# \------------------------------------------------------------*/

XMX_icon.o    : XSB.h XMX.h XMX_icon.c XMX_icon.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XMX_icon.c

XMX_color.o   : XSB.h XMX.h XMX_color.c XMX_color.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XMX_color.c

XMX_cursor.o  : XSB.h XMX.h XMX_cursor.c XMX_cursor.h XMX_view.h XMX_grid.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XMX_cursor.c

XMX_dialog.o  : XSB.h XMX.h XMX_dialog.c XMX.h XMX_dialog.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XMX_dialog.c

XMX_graphic.o : XSB.h XMX.h XMX_graphic.c XMX_graphic.h XMX_view.h XMX_grid.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XMX_graphic.c

XMX_grid.o    : XSB.h XMX.h XMX_grid.c XMX_grid.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XMX_grid.c

XMX_menu.o    : XSB.h XTB.h XMX.h XMF.h XME.h XMV.h XMS.h XMT.h XMH.h \
                XMX_menu.c XMX_menu.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XMX_menu.c

XMX_message.o : XSB.h XTB.h XMX.h XMX_message.c XMX_message.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XMX_message.c

XMX_motif.o   : XSB.h XTB.h XMX.h XMX_motif.c XMX_motif.h XMX_graphic.h \
                XMX_event.h XMX_message.h XMX_menu.h XMX_color.h        \
                XMX_panel.h XMX_dialog.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XMX_motif.c

XMX_event.o   : XSB.h XTB.h XFS.h XMX.h XMV.h XMX_event.c XMX_grid.h \
                XMX_event.h XMX_cursor.h XMX_event.h \
                XMX_message.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XMX_event.c

XMX_panel.o   : XSB.h XTB.h XMF.h XME.h XMV.h XMT.h XMS.h XMH.h XMX.h \
                XMX_panel.c XMX_panel.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XMX_panel.c

XMX_view.o    : XSB.h XFS.h XMX_view.c XMX_view.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XMX_view.c

# /*------------------------------------------------------------\
# |                                                             |
# |                          Xfsm Menu File                     |
# |                                                             |
# \------------------------------------------------------------*/

XMF_panel.o  : XSB.h XFS.h XTB.h XMX.h XMF.h XMF_panel.c XMF_panel.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c XMF_panel.c

XMF_menu.o   : XSB.h XFS.h XTB.h XMX.h XMF.h XMF_menu.c XMF_menu.h \
               XMF_dialog.h XMF_file.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMF_menu.c

XMF_dialog.o  : XSB.h XFS.h XTB.h XMX.h XMF.h XMF_dialog.c XMF_dialog.h \
                XMF_file.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMF_dialog.c

XMF_file.o  :  XSB.h XFS.h XTB.h XMX.h XMF.h XMF_file.c XMF_file.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMF_file.c

# /*------------------------------------------------------------\
# |                                                             |
# |                          Xfsm Menu Edit                     |
# |                                                             |
# \------------------------------------------------------------*/

XME_edit.o   : XTB.h XSB.h XMX.h XFS.h XME.h XME_edit.c XME_edit.h \
               XME_message.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XME_edit.c

XME_select.o : XTB.h XSB.h XMX.h XFS.h XME.h XME_select.c XME_select.h \
               XME_message.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XME_select.c

XME_search.o : XTB.h XSB.h XMX.h XFS.h XME.h XME_search.c XME_search.h \
               XME_message.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XME_search.c

XME_menu.o    : XTB.h XSB.h XMX.h XFS.h XME.h  XME_menu.c XME_menu.h \
                XME_message.h XME_edit.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XME_menu.c

XME_panel.o   : XTB.h XSB.h XMX.h XFS.h XME.h  XME_panel.c XME_panel.h \
                XME_message.h XME_edit.h XME_dialog.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XME_panel.c

XME_dialog.o  : XTB.h XSB.h XMX.h XFS.h XME.h  XME_dialog.c XME_dialog.h \
                XME_edit.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XME_dialog.c

XME_message.o : XTB.h XSB.h XMX.h XFS.h XME.h  XME_message.c XME_message.h \
                XME_edit.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XME_message.c

# /*------------------------------------------------------------\
# |                                                             |
# |                          Xfsm Menu View                     |
# |                                                             |
# \------------------------------------------------------------*/

XMV_panel.o   : XSB.h XTB.h XMX.h XMV.h XMV_panel.c XMV_panel.h \
                XMV_dialog.h XMV_view.h XMV_message.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMV_panel.c

XMV_menu.o    : XSB.h XTB.h XMX.h XMV.h XMV_menu.c XMV_menu.h\
                XMV_dialog.h XMV_view.h XMV_map.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMV_menu.c

XMV_dialog.o  : XSB.h XTB.h XMX.h XMV.h XMV_dialog.c XMV_dialog.h \
                XMV_view.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMV_dialog.c

XMV_map.o     : XSB.h XTB.h XMX.h XMV.h XMV_map.c XMV_map.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMV_map.c

XMV_message.o : XSB.h XTB.h XMX.h XMV.h XMV_message.c XMV_message.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMV_message.c

XMV_view.o    : XSB.h XTB.h XMX.h XMV.h XMV_view.c XMV_view.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMV_view.c

# /*------------------------------------------------------------\
# |                                                             |
# |                          Xfsm Menu Tools                    |
# |                                                             |
# \------------------------------------------------------------*/

XMT_tools.o   : XTB.h XSB.h XMX.h XFS.h XMT.h XMT_tools.c XMT_tools.h \
                XMT_message.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMT_tools.c

XMT_menu.o    : XTB.h XSB.h XMX.h XFS.h XMT.h  XMT_menu.c XMT_menu.h \
                XMT_message.h XMT_tools.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMT_menu.c

XMT_panel.o   : XTB.h XSB.h XMX.h XFS.h XMT.h  XMT_panel.c XMT_panel.h \
                XMT_message.h XMT_tools.h XMT_dialog.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMT_panel.c

XMT_dialog.o  : XTB.h XSB.h XMX.h XFS.h XMT.h  XMT_dialog.c XMT_dialog.h \
                XMT_tools.h 
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMT_dialog.c

XMT_message.o : XTB.h XSB.h XMX.h XFS.h XMT.h  XMT_message.c XMT_message.h \
                XMT_tools.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMT_message.c

# /*------------------------------------------------------------\
# |                                                             |
# |                          Xfsm Menu Setup                    |
# |                                                             |
# \------------------------------------------------------------*/

XMS_menu.o   : XTB.h XSB.h XMS.h XMS_menu.c XMS_menu.h XMS_setup.h 
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMS_menu.c

XMS_dialog.o : XTB.h XSB.h XMS.h XMS_dialog.c XMS_dialog.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMS_dialog.c

XMS_panel.o  : XTB.h XSB.h XMS.h XMS_panel.c XMS_panel.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMS_panel.c

XMS_setup.o  : XTB.h XSB.h XMX.h XMF.h XMV.h XMT.h XMS.h XMH.h \
               XMS_setup.c XMS_setup.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMS_setup.c

# /*------------------------------------------------------------\
# |                                                             |
# |                          Xfsm Menu Help                     |
# |                                                             |
# \------------------------------------------------------------*/

XMH_menu.o   : XTB.h XSB.h XMH.h XMH_menu.c XMH_menu.h 
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMH_menu.c

XMH_panel.o : XTB.h XSB.h XMH.h XMH_panel.c XMH_panel.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMH_panel.c

XMH_help.o : XTB.h XSB.h XMX.h XMH.h XMH_help.c XMH_help.h
	$(LOCAL_CC) $(LOCAL_CFLAGS) $(LOCAL_HEADER) -c  XMH_help.c

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

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

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

realclean : clean
	$(RM) -f $(LOCAL_TARGET_BIN)/$(LOCAL_XFSM_BIN)

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

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