PRECISION = -DMY_RKIND=8
PARALLEL = -fopenmp

FORTRAN = gfortran $(MACHINE) -DNO_QUADRUPLE_PRECISION
MACHINE =
FFLAGS = $(OPT) $(PRECISION) -I$(INCDIR) 
INCDIR = $(LIBPATH)
OPT = -O3 $(PARALLEL)
.SUFFIXES: 
.SUFFIXES: .F90 .o 
.F90.o:
	$(FORTRAN) -c $(FFLAGS) $<

LOADER  = $(FORTRAN)
LDFLAGS = $(PARALLEL)
LIBPATH = ./Filter
LIBS = ./Filter/lib.a 

OBJS_STD = main_std.o set_band_a.o orth.o orth_misc.o \
		ritz.o set_job_params.o band.o hqr_orth.o set_filter.o misc.o 
OBJS_STD_MP = main_std_mp.o set_band_a.o orth_mp.o orth_misc_mp.o \
		ritz.o set_job_params.o band.o hqr_orth.o set_filter.o misc.o 
OBJS_GEN = main_gen.o set_band_ab.o b_orth.o orth_misc.o \
		ritz.o set_job_params.o band.o set_filter.o misc.o 
OBJS_GEN_MP = main_gen_mp.o set_band_ab.o b_orth_mp.o orth_misc_mp.o \
		ritz.o set_job_params.o band.o set_filter.o misc.o 
PROGRAMS = main_std main_gen main_gen_mp main_std_mp

all: $(LIBS) $(PROGRAMS)

main_std : $(OBJS_STD) $(LIBS)
	$(LOADER) $(LDFLAGS) $(OBJS_STD) $(LIBS) -o $@ 
main_std_mp : $(OBJS_STD_MP) $(LIBS)
	$(LOADER) $(LDFLAGS) $(OBJS_STD_MP) $(LIBS) -o $@ 
main_gen : $(OBJS_GEN) $(LIBS)
	$(LOADER) $(LDFLAGS) $(OBJS_GEN) $(LIBS) -o $@ 
main_gen_mp : $(OBJS_GEN_MP) $(LIBS)
	$(LOADER) $(LDFLAGS) $(OBJS_GEN_MP) $(LIBS) -o $@ 

clean:
	-rm -f $(PROGRAMS) *.o fort.* *.data *.eps

./Filter/lib.a :
	(cd ./Filter; make)
