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

LOCAL_INC = -DMUT_H='<mut315.h>' -DMLO_H='<mlo404.h>' -DMPH_H='<mph402.h>' \
            -DBEH_H='<beh106.h>' -DLOG_H='<log200.h>' -DBVL_H='<bvl108.h>'

LOCAL_LIB = -L$(ALLIANCE_LIB) -lMgn319 -lMpu402 -lMlu411 -lMmg401 -lMcp401 -lMcl408 -lMap402 -lMal404 -lMhl402 -lMvl406 -lMsl608 -lMel406 -lMph402 -lMlo404 -lBvl108 -lBeh106 -llog200 -lMut315 -lm

LOCAL_OBJ = ablorder/sl_order.o \
        bddorder/bdd_order.o \
        carac4/sens.o \
        cccc/c4.o cccc/c4_debug.o cccc/c4_genlib.o cccc/c4_stretch.o cccc/c4_lofig.o \
        compil/lax_param.o compil/sl_compile.o compil/sl_util.o \
        decomp/dec4.o decomp/high1.o decomp/low1.o decomp/not1.o decomp/latch1.o decomp/bd.o decomp/latch2.o decomp/bus1.o decomp/latch1n.o decomp/latch2n.o \
        facto/bdd2.o facto/sl_DC.o facto/optimexpr.o facto/optim.o facto/sl_facto.o \
        mapping/moteur.o mapping/generic.o mapping/arbres.o mapping/compile.o mapping/cout.o mapping/decomp.o mapping/display.o mapping/mapper.o mapping/oper.o mapping/regles.o mapping/util.o \
        menu/auvol.o menu/sl_corps.o \
        mbk/sl_mbk.o \
        prepar/balance.o prepar/bib.o prepar/carac.o prepar/compact.o prepar/devxor.o prepar/flatpol.o prepar/map.o prepar/post.o prepar/prep.o param/sl_param.o \
        proof/proof_util.o synthe/sl_system.o synthe/sl_systemp.o synthe/sl_main.o fpga/x3000.o

LOCAL_CFLAGS = $(CFLAGS) -c -DMACHINE=$(MACHINE)
LOCAL_CPPFLAGS = $(CPPFLAGS) -I$(ALLIANCE_INCLUDE)

../bin/logic : $(LOCAL_OBJ)
	$(CC) -o ../bin/logic $(LOCAL_OBJ) $(LOCAL_LIB)

ablorder/sl_order.o : ablorder/sl_order.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) ablorder/sl_order.c
	$(MV) sl_order.o ablorder/
bddorder/bdd_order.o : bddorder/bdd_order.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) bddorder/bdd_order.c
	$(MV) bdd_order.o bddorder/
carac4/sens.o : carac4/sens.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) carac4/sens.c
	$(MV) sens.o carac4/
cccc/c4.o : cccc/c4.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) cccc/c4.c
	$(MV) c4.o cccc/
cccc/c4_debug.o : cccc/c4_debug.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) cccc/c4_debug.c
	$(MV) c4_debug.o cccc/
cccc/c4_genlib.o : cccc/c4_genlib.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) cccc/c4_genlib.c
	$(MV) c4_genlib.o cccc/
cccc/c4_stretch.o : cccc/c4_stretch.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) cccc/c4_stretch.c
	$(MV) c4_stretch.o cccc/
cccc/c4_lofig.o : cccc/c4_lofig.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) cccc/c4_lofig.c
	$(MV) c4_lofig.o cccc/
compil/sl_compile.o : compil/sl_compile.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) compil/sl_compile.c
	$(MV) sl_compile.o compil/
compil/sl_util.o : compil/sl_util.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) compil/sl_util.c
	$(MV) sl_util.o compil/
compil/lax_param.o : compil/lax_param.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) compil/lax_param.c
	$(MV) lax_param.o compil/
decomp/dec4.o : decomp/dec4.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) decomp/dec4.c
	$(MV) dec4.o decomp/
decomp/high1.o : decomp/high1.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) decomp/high1.c
	$(MV) high1.o decomp/
decomp/low1.o : decomp/low1.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) decomp/low1.c
	$(MV) low1.o decomp/
decomp/not1.o : decomp/not1.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) decomp/not1.c
	$(MV) not1.o decomp/
decomp/latch1.o : decomp/latch1.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) decomp/latch1.c
	$(MV) latch1.o decomp/
decomp/latch2.o : decomp/latch2.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) decomp/latch2.c
	$(MV) latch2.o decomp/
decomp/bd.o : decomp/bd.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) decomp/bd.c
	$(MV) bd.o decomp/
decomp/latch1n.o : decomp/latch1n.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) decomp/latch1n.c
	$(MV) latch1n.o decomp/
decomp/latch2n.o : decomp/latch2n.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) decomp/latch2n.c
	$(MV) latch2n.o decomp/
decomp/bus1.o : decomp/bus1.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) decomp/bus1.c
	$(MV) bus1.o decomp/
facto/bdd2.o : facto/bdd2.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) facto/bdd2.c
	$(MV) bdd2.o facto/
facto/sl_DC.o : facto/sl_DC.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) facto/sl_DC.c
	$(MV) sl_DC.o facto/
facto/optimexpr.o : facto/optimexpr.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) facto/optimexpr.c
	$(MV) optimexpr.o facto/
facto/optim.o : facto/optim.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) facto/optim.c
	$(MV) optim.o facto/
facto/sl_facto.o : facto/sl_facto.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) facto/sl_facto.c
	$(MV) sl_facto.o facto/
mapping/arbres.o : mapping/arbres.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) mapping/arbres.c
	$(MV) arbres.o mapping/
mapping/compile.o : mapping/compile.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) mapping/compile.c
	$(MV) compile.o mapping/
mapping/cout.o : mapping/cout.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) mapping/cout.c
	$(MV) cout.o mapping/
mapping/decomp.o : mapping/decomp.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) mapping/decomp.c
	$(MV) decomp.o mapping/
mapping/display.o : mapping/display.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) mapping/display.c
	$(MV) display.o mapping/
mapping/generic.o : mapping/generic.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) mapping/generic.c
	$(MV) generic.o mapping/
mapping/mapper.o : mapping/mapper.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) mapping/mapper.c
	$(MV) mapper.o mapping/
mapping/moteur.o : mapping/moteur.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) mapping/moteur.c
	$(MV) moteur.o mapping/
mapping/oper.o : mapping/oper.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) mapping/oper.c
	$(MV) oper.o mapping/
mapping/regles.o : mapping/regles.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) mapping/regles.c
	$(MV) regles.o mapping/
mapping/util.o : mapping/util.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) mapping/util.c
	$(MV) util.o mapping/
menu/auvol.o : menu/auvol.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) menu/auvol.c
	$(MV) auvol.o menu/
menu/sl_corps.o : menu/sl_corps.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) menu/sl_corps.c
	$(MV) sl_corps.o menu/
mbk/sl_mbk.o : mbk/sl_mbk.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) mbk/sl_mbk.c
	$(MV) sl_mbk.o mbk/
prepar/balance.o : prepar/balance.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) prepar/balance.c
	$(MV) balance.o prepar/
prepar/bib.o : prepar/bib.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) prepar/bib.c
	$(MV) bib.o prepar/
prepar/carac.o : prepar/carac.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) prepar/carac.c
	$(MV) carac.o prepar/
prepar/compact.o : prepar/compact.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) prepar/compact.c
	$(MV) compact.o prepar/
prepar/devxor.o : prepar/devxor.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) prepar/devxor.c
	$(MV) devxor.o prepar/
prepar/flatpol.o : prepar/flatpol.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) prepar/flatpol.c
	$(MV) flatpol.o prepar/
prepar/map.o : prepar/map.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) prepar/map.c
	$(MV) map.o prepar/
prepar/post.o : prepar/post.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) prepar/post.c
	$(MV) post.o prepar/
prepar/prep.o : prepar/prep.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) prepar/prep.c
	$(MV) prep.o prepar/
param/sl_param.o : param/sl_param.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) param/sl_param.c
	$(MV) sl_param.o param/
proof/proof_util.o : proof/proof_util.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) proof/proof_util.c
	$(MV) proof_util.o proof/
synthe/sl_system.o : synthe/sl_system.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) -DALLIANCE_VERSION=$(ALLIANCE_VERSION) synthe/sl_system.c
	$(MV) sl_system.o synthe/
synthe/sl_systemp.o : synthe/sl_systemp.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) synthe/sl_systemp.c
	$(MV) sl_systemp.o synthe/
synthe/sl_main.o : synthe/sl_main.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) synthe/sl_main.c
	$(MV) sl_main.o synthe/
fpga/x3000.o : fpga/x3000.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_CPPFLAGS) $(LOCAL_INC) fpga/x3000.c
	$(MV) x3000.o fpga/

distrib : ../bin/logic
	@$(TOUCH) distrib
	@if [ -f ../bin/INSTALLED ] ; then $(RM) ../bin/INSTALLED ; else exit 0 ; fi

clean :
	$(RM) -f $(LOCAL_OBJ) ../bin/logic distrib

lint : 
	lint -u -I$(ALLIANCE_INCLUDE) $(LOCAL_INC) mbk/sl_mbk.c
