# Multithreaded + multi-processing makefile for Linux myrinet-3-32 2.4.7-10 #1 Thu Sep 6 17:27:27 EDT 2001 i686 unknown
# This makefile was generated automatically on
#    Thu Dec 11 11:45:25 EST 2003
# by the command:
#    ../../../tools/genmake -mods=../code -platform=Linux+pgi+mpi
# executed by:
#    cnh@myrinet-3-32:/s/local/1/cnh/usr/local/src/JMCl/cpl/src/tutorial_examples/aim.5l_LatLon+global_ocean.128x64x15/run
# 
# BUILDDIR     : Directory where object files are written
# SOURCEDIRS   : Directories containing the source (.F) files
# INCLUDEDIRS  : Directories containing the header-source (.h) files
# EXEDIR       : Directory where executable that is generated is written
# EXECUTABLE   : Full path of executable binary
#
# CPP          : C-preprocessor command
# INCLUDES     : Directories searched for header files
# DEFINES      : Macro definitions for CPP
# MAKEDEPEND   : Dependency generator
# KPP          : Special preprocessor command (specific to platform)
# KFLAGS       : Flags for KPP
# FC           : Fortran compiler command
# FFLAGS       : Configuration/debugging options for FC
# FOPTIM       : Optimization options for FC
# LINK         : Command for link editor program
# LIBS         : Library flags /or/ additional optimization/debugging flags

ROOTDIR     = ../../..
BUILDDIR    = .  
SOURCEDIRS  = ../code ../../../pkg/aim_export_names ../../../pkg/aim_ocn_coupler ../../../pkg/component_communications ../../../pkg/ocn_export_names
INCLUDEDIRS = ../code ../../../pkg/aim_export_names ../../../pkg/aim_ocn_coupler ../../../pkg/component_communications ../../../pkg/ocn_export_names
EXEDIR      = .
EXECUTABLE  = $(EXEDIR)/mitgcmuv
TOOLSDIR    = ../../../tools

# Unix ln (link)
LN = /bin/ln -s
# C preprocessor
CPP = cat $< | $(TOOLSDIR)/set64bitConst.sh | /lib/cpp -traditional -P
# Dependency generator
MAKEDEPEND = makedepend
# Special preprocessor (KAP on DECs, FPP on Crays)
KPP = 
# Fortran compiler
FC = pgf77
# Link editor
LINK = /usr/local/pkg/mpi/mpi-1.2.4..8a-gm-1.5/pgi/bin/mpif77

# Defines for CPP
DEFINES = -DDISABLE_GENERIC_ADVDIFF -DDISABLE_MOM_FLUXFORM -DDISABLE_MOM_VECINV -DWORDLENGTH=4 -DWORDLENGTH=4
# Includes for CPP
INCLUDES = -I/usr/local/pkg/mpi/mpi-1.2.4..8a-gm-1.5/pgi/include -I../code -I../../../pkg/aim_export_names -I../../../pkg/aim_ocn_coupler -I../../../pkg/component_communications -I../../../pkg/ocn_export_names
# Flags for KPP
KFLAGS1 = 
KFLAGS2 = 
# Optim./debug for FC
FFLAGS = -byteswapio -r8 -Mnodclchk -Mextend
FOPTIM = -tp p6 -v -O2 -Munroll -Mvect=cachesize:512000,transform -Kieee
# Flags for CC
CFLAGS = 
# Files that should not be optimized
NOOPTFILES = 
NOOPTFLAGS = 
# Flags and libraries needed for linking
LIBS = -L/usr/local/pkg/mpi/mpi-1.2.4..8a-gm-1.5/pgi/lib -lfmpich -lmpich $(XLIBS)

SRCFILES =  \
            accept_component_registrations.F \
            atm_to_ocn_mapxyr8.F \
            coupler.F \
            cpl_recv_atm_atmconfig.F \
            cpl_recv_atm_fwflux.F \
            cpl_recv_atm_heatflux.F \
            cpl_recv_atm_qlatent.F \
            cpl_recv_atm_qlongwave.F \
            cpl_recv_atm_qsensible.F \
            cpl_recv_atm_qshortwave.F \
            cpl_recv_atm_taux.F \
            cpl_recv_atm_tauy.F \
            cpl_recv_atm_uvelground.F \
            cpl_recv_atm_vvelground.F \
            cpl_recv_ocn_ocnconfig.F \
            cpl_recv_ocn_sst.F \
            cpl_register_atm.F \
            cpl_register_ocn.F \
            cpl_send_atm_ocnconfig.F \
            cpl_send_atm_sst.F \
            cpl_send_ocn_atmconfig.F \
            cpl_send_ocn_fwflux.F \
            cpl_send_ocn_heatflux.F \
            cpl_send_ocn_qlatent.F \
            cpl_send_ocn_qlongwave.F \
            cpl_send_ocn_qsensible.F \
            cpl_send_ocn_qshortwave.F \
            cpl_send_ocn_taux.F \
            cpl_send_ocn_tauy.F \
            cpl_send_ocn_uvelground.F \
            cpl_send_ocn_vvelground.F \
            initialise.F \
            ocn_to_atm_mapxyr8.F \
            receive_component_configs.F \
            sendout_component_configs.F \
            comprecv_r4.F \
            comprecv_r4tiles.F \
            comprecv_r8.F \
            comprecv_r8tiles.F \
            compsend_r4.F \
            compsend_r4tiles.F \
            compsend_r8.F \
            compsend_r8tiles.F \
            couprecv_r4.F \
            couprecv_r4tiles.F \
            couprecv_r8.F \
            couprecv_r8tiles.F \
            coupsend_r4.F \
            coupsend_r4tiles.F \
            coupsend_r8.F \
            coupsend_r8tiles.F \
            generate_tag.F \
            mitcomponent_init.F \
            mitcomponent_register.F \
            mitcomponent_tile_register.F \
            mitcoupler_init.F \
            mitcoupler_register.F \
            mitcoupler_tile_register.F \
            mitcplr_char2int.F \
            mitcplr_char2real.F \
            mitcplr_init1.F \
            mitcplr_init2a.F \
            mitcplr_init2b.F \
            mitcplr_initcomp.F \
            mitcplr_int2char.F \
            mitcplr_match_comp.F \
            mitcplr_real2char.F \
            mitcplr_sortranks.F
CSRCFILES = 
HEADERFILES =  \
            ATMIDS.h \
            ATMSIZE.h \
            ATMVARS.h \
            CPLIDS.h \
            CPP_EEOPTIONS.h \
            CPP_OPTIONS.h \
            OCNSIZE.h \
            OCNVARS.h \
            CPLR_SIG.h \
            OCNIDS.h
F77FILES =  $(SRCFILES:.F=.f)
OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o)

.SUFFIXES:
.SUFFIXES: .o .f .p .F .c

all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJFILES)
	$(LINK) -o $@ $(FFLAGS) $(FOPTIM) $(OBJFILES) $(LIBS)
depend:
	@make links
	$(MAKEDEPEND) -o .f $(DEFINES) $(INCLUDES) $(SRCFILES)

links: $(SRCFILES) $(CSRCFILES) $(HEADERFILES)

small_f: $(F77FILES)

output.txt: $(EXECUTABLE)
	@printf 'running ... '
	@$(EXECUTABLE) > $@

clean:
	-rm -rf *.o *.f *.p 
Clean:
	@make clean
	@make cleanlinks
	-rm -f Makefile.bak
CLEAN:
	@make Clean
	-find $(EXEDIR) -name "*.meta" -exec rm {} \;
	-find $(EXEDIR) -name "*.data" -exec rm {} \;
	-rm -f $(EXECUTABLE)

makefile:
	../../../tools/genmake -mods=../code -platform=Linux+pgi+mpi
cleanlinks:
	-find . -type l -exec rm {} \;

# The normal chain of rules is (  .F - .f - .o  )
.F.f:
	$(CPP) $(DEFINES) $(INCLUDES) > $@
.f.o:
	$(FC) $(FFLAGS) $(FOPTIM) -c $<
.c.o:
	$(CC) $(CFLAGS) -c $<

# Special exceptions that use the ( .F - .p - .f - .o ) rule-chain
.F.p:
	$(CPP) $(DEFINES) $(INCLUDES) > $@
.p.f:
	$(KPP) $(KFLAGS1)$@ $(KFLAGS2) $<

# This section creates symbolic links

# These files are linked from ../../../pkg/aim_export_names
ATMIDS.h:
	$(LN) ../../../pkg/aim_export_names/$@ $@
# These files are linked from ../../../pkg/aim_ocn_coupler
accept_component_registrations.F ATMSIZE.h atm_to_ocn_mapxyr8.F ATMVARS.h coupler.F CPLIDS.h cpl_recv_atm_atmconfig.F cpl_recv_atm_fwflux.F cpl_recv_atm_heatflux.F cpl_recv_atm_qlatent.F cpl_recv_atm_qlongwave.F cpl_recv_atm_qsensible.F cpl_recv_atm_qshortwave.F cpl_recv_atm_taux.F cpl_recv_atm_tauy.F cpl_recv_atm_uvelground.F cpl_recv_atm_vvelground.F cpl_recv_ocn_ocnconfig.F cpl_recv_ocn_sst.F cpl_register_atm.F cpl_register_ocn.F cpl_send_atm_ocnconfig.F cpl_send_atm_sst.F cpl_send_ocn_atmconfig.F cpl_send_ocn_fwflux.F cpl_send_ocn_heatflux.F cpl_send_ocn_qlatent.F cpl_send_ocn_qlongwave.F cpl_send_ocn_qsensible.F cpl_send_ocn_qshortwave.F cpl_send_ocn_taux.F cpl_send_ocn_tauy.F cpl_send_ocn_uvelground.F cpl_send_ocn_vvelground.F CPP_EEOPTIONS.h CPP_OPTIONS.h initialise.F OCNSIZE.h ocn_to_atm_mapxyr8.F OCNVARS.h receive_component_configs.F sendout_component_configs.F:
	$(LN) ../../../pkg/aim_ocn_coupler/$@ $@
# These files are linked from ../../../pkg/component_communications
comprecv_r4.F comprecv_r4tiles.F comprecv_r8.F comprecv_r8tiles.F compsend_r4.F compsend_r4tiles.F compsend_r8.F compsend_r8tiles.F couprecv_r4.F couprecv_r4tiles.F couprecv_r8.F couprecv_r8tiles.F coupsend_r4.F coupsend_r4tiles.F coupsend_r8.F coupsend_r8tiles.F CPLR_SIG.h generate_tag.F mitcomponent_init.F mitcomponent_register.F mitcomponent_tile_register.F mitcoupler_init.F mitcoupler_register.F mitcoupler_tile_register.F mitcplr_char2int.F mitcplr_char2real.F mitcplr_init1.F mitcplr_init2a.F mitcplr_init2b.F mitcplr_initcomp.F mitcplr_int2char.F mitcplr_match_comp.F mitcplr_real2char.F mitcplr_sortranks.F:
	$(LN) ../../../pkg/component_communications/$@ $@
# These files are linked from ../../../pkg/ocn_export_names
OCNIDS.h:
	$(LN) ../../../pkg/ocn_export_names/$@ $@

# DO NOT DELETE
