#!/bin/sh 
# 
# This script is attempt to make it easier to build and install all the
# optional and non-optional external software packages needed for
# NCL/NCAR Graphics V6.2.0.
# 
# You will need to read through the notes below, to:
# 
#   - set environment variables for your compilers and options,
#   - indicate which packages you want to install,
#   - edit some files by hand before you run this script.
# 
# Software packages to install:
# 
# NCL/NCARG:
#   zlib-x.y.z             NCL:   required 
#                          NCARG: optional (needed for PNG, HDF4,
#                                           classic NetCDF-4)
#
#   jpeg-xx                NCL:   required 
#                          NCARG: optional (needed for HDF4)
#      Note: jpeg-7 is being warned against by HDF4 folks
# 
#   libpng-x.y.z           NCL:   optional (needed for GRIB2 or PNG support)
#                          NCARG: optional (needed for PNG)
#                          
#   HDF-x.y.z              NCL:   required
#                          NCARG: optional 
# 
#   pkg-config-x.y         NCL/NCARG: optional (needed for cairo support)
#   expat-x.y.z            NCL/NCARG: optional (needed for cairo support)
#   freetype-x.y.z         NCL/NCARG: optional (needed for cairo support)
#   fontconfig-x.y.z       NCL/NCARG: optional (needed for cairo support)
#   pixman-x.y.z           NCL/NCARG: optional (needed for cairo support)
#   cairo-x.y.z            NCL/NCARG: optional (needed for cairo support)
#
# Note on cairo above: We've had problems with cairo-1.12.x (NCL-1860 
# and NCL-1862), so we've decided to stick with cairo-1.10.2 for 
# V6.2.0. Also, Rick recommends using the system fontconfig to avoid
# some quirky problems with that and the high-res map database (NCL-1210).
#
# NCL only:
#   hdf5-x.y.z             Required if you want classic NetCDF-4 support
#   szip-x.y.z             Required if you want classic NetCDF-4 support
#   curl-x.y.z             Required if you want OPeNDAP support in NetCDF
#   jasper-x.y.z           Required if you want GRIB2 support
#   g2clib-x.y.z           Required if you want GRIB2 support
#   gdal-x.y.z             Required if you want GDAL support
#   netcdf-x.y.z           Required (classic NetCDF-4 support is optional)
#   proj-x.y.z             Required if you want GDAL support
#   udunits-x.y.z          Required if you want ut_calendar/ut_inv_calendar
#   hdfeos-x.y.z           Required if you want HDF-EOS 2 support
#   hdfeos5-x.y.z          Required if you want HDF-EOS 5 support
#   vis5d+-x.y.z           Required if you want v5d* functions
#
#   These next packages should no longer be required because NetCDF-4.1
#   contains OPeNDAP. However, we keep them here because some of
#   these libraries (like xml2) might be needed by other
#   packages.
#
#   openssl-x.y.z          Required if you want OPeNDAP support
#   libxml2-x.y.z          Required if you want OPeNDAP support
#   libdap-x.y.z           Required if you want OPeNDAP support
#   libnc-dap-x.y.z        Required if you want OPeNDAP support

# Set up file to hold build output.
dd=`date +'%m%d%y'`
un=`uname -n`
um=`uname -m`
os=`uname -s`

# Parent location for installing external software
PREFIX=/usr/local

# Set environment variables for building software
export CC=gcc
export CXX=g++
export FC=gfortran
export F77=gfortran
export F90=gfortran
if [ "$os" == "Darwin" ]
then
  export CFLAGS='-fPIC -m64 -Df2cFortran'
  export FFLAGS='-m64 -fPIC'
  export F90FLAGS='-m64 -fPIC'
  export CXXFLAGS='-m64 -fPIC'
else
  export CFLAGS=-fPIC
  export FFLAGS=-fPIC
  export F90FLAGS=-fPIC
  export CXXFLAGS=-fPIC
fi

if [ "$os" == "Linux" ] ; then
  if [ "$um" == "x86_64" ] ; then
    export LINUX_BRAND linux64
  else
    export LINUX_BRAND linux32
  fi
fi  

#--------------------------------------------------------------------
# Software directories, sorted alphabetically
#--------------------------------------------------------------------

G2CLIB_DIR="g2clib-1.5.0-patch"
GDAL_DIR="gdal-1.10.1"
HDF4_DIR="hdf-4.2.9"
HDF5_DIR="hdf5-1.8.12"
HDFEOS_DIR="hdfeos-2.18"
HDFEOS5_DIR="hdfeos5-1.14"
JASPER_DIR="jasper-1.900.1"
JPEG_DIR="jpeg-6b"
NETCDF_DIR="netcdf-c-4.3.2-rc1"
NETCDF4_FORTRAN_DIR="netcdf-fortran-4.2"
NETCDF3_CXX_DIR="netcdf-cxx-4.2"
NETCDF_ESMF_DIR="netcdf-4.1.3"
PNG_DIR="libpng-1.2.50"
PROJ4_DIR="proj-4.8.0"
SZIP_DIR="szip-2.1"
UDUNITS_DIR="udunits-2.1.24"
VIS5DPLUS_DIR="vis5d+-1.3.0"
ZLIB_DIR="zlib-1.2.8"
PKGCONFIG_DIR="pkg-config-0.28"
EXPAT_DIR="expat-2.1.0"
FREETYPE_DIR="freetype-2.5.0.1"
FONTCONFIG_DIR="fontconfig-2.10.93"
PIXMAN_DIR="pixman-0.30.0"
CAIRO_DIR="cairo-1.10.2"
OPENSSL_DIR="openssl-1.0.0c"
CURL_DIR="curl-7.35.0"
XML2_DIR="libxml2-2.9.1"
DAP_DIR="libdap-3.8.2"
NC_DIR="libnc-dap-3.7.4"

# Indicate which packages you want. These are listed in the order
# they should generally be built in.
INSTALL_ZLIB=1
INSTALL_PNG=1
INSTALL_JPEG=1
INSTALL_JASPER=1
INSTALL_SZIP=1
INSTALL_HDF5=1
INSTALL_HDFEOS5=1
INSTALL_HDF4=1
INSTALL_HDFEOS=1
INSTALL_NETCDF4=1
INSTALL_NETCDF4_FORTRAN=1
INSTALL_NETCDF3_CXX=1
INSTALL_PROJ4=1
INSTALL_GDAL=1
INSTALL_G2CLIB=1
INSTALL_UDUNITS=1
#INSTALL_VIS5DPLUS=1
INSTALL_PKGCONFIG=1
INSTALL_EXPAT=1
INSTALL_FREETYPE=1
#Don't install font-config. Try to use system one instead.
#INSTALL_FONTCONFIG=1
INSTALL_PIXMAN=1
INSTALL_CAIRO=1
INSTALL_CURL=1
#INSTALL_XML2=1

# These three shouldn't be needed if you use NetCDF's opendap library
#INSTALL_OPENSSL=1
#INSTALL_DAP=1
#INSTALL_NCDAP=1

# Needed for cairo stuff.
export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig"
export PATH="$PREFIX/bin:$PATH"

# This setting for CPPFLAGS may be needed for some systems (Linux 32-bit
# was one). Only set it if the large file stuff doesn't work with NetCDF4.
# export CPPFLAGS='-D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE'.

CLEAN_BEFORE=1                      # Whether to clean before making
#CLEAN_AFTER=1                       # Whether to clean after making

#----------------------------------------------------------------------
# End of user modification section.
#----------------------------------------------------------------------

if [ ! -d "$PREFIX/lib" ]
then
  mkdir $PREFIX/lib
fi
if [ ! -d "$PREFIX/include" ]
then
  mkdir $PREFIX/include
fi
if [ ! -d "$PREFIX/bin" ]
then
  mkdir $PREFIX/bin
fi
if [ ! -d "$PREFIX/man" ]
then
  mkdir $PREFIX/man
fi
if [ ! -d "$PREFIX/man/man1" ]
then
  mkdir $PREFIX/man/man1
fi

if [ $INSTALL_ZLIB ] && [ ! -d $ZLIB_DIR ] ; then
  echo "$ZLIB_DIR does not exist"
  exit
fi
if [ $INSTALL_ZLIB ] && [ ! -d $ZLIB_DIR ] ; then
  echo "$ZLIB_DIR does not exist"
  exit
fi
if [ $INSTALL_PNG ] && [ ! -d $PNG_DIR ] ; then
  echo "$PNG_DIR does not exist"
  exit
fi
if [ $INSTALL_JPEG ] && [ ! -d $JPEG_DIR ] ; then
  echo "$JPEG_DIR does not exist"
  exit
fi
if [ $INSTALL_JASPER ] && [ ! -d $JASPER_DIR ] ; then
  echo "$JASPER_DIR does not exist"
  exit
fi
if [ $INSTALL_SZIP ] && [ ! -d $SZIP_DIR ] ; then
  echo "$SZIP_DIR does not exist"
  exit
fi
if [ $INSTALL_HDF5 ] && [ ! -d $HDF5_DIR ] ; then
  echo "$HDF5_DIR does not exist"
  exit
fi
if [ $INSTALL_HDFEOS5 ] && [ ! -d $HDFEOS5_DIR ] ; then
  echo "$HDFEOS5_DIR does not exist"
  exit
fi
if [ $INSTALL_HDF4 ] && [ ! -d $HDF4_DIR ] ; then
  echo "$HDF4_DIR does not exist"
  exit
fi
if [ $INSTALL_HDFEOS ] && [ ! -d $HDFEOS_DIR ] ; then
  echo "$HDFEOS_DIR does not exist"
  exit
fi
if [ $INSTALL_NETCDF4 ] && [ ! -d $NETCDF4_DIR ] ; then
  echo "$NETCDF4_DIR does not exist"
  exit
fi
if [ $INSTALL_NETCDF4_FORTRAN ] && [ ! -d $NETCDF4_FORTRAN_DIR ] ; then
  echo "$NETCDF4_FORTRAN_DIR does not exist"
  exit
fi
if [ $INSTALL_NETCDF3_CXX ] && [ ! -d $NETCDF3_CXX_DIR ] ; then
  echo "$NETCDF3_CXX_DIR does not exist"
  exit
fi
if [ $INSTALL_PROJ4 ] && [ ! -d $PROJ4_DIR ] ; then
  echo "$PROJ4_DIR does not exist"
  exit
fi
if [ $INSTALL_GDAL ] && [ ! -d $GDAL_DIR ] ; then
  echo "$GDAL_DIR does not exist"
  exit
fi
if [ $INSTALL_G2CLIB ] && [ ! -d $G2CLIB_DIR ] ; then
  echo "$G2CLIB_DIR does not exist"
  exit
fi
if [ $INSTALL_UDUNITS ] && [ ! -d $UDUNITS_DIR ] ; then
  echo "$UDUNITS_DIR does not exist"
  exit
fi
if [ $INSTALL_VIS5DPLUS ] && [ ! -d $VIS5DPLUS_DIR ] ; then
  echo "$VIS5DPLUS_DIR does not exist"
  exit
fi
if [ $INSTALL_PKGCONFIG ] && [ ! -d $PKGCONFIG_DIR ] ; then
  echo "$PKGCONFIG_DIR does not exist"
  exit
fi
if [ $INSTALL_EXPAT ] && [ ! -d $EXPAT_DIR ] ; then
  echo "$EXPAT_DIR does not exist"
  exit
fi
if [ $INSTALL_FREETYPE ] && [ ! -d $FREETYPE_DIR ] ; then
  echo "$FREETYPE_DIR does not exist"
  exit
fi
if [ $INSTALL_FONTCONFIG ] && [ ! -d $FONTCONFIG_DIR ] ; then
  echo "$FONTCONFIG_DIR does not exist"
  exit
fi
if [ $INSTALL_PIXMAN ] && [ ! -d $PIXMAN_DIR ] ; then
  echo "$PIXMAN_DIR does not exist"
  exit
fi
if [ $INSTALL_CAIRO ] && [ ! -d $CAIRO_DIR ] ; then
  echo "$CAIRO_DIR does not exist"
  exit
fi
if [ $INSTALL_CURL ] && [ ! -d $CURL_DIR ] ; then
  echo "$CURL_DIR does not exist"
  exit
fi
if [ $INSTALL_XML2 ] && [ ! -d $XML2_DIR ] ; then
  echo "$XML2_DIR does not exist"
  exit
fi

#
# The following section should not need any modification by 
# the user, unless there is a problem in the script.
#

#--------------------------------------------------------------------
# zlib
#--------------------------------------------------------------------
if [ $INSTALL_ZLIB ]
  then
  if [ -d "$ZLIB_DIR" ]
  then
    cd $ZLIB_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $ZLIB_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $ZLIB_DIR..."
    ./configure --prefix\=$PREFIX --static
    make all install
    if [ $? ]
    then
      echo "$ZLIB_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $ZLIB_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$ZLIB_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $ZLIB_DIR doesn't exist"
  fi
else
  echo "Not building zlib..."
fi

#--------------------------------------------------------------------
# png
#--------------------------------------------------------------------
if [ $INSTALL_PNG ]
  then
  if [ -d "$PNG_DIR" ]
  then
    cd $PNG_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $PNG_DIR before making..."
      make distclean
      make clean
    fi
    cp $PREFIX/include/zlib.h .
    cp $PREFIX/include/zconf.h .
    export LIBS="-L$PREFIX/lib"
    echo "Building $PNG_DIR..."
    ./configure  --with-pic --disable-shared --prefix\=$PREFIX
    make all install
    if [ $? ]
    then
      echo "$PNG_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $PNG_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$PNG_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $PNG_DIR doesn't exist"
  fi
else
  echo "Not building png..."
fi

#--------------------------------------------------------------------
# jpeg
#--------------------------------------------------------------------
if [ $INSTALL_JPEG ]
  then
  if [ -d "$JPEG_DIR" ]
  then
    cd $JPEG_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $JPEG_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $JPEG_DIR..."
    ./configure --disable-shared --prefix\=$PREFIX
    make all install
# Need this for jpeg-6b
    make install-lib
    make install-headers
    if [ $? ]
    then
      echo "$JPEG_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $JPEG_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$JPEG_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $JPEG_DIR doesn't exist"
  fi
else
  echo "Not building jpeg..."
fi

#--------------------------------------------------------------------
# Jasper
#--------------------------------------------------------------------
if [ $INSTALL_JASPER ]
  then
  if [ -d "$JASPER_DIR" ]
  then
    cd $JASPER_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $JASPER_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $JASPER_DIR..."
# Need --includedir to point to jpeg include files.      
    ./configure --prefix\=$PREFIX --includedir\=$PREFIX/include
    make all install
    if [ $? ]
    then
      echo "$JASPER_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $JASPER_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$JASPER_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $JASPER_DIR doesn't exist"
  fi
else
  echo "Not building Jasper..."
fi

#--------------------------------------------------------------------
# szip
#--------------------------------------------------------------------
if [ $INSTALL_SZIP ]
  then
  if [ -d "$SZIP_DIR" ]
  then
    cd $SZIP_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $SZIP_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $SZIP_DIR..."
    ./configure --disable-shared --prefix\=$PREFIX
    make all install
    if [ $? ]
    then
      echo "$SZIP_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $SZIP_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$SZIP_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $SZIP_DIR doesn't exist"
  fi
else
  echo "Not building szip..."
fi

#--------------------------------------------------------------------
# HDF-5
#--------------------------------------------------------------------
if [ $INSTALL_HDF5 ]
  then
  if [ -d "$HDF5_DIR" ]
  then
    cd $HDF5_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $HDF5_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $HDF5_DIR..."
    ./configure --disable-shared --with-zlib\=$PREFIX --with-szlib\=$PREFIX --prefix\=$PREFIX
    make all install
    if [ $? ]
    then
      echo "$HDF5_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $HDF5_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$HDF5_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $HDF5_DIR doesn't exist"
  fi
else
  echo "Not building HDF5..."
fi

#--------------------------------------------------------------------
# HDF-EOS 5
#--------------------------------------------------------------------
if [ $INSTALL_HDFEOS5 ]
  then
  if [ -d "$HDFEOS5_DIR" ]
  then
    cd $HDFEOS5_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $HDFEOS5_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $HDFEOS5_DIR..."
# Might need this on a Mac and other systems?
#    ./configure --enable-static --with-hdf\=$PREFIX --with-zlib\=$PREFIX --with-szlib\=$PREFIX --prefix\=$PREFIX
#    ./configure --with-hdf5\=$PREFIX CFLAGS\=$CFLAGS_HE5 --with-zlib\=$PREFIX --with-szlib\=$PREFIX --prefix\=$PREFIX
#    export CFLAGS_HE5="$CFLAGS -DH5_USE_16_API"
    ./configure CC\=$PREFIX/bin/h5cc --with-hdf5\=$PREFIX --with-zlib\=$PREFIX --with-szlib\=$PREFIX --prefix\=$PREFIX
    make all install
    /bin/rm -rf $PREFIX/include/HE5_HdfEosDef.h $PREFIX/include/HE5_GctpFunc.h
    cp include/HE5_HdfEosDef.h include/HE5_GctpFunc.h $PREFIX/include/.
    if [ $? ]
    then
      echo "$HDFEOS5_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $HDFEOS5_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$HDFEOS5_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $HDFEOS5_DIR doesn't exist"
  fi
else
  echo "Not building HDFEOS5..."
fi

#--------------------------------------------------------------------
# HDF-4
#--------------------------------------------------------------------
if [ $INSTALL_HDF4 ]
  then
  if [ -d "$HDF4_DIR" ]
  then
    cd $HDF4_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $HDF4_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $HDF4_DIR..."
    if [ "$os" == "Darwin" ]
    then
      ./configure --disable-netcdf --disable-dependency-tracking --with-zlib\=$PREFIX --with-jpeg\=$PREFIX --prefix\=$PREFIX
    else
      ./configure  --disable-netcdf --with-zlib\=$PREFIX --with-jpeg\=$PREFIX --prefix\=$PREFIX
    fi
    make all install
    if [ $? ]
    then
      echo "$HDF4_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $HDF4_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$HDF4_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $HDF4_DIR doesn't exist"
  fi
else
  echo "Not building HDF4..."
fi

#--------------------------------------------------------------------
# HDF-EOS 2
#--------------------------------------------------------------------
if [ $INSTALL_HDFEOS ]
  then
  if [ -d "$HDFEOS_DIR" ]
  then
    cd $HDFEOS_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $HDFEOS_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $HDFEOS_DIR..."
    ./configure CC\=$PREFIX/bin/h4cc --with-hdf4\=$PREFIX --with-zlib\=$PREFIX --with-jpeg\=$PREFIX --prefix\=$PREFIX
    make all install
    /bin/rm -rf $PREFIX/include/HdfEosDef.h $PREFIX/include/ease.h $PREFIX/include/cfortHdf.h
    cp include/HdfEosDef.h include/ease.h include/cfortHdf.h $PREFIX/include/.
    if [ $? ]
    then
      echo "$HDFEOS_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $HDFEOS_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$HDFEOS_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $HDFEOS_DIR doesn't exist"
  fi
else
  echo "Not building HDFEOS..."
fi

#--------------------------------------------------------------------
# NetCDF C interface (this section handles regular NetCDF or classic NetCDF-4)
#--------------------------------------------------------------------
if [ "$INSTALL_NETCDF" -o "$INSTALL_NETCDF4" ]
then
  if [ -d "$NETCDF_DIR" ]
  then
    cd $NETCDF_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $NETCDF_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $NETCDF_DIR..."
    if [ $INSTALL_NETCDF ]
    then
      ./configure --disable-f90 --prefix\=$PREFIX
    else
# This is for NetCDF 4.2
      export LDFLAGS="-L$PREFIX/lib"
      export CPPFLAGS="-I$PREFIX/include"
      if [ "$os" == "Darwin" ]
      then
        export LIBS="-lhdf5_hl -lhdf5 -lsz -lm -lz -lcurl -lcrypto -lldap -lssl"
# MacOS 10.9 (riley)
#        export LIBS="-lhdf5_hl -lhdf5 -lsz -lm -lz -lcurl -lssl -lcrypto -llber"
        ./configure --enable-netcdf-4 --enable-dap --disable-dispatch --disable-shared --prefix\=$PREFIX  --enable-large-file-tests --enable-dap-remote-tests
      else
# Might need on a Debian system (k9.rap)
#       export LIBS='-lhdf5_hl -lhdf5 -lsz -lz -lrt -lcurl -lcrypto -lssl'
# harmon
#       export LIBS='-lhdf5_hl -lhdf5 -lsz -lz -lrt -lcurl -lz -lidn -lrt -ldl
# yellowstone/caledera/geyser
#       export LIBS="-lhdf5_hl -lhdf5 -lsz -lz -lcurl -ldl"           
        export LIBS="-lhdf5_hl -lhdf5 -lsz -lz -lcurl -ldl"
        ./configure --enable-netcdf-4 --enable-dap --disable-shared --prefix\=$PREFIX  --enable-large-file-tests --enable-dap-remote-tests
      fi
    fi
    make all install
# This extra install needed b/c build sometimes fails on missing TeX pieces.
    make install
    if [ $? ]
    then
      if [ $INSTALL_NETCDF ]
      then
        echo "$NETCDF_DIR build successful."
      else
        echo "$NETCDF_DIR (classic NetCDF-4) build successful."
      fi      
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $NETCDF_DIR after making..."
        make distclean
        make clean
      fi
    else
      if [ $INSTALL_NETCDF ]
      then
        echo "$NETCDF_DIR build NOT successful."
      else
        echo "$NETCDF_DIR (classic NetCDF-4) build NOT successful."
      fi      
    fi
    cd ..
  else
    echo "Directory $NETCDF_DIR doesn't exist"
  fi
else
  echo "Not building NetCDF C interface..."
fi

#--------------------------------------------------------------------
# NetCDF-fortran (this is for the Fortran interface only, for ESMF)
#--------------------------------------------------------------------
if [ "$INSTALL_NETCDF4_FORTRAN" ]
then
  if [ -d "$NETCDF4_FORTRAN_DIR" ]
  then
    cd $NETCDF4_FORTRAN_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $NETCDF4_FORTRAN_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $NETCDF4_FORTRAN_DIR..."
# This is for NetCDF 4.2
    export CPPFLAGS="-I$PREFIX/include"
    export LDFLAGS="-L$PREFIX/lib"
    ./configure --disable-shared --prefix\=$PREFIX  --enable-large-file-tests --enable-dap-remote-tests
    make all install
# This extra install needed b/c build sometimes fails on missing TeX pieces.
    make install
    if [ $? ]
    then
      echo "$NETCDF4_FORTRAN_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $NETCDF4_FORTRAN_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$NETCDF4_FORTRAN_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $NETCDF4_FORTRAN_DIR doesn't exist"
  fi
else
  echo "Not building NetCDF Fortran interface..."
fi

#--------------------------------------------------------------------
# NetCDF-CXX (this is for the C++ netcdf-3 interface only, for ESMF)
#--------------------------------------------------------------------
if [ "$INSTALL_NETCDF3_CXX" ]
then
  if [ -d "$NETCDF3_CXX_DIR" ]
  then
    cd $NETCDF3_CXX_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $NETCDF3_CXX_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $NETCDF3_CXX_DIR..."
# This is for NetCDF 4.2
    export CPPFLAGS="-I$PREFIX/include"
    export LDFLAGS="-L$PREFIX/lib"
    ./configure --disable-shared --prefix\=$PREFIX  --enable-large-file-tests
    make all install
    if [ $? ]
    then
      echo "$NETCDF3_CXX_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $NETCDF3_CXX_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$NETCDF3_CXX_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $NETCDF3_CXX_DIR doesn't exist"
  fi
else
  echo "Not building NetCDF C++ interface..."
fi

#--------------------------------------------------------------------
# NetCDF interface for ESMF
#--------------------------------------------------------------------
if [ "$INSTALL_NETCDF4_FOR_ESMF"]
then
  if [ -d "$NETCDF_ESMF_DIR" ]
  then
    cd $NETCDF_ESMF_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $NETCDF_ESMF_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $NETCDF_ESMF_DIR..."
    export LDFLAGS="-L$PREFIX/lib"
    export CPPFLAGS="-I$PREFIX/include"
#    export LIBS="-lhdf5_hl -lhdf5 -lsz -lz"
# Needed on a yellowstone
    export LIBS="-lhdf5_hl -lhdf5 -lsz -lz -ldl"
# Needed on a Debian system (k9.rap)
#     export LIBS='-lhdf5_hl -lhdf5 -lsz -lz -lrt -lcurl -lcrypto -lssl'
# Might be needed for other systems, like Macs.
#    export LIBS="-lhdf5_hl -lhdf5 -lsz -lm -lz -lcurl -lcrypto"
    ./configure --enable-netcdf-4 --enable-dap --disable-shared --prefix\=$PREFIX/esmfnetcdf  --enable-large-file-tests --enable-dap-remote-tests
    make all install
# This extra install needed b/c build sometimes fails on missing TeX pieces.
    make install
    if [ $? ]
    then
      echo "$NETCDF_ESMF_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $NETCDF_ESMF_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$NETCDF_ESMF_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $NETCDF_ESMF_DIR doesn't exist"
  fi
else
  echo "Not building NetCDF for ESMF..."
fi

#--------------------------------------------------------------------
# g2clib (GRIB2)
#
# For 64-bit systems, you need to edit the Makefile and add
# -D__64BIT__ on the DEFS line
#--------------------------------------------------------------------
if [ $INSTALL_G2CLIB ]
  then
  if [ -d "$G2CLIB_DIR" ]
  then
    export EXTRA_INC="-I$PREFIX/include"
#
# No clean check needed; this software is automatically
# cleaned after each build.
#
    echo "Building $G2CLIB_DIR..."
    cd $G2CLIB_DIR
    make all
    if [ $? ]
    then
      mv libgrib2c.a $PREFIX/lib
      cp grib2.h $PREFIX/include
      echo "$G2CLIB_DIR build successful."
#
# No clean check needed; this software is automatically
# cleaned after each build.
#
    else
      echo "$G2CLIB_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $G2CLIB_DIR doesn't exist"
  fi
else
  echo "Not building G2CLIB..."
fi

#--------------------------------------------------------------------
# PROJ.4
#--------------------------------------------------------------------
if [ $INSTALL_PROJ4 ]
  then
  if [ -d "$PROJ4_DIR" ]
  then
    cd $PROJ4_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $PROJ4_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $PROJ4_DIR..."
    ./configure --enable-static=yes --enable-shared=no --without-jni --prefix\=$PREFIX
    make all install
    if [ $? ]
    then
      echo "$PROJ4_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $PROJ4_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$PROJ4_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $PROJ4_DIR doesn't exist"
  fi
else
  echo "Not building PROJ4..."
fi

#--------------------------------------------------------------------
# GDAL
#--------------------------------------------------------------------
if [ $INSTALL_GDAL ]
  then
  if [ -d "$GDAL_DIR" ]
  then
    cd $GDAL_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $GDAL_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $GDAL_DIR..."
    ./configure --with-static-proj4\=$PREFIX --prefix\=$PREFIX --without-pam --with-png\=$PREFIX --with-gif=internal --with-libtiff=internal --with-geotiff=internal --with-jpeg\=$PREFIX --with-libz\=$PREFIX --with-sqlite3=no --with-expat=no --with-curl=no --without-ld-shared --with-hdf4=no --with-hdf5=no --with-pg=no --without-grib --disable-shared --with-freexl=no --with-geos=no --with-openjpeg=no --with-mysql=no --with-ecw=no --with-fdgb=no --with-odbc=no --with-xml2=no
    make all install
    make install
    if [ $? ]
    then
      echo "$GDAL_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $GDAL_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$GDAL_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $GDAL_DIR doesn't exist"
  fi
else
  echo "Not building GDAL..."
fi


#--------------------------------------------------------------------
# Udunits
# NOT NEEDED B/C PART OF NETCDF-4.1
#--------------------------------------------------------------------
if [ $INSTALL_UDUNITS ]
  then
  if [ -d "$UDUNITS_DIR" ]
  then
    export PERL=""
    cd $UDUNITS_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $UDUNITS_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $UDUNITS_DIR..."
    ./configure --prefix\=$PREFIX --disable-shared
    make all install
    if [ $? ]
    then
      echo "$UDUNITS_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $UDUNITS_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$UDUNITS_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $UDUNITS_DIR doesn't exist"
  fi
else
  echo "Not building UDUNITS..."
fi


#--------------------------------------------------------------------
# Vis5D+
#--------------------------------------------------------------------
if [ $INSTALL_VIS5DPLUS ]
  then
  if [ -d "$VIS5DPLUS_DIR" ]
  then
    cd $VIS5DPLUS_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $VIS5DPLUS_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $VIS5DPLUS_DIR..."
    ./configure --prefix\=$PREFIX --with-netcdf\=$PREFIX/lib/libnetcdf.a
    make all install
    if [ $? ]
    then
      echo "$VIS5DPLUS_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $VIS5DPLUS_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$VIS5DPLUS_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $VIS5DPLUS_DIR doesn't exist"
  fi
else
  echo "Not building VIS5DPLUS..."
fi

#--------------------------------------------------------------------
# pkg-config
#--------------------------------------------------------------------
if [ $INSTALL_PKGCONFIG ]
  then
  if [ -d "$PKGCONFIG_DIR" ]
  then
    cd $PKGCONFIG_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $PKGCONFIG_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $PKGCONFIG_DIR..."
    ./configure --prefix\=$PREFIX
    make all install
    if [ $? ]
    then
      echo "$PKGCONFIG_DIR build successful."
      export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig"
      export PATH="$PREFIX/bin:$PATH"
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $PKGCONFIG_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$PKGCONFIG_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $PKGCONFIG_DIR doesn't exist"
  fi
else
  echo "Not building pkgconfig..."
fi

#--------------------------------------------------------------------
# Expat
#--------------------------------------------------------------------
if [ $INSTALL_EXPAT ]
  then
  if [ -d "$EXPAT_DIR" ]
  then
    cd $EXPAT_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $EXPAT_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $EXPAT_DIR..."
    ./configure --disable-shared --prefix\=$PREFIX
    make all install
    if [ $? ]
    then
      echo "$EXPAT_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $EXPAT_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$EXPAT_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $EXPAT_DIR doesn't exist"
  fi
else
  echo "Not building expat..."
fi

#--------------------------------------------------------------------
# FreeType
#--------------------------------------------------------------------
if [ $INSTALL_FREETYPE ]
  then
  if [ -d "$FREETYPE_DIR" ]
  then
    cd $FREETYPE_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $FREETYPE_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $FREETYPE_DIR..."
    ./configure --prefix\=$PREFIX --disable-shared
    make all install
    if [ $? ]
    then
      echo "$FREETYPE_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $FREETYPE_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$FREETYPE_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $FREETYPE_DIR doesn't exist"
  fi
else
  echo "Not building FreeType..."
fi


#--------------------------------------------------------------------
# fontconfig
#--------------------------------------------------------------------
if [ $INSTALL_FONTCONFIG ]
  then
  if [ -d "$FONTCONFIG_DIR" ]
  then
    cd $FONTCONFIG_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $FONTCONFIG_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $FONTCONFIG_DIR..."
# You might need these two settings.
    export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig"
    export PATH="$PREFIX/bin:$PATH"

    ./configure --prefix\=$PREFIX --disable-shared
    make all install
    if [ $? ]
    then
      echo "$FONTCONFIG_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $FONTCONFIG_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$FONTCONFIG_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $FONTCONFIG_DIR doesn't exist"
  fi
else
  echo "Not building fontconfig..."
fi

#--------------------------------------------------------------------
# pixman
#--------------------------------------------------------------------
if [ $INSTALL_PIXMAN ]
  then
  if [ -d "$PIXMAN_DIR" ]
  then
    cd $PIXMAN_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $PIXMAN_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $PIXMAN_DIR..."
    ./configure --prefix\=$PREFIX --disable-shared --disable-openmp --disable-arm-iwmmxt --disable-dependency-tracking
    make all install
# Need this because some test fails with undefined "_lgc_seed"
    make install
    if [ $? ]
    then
      echo "$PIXMAN_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $PIXMAN_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$PIXMAN_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $PIXMAN_DIR doesn't exist"
  fi
else
  echo "Not building pixman..."
fi

#--------------------------------------------------------------------
# cairo
#--------------------------------------------------------------------
if [ $INSTALL_CAIRO ]
  then
  export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig"
  if [ -d "$CAIRO_DIR" ]
  then
    cd $CAIRO_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $CAIRO_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $CAIRO_DIR..."
    if [ "$os" == "Darwin" ]
    then
      ./configure --prefix\=$PREFIX --enable-quartz-font=no --enable-quartz=no --enable-shared=no --enable-static=yes
    else
      ./configure --prefix\=$PREFIX --disable-shared
    fi
    make all install
    if [ $? ]
    then
      echo "$CAIRO_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $CAIRO_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$CAIRO_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $CAIRO_DIR doesn't exist"
  fi
else
  echo "Not building cairo..."
fi

#--------------------------------------------------------------------
# Open SSL
# Should not be needed because OPeNDAP now part of NetCDF-4.1
#--------------------------------------------------------------------
if [ $INSTALL_OPENSSL ]
  then
  if [ -d "$OPENSSL_DIR" ]
  then
    cd $OPENSSL_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $OPENSSL_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $OPENSSL_DIR..."
    ./configure --prefix\=$PREFIX
    make all install
    if [ $? ]
    then
      echo "$OPENSSL_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $OPENSSL_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$OPENSSL_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $OPENSSL_DIR doesn't exist"
  fi
else
  echo "Not building Open SSL..."
fi

#--------------------------------------------------------------------
# libcurl
# Should not be needed because OPeNDAP now part of NetCDF-4.1
#--------------------------------------------------------------------
if [ $INSTALL_CURL ]
  then
  if [ -d "$CURL_DIR" ]
  then
    cd $CURL_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $CURL_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $CURL_DIR..."
    ./configure --prefix\=$PREFIX --with-zlib\=$PREFIX --with-pic --disable-shared
    make all install
    if [ $? ]
    then
      echo "$CURL_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $CURL_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$CURL_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $CURL_DIR doesn't exist"
  fi
else
  echo "Not building libcurl..."
fi

#--------------------------------------------------------------------
# libxml2
# Should not be needed because OPeNDAP now part of NetCDF-4.1
# But might be needed by cairo.
#--------------------------------------------------------------------
if [ $INSTALL_XML2 ]
  then
  if [ -d "$XML2_DIR" ]
  then
    cd $XML2_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $XML2_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $XML2_DIR..."
    ./configure --prefix\=$PREFIX --with-zlib\=$PREFIX --with-pic
    make all install
    if [ $? ]
    then
      echo "$XML2_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $XML2_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$XML2_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $XML2_DIR doesn't exist"
  fi
else
  echo "Not building libxml2..."
fi

#--------------------------------------------------------------------
# libdap
# Should not be needed because OPeNDAP now part of NetCDF-4.1
#--------------------------------------------------------------------
if [ $INSTALL_DAP ]
  then
  if [ -d "$DAP_DIR" ]
  then
    cd $DAP_DIR
    if [ $CLEAN_BEFORE ]
    then
      echo "Cleaning $DAP_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $DAP_DIR..."
    ./configure --prefix\=$PREFIX --with-zlib\=$PREFIX --with-pic
    make all install
    if [ $? ]
    then
      echo "$DAP_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $DAP_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$DAP_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $DAP_DIR doesn't exist"
  fi
else
  echo "Not building libdap..."
fi

#--------------------------------------------------------------------
# libncdap
# Should not be needed because OPeNDAP now part of NetCDF-4.1
#--------------------------------------------------------------------
if [ $INSTALL_NCDAP ]
  then
  if [ -d "$NCDAP_DIR" ]
  then
    cd $NCDAP_DIR
    if [ $CLEAN_AFTER ]
    then
      echo "Cleaning $NCDAP_DIR before making..."
      make distclean
      make clean
    fi
    echo "Building $NCDAP_DIR..."
    ./configure --prefix\=$PREFIX --enable-64bit --with-pic
    make all install
    if [ $? ]
    then
      echo "$NCDAP_DIR build successful."
      if [ $CLEAN_AFTER ]
      then
        echo "Cleaning $NCDAP_DIR after making..."
        make distclean
        make clean
      fi
    else
      echo "$NCDAP_DIR build NOT successful."
    fi
    cd ..
  else
    echo "Directory $NCDAP_DIR doesn't exist"
  fi
else
  echo "Not building libncdap..."
fi
