# make clean   : remove .o .mod .M -files and PROG
# make mod     : build the modules
# make         : build BOM
# make db      : compile files in $(DEBUG) with -g flag

PROG = bom
MODULES= state.o mod_bound.o mod_main.o 
DEBUG=

OBJS = Main30.o bound.o bound2d.o dens.o densunesco.o depth.o		\
	diagnose.o dypgrin.o condition.o modetheta.o fieldinit.o	\
	superbeefNEW.o horviscuv2d.o horviscuvpom.o horviscuv2dpom.o	\
	internal.o superbeeuv.o my2halv.o upstreamq.o horviscuv.o	\
	ncalfa.o nrg3d.o postid4.o pzlevel.o rivers.o			\
	smagor.o smagor2d.o ADVECT.o wreal.o				\
	updatedd.o vertdiff.o  vertviscuvb.o				\
	files.o output.o stepu3d.o stepv3d.o				\
	setup.o relax.o tideinit.o tidefrs.o windforcing.o atmosp.o	\
	outbottomfem.o add1.o outsections.o sectiout.o			\
	outetafem.o addeta.o 

# SGI IRIX:      
#  COMPILER=f90
#  F90FLAGS= -O3  -apo -static -mips4 -OPT:roundoff=0  -OPT:Olimit=0
#  LFLAGS=   -O3  -apo -static -mips4 -OPT:roundoff=0  -OPT:Olimit=0

# SUN Solaris
#  COMPILER=f90
#  F90FLAGS= -O3 -stackvar -native -parallel
#  LFLAGS=   -O3 -stackvar -native -parallel

# Linux: Intel 
#  COMPILER= ifc
# Pentium3:
#  F90FLAGS= -O3 -rcd -tpp6 -xiMK -vec_report0 -pad -align -unroll -prefetch 
# Pentium4:
#  F90FLAGS= -O3 -rcd -tpp7 -xW -vec_report0 -pad -align -unroll -fno-alias 
#  LFLAGS= $(F90FLAGS) -i_dynamic

# Linux: Portland 
  COMPILER= pgf90
  F90FLAGS= -O3 
  LFLAGS=   -O3 

# IBM AIX: 
#  COMPILER=xlf90_r
#
# Double precision:
#  F90FLAGS= -qsuffix=f=f90 -O4 -qstrict -bmaxmem=-1 -bmaxdata=-1 -qrealsize=8 -q64 -g
#  LFLAGS= -O3 -qarch=pwr4 -lmass -q64 -g
#
# Single precision:
#  F90FLAGS= -qsuffix=f=f90 -O4 -qstrict  -g
#  LFLAGS= -O3 -qarch=pwr4 -lmass -g
#
# Single precision with OpenMP
#  F90FLAGS= -qsuffix=f=f90 -O4 -qstrict -qsmp=omp:opt -g
#  LFLAGS= -O3 -qarch=pwr4 -lmass -g -qsmp

bom: $(OBJS)
	$(COMPILER) -o $(PROG) $(LFLAGS) $(OBJS) $(MODULES)

%.o : %.f90
	$(COMPILER) -c $(F90FLAGS) $< -o $@
clean:
	rm -f *.o *.M *.mod *~ $(PROG) 
db:
	$(COMPILER) -c -g $(DEBUG)
mod: 
	$(COMPILER) -c $(F90FLAGS) $(MODULES:.o=.f90)
