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