# known to compile with gfortran version 7, ifort version 17, pgfortran version 18 # Examples # F90=ifort FFLAGS=-fast make clean all # F90=gfortran F90FLAGS=-ffree-line-length-none make clean all # F90=pgfortran F90FLAGS="-fast -Minfo=loop" make clean all # if XCodeML F_Front is installed, set FFRONT=F_Front to parse code into XML FFRONT ?= true F90 ?= gfortran F90FLAGS ?= -ffree-line-length-none VPATH = obj NAMES = $(basename $(notdir $(wildcard physics/*.F90))) OBJECTS = $(addprefix obj/, $(addsuffix .o, $(NAMES))) all : obj $(OBJECTS) lib/libphyparam.so obj : @mkdir obj include lib xml clean : rm -f obj/* include/* lib/* xml/* ../bash/beautify.sh physics/*.F90 %.so : $(OBJECTS) $(F90) -shared $^ -o $@ obj/read_param_mod.o : logging.o obj/write_field_mod.o : logging.o obj/convection.o : logging.o obj/surface.o : logging.o obj/astronomy.o : logging.o obj/solar.o : logging.o astronomy.o obj/radiative_lw.o : logging.o phys_const.o obj/radiative_sw.o : logging.o phys_const.o obj/turbulence.o : logging.o phys_const.o MAIN : callkeys.o phys_const.o astronomy.o turbulence.o surface.o convection.o planet.o obj/iniphyparam_mod.o : MAIN read_param_mod.o obj/phyparam_mod.o : MAIN solar.o radiative_sw.o radiative_lw.o comgeomfi.o writefield_mod.o SRC = $(basename $(notdir $@)) obj/%.o: physics/%.F90 $(F90) -I include -fPIC $(F90FLAGS) -c $< @mv $(SRC).mod include @mv $(SRC).o obj @cpp -DXCODEML $< > xml/$(SRC).f90 @$(FFRONT) -M xml xml/$(SRC).f90 > xml/$(SRC).xml