# /*------------------------------------------------------------\
# |                                                             |
# | Tool   :                      SYF                           |
# |                                                             |
# | File   :                    Makefile                        |
# |                                                             |
# | Author :                 Jacomme Ludovic                    |
# |                                                             |
# | Date   :                    28.10.94                        |
# |                                                             |
# \------------------------------------------------------------*/

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

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

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

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

LOCAL_INCLUDE = -I$(ALLIANCE_INCLUDE)

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

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

LOCAL_BEH_LIN = -L$(ALLIANCE_LIB) \
                $(BEH_L)

LOCAL_LOG_LIB = -L$(ALLIANCE_LIB) \
                $(LOG_L)

LOCAL_LIB = $(LOCAL_BEH_LIB) $(LOCAL_LOG_LIB) \
            $(LOCAL_MBK_LIB)

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

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

LOCAL_BEH_DEFINE   = -DBEH_H='"$(BEH_H)"'

LOCAL_LOG_DEFINE   = -DLOG_H='"$(LOG_H)"'

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

LOCAL_DEFINE = $(LOCAL_MBK_DEFINE) $(LOCAL_BEH_DEFINE) \
               $(LOCAL_LOG_DEFINE) $(LOCAL_SYF_DEFINE)

LOCAL_HEADER = $(LOCAL_INCLUDE) $(LOCAL_DEFINE)

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

LOCAL_BEH_OBJ = beh_add.o beh_typ.o beh_del.o beh_fre.o beh_rmv.o \
                beh_env.o beh_rin.o beh_uti.o

LOCAL_BVL_OBJ = bvl_y.tab.o bvl_lex.yy.o bvl_bspec.o bvl_util.o \
                bvl_parse.o bvl_drive.o

LOCAL_SYF_OBJ = syf_cost.o syf_bddw.o syf_dc.o \
                syf_fact.o syf_factu.o syf_optim.o syf_thash.o \
                syf_util.o syf_ncod.o syf_must.o syf_asp.o \
                syf_auto.o syf_code.o syf_a2beh.o syf_beh2fsm.o \
                syf_ame.o syf_disp.o syf_muse.o syf_init.o \
                syf_jedi.o syf_synth.o syf_verif.o syf_recuit.o \
                syf_rom.o syf_stack.o syf_stat.o syf_mstack.o \
                syf_y.tab.o syf_lex.yy.o syf_main.o

LOCAL_OBJ = $(LOCAL_BEH_OBJ) $(LOCAL_BVL_OBJ) $(LOCAL_SYF_OBJ)

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

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

distrib : all
	@if [ -f ../bin/INSTALLED ] ; \
	then $(RM) ../bin/INSTALLED ; \
	else exit 0 ; \
	fi
	$(STRIP) syf
	$(MV) syf ../bin/syf
	@$(TOUCH) distrib

all     : $(LOCAL_OBJ)
	$(CC) $(LOCAL_CFLAGS) -o syf $(LOCAL_OBJ) $(LOCAL_LIB) -lm 

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

bvl_lex.yy.c : bvl_bcomp.lex
	$(LEX) bvl_bcomp.lex
	$(SED) -e 's/YY/SYF_Y_/g' -e 's/yy/syf_y_/g' lex.yy.c > bvl_lex.yy.c
	$(RM) lex.yy.c

bvl_y.tab.c : bvl_bcomp.yac
	$(YACC) $(YACCFLAGS) -d bvl_bcomp.yac
	$(SED) -e 's/YY/SYF_Y_/g' -e 's/yy/syf_y_/g' y.tab.c > bvl_y.tab.c
	$(RM) y.tab.c
	$(SED) -e 's/YY/SYF_Y_/g' -e 's/yy/syf_y_/g' y.tab.h > bvl_y.tab.h
	$(RM) y.tab.h

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

syf_y.tab.c   : syf_mcnc.yac
	$(YACC) $(YACCFLAGS) -d syf_mcnc.yac
	$(MV) y.tab.c syf_y.tab.c
	$(MV) y.tab.h syf_y.tab.h
syf_lex.yy.c : syf_mcnc.lex
	$(LEX) syf_mcnc.lex
	$(MV) lex.yy.c syf_lex.yy.c

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


clean :
	$(RM) -f $(LOCAL_OBJ)
	$(RM) -f syf_y.tab.c syf_y.tab.h syf_lex.yy.c
	$(RM) -f bvl_y.tab.c bvl_y.tab.h bvl_lex.yy.c
	$(RM) -f ../bin/syf
	$(RM) -f distrib
