SHELL=/bin/sh
############################################################################
#
#     Makefile for glmp_granalysis_2p5
#     Use: 
#      make        - build the executable
#      make clean  - start with a clean slate
#
#     Module loaded before building the executable:
#      modulefiles/glmp/v1.1.0
#
#     History:
#      05/19/2015 Ghirardelli - modified for NCO standards
#
############################################################################
#
# This makefile is invoked by the command line:
#	make -f makefile
# it will compile the fortran modules indicated by SRCS into the object
# modules indicated by OBJS and produce an executable named a.out.
#
# If it is invoked by the command line
#	make -f makefile a.out.prof
# it will compile the fortran modules indicated by SRCS into the object
# modules indicated by OBJS and produce an executable which profiles
# named a.out.prof.
#
# To remove all the objects but leave the executables use the command line
#	make -f makefile clean
#
# To remove everything but the source files use the command line
#	make -f makefile clobber
#
# To remove the source files created by /usr/bin/fmgen and this makefile
# use the command line
#	make -f makefile void
#
# The parameters SRCS and OBJS should not need to be changed.  If, however,
# you need to add a new module add the name of the source module to the
# SRCS parameter and add the name of the resulting object file to the OBJS
# parameter.  The new modules are not limited to fortran, but may be C, YACC,
# LEX, or CAL.  An explicit rule will need to be added for PASCAL modules.
#
SRCS= augmt1.f augmt2.f augmt3.f augmto.f avglap.f bcd5.f blend.f blend2.f bogus.f bogusg.f caksno.f cateq.f cconsn.f cigfrq.f cigft.f cightc.f cigmbo.f cigobc.f ckmaxt.f ckmint.f ckpop.f ckqpf.f cktdp.f ckwndg.f clapse.f clip.f clos2.f clos2g.f closlw.f closo.f concpr.f conekd.f conspr.f const.f convpr.f corbc5.f cutit.f cvlmpm.f cvlmpr.f ddrad.f ddrad2.f dens.f densrm.f densrq.f difwh.f dirfuv.f dirspd.f enhanc.f enhwnd.f erest.f eslp5.f esp5.f fgskya.f fitwth.f fltag5.f fltagm.f fstgs5.f gfetch.f gfetch4.f glffst.f gradck.f granalysis.f gthres.f hsmth.f int155.f intrpx.f irlmp.f irlmtw.f irobs.f irobtw.f itrp.f itrpsl.f itrpsx.f keylst.f lapse.f lapsua.f lgtvsp.f listlw.f lmllij.f lmstr4.f log2pt.f newxy.f orsmth.f orsmtw.f orvwsm.f osmth1.f osmth.f pix1.f pix.f pixsm1.f platyp.f points.f post88.f post.f postcg.f postva.f postpm.f prntxx.f qpf6p6.f rd45cn.f rdeqng.f rdnei.f rdprs.f rdstqs.f rdstqt.f rdstr1.f rdstr7.f rdv155.f rdvrhl.f regres.f restrw.f restwh.f rough.f roughg.f rvsnam.f sample.f sclcig.f sclq06.f sclq12.f sclsky.f sclsno.f sclvis.f setcig.f setfg.f setgpt.f setlnd.f setpln.f setpnt.f setvmi.f setvis.f skyamp.f skyamt.f skycig.f skylmp.f skymbo.f skyobc.f skyobp.f smothg.f sortbg.f spotrm.f spotwt.f stsnoz.f szgrdm.f szgrid.f terdif.f trnwnd.f u155ck.f u155.f u405a.f vari.f varig.f varil.f varilg.f variw.f variwg.f visfrq.f vismbo.f vismi.f windg.f wndcor.f wthol1.f wthol2.f wthol3.f xycom1.f

OBJS= augmt1.o augmt2.o augmt3.o augmto.o avglap.o bcd5.o blend.o blend2.o bogus.o bogusg.o caksno.o cateq.o cconsn.o cigfrq.o cigft.o cightc.o cigmbo.o cigobc.o ckmaxt.o ckmint.o ckpop.o ckqpf.o cktdp.o ckwndg.o clapse.o clip.o clos2.o clos2g.o closlw.o closo.o concpr.o conekd.o conspr.o const.o convpr.o corbc5.o cutit.o cvlmpm.o cvlmpr.o ddrad.o ddrad2.o dens.o densrm.o densrq.o difwh.o dirfuv.o dirspd.o enhanc.o enhwnd.o erest.o eslp5.o esp5.o fgskya.o fitwth.o fltag5.o fltagm.o fstgs5.o gfetch.o gfetch4.o glffst.o gradck.o granalysis.o gthres.o hsmth.o int155.o intrpx.o irlmp.o irlmtw.o irobs.o irobtw.o itrp.o itrpsl.o itrpsx.o keylst.o lapse.o lapsua.o lgtvsp.o listlw.o lmllij.o lmstr4.o log2pt.o newxy.o orsmth.o orsmtw.o orvwsm.o osmth1.o osmth.o pix1.o pix.o pixsm1.o platyp.o points.o post88.o post.o postcg.o postva.o postpm.o prntxx.o qpf6p6.o rd45cn.o rdeqng.o rdnei.o rdprs.o rdstqs.o rdstqt.o rdstr1.o rdstr7.o rdv155.o rdvrhl.o regres.o restrw.o restwh.o rough.o roughg.o rvsnam.o sample.o sclcig.o sclq06.o sclq12.o sclsky.o sclsno.o sclvis.o setcig.o setfg.o setgpt.o setlnd.o setpln.o setpnt.o setvmi.o setvis.o skyamp.o skyamt.o skycig.o skylmp.o skymbo.o skyobc.o skyobp.o smothg.o sortbg.o spotrm.o spotwt.o stsnoz.o szgrdm.o szgrid.o terdif.o trnwnd.o u155ck.o u155.o u405a.o vari.o varig.o varil.o varilg.o variw.o variwg.o visfrq.o vismbo.o vismi.o windg.o wndcor.o wthol1.o wthol2.o wthol3.o xycom1.o
#
# Tunable parameters
#
# FC		Name of the fortran compiling system to use
# LDFLAGS	Flags to the loader
# LIBS		List of libraries
# CMD		Name of the executable
# PROFLIB	Library needed for profiling
#
BINDIR = ../../exec
FC =            ${COMP}    # Use Intel FORTRAN Compiler, ifort
LDFLAGS =	-qopenmp
#LDFLAGS =	-qopenmp -Bstatic
LIBS =          ${LMP_LIB4} ${MDL_LIB4} ${W3NCO_LIB4}
CMD =		glmp_granalysis_2p5
PROFLIB =	

# To perform the default compilation, use the first line
# To compile with flowtracing turned on, use the second line
# To compile giving profile additonal information, use the third line
# WARNING:  SIMULTANEOUSLY PROFILING AND FLOWTRACING IS NOT RECOMMENDED 
FFLAGS =        -O3 -nofree -i4 -real-size 32 -fpscomp logicals -fp-model strict -assume byterecl -qopenmp -traceback
DEBUG =  -DDEBUG -g -traceback -check all
#FFLAGS =        -O3 -nofree -xHost -i4 -real-size 32 -fpscomp logicals -fp-model strict -assume byterecl -qopenmp
# Lines from here on down should not need to be changed.  They are the
# actual rules which make uses to build a.out.
#
all:		$(CMD)

$(CMD):		$(OBJS)
	$(FC) $(LDFLAGS) -o $(@) $(OBJS) $(LIBS)

#$(OBJS):       $(SRCS)
#       $(FC) $(FFLAGS) -c $<

# Make the profiled version of the command and call it a.out.prof
#
$(CMD).prof:	$(OBJS)
	$(FC) $(LDFLAGS) -o $(@) $(OBJS) $(PROFLIB) $(LIBS)

clean:
	-rm -f $(OBJS)

clobber:	clean
	-rm -f $(CMD) $(CMD).prof

void:	clobber
	-rm -f $(SRCS) makefile

debug:          FFLAGS += $(DEBUG)
debug:          all

install:
	-mv $(CMD) ${BINDIR}/
test:
	$(CMD) < input.txt > output.txt
	diff output.txt valid_output.txt