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

LOCAL_OBJ1 = mapping/generic.o				\
             fpgasce/lut.o fpgasce/x3000.o			\
             facto/jacoX.o facto/cliqueZ.o		\
	     facto/bdd2.o facto/optim.o			\
             facto/sl_DC.o facto/sl_facto.o		\
	     facto/optimexpr.o				\
             bddorder/bdd_order.o			\
             ablorder/sl_order.o			\
             proof/proof_util.o				\
             prepar/prep.o prepar/carac.o		\
	     prepar/bib.o prepar/compact.o		\
             load/incdelai.o load/neto.o load/no_optim.o\
             load/no_global.o load/util.o load/no_asga.o\
             netparam/no_param.o			\
             netmenu/no_menu.o netmenu/auvol.o		\
	     netmenu/lstgestion.o			\
             net/no_main.o net/no_systemp.o		\
	     net/no_system.o net/enveloppe.o		\
             compil/lax_param.o compil/sl_util.o compil/sl_compile.o 

LOCAL_CFLAGS = $(CFLAGS)
LOCAL_CPPFLAGS = $(CPPFLAGS) -c

LOCAL_INC = -I$(ALLIANCE_INCLUDE) \
            -DMUT_H='<$(MUT_H)>' \
            -DMLO_H='<$(MLO_H)>' \
            -DMPH_H='<$(MPH_H)>'    \
            -DBEH_H='<$(BEH_H)>' \
            -DLOG_H='<$(LOG_H)>' \
            -DBVL_H='<$(BVL_H)>'

LOCAL_LIB = -L$(ALLIANCE_LIB) \
            $(MUT_L)          \
            $(MGN_L)          \
            $(MPU_L)          \
            $(MLU_L)          \
            $(MMG_L)          \
            $(MCP_L)          \
            $(MCL_L)          \
            $(MAP_L)          \
            $(MAL_L)          \
            $(MHL_L)          \
            $(MVL_L)          \
            $(MSL_L)          \
            $(MEL_L)          \
            $(MPH_L)          \
            $(MLO_L)          \
            $(BVL_L)          \
            $(BEH_L)          \
            $(LOG_L)

../bin/netoptim : $(LOCAL_OBJ1)
	$(CC) -o netoptim $(LOCAL_CFLAGS) $(LOCAL_OBJ1) $(LOCAL_LIB) -lm
	$(MV) netoptim ../bin

net/no_system.o: net/no_system.c net/no_system.h net/no_type.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) -DALLIANCE_VERSION=$(ALLIANCE_VERSION) net/no_system.c
	$(MV) no_system.o net/

net/no_systemp.o: net/no_systemp.c
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) -DALLIANCE_VERSION=$(ALLIANCE_VERSION) net/no_systemp.c
	$(MV) no_systemp.o net/

net/no_main.o: net/no_main.c net/enveloppe.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) net/no_main.c
	$(MV) no_main.o net/

net/enveloppe.o: net/enveloppe.c net/enveloppe.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) net/enveloppe.c
	$(MV) enveloppe.o net/

netmenu/lstgestion.o: netmenu/lstgestion.c
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) netmenu/lstgestion.c
	$(MV) lstgestion.o netmenu/

netmenu/auvol.o: netmenu/auvol.c
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) netmenu/auvol.c
	$(MV) auvol.o netmenu/

netmenu/no_menu.o: netmenu/no_menu.c netmenu/no_menu.h netmenu/titres.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) netmenu/no_menu.c
	$(MV) no_menu.o netmenu/

netparam/no_param.o: netparam/no_param.c netparam/no_param.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) netparam/no_param.c
	$(MV) no_param.o netparam/

load/util.o: load/util.c load/util.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) load/util.c
	$(MV) util.o load/

load/no_global.o: load/no_global.c load/no_global.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) load/no_global.c
	$(MV) no_global.o load/

load/no_optim.o: load/no_optim.c load/no_optim.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) load/no_optim.c
	$(MV) no_optim.o load/

load/no_asga.o: load/no_asga.c load/no_asga.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) load/no_asga.c
	$(MV) no_asga.o load/

load/neto.o: load/neto.c load/neto.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) load/neto.c
	$(MV) neto.o load/

load/incdelai.o: load/incdelai.c load/incdelai.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) load/incdelai.c
	$(MV) incdelai.o load/

prepar/compact.o: prepar/compact.c 
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) prepar/compact.c
	$(MV) compact.o prepar/

prepar/bib.o: prepar/bib.c prepar/bib.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) prepar/bib.c
	$(MV) bib.o prepar/

prepar/carac.o: prepar/carac.c prepar/carac.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) prepar/carac.c
	$(MV) carac.o prepar/

prepar/prep.o: prepar/prep.c 
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) prepar/prep.c
	$(MV) prep.o prepar/

proof/proof_util.o: proof/proof_util.c proof/proof.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) proof/proof_util.c
	$(MV) proof_util.o proof/

mapping/generic.o: mapping/generic.c mapping/generic.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) mapping/generic.c
	$(MV) generic.o mapping/

facto/bdd2.o: facto/bdd2.c
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) facto/bdd2.c
	$(MV) bdd2.o facto/

facto/optim.o: facto/optim.c facto/optim.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) facto/optim.c
	$(MV) optim.o facto/

facto/sl_DC.o: facto/sl_DC.c
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) facto/sl_DC.c
	$(MV) sl_DC.o facto/

facto/sl_facto.o: facto/sl_facto.c facto/sl_facto.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) facto/sl_facto.c
	$(MV) sl_facto.o facto/

facto/optimexpr.o: facto/optimexpr.c facto/optimexpr.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) facto/optimexpr.c
	$(MV) optimexpr.o facto/

facto/jacoX.o: facto/jacoX.c
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) facto/jacoX.c
	$(MV) jacoX.o facto/

facto/cliqueZ.o: facto/cliqueZ.c
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) facto/cliqueZ.c
	$(MV) cliqueZ.o facto/

fpgasce/lut.o: fpgasce/lut.c fpgasce/fpga.h fpgasce/fp_type.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) fpgasce/lut.c
	$(MV) lut.o fpgasce/

fpgasce/x3000.o: fpgasce/x3000.c fpgasce/fpga.h fpgasce/fp_type.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) fpgasce/x3000.c
	$(MV) x3000.o fpgasce/

bddorder/bdd_order.o: bddorder/bdd_order.c bddorder/bdd_order.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) bddorder/bdd_order.c
	$(MV) bdd_order.o bddorder/

ablorder/sl_order.o: ablorder/sl_order.c ablorder/sl_order.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) ablorder/sl_order.c
	$(MV) sl_order.o ablorder/

compil/sl_util.o: compil/sl_util.c compil/sl_util.h mapping/types.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) compil/sl_util.c
	$(MV) sl_util.o compil/

compil/lax_param.o: compil/lax_param.c compil/lax_param.h
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) compil/lax_param.c
	$(MV) lax_param.o compil/

compil/sl_compile.o: compil/sl_compile.c 
	$(CC) $(LOCAL_CPPFLAGS) $(LOCAL_INC) $(LOCAL_CFLAGS) compil/sl_compile.c
	$(MV) sl_compile.o compil/

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

clean :
	-@$(RM) -f $(LOCAL_OBJ1) ../bin/* distrib > /dev/null 2>&1
