1 | # known to compile with gfortran version 7, ifort version 17, pgfortran version 18 |
---|
2 | # Examples |
---|
3 | # F90=ifort FFLAGS=-fast make clean all |
---|
4 | # F90=gfortran F90FLAGS=-ffree-line-length-none make clean all |
---|
5 | # F90=pgfortran F90FLAGS="-fast -Minfo=loop" make clean all |
---|
6 | |
---|
7 | # if XCodeML F_Front is installed, set FFRONT=F_Front to parse code into XML |
---|
8 | FFRONT ?= true |
---|
9 | |
---|
10 | F90 ?= gfortran |
---|
11 | F90FLAGS ?= -ffree-line-length-none |
---|
12 | |
---|
13 | VPATH = obj |
---|
14 | NAMES = $(basename $(notdir $(wildcard physics/*.F90))) |
---|
15 | OBJECTS = $(addprefix obj/, $(addsuffix .o, $(NAMES))) |
---|
16 | |
---|
17 | all : obj $(OBJECTS) lib/libphyparam.so |
---|
18 | |
---|
19 | obj : |
---|
20 | @mkdir obj include lib xml |
---|
21 | |
---|
22 | clean : |
---|
23 | rm -f obj/* include/* lib/* xml/* |
---|
24 | ../bash/beautify.sh physics/*.F90 |
---|
25 | %.so : $(OBJECTS) |
---|
26 | $(F90) -shared $^ -o $@ |
---|
27 | |
---|
28 | obj/read_param_mod.o : logging.o |
---|
29 | obj/write_field_mod.o : logging.o |
---|
30 | obj/convection.o : logging.o |
---|
31 | obj/surface.o : logging.o |
---|
32 | obj/astronomy.o : logging.o |
---|
33 | obj/solar.o : logging.o astronomy.o |
---|
34 | obj/radiative_lw.o : logging.o phys_const.o |
---|
35 | obj/radiative_sw.o : logging.o phys_const.o |
---|
36 | obj/turbulence.o : logging.o phys_const.o |
---|
37 | MAIN : callkeys.o phys_const.o astronomy.o turbulence.o surface.o convection.o planet.o |
---|
38 | obj/iniphyparam_mod.o : MAIN read_param_mod.o |
---|
39 | obj/phyparam_mod.o : MAIN solar.o radiative_sw.o radiative_lw.o comgeomfi.o writefield_mod.o |
---|
40 | |
---|
41 | SRC = $(basename $(notdir $@)) |
---|
42 | obj/%.o: physics/%.F90 |
---|
43 | $(F90) -I include -fPIC $(F90FLAGS) -c $< |
---|
44 | @mv $(SRC).mod include |
---|
45 | @mv $(SRC).o obj |
---|
46 | @cpp -DXCODEML $< > xml/$(SRC).f90 |
---|
47 | @$(FFRONT) -M xml xml/$(SRC).f90 > xml/$(SRC).xml |
---|