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

SYF_OBJ = syf/syf_rom.o syf/syf_verif.o syf/syf_recuit.o syf/syf_synth.o syf/syf_a2beh.o syf/syf_auto.o syf/syf_stack.o syf/syf_disp.o syf/syf_codage.o syf/syf_must.o syf/syf_jedi.o syf/syf_stat.o syf/syf_asp.o syf/syf_muse.o syf/syf_ame.o syf/syf_ncod.o syf/syf_beh2fsm.o syf/syf_init.o syf/y.tab.o syf/lex.yy.o syf/syf_main.o

OTHER_OBJ = other/bdd_w.o

DC_OBJ = dc/dc.o

FACT_OBJ = fact/thashfact.o fact/factorise.o fact/fact.o fact/factutil.o fact/optim.o 

UTIL_OBJ = util/beh_util.o util/util.o

COST_OBJ = cost/cost.o

LOCAL_OBJ = syf_verif.o cost.o syf_recuit.o syf_synth.o syf_a2beh.o syf_main.o syf_auto.o syf_stack.o syf_disp.o util.o syf_codage.o syf_must.o syf_jedi.o dc.o syf_stat.o syf_asp.o syf_muse.o syf_ame.o bdd_w.o thashfact.o factorise.o fact.o factutil.o optim.o syf_ncod.o beh_util.o syf_beh2fsm.o syf_init.o y.tab.o lex.yy.o

H   =  syf/syf_auto.h util/util.h syf/syf_must.h syf/syf_muse.h syf/syf_asp.h

LOCAL_CPPFLAGS = $(CPPFLAGS) -c -I$(ALLIANCE_INCLUDE) -DMUT_H='<mut315.h>' -DLOG_H='<log200.h>'
LOCAL_CFLAGS = $(CFLAGS) 

LOCAL_LDFLAGS = -Llib -L$(TOP)/lib -lSyf100 -llog200 -lMut315 -lm -lBeh104 -lMgn319 -lMpu402 -lMlu411 -lMcp401 -lMcl408 -lMap402 -lMal404 -lMhl402 -lMvl406 -lMsl608 -lMel406 -lMph402 -lMlo404

../bin/syf : $(COST_OBJ) $(FACT_OBJ) $(DC_OBJ) $(UTIL_OBJ) $(OTHER_OBJ) $(SYF_OBJ) $(H)
	cd beh104/beh ; make TOP=$(TOP) MACHINE=$(MACHINE)
	cd syf_bvl    ; make TOP=$(TOP) MACHINE=$(MACHINE)
	$(CC) $(LOCAL_CFLAGS) -o syftmp  $(COST_OBJ) $(FACT_OBJ) $(DC_OBJ) $(UTIL_OBJ) $(OTHER_OBJ) $(SYF_OBJ) $(LOCAL_LDFLAGS) 
	$(MV) syftmp ../bin/syf

cost/cost.o : cost/cost.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o cost/cost.o cost/cost.c
syf/syf_rom.o : syf/syf_rom.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_rom.o syf/syf_rom.c
syf/syf_recuit.o : syf/syf_recuit.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_recuit.o syf/syf_recuit.c
syf/syf_a2beh.o : syf/syf_a2beh.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_a2beh.o syf/syf_a2beh.c
syf/syf_synth.o : syf/syf_synth.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_synth.o syf/syf_synth.c
syf/syf_verif.o : syf/syf_verif.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_verif.o syf/syf_verif.c
syf/syf_disp.o : syf/syf_disp.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_disp.o syf/syf_disp.c
syf/syf_stack.o : syf/syf_stack.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_stack.o syf/syf_stack.c
syf/syf_main.o : syf/syf_main.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_main.o syf/syf_main.c
syf/syf_auto.o : syf/syf_auto.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_auto.o syf/syf_auto.c
syf/syf_codage.o : syf/syf_codage.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_codage.o syf/syf_codage.c
syf/syf_must.o : syf/syf_must.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_must.o syf/syf_must.c
syf/syf_jedi.o : syf/syf_jedi.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_jedi.o syf/syf_jedi.c
syf/syf_stat.o : syf/syf_stat.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_stat.o syf/syf_stat.c
syf/syf_asp.o : syf/syf_asp.c syf/syf_asp.h
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_asp.o syf/syf_asp.c
syf/syf_muse.o : syf/syf_muse.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_muse.o syf/syf_muse.c
syf/syf_ame.o : syf/syf_ame.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_ame.o syf/syf_ame.c
syf/syf_ncod.o : syf/syf_ncod.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_ncod.o syf/syf_ncod.c
syf/syf_beh2fsm.o : syf/syf_beh2fsm.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_beh2fsm.o syf/syf_beh2fsm.c
syf/syf_mstack.o : syf/syf_mstack.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_mstack.o syf/syf_mstack.c
syf/syf_init.o : syf/syf_init.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/syf_init.o syf/syf_init.c
other/bdd_w.o : other/bdd_w.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o other/bdd_w.o other/bdd_w.c
dc/dc.o : dc/dc.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o dc/dc.o dc/dc.c
fact/thashfact.o : fact/thashfact.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o fact/thashfact.o fact/thashfact.c
fact/factorise.o : fact/factorise.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o fact/factorise.o fact/factorise.c
fact/fact.o : fact/fact.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o fact/fact.o fact/fact.c
fact/factutil.o : fact/factutil.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o fact/factutil.o fact/factutil.c
fact/optim.o : fact/optim.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o fact/optim.o fact/optim.c
util/beh_util.o : util/beh_util.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o util/beh_util.o util/beh_util.c
util/util.o : util/util.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o util/util.o util/util.c
util/syf_aux.o : util/syf_aux.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o util/syf_aux.o util/syf_aux.c

syf/y.tab.o : syf/y.tab.c 
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/y.tab.o syf/y.tab.c
syf/lex.yy.o : syf/lex.yy.c syf/y.tab.h
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) -o syf/lex.yy.o syf/lex.yy.c
syf/y.tab.c : syf/syf_mcnc.yac
	$(YACC) $(YACCFLAGS) -d syf/syf_mcnc.yac
	-$(MV) y.tab.c syf
	-$(MV) y.tab.h syf
syf/lex.yy.c : syf/syf_mcnc.lex
	$(LEX) syf/syf_mcnc.lex	
	$(MV) lex.yy.c syf


#.c.o :
#	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $< > $@

distrib : ../bin/syf
	cd beh104/beh ; make TOP=$(TOP) MACHINE=$(MACHINE) distrib
	cd syf_bvl    ; make TOP=$(TOP) MACHINE=$(MACHINE) distrib
	@$(TOUCH) distrib
	@if [ -f ../bin/INSTALLED ] ; then $(RM) ../bin/INSTALLED ; else exit 0 ; fi

clean :
	cd beh104/beh ; make TOP=$(TOP) MACHINE=$(MACHINE) clean
	cd syf_bvl    ; make TOP=$(TOP) MACHINE=$(MACHINE) clean
	-$(RM) syf/y.tab.c
	-$(RM) syf/y.tab.h
	-$(RM) syf/lex.yy.c
	-$(RM) syf/*.o
	-$(RM) dc/*.o
	-$(RM) fact/*.o
	-$(RM) other/*.o
	-$(RM) util/*.o
	-$(RM) cost/*.o
	-$(RM) ../bin/syf
	-$(RM) distrib
