# Makefile for netCDF FORTRAN-90 test.
#

NEED_VERSION := 3.80 3.81
$(if $(filter $(MAKE_VERSION),$(NEED_VERSION)),,        \
 $(error This makefile requires one of GNU make version $(NEED_VERSION).))

#           IFORT ?= on
#        GFORTRAN ?= on
              PGI ?= on

          OPENMPI ?= on

ifdef IFORT
 ifdef OPENMPI
               FC := mpif90
#          FFLAGS := -O3 -tp k8-64
           FFLAGS := -g
    NETCDF_INCDIR ?= /opt/intelsoft/openmpi/netcdf-4.0.1-beta2-ompi/include
    NETCDF_LIBDIR ?= /opt/intelsoft/openmpi/netcdf-4.0.1-beta2-ompi/lib
      HDF5_LIBDIR ?= /opt/intelsoft/openmpi/hdf5-1.8.2-ompi/lib
       MPI_INCDIR ?= /opt/intelsoft/openmpi/openmpi-1.3/lib
 else
               FC := mpif90
#          FFLAGS := -O3 -tp k8-64
           FFLAGS := -g
    NETCDF_INCDIR ?= /opt/intelsoft/netcdf-4.0.1-beta2-mpich2/include
    NETCDF_LIBDIR ?= /opt/intelsoft/netcdf-4.0.1-beta2-mpich2/lib
      HDF5_LIBDIR ?= /opt/intelsoft/hdf5-1.8.2-mpich2/lib
       MPI_INCDIR ?= /opt/intelsoft/mpich2/mpich2-1.0.8/include
 endif
endif
ifdef GFORTRAN
 ifdef OPENMPI
               FC := mpif90
#          FFLAGS := -O3 -tp k8-64
           FFLAGS := -g
    NETCDF_INCDIR ?= /opt/gfortransoft/openmpi/netcdf-4.0.1-beta2-ompi/include
    NETCDF_LIBDIR ?= /opt/gfortransoft/openmpi/netcdf-4.0.1-beta2-ompi/lib
      HDF5_LIBDIR ?= /opt/gfortransoft/openmpi/hdf5-1.8.2-ompi/lib
       MPI_INCDIR ?= /opt/gfortransoft/openmpi/openmpi-1.3/lib
 else
               FC := mpif90
#          FFLAGS := -O3 -tp k8-64
           FFLAGS := -g
    NETCDF_INCDIR ?= /opt/gfortransoft/mpich2/netcdf-4.0.1-beta2-mpich2/include
    NETCDF_LIBDIR ?= /opt/gfortransoft/mpich2/netcdf-4.0.1-beta2-mpich2/lib
      HDF5_LIBDIR ?= /opt/gfortransoft/mpich2/hdf5-1.8.2-mpich2/lib
       MPI_INCDIR ?= /opt/gfortransoft/mpich2/mpich2-1.0.8/include
 endif
endif
ifdef PGI
 ifdef OPENMPI
               FC := mpif90
#          FFLAGS := -O3 -tp k8-64
           FFLAGS := -g -C
    NETCDF_INCDIR ?= /opt/pgisoft/openmpi/netcdf-4.0.1-beta2-ompi/include
    NETCDF_LIBDIR ?= /opt/pgisoft/openmpi/netcdf-4.0.1-beta2-ompi/lib
      HDF5_LIBDIR ?= /opt/pgisoft/openmpi/hdf5-1.8.2-ompi/lib
       MPI_INCDIR ?= /opt/pgisoft/openmpi/openmpi-1.3/lib
 else
               FC := mpif90
#          FFLAGS := -O3 -tp k8-64
           FFLAGS := -g -C
    NETCDF_INCDIR ?= /opt/pgisoft/mpich2/netcdf-4.0.1-beta2-mpich2/include
    NETCDF_LIBDIR ?= /opt/pgisoft/mpich2/netcdf-4.0.1-beta2-mpich2/lib
      HDF5_LIBDIR ?= /opt/pgisoft/mpich2/hdf5-1.8.2-mpich2/lib
       MPI_INCDIR ?= /opt/pgisoft/mpich2/mpich2-1.0.8/include
 endif
endif
               LD := $(FC)
          LDFLAGS :=
               AR := ar
          ARFLAGS := r
              CPP := /usr/bin/cpp
         CPPFLAGS := -P -traditional
            CLEAN := $(HOME)/bin/cpp_clean
               RM := rm -f
             PERL := perl
             TEST := test

   NETCDF_INCLUDE := netcdf.inc
   NETCDF_MODFILE := netcdf.mod
TYPESIZES_MODFILE := typesizes.mod
      MPI_MODFILE := mpi.mod

             LIBS := -L$(NETCDF_LIBDIR) -lnetcdf
             LIBS += -L$(HDF5_LIBDIR) -lhdf5_hl -lhdf5 -lz

       clean_list := core *.o *.oo *.inc *.mod *.f90 lib*.a *.bak

          BIN_F77 := nf_test
          BIN_F90 := nf90_test

#  Set Pattern rules.

%.o: %.F
	$(FC) -c $(FFLAGS) $(notdir $<)


vpath %.F $(CURDIR)
vpath %.o $(CURDIR)


OBJS_F77 := nf_test.o
OBJS_F90 := nf90_test.o

#  Build targets.


.PHONY: all

all: $(NETCDF_INCLUDE) $(NETCDF_MODFILE) $(TYPESIZES_MODFILE) $(MPI_MODFILE) $(BIN_F90) $(BIN_F77)

$(BIN_F77): $(OBJS_F77)
	$(FC) $(LDFLAGS) $(OBJS_F77) $(LIBS) -o $(BIN_F77)

$(BIN_F90): $(OBJS_F90)
	$(FC) $(LDFLAGS) $(OBJS_F90) $(LIBS) -o $(BIN_F90)

$(NETCDF_INCLUDE):
	cp -f $(NETCDF_INCDIR)/$(NETCDF_INCLUDE) $(CURDIR)

$(NETCDF_MODFILE):
	cp -f $(NETCDF_INCDIR)/$(NETCDF_MODFILE) $(CURDIR)

$(TYPESIZES_MODFILE):
	cp -f $(NETCDF_INCDIR)/$(TYPESIZES_MODFILE) $(CURDIR)


$(MPI_MODFILE):
	cp -f $(MPI_INCDIR)/$(MPI_MODFILE) $(CURDIR)


#  Clean target.


.PHONY: clean

clean:
	$(RM) -r $(clean_list) $(BIN_F77) $(BIN_F90)

nf_test.o: $(NETCDF_INCDIR)/$(INCLUDES)
