# debugging       -*- Makefile -*-
OCAMLC = ocamlcp -g
OCAMLCI = ocamlc.opt -g
OCAMLLINK = ocamlcp -custom -g
O= cmo
A= cma

# non debugging
OCAMLC = ocamlopt.opt
OCAMLCI = ocamlopt.opt
OCAMLLINK = ocamlopt.opt
O= cmx
A= cmxa

all: genfft

.SUFFIXES: .$(O) .cmi .ml .mli

# order is important here
OBJS =  \
	magic.$(O) \
	util.$(O) \
	number.$(O) \
	variable.$(O) \
	expr.$(O) \
	stateMonad.$(O) \
	memoMonad.$(O) \
	nonDetMonad.$(O) \
	nonDetUtils.$(O) \
	exprdag.$(O) \
	complex.$(O) \
	twiddle.$(O) \
	symmetry.$(O) \
	fft.$(O) \
	id.$(O) \
	vFpBasics.$(O) \
	vFpUnparsing.$(O) \
	vSimdBasics.$(O) \
	vSimdUnparsing.$(O) \
	vSimdIndexing.$(O) \
	balanceVfpinstrs.$(O) \
	vTwoWayVectorization.$(O) \
	vOptimization.$(O) \
	vImproveSchedule.$(O) \
	vDag.$(O) \
	vScheduler.$(O) \
	vAnnotatedScheduler.$(O) \
	assignmentsToVfpinstrs.$(O) \
	genfft.$(O)



genfft: $(OBJS)
	rm -f genfft
	$(OCAMLLINK) nums.$(A) unix.$(A) -o genfft $(OBJS) -cclib -lnums \
	   -cclib -lunix

%.$(O):	%.ml
	$(OCAMLC) -c $<

%.cmi:	%.mli
	$(OCAMLCI) -c $<

# dependency list generated by ocamldep
assignmentsToVfpinstrs.cmo: balanceVfpinstrs.cmi expr.cmi number.cmi \
    stateMonad.cmi util.cmi vFpBasics.cmi vSimdBasics.cmi variable.cmi \
    assignmentsToVfpinstrs.cmi 
assignmentsToVfpinstrs.cmx: balanceVfpinstrs.cmx expr.cmx number.cmx \
    stateMonad.cmx util.cmx vFpBasics.cmx vSimdBasics.cmx variable.cmx \
    assignmentsToVfpinstrs.cmi 
balanceVfpinstrs.cmo: nonDetMonad.cmi nonDetUtils.cmi number.cmi util.cmi \
    vFpBasics.cmi balanceVfpinstrs.cmi 
balanceVfpinstrs.cmx: nonDetMonad.cmx nonDetUtils.cmx number.cmx util.cmx \
    vFpBasics.cmx balanceVfpinstrs.cmi 
complex.cmo: exprdag.cmi magic.cmi number.cmi variable.cmi complex.cmi 
complex.cmx: exprdag.cmx magic.cmx number.cmx variable.cmx complex.cmi 
expr.cmo: number.cmi variable.cmi expr.cmi 
expr.cmx: number.cmx variable.cmx expr.cmi 
exprdag.cmo: expr.cmi magic.cmi memoMonad.cmi number.cmi stateMonad.cmi \
    util.cmi variable.cmi exprdag.cmi 
exprdag.cmx: expr.cmx magic.cmx memoMonad.cmx number.cmx stateMonad.cmx \
    util.cmx variable.cmx exprdag.cmi 
fft.cmo: complex.cmi exprdag.cmi magic.cmi symmetry.cmo twiddle.cmo util.cmi \
    fft.cmi 
fft.cmx: complex.cmx exprdag.cmx magic.cmx symmetry.cmx twiddle.cmx util.cmx \
    fft.cmi 
genfft.cmo: assignmentsToVfpinstrs.cmi expr.cmi exprdag.cmi fft.cmi magic.cmi \
    number.cmi symmetry.cmo twiddle.cmo util.cmi vAnnotatedScheduler.cmi \
    vFpBasics.cmi vImproveSchedule.cmi vOptimization.cmo vScheduler.cmi \
    vSimdBasics.cmi vSimdUnparsing.cmi vTwoWayVectorization.cmo variable.cmi 
genfft.cmx: assignmentsToVfpinstrs.cmx expr.cmx exprdag.cmx fft.cmx magic.cmx \
    number.cmx symmetry.cmx twiddle.cmx util.cmx vAnnotatedScheduler.cmx \
    vFpBasics.cmx vImproveSchedule.cmx vOptimization.cmx vScheduler.cmx \
    vSimdBasics.cmx vSimdUnparsing.cmx vTwoWayVectorization.cmx variable.cmx 
id.cmo: id.cmi 
id.cmx: id.cmi 
magic.cmo: magic.cmi 
magic.cmx: magic.cmi 
memoMonad.cmo: stateMonad.cmi memoMonad.cmi 
memoMonad.cmx: stateMonad.cmx memoMonad.cmi 
nonDetMonad.cmo: nonDetMonad.cmi 
nonDetMonad.cmx: nonDetMonad.cmi 
nonDetUtils.cmo: nonDetMonad.cmi nonDetUtils.cmi 
nonDetUtils.cmx: nonDetMonad.cmx nonDetUtils.cmi 
number.cmo: util.cmi number.cmi 
number.cmx: util.cmx number.cmi 
stateMonad.cmo: stateMonad.cmi 
stateMonad.cmx: stateMonad.cmi 
symmetry.cmo: complex.cmi exprdag.cmi util.cmi 
symmetry.cmx: complex.cmx exprdag.cmx util.cmx 
twiddle.cmo: complex.cmi magic.cmi util.cmi 
twiddle.cmx: complex.cmx magic.cmx util.cmx 
util.cmo: magic.cmi util.cmi 
util.cmx: magic.cmx util.cmi 
vAnnotatedScheduler.cmo: magic.cmi util.cmi vScheduler.cmi vSimdBasics.cmi \
    vAnnotatedScheduler.cmi 
vAnnotatedScheduler.cmx: magic.cmx util.cmx vScheduler.cmx vSimdBasics.cmx \
    vAnnotatedScheduler.cmi 
vDag.cmo: number.cmi util.cmi vSimdBasics.cmi variable.cmi vDag.cmi 
vDag.cmx: number.cmx util.cmx vSimdBasics.cmx variable.cmx vDag.cmi 
vFpBasics.cmo: number.cmi util.cmi variable.cmi vFpBasics.cmi 
vFpBasics.cmx: number.cmx util.cmx variable.cmx vFpBasics.cmi 
vFpUnparsing.cmo: number.cmi util.cmi vFpBasics.cmi variable.cmi \
    vFpUnparsing.cmi 
vFpUnparsing.cmx: number.cmx util.cmx vFpBasics.cmx variable.cmx \
    vFpUnparsing.cmi 
vImproveSchedule.cmo: util.cmi vSimdBasics.cmi vImproveSchedule.cmi 
vImproveSchedule.cmx: util.cmx vSimdBasics.cmx vImproveSchedule.cmi 
vOptimization.cmo: id.cmi magic.cmi nonDetMonad.cmi nonDetUtils.cmi \
    number.cmi util.cmi vFpBasics.cmi vSimdBasics.cmi vSimdIndexing.cmi 
vOptimization.cmx: id.cmx magic.cmx nonDetMonad.cmx nonDetUtils.cmx \
    number.cmx util.cmx vFpBasics.cmx vSimdBasics.cmx vSimdIndexing.cmx 
vScheduler.cmo: magic.cmi util.cmi vDag.cmi vSimdBasics.cmi vScheduler.cmi 
vScheduler.cmx: magic.cmx util.cmx vDag.cmx vSimdBasics.cmx vScheduler.cmi 
vSimdBasics.cmo: number.cmi util.cmi vFpBasics.cmi variable.cmi \
    vSimdBasics.cmi 
vSimdBasics.cmx: number.cmx util.cmx vFpBasics.cmx variable.cmx \
    vSimdBasics.cmi 
vSimdIndexing.cmo: vSimdBasics.cmi vSimdIndexing.cmi 
vSimdIndexing.cmx: vSimdBasics.cmx vSimdIndexing.cmi 
vSimdUnparsing.cmo: number.cmi util.cmi vFpUnparsing.cmi vSimdBasics.cmi \
    variable.cmi vSimdUnparsing.cmi 
vSimdUnparsing.cmx: number.cmx util.cmx vFpUnparsing.cmx vSimdBasics.cmx \
    variable.cmx vSimdUnparsing.cmi 
vTwoWayVectorization.cmo: balanceVfpinstrs.cmi expr.cmi id.cmi magic.cmi \
    nonDetMonad.cmi nonDetUtils.cmi number.cmi util.cmi vFpBasics.cmi \
    vFpUnparsing.cmi vSimdBasics.cmi vSimdUnparsing.cmi variable.cmi 
vTwoWayVectorization.cmx: balanceVfpinstrs.cmx expr.cmx id.cmx magic.cmx \
    nonDetMonad.cmx nonDetUtils.cmx number.cmx util.cmx vFpBasics.cmx \
    vFpUnparsing.cmx vSimdBasics.cmx vSimdUnparsing.cmx variable.cmx 
variable.cmo: variable.cmi 
variable.cmx: variable.cmi 
assignmentsToVfpinstrs.cmi: expr.cmi number.cmi vFpBasics.cmi vSimdBasics.cmi \
    variable.cmi 
balanceVfpinstrs.cmi: vFpBasics.cmi 
complex.cmi: exprdag.cmi 
expr.cmi: number.cmi variable.cmi 
exprdag.cmi: expr.cmi number.cmi variable.cmi 
fft.cmi: complex.cmi exprdag.cmi symmetry.cmo 
genUtil.cmi: exprdag.cmi vFpBasics.cmi vSimdBasics.cmi variable.cmi 
nullVectorization.cmi: vFpBasics.cmi vSimdBasics.cmi 
vAnnotatedScheduler.cmi: vScheduler.cmi vSimdBasics.cmi 
vDag.cmi: vSimdBasics.cmi 
vFpBasics.cmi: number.cmi variable.cmi 
vFpUnparsing.cmi: vFpBasics.cmi 
vImproveSchedule.cmi: vSimdBasics.cmi 
vK7Optimization.cmi: vSimdBasics.cmi 
vOneWayVectorization.cmi: vFpBasics.cmi vSimdBasics.cmi 
vScheduler.cmi: vSimdBasics.cmi 
vSimdBasics.cmi: number.cmi vFpBasics.cmi variable.cmi 
vSimdIndexing.cmi: vSimdBasics.cmi 
vSimdUnparsing.cmi: vSimdBasics.cmi variable.cmi 
