FC=gfortran
OPT  = -ffree-line-length-none -O2 -c
OPTC = -ffree-line-length-none -O2 -o
OPTLAP = -c -O2 -o 
OPTPPP = -c -O2 -freal-4-real-8 -std=legacy -o 

LAP=lapack
PPP=pppack
###########################################################

all: H2spectre.exe
extlapack.a: $(patsubst %.f,%.o,$(wildcard $(LAP)/*.f))
	ar rc $@ $^

$(LAP)/%.o: $(LAP)/%.f
	$(FC) $(OPTLAP) $@ $<

extpppack.a: $(patsubst %.f,%.o,$(wildcard $(PPP)/*.f))
	ar rc $@ $^

$(PPP)/%.o: $(PPP)/%.f
	$(FC) $(OPTPPP) $@ $<

###########################################################

h2spectr_types.o: h2spectr_types.f90
	$(FC) $(OPT) h2spectr_types.f90

h2spectr_pot.o: h2spectr_types.mod data/h2spectr_pot.f90
	$(FC) $(OPT) data/h2spectr_pot.f90 

h2spectr_level.o: h2spectr_types.mod h2spectr_level.f90
	$(FC) $(OPT) h2spectr_level.f90 

H2spectre.exe: extpppack.a extlapack.a h2spectr_types.o h2spectr_pot.o h2spectr_level.o h2spectre.f90
	$(FC) $(OPTC) H2spectre.exe h2spectre.f90 h2spectr_types.o h2spectr_level.o h2spectr_pot.o extpppack.a extlapack.a

clean:
	rm -f *.o
	rm -f *.mod
	rm -f *.a
	rm -f lapack/*.o
	rm -f pppack/*.o

cleanall:
	rm -f *.o
	rm -f *.mod
	rm -f *.a
	rm -f lapack/*.o
	rm -f pppack/*.o
	rm -f H2spectre.exe
