
UNAMES = $(shell uname)
UNAMEM = $(findstring CRAY,$(shell uname -m))
null  =
FC    = $(null)

# CGD Sun
ifeq ($(UNAMES),SunOS)
   FC = f90
   INCLUDE = -I/opt/local/netcdf-3.4/include
   FFLAGS = -c -g -C
   LIBS = -L/opt/local/netcdf-3.4/lib -lnetcdf
endif

# SCD SGI
ifeq ($(UNAMES),IRIX64)
   FC = f90
   INCLUDE = -I/usr/local/include
   FFLAGS = -c -g -C -O
   LIBS = -L/usr/local/lib32/r4i4 -lnetcdf
endif

# SCD IBM
ifeq ($(UNAMES),AIX)
   FC = xlf90
   INCLUDE = -I/usr/local/include
   FFLAGS = -c -g -C -qsuffix=f=F90 -qfree=f90
   LIBS = -L/usr/local/lib32/r4i4 -lnetcdf
endif

# SCD Compaq
ifeq ($(UNAMES),OSF1)
   FC = f90
   INCLUDE = -I/usr/local/include
   FFLAGS = -c -convert big_endian -std -u -check bounds -warn argument_checking -warn truncated_source -warn unused -g
   LIBS = -L/usr/local -lnetcdf
endif

# SCD CRAY
ifeq ($(UNAMEM),CRAY)
   FC = f90
   INCLUDE = -I/usr/local/include
   FFLAGS = -c -g -R abcs
   LIBS = -L/usr/local/lib -lnetcdf
endif

# SCD Linux (gale)
ifeq ($(UNAMES),Linux)
   FC = ifort
   INCLUDE = -I/fs/local/include
   FFLAGS = -c -O2 -convert big_endian
   LIBS = -L/fs/local/lib -lnetcdf
endif

ifeq ($(FC),$(null))
   echo 'ERROR : unknown OS name ' $(UNAME) $(UNAMEM)
endif

OBJECTS = \
   array_tools.o \
   char_case.o \
   const_mod.o \
   kinds_mod.o \
   main.o \
   msg_mod.o \
   nf_tools.o \
   nf_wrap.o \
   nf_wrap_stubs.o \
   regrid.o \
   vars_mod.o

regrid: $(OBJECTS)
	$(FC) -o regrid $(OBJECTS) $(LIBS)

clean:
	rm -f *.o *.mod

.SUFFIXES:            # Delete the default suffixes
.SUFFIXES: .F90 .o    # Define our suffix list

.F90.o:
	$(FC) $(FFLAGS) $(INCLUDE) $<

array_tools.o: array_tools.F90 kinds_mod.o msg_mod.o

char_case.o: char_case.F90

const_mod.o: const_mod.F90 kinds_mod.o

kinds_mod.o: kinds_mod.F90

main.o: main.F90 kinds_mod.o vars_mod.o regrid.o

msg_mod.o: msg_mod.F90 kinds_mod.o

nf_tools.o: nf_tools.F90 kinds_mod.o array_tools.o const_mod.o nf_wrap.o

nf_wrap.o: nf_wrap.F90 kinds_mod.o msg_mod.o nf_wrap_stubs.o

nf_wrap_stubs.o: nf_wrap_stubs.F90 kinds_mod.o

regrid.o: regrid.F90 kinds_mod.o vars_mod.o msg_mod.o char_case.o const_mod.o nf_wrap.o nf_tools.o

vars_mod.o: vars_mod.F90 kinds_mod.o

flint:
	mv kinds_mod.F90 kinds_mod.F90.orig
	-flint -I/usr/local/include -Mdepend:flint *.F90 > flint.out
	mv kinds_mod.F90.orig kinds_mod.F90
