
include ../MakefileInclude
LIBS   = $(LIBNC)


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

LM  = a.out
LM  = calc_rte

SRC_MAIN_DIR = ../prog03_calc_rte

COM_UTILS_SRCS = vtype_module.f90 rad_kd_utils.f90 rad_planetconst.f90 hitranconst.f90 planck_func_wrapper.f90
COM_UTILS_DIR  = ../src_common/utils

COM_IO_SRCS = fi_module.f90 ni3_module.f90 rad_output.f90 io_profile.f90
COM_IO_DIR  = ../src_common/io

COM_FL_SRCS     = rad_flux.f90 rad_rte_two_stream_app_v3.f90 rad_rte_two_stream_app_1d_wrapper.f90 opt_prop_lbl.f90 opt_prop_lblconstpf.f90 opt_prop_kddevelop.f90 opt_prop_kd.f90
COM_FL_SRCS_CPP = opt_prop.F90
COM_FL_DIR     = ../src_common/flux

COM_DCPAM_SRC_REP = constants0.f90 gauss_quad.f90 planck_func.f90
COM_DCPAM_DIR = ../src_common/files_dcpam_replace ../src_common/files_dcpam/setup ../src_common/files_dcpam/radiation

MAIN_SRCS   = main_calc_rte.f90
MAIN_DIR    = $(SRC_MAIN_DIR)/src/main

SRCS_F90_CPP = $(COM_FL_SRCS_CPP)
SRCS_F90     = $(COM_UTILS_SRCS) $(COM_IO_SRCS) $(COM_FL_SRCS) $(MAIN_SRCS) $(UTIL_SRCS) $(COM_DCPAM_SRC_REP)
OBJS_F90   = $(SRCS_F90_CPP:.F90=.o) $(SRCS_F90:.f90=.o)


VPATH = $(COM_UTILS_DIR) $(COM_IO_DIR) $(COM_FL_DIR) $(COM_DCPAM_DIR) $(MAIN_DIR) $(UTIL_DIR)

OBJS_ALL = $(OBJS_F90)


.SUFFIXES : .f90 .F90 .o

all: $(LM)

$(LM): $(OBJS_ALL)
	$(FC) $(FFLAGS) $(DEF) $(NCLIB) -o $@ $(OBJS_ALL) $(LIBS)

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

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

clean:
	rm -f $(LM) $(OBJS_ALL) *.mod *~

distclean: clean
realclean: distclean

main_calc_rte.o: vtype_module.o rad_kd_utils.o rad_planetconst.o hitranconst.o rad_flux.o
rad_flux.o: constants0.o planck_func_wrapper.o rad_rte_two_stream_app_1d_wrapper.o opt_prop.o rad_kd_utils.o
rad_kd_utils.o: vtype_module.o
opt_prop.o: rad_kd_utils.o opt_prop_lbl.o opt_prop_lblconstpf.o opt_prop_kddevelop.o opt_prop_kd.o
opt_prop_kd.o: rad_kd_utils.o
opt_prop_lbl.o: ni3_module.o constants0.o planck_func_wrapper.o 
rad_rte_two_stream_app_1d_wrapper.o: rad_rte_two_stream_app_v3.o
rad_rte_two_stream_app_v3.o: constants0.o gauss_quad.o
gauss_quad.o: constants0.o
planck_func_wrapper.o: planck_func.o
planck_func.o: gauss_quad.o
