# Makefile template for SGI MIPSpro f90

FC = f90
CPPFLAGS = -macro_expand
FFLAGS = -64 -mips4 -i4 -r8 -d8 -woff134,200,787,1670 -ansi -O2 -OPT:Olimit=0 #optimized
# FFLAGS = -64 -mips4 -i4 -r8 -d8 -woff134,200,787,1670 -ansi -DEBUG:conform_check=YES:subscript_check=ON:trap_uninitialized=ON:verbose_runtime=ON -g #for debugging
LIST = -listing

#to debug shmem codes, you need the dbfork library
#TOTALVIEW = -L/opt/totalview/4.1.0-3/irix6-mips/lib -ldbfork_n64
#TOTALVIEW = -ldbfork_n64
#TOTALVIEW = -L/sw/mel/totalview/lib -ldbfork_n64

LD = f90
# LDFLAGS = -64 -mips4 -v -show $(LIBS) # this is verbose
LDFLAGS = -64 -mips4 -dont_warn_unused $(LIBS)
#LIBS must be customized for your site
LIBS = $(TOTALVIEW) -L/usr/local/lib -lnetcdf -lmpi -lsma -lexc -lscs

#---------------------------------------------------------------------------
# you should never need to change any lines below.

# see the MIPSPro F90 manual for more details on some of the file extensions
# discussed here.
# this makefile template recognizes fortran sourcefiles with extensions
# .f, .f90, .F, .F90. Given a sourcefile <file>.<ext>, where <ext> is one of
# the above, this provides a number of default actions:

# make <file>.T		create a CIF file
# make <file>.L		create a compiler listing
# make <file>.l		create an assembler listing
# make <file>.w2f	create an flist listing
# make <file>.o		create an object file
# make <file>.s		create an assembly listing
# make <file>.x		create an executable file, assuming standalone
#			source

# make <file>.i		create a preprocessed file (only for .F and .F90
#			extensions)

# The macro TMPFILES is provided to slate files like the above for removal.

RM = rm -f
SHELL = /bin/csh
TMPFILES = .*.m *.B *.L *.i *.l *.s *.mod *.w2f

.SUFFIXES: .F .F90 .H .L .T .f .f90 .h .i .l .o .s .w2f .x

.f.L:
	$(FC) $(FFLAGS) -c -listing $*.f
.f.w2f:
	$(FC) $(FFLAGS) -c -FLIST:ftn_file=$*.w2f $*.f
.f.l:
	$(FC) $(FFLAGS) -c $(LIST) $*.f
.f.T:
	$(FC) $(FFLAGS) -c -cif $*.f
.f.o:
	$(FC) $(FFLAGS) -c $*.f
.f.s:
	$(FC) $(FFLAGS) -S $*.f
.f.x:
	$(FC) $(FFLAGS) -o $*.x $*.f *.o $(LDFLAGS)
.f90.L:
	$(FC) $(FFLAGS) -c -listing $*.f90
.f90.w2f:
	$(FC) $(FFLAGS) -c -FLIST:ftn_file=$*.w2f $*.f90
.f90.l:
	$(FC) $(FFLAGS) -c $(LIST) $*.f90
.f90.T:
	$(FC) $(FFLAGS) -c -cif $*.f90
.f90.o:
	$(FC) $(FFLAGS) -c $*.f90
.f90.s:
	$(FC) $(FFLAGS) -c -S $*.f90
.f90.x:
	$(FC) $(FFLAGS) -o $*.x $*.f90 *.o $(LDFLAGS)
.F.L:
	$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -c -listing $*.F
.F.w2f:
	$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -c -FLIST:ftn_file=$*.w2f $*.F
.F.l:
	$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -c $(LIST) $*.F
.F.T:
	$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -c -cif $*.F
.F.f:
	$(CPP) $(CPPDEFS) $(CPPFLAGS) $*.F > $*.f
.F.i:
	$(FC) $(CPPDEFS) $(CPPFLAGS) -P $*.F
.F.o:
	$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -c $*.F
.F.s:
	$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -c -S $*.F
.F.x:
	$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -o $*.x $*.F *.o $(LDFLAGS)
.F90.L:
	$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -c -listing $*.F90
.F90.w2f:
	$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -c -FLIST:ftn_file=$*.w2f $*.F90
.F90.l:
	$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -c $(LIST) $*.F90
.F90.T:
	$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -c -cif $*.F90
.F90.f90:
	$(CPP) $(CPPDEFS) $(CPPFLAGS) $*.F90 > $*.f90
.F90.i:
	$(FC) $(CPPDEFS) $(CPPFLAGS) -P $*.F90
.F90.o:
	$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -c $*.F90
.F90.s:
	$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -c -S $*.F90
.F90.x:
	$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -o $*.x $*.F90 *.o $(LDFLAGS)
