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

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

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

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

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

LOCAL_SYF_BIN    = syf

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

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

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

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)

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

LOCAL_MBK_DEFINE   = -DMUT_H='"$(MUT_H)"'

LOCAL_FSM_DEFINE   = -DFSM_H='"$(FSM_H)"' \
                     -DFTL_H='"$(FTL_H)"' \
                     -DFVH_H='"$(FVH_H)"'

LOCAL_BDD_DEFINE   = -DBDD_H='"$(BDD_H)"'

LOCAL_ABL_DEFINE   = -DAUT_H='"$(AUT_H)"' \
                     -DABL_H='"$(ABL_H)"'

LOCAL_SYF_DEFINE   = -DALLIANCE_VERSION=$(ALLIANCE_VERSION) \
                     -DSYF_VERSION='"3.05"'

LOCAL_DEFINE = $(LOCAL_MBK_DEFINE) $(LOCAL_BDD_DEFINE) \
               $(LOCAL_SYF_DEFINE) \
               $(LOCAL_FSM_DEFINE) $(LOCAL_ABL_DEFINE) 

LOCAL_HEADER = $(LOCAL_INCLUDE) $(LOCAL_DEFINE)

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

LOCAL_KIS_OBJ = kis_parse.o
LOCAL_FBH_OBJ = fbh_parse.o

LOCAL_SYF_OBJ = syf_tools.o   syf_simp.o    syf_comp.o    syf_fsm2fbh.o \
                syf_verify.o  \
                syf_synth.o   syf_dc.o      syf_cost.o    syf_encod.o   \
                syf_random.o  syf_user.o    syf_must.o    syf_asp.o     \
                syf_jedi.o    syf_onehot.o  \
                syf_error.o   syf_fsm.o     syf_bdd.o \
                syf_env.o     syf_main.o

LOCAL_OBJ = $(LOCAL_FBH_OBJ) $(LOCAL_KIS_OBJ) $(LOCAL_SYF_OBJ)

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

# /*------------------------------------------------------------\
# |                                                             |
# |                              Syf                            |
# |                                                             |
# \------------------------------------------------------------*/

distrib : $(LOCAL_TARGET_BIN)/$(LOCAL_SYF_BIN)

$(LOCAL_TARGET_BIN)/$(LOCAL_SYF_BIN) : $(LOCAL_OBJ)
	$(CC) $(LOCAL_CFLAGS) -o $(LOCAL_TARGET_BIN)/$(LOCAL_SYF_BIN) \
              $(LOCAL_OBJ) $(LOCAL_LIB) -lm 
	$(STRIP) $(LOCAL_TARGET_BIN)/$(LOCAL_SYF_BIN)

force : $(LOCAL_OBJ)
	$(CC) $(LOCAL_CFLAGS) -o $(LOCAL_TARGET_BIN)/$(LOCAL_SYF_BIN) \
              $(LOCAL_OBJ) $(LOCAL_LIB) -lm 

# /*------------------------------------------------------------\
# |                                                             |
# |                            Syf Kiss                         |
# |                                                             |
# \------------------------------------------------------------*/

kis_parse.o : kis_parse.c kis_parse.h syf_error.h syf_fsm.h

# /*------------------------------------------------------------\
# |                                                             |
# |                              Syf                            |
# |                                                             |
# \------------------------------------------------------------*/

syf_comp.o     : syf_comp.c syf_comp.h syf_error.h syf_fsm.h
syf_simp.o     : syf_simp.c syf_simp.h syf_error.h syf_fsm.h
syf_error.o    : syf_error.c syf_error.h
syf_main.o     : syf_main.c syf_main.h syf_comp.h syf_error.h \
                 syf_fsm2fbh.h syf_fsm.h
syf_asp.o      : syf_asp.c syf_asp.h syf_error.h syf_fsm.h
syf_user.o     : syf_user.c syf_user.h syf_error.h syf_fsm.h
syf_must.o     : syf_must.c syf_must.h syf_error.h syf_fsm.h
syf_jedi.o     : syf_jedi.c syf_jedi.h syf_error.h syf_fsm.h
syf_random.o   : syf_random.c syf_random.h syf_error.h syf_fsm.h
syf_anneal.o   : syf_anneal.c syf_anneal.h syf_cost.h syf_error.h syf_fsm.h
syf_onehot.o   : syf_onehot.c syf_onehot.h syf_error.h syf_fsm.h
syf_cost.o     : syf_cost.c syf_cost.h syf_error.h syf_fsm.h
syf_encod.o    : syf_encod.c syf_encod.h syf_random.h syf_user.h \
                 syf_asp.h syf_jedi.h syf_must.h \
                 syf_error.h syf_fsm.h 
syf_synth.o    : syf_synth.c syf_synth.h syf_error.h syf_fsm.h 
syf_rom.o      : syf_rom.c syf_rom.h syf_error.h syf_fsm.h
syf_fsm2fbh.o  : syf_fsm2fbh.c syf_fsm2fbh.h syf_error.h syf_fsm.h
syf_verify.o   : syf_verify.c syf_verify.h syf_error.h syf_fsm.h
syf_fsm.o      : syf_fsm.c syf_fsm.h syf_error.h

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


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


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


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