FC     = frt
FFLAGS = -Am -Haesux
NCDIR  = /home/yot/local/netcdf-3.6.1-frt-gnu
GT5DIR = /work02/yot/work/dcmodel/local/gtool5-20101228-1-frt-Haesux
LIBS   = -lgtool5 -lnetcdf

FC     = frt
FFLAGS = -Am -Haesux
NCDIR  = /home/yot/local/netcdf-3.6.3-frt-gnu
GT5DIR = /home/yot/work/dcmodel/local/gtool5-20101228-1-Fujitsu
LIBS   = -lgtool5 -lnetcdf

#FC     = gfortran
#FFLAGS = -Ofast -g -fopenmp -fbacktrace -ffpe-trap=invalid,zero,overflow -fbounds-check -Wall
#FFLAGS = -fopenmp -g -O -fbacktrace -Wall -fbounds-check -Wuninitialized -ffpe-trap=invalid,zero,overflow
#NCDIR  = /usr
#GT5DIR = /usr/lib/x86_64-linux-gnu/gtool5
#LIBS   = -lgtool5 -lnetcdff

NCINC  = -I$(NCDIR)/include
NCLIB  = -L$(NCDIR)/lib
GT5INC = -I$(GT5DIR)/include
GT5LIB = -L$(GT5DIR)/lib
DEF    = 

LM  = a.out
SRC_MAIN   = main.f90
SRC_SORTAC = sortac.f90 sort.f90
SRC_UTIL   = rad_utils.f90 planetconst.f90 interpolate.f90

SRC_FL           = rad_flux.f90 rad_rte_two_stream_app_wrapper.f90 opt_prop.f90
SRC_FL_DCPAM     = constants0.f90 gauss_quad.f90 planck_func.f90 rad_rte_two_stream_app.f90
SRC_FL_DCPAM_REP = gridset.f90 planck_func_wrapper.f90
SRC_FL_UTIL      = 

SRC        = $(SRC_MAIN) $(SRC_UTIL) $(SRC_SORTAC) $(SRC_FL) $(SRC_FL_DCPAM) $(SRC_FL_DCPAM_REP) $(SRC_FL_UTIL)
OBJ        = $(SRC:.f90=.o)

DIR_DCPAM = src/files_dcpam_replace src/files_dcpam/setup src/files_dcpam/radiation

VPATH = src/main src/util src/sortac src/flux $(DIR_DCPAM)

ALL_OBJ = $(OBJ)
ALL_LM  = $(LM)


.SUFFIXES : .f90 .o

all: $(ALL_LM)

$(LM): $(ALL_OBJ)
	$(FC) $(FFLAGS) $(DEF) $(NCLIB) $(GT5LIB) -o $@ $(OBJ) $(LIBS)

.f90.o:
	$(FC) $(FFLAGS) $(DEF) $(NCINC) $(GT5INC) -c $<

clean:
	rm -f $(ALL_LM) $(ALL_OBJ) *.mod *~

distclean: clean
realclean: distclean

main.o: rad_utils.o planetconst.o interpolate.o rad_flux.o sortac.o
sortac.o: sort.o planetconst.o gauss_quad.o planck_func_wrapper.o
rad_flux.o: constants0.o planck_func_wrapper.o rad_rte_two_stream_app_wrapper.o opt_prop.o
opt_prop.o: rad_utils.o
rad_rte_two_stream_app_wrapper.o: rad_rte_two_stream_app.o
rad_rte_two_stream_app.o: constants0.o gridset.o gauss_quad.o
gauss_quad.o: constants0.o
planck_func_wrapper.o: planck_func.o
planck_func.o: gauss_quad.o
