
include ../MakefileInclude
LIBS   = $(LIBNC)

FC     = $(MPIFC)

DEF    = 
#DEF    = -DMPI


###############################################################################

RM = rm -f

###############################################################################

LM = calc_ac

SRC_MAIN_DIR = .

COM_UTILS_SRCS = vtype_module.f90 hitranconst.f90
COM_UTILS_DIR  = ../src_common/utils

COM_DCPAM_REP_SRCS = constants0.f90
COM_DCPAM_REP_DIR  = ../src_common/files_dcpam_replace

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

MAIN_SRCS_CPP = main_calc_ac.F90
MAIN_SRCS     = 
MAIN_DIR      = $(SRC_MAIN_DIR)/src/main

COM_LBL_SRCS = lbl_module.f90 ac_calc.f90 cia_module.f90 xsc_module.f90 ac_calc_utils.f90
COM_LBL_DIR  = ../src_common/lbl

#COM_TIPS_SRCS = BD_TIPS_2003.f
#COM_TIPS_DIR  = ../src_common/TIPS_2003
#COM_TIPS_SRCS = BD_TIPS_2011.f
#COM_TIPS_DIR  = ../src_common/TIPS_2011
COM_TIPS_SRCS = BD_TIPS_2017.f
COM_TIPS_DIR  = ../src_common/TIPS_2017

COM_MTCKD_SRCS = mtckd_wrapper3.f90 contnm_mod.f90 lblparams.f90 phys_consts.f90
COM_MTCKD_DIR  = ../src_common/mtckd

COM_SORTAC_SRCS = sort.f90
COM_SORTAC_DIR  = ../src_common/sortac


SRCS_F90_CPP = $(MAIN_SRCS_CPP)
SRCS_F90 = $(MAIN_SRCS) $(COM_UTILS_SRCS) $(COM_IO_SRCS) $(COM_LBL_SRCS) $(COM_MTCKD_SRCS) $(COM_SORTAC_SRCS) $(COM_DCPAM_REP_SRCS)
SRCS_F   = $(COM_TIPS_SRCS)

OBJS_F90 = $(SRCS_F90:.f90=.o) $(SRCS_F90_CPP:.F90=.o)
OBJS_F   = $(SRCS_F:.f=.o)

OBJS_ALL = $(OBJS_F90) $(OBJS_F)


#NCDIR    = /usr/local/netcdf_SX
#NCDIR    = /S/home004/e0307/local/netcdf-from-y0021
NCINC    = -I $(NCDIR)/include
NCLIB    = -L $(NCDIR)/lib


#NC_SRCS  = 
#NCDIR    = 
#NCINC    = 
#NCLIB    = 
#LIB      = 


#CNT_SRCS_90 = cntnm_progr.f90
#CNT_SRCS_77 = contnm.f cntnm_sup.f
#CNT_OBJS    = $(CNT_SRCS_90:.f90=.o) $(CNT_SRCS_77:.f=.o)
#CNT_DIR     = src/cntnm_pro



VPATH = $(COM_UTILS_DIR):$(COM_IO_DIR):$(MAIN_DIR):$(COM_LBL_DIR):$(IO_DIR):$(COM_TIPS_DIR):$(COM_MTCKD_DIR):$(COM_SORTAC_DIR):$(COM_DCPAM_REP_DIR)


.SUFFIXES: 
.SUFFIXES: .f .f90 .F90 .o


all: $(LM)

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

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

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

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


cleanLM:
	$(RM) $(LM)

clean:
	$(RM) core $(OBJS_ALL) *.mod *~ *.L
	$(RM) $(MAIN_DIR)/*~

distclean: cleanLM clean
realclean: distclean


###############################################################################
#
# Dependence
#
#
# main:
#
main_calc_ac.o: vtype_module.o fi_module.o io_profile.o ac_calc.o calc_ac_utils.o
calc_ac_utils.o: vtype_module.o lbl_module.o
ac_calc.o: vtype_module.o constants0.o lbl_module.o cia_module.o xsc_module.o
ac_io_module.o: ni3_module.o
lbl_module.o: vtype_module.o constants0.o mtckd_wrapper3.o sort.o fi_module.o ni3_module.o hitranconst.o
mtckd_wrapper3.o: lblparams.o phys_consts.o
