#**---------------------------------------------------------------------
SHELL=/bin/sh
#
#**---------------------------------------------------------------------
# SYSTEM DEPENDENT CONFIGURATION:
#
# This section contains operating system and compiler-dependent 
# variables.  You need to set the following four items for your
# system:
#
#     1) Location of the netCDF package. (NETCDF_INC, NETCDF_LIB)
#
#     2) Name of the fortran compiler.   (FC)
#
#     3) Compilation flags.              (FFLAGS)
#
#     4) Load flags.                     (LDFLAGS)
#
# For item 1) you'll need to determine this yourself.  For the
# other items, we have included values for the operating systems
# on which the MADIS package has been tested.  Simply uncomment
# out the values appropriate to your facility.  Also note that while
# we haven't tried Fortran 90 on all machines, it should work on
# any machine with little or no tweaking.  (See comments below in
# the AIX and IRIX sections to see the kind of tweaks that may
# be needed.)  
#
# Finally, you should be aware that MADIS assumes that the default 
# INTEGER and REAL word size is 32-bit, i.e., INTEGER*4 and INTEGER 
# are equivalent declarations.  Some systems may set up their compiler 
# defaults to 64-bit INTEGER/REAL.  In that case, there will be a 
# compilation flag that will allow you to override the default, and 
# make INTEGER/REAL*4 = INTEGER/REAL -- this must be specified for 
# MADIS to work successfully -- if you don't specify the flag, the 
# system will build, but will not work correctly.
#
#
# Location of the PATHS
# ------------------------------
# 
#LD_LIBRARY_PATH=/usr/local/gcc-4.7/lib64:/usr/local/gcc-libs/lib64
#PATH=/usr/local/netcdf/bin://usr/local/gcc-4.7/bin:$PATH
#export LD_LIBRARY_PATH
#export PATH
#
#
# Location of the netCDF package
# ------------------------------
# 
# - NETCDF_INC is the location of the netCDF include files
# - NETCDF_LIB is the full path to the netCDF library
#
#   These are typically found in /usr/local/netcdf/include & 
#   /usr/local/netcdf/lib.
#
#NETCDF_INC=/usr/local/netcdf/include
#NETCDF_LIB=/usr/local/netcdf/lib/libnetcdf.a
NETCDF_INC=c:/madis/netcdf-3.4/include
NETCDF_LIB=c:/madis/netcdf-3.4/lib/libnetcdf.a
#
#
# Linux and Windows-Cygwin or Windows-MinGW (all 3 use g77 compiler)
# ------------------------------------------------------------------
#
FC=g77
#FC=gfortran
#FC=pgf90
#FC=mpif90
FFLAGS=-Wno-globals
#FFLAGS=
LDFLAGS=
#
# The -Wno-globals option is used to eliminate g77 warnings in m*rdsta.f
# (using different type args in valid calls to the NCVGT & NCAGT netCDF 
# subroutines)...
#
# * No compilation or load flags are required for user programs linking to 
#   the MADIS library.
#
# The pgf90 and mpif90 compilers have also been successfully tested on
# Linux operating systems running on Intel platforms, without the need
# for setting any compilation or load flags.
#
# HP-UX
# -----
#
#FC=f77
#FC=f90
#FFLAGS=-K +DAportable +U77
#LDFLAGS= 
#
# The +U77 option is used when making the *dump.exe programs in this
# file.  This is only needed so that Fortran can access the libc 
# time function, which isn't used in the MADIS library itself.
#
# The +DAportable option is used to provide portability across HP platforms.
#
# The -K option is used so that "stack size exceeded maxssiz" errors
# won't occur.
#
# * User programs linking to the MADIS library should use the -K option.
#
# AIX
# ---
#
#FC=xlf
#FC=xlf90
#FFLAGS=-qfixed -q32 -qarch=com -qsave
#LDFLAGS=-brename:time_,time -bmaxdata:0x30000000 -bmaxstack:0x10000000
#
# The -qfixed option is used so that the MADIS library f77-style comment lines 
# don't cause errors.  You may or may not need this depending on how your
# default compilers are set up.
#
# The -q32 option is used for compatibility with the netCDF library that
# was used to build the binary version that MADIS distributes for AIX.
# This may or may not be the case on your system.  Also note that the object
# mode used in compiling the netCDF library must match that used when 
# compiling the MADIS library.  Depending on how your default compilers are 
# set up, and how your netCDF library was built, you may need to specify 
# either -q32 or -q64 in FFLAGS.  Finally, note that the default for the ar 
# command (used here to create the MADIS library file) is 32-bit objects 
# only.  If you need to use 64-bit objects, you can either use the ar -X 
# option (not tested by the MADIS developers), or you can set the 
# OBJECT_MODE environment variable to the value 64 to get ar to use 64-bit 
# objects (which was tested).
#
# The -qarch=com is used so that the code will work on any POWER or PowerPC
# platform.  To optimize performance on the machine that you'll be using,
# you could set -qarch=auto.
#
# The -brename:time_,time option is used when making the *dump.exe programs 
# in this file.  This is only needed so that Fortran can access the 
# libc time function without the trailing _ used on AIX, which isn't 
# used in the MADIS library.  
#
# The -bmaxdata:0x30000000 (768 MB in hex) option is used so that sufficient 
# program data segment space will be available, and the -bmaxstack:0x10000000 
# (256 MB) is used for sufficient stack segment space.  You may not need
# these if you're running with 64-bit addressing.
#
# * User programs linking to the MADIS library should use these maxdata and 
#   maxstack settings as a minimum.  If you get a core dump, try raising
#   bmaxdata to the maximum (bmaxdata=0x80000000 for 2 GB).  Bmaxstack
#   is already at the maximum for 32 bit.  If your program then works OK,
#   you can try backing down until you find the minimum level that works.
#   If this still doesn't work, you should switch to 64 bit addressing,
#   which allows for a larger stack size.
#
# SunOS
# -----
#
#FC=f77
#FFLAGS=
#LDFLAGS=
#
# * No compilation or load flags are required for user programs linking to 
#   the MADIS library.
#
# Irix and Irix64
# ----------------
#
#FC=f77
#FC=f90
#FFLAGS=-static -n32
#LDFLAGS=
#
# The -static option is used to that the maximum stack size won't be exceeded.
#
# * User programs linking to the MADIS library should use the -static and
#   -n32 options.  (The n32 option is generally the default Fortran
#   configuration.)
#
# ** NOTE FOR IRIX F90 USERS:  The mrdnum.f, mrdnum1.f, mrddbl.f and 
#    mrddbl1.f subroutines use the extended Fortran BYTE data type, 
#    which doesn't compile under IRIX's f90.  You should change these 
#    two routines to use the INTEGER*1 data type instead.
#
# END OF SYSTEM DEPENDENT CONFIGURATION 
#**---------------------------------------------------------------------
#
# The rest of this shouldn't be modified.
#
BIN=../bin
INCLUDE=../include
LIB=../lib
LIBRARY= ../lib/madislib.a


FSOURCES= \
	m_ah2rh.f \
	m_ascsort.f \
	m_bicubic.f \
	m_cbsrch.f \
	m_chckqc.f \
	m_cirdif.f \
	m_clrqc.f \
	m_cnvttm.f \
	m_combqc.f \
	m_cswap.f \
	m_ctrn2dim.f \
	m_cvjlmd.f \
	m_cvwftat.f \
	m_ddff.f \
	m_dewpnt.f \
	m_dscsort.f \
	m_dswap.f \
	m_eqvlat.f \
	m_esw.f \
	m_findword.f \
	m_rh2ah.f \
	m_td2ah.f \
	macarspsta.f \
	macarssta.f \
	macarstime.f \
	mchgtim.f \
	mchrtim.f \
	mdomfltr.f \
	merror.f \
	mgenvcn.f \
	mgetacars.f \
	mgetacarsc.f \
	mgetacarsp.f \
	mgetacarspc.f \
	mgethydroc.f \
	mgethydro.f \
	mgetij.f \
	mgetmap.f \
	mgetmapc.f \
	mgetnpn.f \
	mgetsnowc.f \
	mgetsnow.f \
	mgetraob.f \
	mgetraobc.f \
	mgetrdmtr.f \
	mgetrdmtrc.f \
        mgetsatrad.f \
	mgetsatsnd.f \
	mgetsatwnd.f \
	mgetsfc.f \
	mgetsfcc.f \
	mgetuapt.f \
	mgetuaptc.f \
	mgetvcn.f \
	mgetwisdom.f \
	mgtchr.f \
	mgtnum.f \
	mhydrocls.f \
	mhydrofltr.f \
	mhydroinit.f \
	mhydrordsta.f \
	mhydrosta.f \
	mhydrotbl.f \
	minit.f \
	minttim.f \
	mmadisclose.f \
	mmadiscls1.f \
	mmadisopen.f \
	mmapbeam.f \
	mmapbeamc.f \
	mmapext.f \
	mmaplt.f \
        mmapmddbl.f \
        mmapmdvar.f \
	mmapsta.f \
        mmaptime.f \
	mmapvc.f \
	mmapwind.f \
	mmapwmode.f \
	mnpnbeam.f \
	mnpnext.f \
	mnpnht.f \
	mnpnlt.f \
	mnpnsta.f \
	mqcfltr.f \
	mqcinq.f \
	mraobchr.f \
	mraobext.f \
	mraobint.f \
	mraobnum.f \
	mraobsta.f \
	mrdchr.f \
	mrddbl.f \
	mrddbl1.f \
	mrddep.f \
	mrddim.f \
	mrdnum.f \
	mrdnum1.f \
	mrdraoblev.f \
	mrdmtrsta.f \
	mrdvcode.f \
	mreal2int.f \
	mremraoblv.f \
	msatradcls.f \
	msatradfltr.f \
	msatradinit.f \
	msatradrdsta.f \
	msatradsta.f \
	msatradtbl.f \
	msatsndfltr.f \
	msatsndmoi.f \
	msatsndsta.f \
	msatsndtv.f \
	msatsndcls.f \
	msatsndinit.f \
	msatsndrdsta.f \
	msatsndtbl.f \
	msatwndcls.f \
	msatwndfltr.f \
	msatwndinit.f \
	msatwndlt.f \
	msatwndrdsta.f \
	msatwndsta.f \
	msatwndtbl.f \
	msatwndwind.f \
	msetcor.f \
	msetdom.f \
	msetqc.f \
	msethydropvdr.f \
	msetmappvdr.f \
	msetrdmtrpvdr.f \
	msetsatradpvdr.f \
	msetsatsndpvdr.f \
	msetsatwndpvdr.f \
	msetsfcpvdr.f \
	msetsnowpvdr.f \
	msetwin.f \
	msfcart.f \
	msfccls.f \
	msfcelev.f \
	msfcfltr.f \
	msfcinit.f \
	msfcmoi.f \
	msfcpchg.f \
	msfcpcp.f \
	msfcprs.f \
	msfcrdlft.f \
	msfcrdsta.f \
	msfcsnow.f \
	msfcsrad.f \
	msfcsta.f \
	msfctbl.f \
	msfctv.f \
	msfcwind.f \
	msfiles.f \
	msnowcls.f \
	msnowfltr.f \
	msnowinit.f \
	msnowrdsta.f \
	msnowsta.f \
	msnowtbl.f \
	mtmrng.f \
	mtrntim.f \
	muaptcls.f \
	muaptfltr.f \
	muapthtp.f \
	muaptinit.f \
	muaptmoi.f \
	muaptrdsta.f \
	muaptsta.f \
	muapttbl.f \
	muapttv.f \
	muaptwind.f \
	mwisdomcls.f \
	mwisdomfltr.f \
	mwisdominit.f \
	mwisdomrdsta.f \
	mwisdomsta.f \
	mwisdomtbl.f \
	mwisdomwind.f \
	m_altprs.f \
	m_getlun.f \
	m_getuv.f \
	m_gti4tm.f \
	m_idsubsrc.f \
	m_eswinv.f \
	m_frtchr.f \
	m_intht.f \
	m_intp.f \
	m_iswap.f \
	m_itrn2dim.f \
	m_lcllij.f \
	m_loght.f \
	m_lstchr.f \
	m_lswap.f \
	m_marelv.f \
	m_mkdesc.f \
	m_mkfnam.f \
	m_mki4tm.f \
	m_mkwfnm.f \
	m_phtint.f \
	m_prsalt.f \
	m_ptozsa.f \
	m_rh.f \
	m_rotfac.f \
	m_rswap.f \
	m_rtrn2dim.f \
	m_setqc.f \
	m_ssh.f \
	m_stvppr.f \
	m_tmr2.f \
	m_tv.f \
	m_tv2tq.f \
	m_updsrcin.f \
	m_wmr.f \
	m_xgrid.f \
	m_ygrid.f \
	m_ztopsa.f





FOBJS = $(FSOURCES:.f=.o)


buildexe: madis_ingest raobdump sfcdump npndump acarsdump hydrodump mapdump \
	rdmtrdump satwnddump acarspdump satsnddump satraddump snowdump \
	wisdomdump

$(LIBRARY): DELINK LINK $(FOBJS)
		ar ruv $@ $(FOBJS)




clean: CLEAN_ACTION DELINK

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


RSOURCE = raobdump.f

ROBJ = $(RSOURCE:.f=.o)

raobdump: $(LIBRARY) $(ROBJ)
	${FC} ${LDFLAGS} ${FFLAGS} -o ${BIN}/$@.exe $@.o ${LIB}/madislib.a ${NETCDF_LIB}

SSOURCE = sfcdump.f

SOBJ = $(SSOURCE:.f=.o)

sfcdump: $(LIBRARY) $(SOBJ)
	${FC} ${LDFLAGS} ${FFLAGS} -o ${BIN}/$@.exe $@.o ${LIB}/madislib.a ${NETCDF_LIB}

NSOURCE = npndump.f

NOBJ = $(NSOURCE:.f=.o)

npndump: $(LIBRARY) $(NOBJ)
	${FC} ${LDFLAGS} ${FFLAGS} -o ${BIN}/$@.exe $@.o ${LIB}/madislib.a ${NETCDF_LIB}

MSOURCE = mapdump.f

MOBJ = $(MSOURCE:.f=.o)

mapdump: $(LIBRARY) $(MOBJ)
	${FC} ${LDFLAGS} ${FFLAGS} -o ${BIN}/$@.exe $@.o ${LIB}/madislib.a ${NETCDF_LIB}

RDSOURCE = rdmtrdump.f

RDOBJ = $(RDSOURCE:.f=.o)

rdmtrdump: $(LIBRARY) $(RDOBJ)
	${FC} ${LDFLAGS} ${FFLAGS} -o ${BIN}/$@.exe $@.o ${LIB}/madislib.a ${NETCDF_LIB}

SRSOURCE = satraddump.f

SROBJ = $(SRSOURCE:.f=.o)

satraddump: $(LIBRARY) $(SROBJ)
	${FC} ${LDFLAGS} ${FFLAGS} -o ${BIN}/$@.exe $@.o ${LIB}/madislib.a ${NETCDF_LIB}

SSSOURCE = satsnddump.f

SSOBJ = $(SSSOURCE:.f=.o)

satsnddump: $(LIBRARY) $(SSOBJ)
	${FC} ${LDFLAGS} ${FFLAGS} -o ${BIN}/$@.exe $@.o ${LIB}/madislib.a ${NETCDF_LIB}

SWSOURCE = satwnddump.f

SWOBJ = $(SWSOURCE:.f=.o)

satwnddump: $(LIBRARY) $(SWOBJ)
	${FC} ${LDFLAGS} ${FFLAGS} -o ${BIN}/$@.exe $@.o ${LIB}/madislib.a ${NETCDF_LIB}

SNSOURCE = snowdump.f

SNOBJ = $(SNSOURCE:.f=.o)

snowdump: $(LIBRARY) $(SNOBJ)
	${FC} ${LDFLAGS} ${FFLAGS} -o ${BIN}/$@.exe $@.o ${LIB}/madislib.a ${NETCDF_LIB}

WSMSOURCE = wisdomdump.f

WSMOBJ = $(WSMSOURCE:.f=.o)

wisdomdump: $(LIBRARY) $(WSMOBJ)
	${FC} ${LDFLAGS} ${FFLAGS} -o ${BIN}/$@.exe $@.o ${LIB}/madislib.a ${NETCDF_LIB}

FSOURCE = madis_ingest.f

FOBJ = $(FSOURCE:.f=.o)

madis_ingest: $(LIBRARY) $(FOBJ)
	${FC} ${LDFLAGS} ${FFLAGS} -o ${BIN}/$@.exe $@.o ${LIB}/madislib.a ${NETCDF_LIB}

ASOURCE = acarsdump.f

AOBJ = $(ASOURCE:.f=.o)

acarsdump: $(LIBRARY) $(AOBJ)
	${FC} ${LDFLAGS} ${FFLAGS} -o ${BIN}/$@.exe $@.o ${LIB}/madislib.a ${NETCDF_LIB}

APSOURCE = acarspdump.f

APOBJ = $(APSOURCE:.f=.o)

acarspdump: $(LIBRARY) $(APOBJ)
	${FC} ${LDFLAGS} ${FFLAGS} -o ${BIN}/$@.exe $@.o ${LIB}/madislib.a ${NETCDF_LIB}

HSOURCE = hydrodump.f

HOBJ = $(HSOURCE:.f=.o)

hydrodump: $(LIBRARY) $(HOBJ)
	${FC} ${LDFLAGS} ${FFLAGS} -o ${BIN}/$@.exe $@.o ${LIB}/madislib.a ${NETCDF_LIB}



#-----------

DELINK:
	rm -f   IMPLICIT
	rm -f   MADISCOM
	rm -f   MADISCON
	rm -f   INTQC1COM1
	rm -f   INTQC1CON1
	rm -f   INTQC1CON2
	rm -f   MAPCON
	rm -f   MADISTMP
	rm -f   ACARSCON
	rm -f   ACARSPCON
	rm -f   NPNCON
	rm -f   POESCON
	rm -f   RAOBCON
	rm -f   RDMTRCON
	rm -f   SATRCON
	rm -f   SATSCON
	rm -f   SATWCON
	rm -f   SNOWCON
	rm -f   NETCDFI
	rm -f   STDOUT
	rm -f   STRCCOM
	rm -f   WISDOMCON
LINK:
	mkdir -p ${LIB}
	mkdir -p ${BIN}
	cp ${NETCDF_INC}/netcdf.inc  NETCDFI
	cp ${INCLUDE}/strccom.f      STRCCOM
	cp ${INCLUDE}/madiscom.f     MADISCOM
	cp ${INCLUDE}/madiscon.f     MADISCON
	cp ${INCLUDE}/madistmp.f     MADISTMP
	cp ${INCLUDE}/implicit.f   IMPLICIT
	cp ${INCLUDE}/intqc1com1.f INTQC1COM1
	cp ${INCLUDE}/intqc1con1.f INTQC1CON1
	cp ${INCLUDE}/intqc1con2.f INTQC1CON2
	cp ${INCLUDE}/mapcon.f     MAPCON
	cp ${INCLUDE}/acarscon.f   ACARSCON
	cp ${INCLUDE}/acarspcon.f  ACARSPCON
	cp ${INCLUDE}/npncon.f     NPNCON
	cp ${INCLUDE}/poescon.f    POESCON
	cp ${INCLUDE}/raobcon.f    RAOBCON
	cp ${INCLUDE}/rdmtrcon.f   RDMTRCON
	cp ${INCLUDE}/satrcon.f    SATRCON
	cp ${INCLUDE}/satscon.f    SATSCON
	cp ${INCLUDE}/satwcon.f    SATWCON
	cp ${INCLUDE}/snowcon.f    SNOWCON
	cp ${INCLUDE}/stdout.f     STDOUT
	cp ${INCLUDE}/wisdomcon.f  WISDOMCON




CLEAN_ACTION:
	rm -f *.o
#	rm -f ../lib/madislib.a

#**---------------------------------------------------------------------
#**REQUIRED STANDARD FSL DISCLAIMER (NOVEMBER 2000)
#**---------------------------------------------------------------------
#**  OPEN SOURCE LICENSE/DISCLAIMER,  FORECAST SYSTEMS LABORATORY
#**  NOAA/OAR/FSL, 325 BROADWAY BOULDER, CO 80305
#**
#**  THIS SOFTWARE IS DISTRIBUTED UNDER THE OPEN SOURCE DEFINITION,
#**  WHICH MAY BE FOUND AT http://www.opensource.org/osd.html.
#**
#**  IN PARTICULAR, REDISTRIBUTION AND USE IN SOURCE AND BINARY FORMS,
#**  WITH OR WITHOUT MODIFICATION, ARE PERMITTED PROVIDED THAT THE
#**  FOLLOWING CONDITIONS ARE MET:
#**
#**  - REDISTRIBUTIONS OF SOURCE CODE MUST RETAIN THIS NOTICE, THIS LIST
#**    OF CONDITIONS AND THE FOLLOWING DISCLAIMER.
#**
#**  - REDISTRIBUTIONS IN BINARY FORM MUST PROVIDE ACCESS TO THIS
#**    NOTICE, THIS LIST OF CONDITIONS AND THE FOLLOWING DISCLAIMER, AND
#**    THE UNDERLYING SOURCE CODE.
#**
#**  - ALL MODIFICATIONS TO THIS SOFTWARE MUST BE CLEARLY DOCUMENTED,
#**    AND ARE SOLELY THE RESPONSIBILITY OF THE AGENT MAKING THE
#**    MODIFICATIONS.
#**
#**  - IF SIGNIFICANT MODIFICATIONS OR ENHANCEMENTS ARE MADE TO THIS
#**    SOFTWARE, THE FSL SOFTWARE POLICY MANAGER
#**    (softwaremgr.fsl@noaa.gov) SHOULD BE NOTIFIED.
#**
#**  THIS SOFTWARE AND ITS DOCUMENTATION ARE IN THE PUBLIC DOMAIN AND
#**  ARE FURNISHED "AS IS."  THE AUTHORS, THE UNITED STATES GOVERNMENT,
#**  ITS INSTRUMENTALITIES, OFFICERS, EMPLOYEES, AND AGENTS MAKE NO
#**  WARRANTY, EXPRESS OR IMPLIED, AS TO THE USEFULNESS OF THE SOFTWARE
#**  AND DOCUMENTATION FOR ANY PURPOSE.  THEY ASSUME NO RESPONSIBILITY
#**  (1) FOR THE USE OF THE SOFTWARE AND DOCUMENTATION; OR (2) TO
#**  PROVIDE TECHNICAL SUPPORT TO USERS.
