#
#     ##################################################################
#     ##################################################################
#     ######                                                      ######
#     ######      Advanced Regional Prediction System (ARPS)      ######
#     ######                   Version 5.0                        ######
#     ######                                                      ######
#     ######                     Developed by                     ######
#     ######     Center for Analysis and Prediction of Storms     ######
#     ######                University of Oklahoma                ######
#     ######                                                      ######
#     ##################################################################
#     ##################################################################
#
#=======================================================================
#
#  PURPOSE: This makefile generates the ARPSINTRP executables.
#
#  AUTHOR:  Yuhe Liu
#           7/22/1997
#
#  Modification history:
#
#
#  OTHER INFORMATION:
#       See the makearps command.
#
#=======================================================================

#-----------------------------------------------------------------------
#
# Default shell
#
#-----------------------------------------------------------------------

# SHELL=/bin/csh

#-----------------------------------------------------------------------
#
# Default names of the loader and tar, can be replaced on the command
# line for other system
#
#-----------------------------------------------------------------------

FTN = f90
LDR = f90
CC  = cc

ARPS_LD = $(LDR)

TAR = tar
AWK = awk
RM  = rm
LN  = ln

TOPDIR =
BINDIR = $(TOPDIR)
INCLDIR = $(TOPDIR)/include
LIBDIR = $(TOPDIR)/lib

#-----------------------------------------------------------------------
#
# Compiler Flag of Options
#
#-----------------------------------------------------------------------

FFLAGS =
CFLAGS =
LDFLAGS =

FIXFLAGS  =
FREEFLAGS =

#-----------------------------------------------------------------------
#
# Dependencies
#
#-----------------------------------------------------------------------

.SUFFIXES: $(SUFFIXES) .f90

.f.o:
	$(FTN) $(FFLAGS) $(FIXFLAGS) -c $<
.f90.o:
	$(FTN) $(FFLAGS) $(FREEFLAGS) -c $<
.c.o:
	$(CC)  $(CFLAGS) -c $<

#-----------------------------------------------------------------------
#
# Executable commands to be generated by this make file:
#
# INTRPEXE    = arpsintrp      ARPS data converter.
# INTRP_LSEXE = arpsintrp_ls   ARPS data converter for large size domain
#
#-----------------------------------------------------------------------

INTRPEXE    = arpsintrp
SUBDMNEXE   = arpssubdomain
INTRP_LSEXE = arpsintrp_ls
RADARINTRPEXE = radardtaintrp
HDFSUBDMNEXE   = hdfsubdomain
HDFSUBDMNMPEXE = hdfsubdomain_mpi

#-----------------------------------------------------------------------
#
# ARPS shared library
#
#-----------------------------------------------------------------------

LIBARPS = libarps
LIBADAS = libadas
LIBENKF = libenkf

#-----------------------------------------------------------------------
#
# List of Makefiles
#
#-----------------------------------------------------------------------

MAKEFILE = Makefile

#-----------------------------------------------------------------------
#
# List of machine-dependent object codes
#
#-----------------------------------------------------------------------

INTRPOBJ    = arpsintrp.o check_file.o intrplib.o
SUBDMNOBJ   = arpssubdomain.o intrplib.o
INTRP_LSOBJ = arpsintrp_ls.o

INTRPOBJS    = $(INTRPOBJ)
RADARINTRPOBJ = radardtaintrp.o intrplib.o
SUBDMNOBJS   = $(SUBDMNOBJ)
INTRP_LSOBJS = $(INTRP_LSOBJ)

HDFSUBDMNMAIN = hdfsubdomain.o
HDFSUBDMNOBJS = module_hdfsubdomain_namelist.o hdfio.o

#-----------------------------------------------------------------------
#
# Set Default
#
#-----------------------------------------------------------------------

default: $(INTRPEXE)

#-----------------------------------------------------------------------
#
# Compile and link the executable, arpsintrp
#
#-----------------------------------------------------------------------

$(INTRPEXE):    $(BINDIR)/$(INTRPEXE)
	ls -l $(BINDIR)/$(INTRPEXE)

$(SUBDMNEXE):    $(BINDIR)/$(SUBDMNEXE)
	ls -l $(BINDIR)/$(SUBDMNEXE)

$(HDFSUBDMNEXE):    $(BINDIR)/$(HDFSUBDMNEXE)
	ls -l $(BINDIR)/$(HDFSUBDMNEXE)

$(HDFSUBDMNMPEXE):    $(BINDIR)/$(HDFSUBDMNMPEXE)
	ls -l $(BINDIR)/$(HDFSUBDMNMPEXE)

$(INTRP_LSEXE): $(BINDIR)/$(INTRP_LSEXE)
	ls -l  $(BINDIR)/$(INTRP_LSEXE)

$(RADARINTRPEXE): $(BINDIR)/$(RADARINTRPEXE)
	ls -l $(BINDIR)/$(RADARINTRPEXE)

#$(BINDIR)/$(INTRPEXE): $(INTRPOBJS) $(LIBDIR)/$(LIBARPS).a
$(BINDIR)/$(INTRPEXE): $(INTRPOBJS) $(LIBDIR)/$(LIBARPS).a \
                                    $(LIBDIR)/$(LIBADAS).a
	$(ARPS_LD) $(LDFLAGS) -o $@ $(INTRPOBJS) \
                               $(LIBDIR)/$(LIBARPS).a \
                               $(LIBDIR)/$(LIBADAS).a \
                               $(LIBS)

$(BINDIR)/$(INTRP_LSEXE): $(INTRP_LSOBJS) $(LIBDIR)/$(LIBARPS).a
	$(ARPS_LD) $(LDFLAGS) -o $@ $(INTRP_LSOBJS) \
                               $(LIBDIR)/$(LIBARPS).a $(LIBS)

$(BINDIR)/$(SUBDMNEXE): $(SUBDMNOBJS) $(LIBDIR)/$(LIBARPS).a \
                                    $(LIBDIR)/$(LIBADAS).a
	$(ARPS_LD) $(LDFLAGS) -o $@ $(SUBDMNOBJS) \
                               $(LIBDIR)/$(LIBARPS).a \
                               $(LIBDIR)/$(LIBADAS).a \
                               $(LIBS)

$(BINDIR)/$(RADARINTRPEXE): $(RADARINTRPOBJ) $(LIBDIR)/$(LIBARPS).a \
                                             $(LIBDIR)/$(LIBADAS).a \
                                             $(LIBDIR)/$(LIBENKF).a
	$(ARPS_LD) $(LDFLAGS) -o $@ $(RADARINTRPOBJ) \
                               $(LIBDIR)/$(LIBARPS).a \
                               $(LIBDIR)/$(LIBENKF).a \
                               $(LIBDIR)/$(LIBADAS).a \
                               $(LIBS)

$(BINDIR)/$(HDFSUBDMNEXE): $(HDFSUBDMNMAIN)      $(HDFSUBDMNOBJS)   \
                           $(LIBDIR)/$(LIBARPS).a
	$(ARPS_LD) $(LDFLAGS) -o $@  $(HDFSUBDMNMAIN)  $(HDFSUBDMNOBJS)   \
                               $(LIBDIR)/$(LIBARPS).a \
                               $(LIBS)

$(BINDIR)/$(HDFSUBDMNMPEXE): $(HDFSUBDMNMAIN)    $(HDFSUBDMNOBJS)   \
                             $(LIBDIR)/$(LIBARPS).a
	$(ARPS_LD) $(LDFLAGS) -o $@ $(HDFSUBDMNMAIN)   $(HDFSUBDMNOBJS)   \
                               $(LIBDIR)/$(LIBARPS).a \
                               $(LIBS)

#-----------------------------------------------------------------------
#
# Remove the object code for individual programs
#
#-----------------------------------------------------------------------

clean: clean.arpsintrp

clean.arpsintrp:
	-$(RM) -f $(BINDIR)/$(INTRPEXE)    $(INTRPOBJS)    \
            $(BINDIR)/$(INTRP_LSEXE) $(INTRP_LSOBJS) \
            $(BINDIR)/$(SUBDMNEXE)   $(SUBDMNOBJS) \
            $(BINDIR)/$(RADARINTRPEXE)  $(RADARINTRPOBJ) \
            $(BINDIR)/$(HDFSUBDMNEXE)   $(HDFSUBDMNMAIN)  \
            $(BINDIR)/$(HDFSUBDMNMPEXE) $(HDFSUBDMNOBJS)

#-----------------------------------------------------------------------
#
# Object code dependency list:
#
#-----------------------------------------------------------------------

arpsintrp.o     : arpsintrp.f90      $(INCLDIR)/globcst.inc   \
                                     $(INCLDIR)/grid.inc   \
                                     $(INCLDIR)/bndry.inc   \
                                     $(INCLDIR)/phycst.inc   \
                                     $(INCLDIR)/indtflg.inc \
                                     $(INCLDIR)/alloc.inc  \
                                     $(INCLDIR)/exbc.inc

arpssubdomain.o : arpssubdomain.f90  $(INCLDIR)/globcst.inc   \
                                     $(INCLDIR)/grid.inc   \
                                     $(INCLDIR)/bndry.inc   \
                                     $(INCLDIR)/phycst.inc   \
                                     $(INCLDIR)/indtflg.inc \
                                     $(INCLDIR)/alloc.inc  \
                                     $(INCLDIR)/exbc.inc

intrplib.o    : $(INCLDIR)/arpssfc.inc

# needs updating:
arpsintrp_ls.o  : arpsintrp_ls.f90   $(INCLDIR)/globcst.inc   \
                                     $(INCLDIR)/grid.inc   \
                                     $(INCLDIR)/bndry.inc   \
                                     $(INCLDIR)/indtflg.inc

radardtaintrp.o : radardtaintrp.f90  $(INCLDIR)/grid.inc

hdfsubdomain.o  : hdfsubdomain.f90  $(INCLDIR)/mp.inc  \
                  module_hdfsubdomain_namelist.o
