FC     = pgf95
FFLAGS = -fastsse -Mbounds
NCPATH = /usr/local
GTPATH = /usr/local/gtool5
INCPATH= -I$(GTPATH)/include -I$(NCPATH)/include
LIBPATH= -L$(GTPATH)/lib -L$(NCPATH)/lib
LIB    = -lgtool5 -lnetcdf
DEF    =

LM_INITIAL = dcrtm_initialdata
SRC_INITIAL = initialdata.f90
OBJ_INITIAL = $(SRC_INITIAL:.f90=.o)

LM_INITIALP = dcrtm_initialparticle
SRC_INITIALP = initialdata_particle.f90
OBJ_INITIALP = $(SRC_INITIALP:.f90=.o)

LM_OPTDEP = dcrtm_optdep
SRC_OPTDEP = mod_linebyline.f90 main_optdep.f90 constants0.f90 planetconst.f90 mod_contabs.f90 convert.f90
OBJ_OPTDEP = $(SRC_OPTDEP:.f90=.o)

LM_FLUX = dcrtm_flux
SRC_FLUX = main_flux.f90 constants0.f90 rad_rte_two_stream_app_it.f90 gauss_quad.f90 gridset.f90 planetconst.f90 planckf.f90 convert.f90 interpol.f90
OBJ_FLUX = $(SRC_FLUX:.f90=.o)

LM_VFLUX = dcrtm_vflux
SRC_VFLUX = sum_verticalflux.f90
OBJ_VFLUX = $(SRC_VFLUX:.f90=.o)

LM_HR = dcrtm_heatrate
SRC_HR = calc_heatrate.f90 mod_HR.f90 planetconst.f90
OBJ_HR = $(SRC_HR:.f90=.o)

LM_BT = dcrtm_brighttemp
SRC_BT = calc_brightnesstemp.f90 constants0.f90 planetconst.f90
OBJ_BT = $(SRC_BT:.f90=.o)


OBJ_ALL = $(OBJ_INITIAL) $(OBJ_INITIALP) $(OBJ_OPTDEP) $(OBJ_FLUX) $(OBJ_VFLUX) $(OBJ_HR) $(OBJ_BT)
LM_ALL  =  $(LM_INITIAL)  $(LM_INITIALP)  $(LM_OPTDEP)  $(LM_FLUX)  $(LM_VFLUX)  $(LM_HR)  $(LM_BT)

.SUFFIXES : .f90 .o

VPATH = src/optdep :src/flux :src/dcpam :src/util :src/initial :src/analysis

all: $(LM_ALL)

$(LM_INITIAL): $(OBJ_INITIAL)
	$(FC) $(FFLAGS) $(LIBPATH) $(DEF) -o $@ $(OBJ_INITIAL) $(LIB)

$(LM_INITIALP): $(OBJ_INITIALP)
	$(FC) $(FFLAGS) $(LIBPATH) $(DEF) -o $@ $(OBJ_INITIALP) $(LIB)

$(LM_OPTDEP): $(OBJ_OPTDEP)
	$(FC) $(FFLAGS) $(LIBPATH) $(DEF) -o $@ $(OBJ_OPTDEP) $(LIB)

$(LM_FLUX): $(OBJ_FLUX)
	$(FC) $(FFLAGS) $(LIBPATH) $(DEF) -o $@ $(OBJ_FLUX) $(LIB)

$(LM_VFLUX): $(OBJ_VFLUX)
	$(FC) $(FFLAGS) $(LIBPATH) $(DEF) -o $@ $(OBJ_VFLUX) $(LIB)

$(LM_HR): $(OBJ_HR)
	$(FC) $(FFLAGS) $(LIBPATH) $(DEF) -o $@ $(OBJ_HR) $(LIB)

$(LM_BT): $(OBJ_BT)
	$(FC) $(FFLAGS) $(LIBPATH) $(DEF) -o $@ $(OBJ_BT) $(LIB)


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

clean:
	rm -f $(LM_ALL) $(OBJ_ALL) *~ *.mod

realclean: clean


mod_contabs.o: constants0.o planetconst.o
mod_linebyline.o: constants0.o planetconst.o mod_contabs.o
convert.o: planetconst.o
main_optdep.o: mod_linebyline.o constants0.o planetconst.o convert.o

gauss_quad.o: constants0.o
rad_rte_two_stream_app_it.o: gridset.o gauss_quad.o
planckf.o: planetconst.o
convert.o: planetconst.o
main_flux.o: rad_rte_two_stream_app_it.o planckf.o planetconst.o convert.o interpol.o

mod_HR.o: planetconst.o
calc_heatrate.o: planetconst.o mod_HR.o

calc_brightnesstemp.o: planetconst.o constants0.o