
FC=gfortran
qcdlooppath=$(PWD)/qcdloop
QLDIR=$(qcdlooppath)/ql
FFDIR=$(qcdlooppath)/ff
onelooppath=$(PWD)/oneloop
#FFLAGS=-O -g -ggdb -fno-automatic -fbounds-check -I$(onelooppath) # -fbounds-check is very useful in checking mermory error,-g is for debuging,-ggdb is for debuging special in gdb
FFLAGS=-O -g -fPIC -I$(onelooppath)
obj= global.o funlib.o linear_algebra.o kinematics.o matrices.o matrix_base.o cmatrix_base.o mis_warp.o special_fun.o pave_reduce.o cpave_reduce.o si_reduce.o csi_reduce.o ti_reduce.o cti_reduce.o gti_reduce.o binary_tree.o IREGI4ML5_interface.o avh_olo_foriregi.o
olomod= avh_olo_foriregi.mod avh_olo_foriregi_dp_box.mod    avh_olo_foriregi_dp_olog.mod   avh_olo_foriregi_units.mod \
        avh_olo_foriregi_dp.mod        avh_olo_foriregi_dp_boxc.mod   avh_olo_foriregi_dp_prec.mod   avh_olo_foriregi_version.mod \
        avh_olo_foriregi_dp_arrays.mod avh_olo_foriregi_dp_bub.mod    avh_olo_foriregi_dp_print.mod \
        avh_olo_foriregi_dp_auxfun.mod avh_olo_foriregi_dp_dilog.mod  avh_olo_foriregi_dp_qmplx.mod \
        avh_olo_foriregi_dp_bnlog.mod  avh_olo_foriregi_dp_kinds.mod  avh_olo_foriregi_dp_tri.mod
mod= global.mod funlib.mod linear_algebra.mod kinematics.mod matrices.mod matrix_base.mod cmatrix_base.mod mis_warp.mod special_fun.mod pave_reduce.mod cpave_reduce.mod si_reduce.mod csi_reduce.mod ti_reduce.mod cti_reduce.mod gti_reduce.mod $(olomod)
libiregi.a: make_ql $(obj) $(mod)
	@rm -f libiregi.a
	@ar csr libiregi.a  $(obj) $(mod) 
#$(QLDIR)libqcdloop.a $(FFDIR)libff.a $(onelooppath)libavh_olo.a
#-L$(QLDIR) -lqcdloop -L$(FFDIR) -lff -L$(onelooppath) -lavh_olo
#       @ar cru libiregi.so $(obj)
	ranlib libiregi.a

#libiregi.so:$(obj)
#        $(FC) -shared -fPIC -o $@ $(obj) -lqcdloop -lff -lavh_olo
#$(exe): $(obj)
#	$(FC) $(FFALGS) -L$(QLDIR) -L$(FFDIR) -L$(onelooppath) -o $(exe) $(obj) -lqcdloop -lff -lavh_olo
global.o global.mod : global.f90
	$(FC) -c $< $(FFLAGS)
kinematics.o kinematics.mod : kinematics.f90 global.mod
	$(FC) -c $< $(FFLAGS)
funlib.o funlib.mod : funlib.f90 global.mod
	$(FC) -c $< $(FFLAGS)
linear_algebra.o linear_algebra.mod : linear_algebra.f90
	$(FC) -c $< $(FFLAGS)
matrices.o matrices.mod : matrices.f90 global.mod funlib.mod kinematics.mod matrix_base.mod cmatrix_base.mod binary_tree.mod
	$(FC) -c $< $(FFLAGS)
matrix_base.o matrix_base.mod : matrix_base.f90
	$(FC) -c $< $(FFLAGS)
cmatrix_base.o cmatrix_base.mod : cmatrix_base.f90
	$(FC) -c $< $(FFLAGS)
avh_olo_foriregi.mod : oneloop/avh_olo_foriregi.f90
	$(FC) -c $< $(FFLAGS)
mis_warp.o mis_warp.mod : mis_warp.f90 kinematics.mod global.mod $(olomod)
	$(FC) -c $< $(FFLAGS)
special_fun.o special_fun.mod : special_fun.f90
	$(FC) -c $< $(FFLAGS)
pave_reduce.o pave_reduce.mod : pave_reduce.f90 global.mod funlib.mod mis_warp.mod kinematics.mod matrix_base.mod matrices.mod special_fun.mod binary_tree.mod
	$(FC) -c $< $(FFLAGS)
cpave_reduce.o cpave_reduce.mod : cpave_reduce.f90 global.mod funlib.mod kinematics.mod matrix_base.mod cmatrix_base.mod matrices.mod binary_tree.mod pave_reduce.mod
	$(FC) -c $< $(FFLAGS)
si_reduce.o si_reduce.mod : si_reduce.f90 funlib.mod matrix_base.mod matrices.mod pave_reduce.mod linear_algebra.mod mis_warp.mod binary_tree.mod
	$(FC) -c $< $(FFLAGS)
csi_reduce.o csi_reduce.mod : csi_reduce.f90 funlib.mod linear_algebra.mod matrix_base.mod cmatrix_base.mod matrices.mod si_reduce.mod cpave_reduce.mod mis_warp.mod binary_tree.mod
	$(FC) -c $< $(FFLAGS)
ti_reduce.o ti_reduce.mod : ti_reduce.f90 si_reduce.mod pave_reduce.mod global.mod funlib.mod
	$(FC) -c $< $(FFLAGS)
cti_reduce.o cti_reduce.mod: cti_reduce.f90 csi_reduce.mod cpave_reduce.mod global.mod funlib.mod ti_reduce.mod
	$(FC) -c $< $(FFLAGS)
gti_reduce.o gti_reduce.mod : gti_reduce.f90 ti_reduce.mod si_reduce.mod pave_reduce.mod global.mod funlib.mod
	$(FC) -c $< $(FFLAGS)
binary_tree.o binary_tree.mod : binary_tree.f90 global.mod
	$(FC) -c $< $(FFLAGS)
IREGI4ML5_interface.o : IREGI4ML5_interface.f90 global.mod funlib.mod ti_reduce.mod binary_tree.mod cti_reduce.mod
	$(FC) -c $< $(FFLAGS)

make_ql:
	(make -f makefile_qcdloop)

clean:
	@rm -rf $(obj) $(exe) *.mod *~ *.a
	@(make clean -f makefile_qcdloop)
