#     path:      $HeadURL$
#     author:    $Author$
#     revision:  $Revision$
#     created:   $Date$
#
# Makefile for lblrtm_voigt
# From lblrtm/build directory, type: gmake -f make_lblrtm_voigt <TARGET>

# Include file containing user input. Directory is referenced to 
# parent directory and common build rules
include makefile.common

###############################
# Set variables/
###############################
#Set version name.  Used in the default OUTPUT and OBJPATH variables.  If you
# change those two variables from what is provided here, no need to set this variable.

PRODUCT = lblrtm_voigt
VERSION = v12.11

# Define makefile name
MAKEFILE=make_$(PRODUCT)

# Set name of LBLRTM executable.  
OUTPUT = ${PRODUCT}_$(VERSION)_$(PLTFRM)_$(FC_TYPE)_$(P_TYPE)

# Set variables specific to LBLRTM compile
ifeq ($(P_TYPE),dbl)
     FFTEXT=_dbl
endif

# Set directory for object files.  
OBJPATH = ${PRODUCT}_$(VERSION)_$(PLTFRM)_$(FC_TYPE)_$(P_TYPE).obj

# Set directory containing source files, relative to directory from which
# you are executing the makefile
SRCPATH = ../src

# Files contained in src directory.  If additional .f90 files are added,
# add to this list. 
SRCS = lblrtm.f90 oprop_voigt.f90 contnm.f90 xmerge.f90 testmm.f90 \
lblatm.f90 lbllow.f90 postsub.f90 pltlbl.f90 \
lbldum.f90 solar.f90 nonlte_voigt.f90 fftscn$(FFTEXT).f90 $(UTIL_FILE) \
phys_consts.f90 planet_earth.f90 lblparams.f90 struct_types.f90 \
solar_cycle.f90

# Object file names
OBJECTS = ${SRCS:.f90=.o}
UTIL_OBJ = $(UTIL_FILE:.f90=.o)

## Define dependancies
$(OBJPATH)/lblrtm.o:	$(SRCPATH)/lblrtm.f90 lblparams.mod phys_consts.mod
	$(FC) -c $(FCFLAG) -I$(SRCPATH) $< -o $@
$(OBJPATH)/oprop_voigt.o:	$(SRCPATH)/oprop_voigt.f90 lblparams.mod phys_consts.mod struct_types.mod
	$(FC) -c $(FCFLAG) -I$(SRCPATH) $< -o $@
$(OBJPATH)/contnm.o:	$(SRCPATH)/contnm.f90 lblparams.mod phys_consts.mod
	$(FC) -c $(FCFLAG) -I$(SRCPATH) $< -o $@
$(OBJPATH)/xmerge.o:	$(SRCPATH)/xmerge.f90 lblparams.mod phys_consts.mod
	$(FC) -c $(FCFLAG) -I$(SRCPATH) $< -o $@
$(OBJPATH)/testmm.o:	$(SRCPATH)/testmm.f90 
	$(FC) -c $(FCFLAG) -I$(SRCPATH) $< -o $@
$(OBJPATH)/lblatm.o:	$(SRCPATH)/lblatm.f90 phys_consts.mod planet_consts.mod lblparams.mod
	$(FC) -c $(FCFLAG) -I$(SRCPATH) $< -o $@
$(OBJPATH)/lbllow.o:	$(SRCPATH)/lbllow.f90 phys_consts.mod planet_consts.mod lblparams.mod
	$(FC) -c $(FCFLAG) -I$(SRCPATH) $< -o $@
$(OBJPATH)/postsub.o:	$(SRCPATH)/postsub.f90 lblparams.mod
	$(FC) -c $(FCFLAG) -I$(SRCPATH) $< -o $@
$(OBJPATH)/pltlbl.o:	$(SRCPATH)/pltlbl.f90 phys_consts.mod
	$(FC) -c $(FCFLAG) -I$(SRCPATH) $< -o $@
$(OBJPATH)/lbldum.o:	$(SRCPATH)/lbldum.f90
	$(FC) -c $(FCFLAG) -I$(SRCPATH) $< -o $@
$(OBJPATH)/solar.o:	$(SRCPATH)/solar.f90 phys_consts.mod solar_cycle.mod
	$(FC) -c $(FCFLAG) -I$(SRCPATH) $< -o $@
$(OBJPATH)/nonlte_voigt.o:	$(SRCPATH)/nonlte_voigt.f90 phys_consts.mod struct_types.mod lblparams.mod
	$(FC) -c $(FCFLAG) -I$(SRCPATH) $< -o $@
$(OBJPATH)/fftscn.o:	$(SRCPATH)/fftscn.f90
	$(FC) -c $(FCFLAG) -I$(SRCPATH) $< -o $@
$(OBJPATH)/fftscn_dbl.o:	$(SRCPATH)/fftscn_dbl.f90
	$(FC) -c $(FCFLAG) -I$(SRCPATH) $< -o $@
$(OBJPATH)/$(UTIL_OBJ):	$(SRCPATH)/$(UTIL_FILE)
	$(FC) -c $(FCFLAG) -I$(SRCPATH) $< -o $@
lblparams.mod:	$(SRCPATH)/lblparams.f90
	$(FC) -c $(FCFLAG) $< -o $(OBJPATH)/lblparams.o
phys_consts.mod:	$(SRCPATH)/phys_consts.f90
	$(FC) -c $(FCFLAG) $< -o $(OBJPATH)/phys_consts.o
planet_consts.mod:	$(SRCPATH)/planet_earth.f90
	$(FC) -c $(FCFLAG) -I. $< -o $(OBJPATH)/planet_earth.o
struct_types.mod:	$(SRCPATH)/struct_types.f90
	$(FC) -c $(FCFLAG) $< -o $(OBJPATH)/struct_types.o
solar_cycle.mod:        $(SRCPATH)/solar_cycle.f90
	$(FC) -c $(FCFLAG) $< -o $(OBJPATH)/solar_cycle.o
$(OBJPATH)/lblparams.o:	$(SRCPATH)/lblparams.f90
	$(FC) -c $(FCFLAG) -I. $< -o $@
$(OBJPATH)/phys_consts.o:	$(SRCPATH)/phys_consts.f90
	$(FC) -c $(FCFLAG) $< -o $@
$(OBJPATH)/planet_earth.o:	$(SRCPATH)/planet_earth.f90  phys_consts.mod
	$(FC) -c $(FCFLAG) -I. $< -o $@
$(OBJPATH)/struct_types.o:	$(SRCPATH)/struct_types.f90
	$(FC) -c $(FCFLAG) -I. $< -o $@
$(OBJPATH)/solar_cycle.o:       $(SRCPATH)/solar_cycle.f90
	$(FC) -c $(FCFLAG) -I. $< -o $@


build : $(OBJPATH)/lblrtm.o $(OBJPATH)/oprop_voigt.o $(OBJPATH)/contnm.o $(OBJPATH)/xmerge.o $(OBJPATH)/testmm.o $(OBJPATH)/lblatm.o $(OBJPATH)/lbllow.o $(OBJPATH)/postsub.o  $(OBJPATH)/pltlbl.o $(OBJPATH)/lbldum.o $(OBJPATH)/solar.o $(OBJPATH)/nonlte_voigt.o $(OBJPATH)/fftscn$(FFTEXT).o  $(OBJPATH)/$(UTIL_OBJ) $(OBJPATH)/phys_consts.o $(OBJPATH)/planet_earth.o $(OBJPATH)/lblparams.o $(OBJPATH)/struct_types.o $(OBJPATH)/solar_cycle.o
	$(FC) $(FCFLAG) -o ../$(OUTPUT) $^
