#-------------------------------------------------------------------------------#
# Initialize #
#-------------------------------------------------------------------------------#
AC_INIT([RNetCDF],[2.6-2])
#-------------------------------------------------------------------------------#
# Find the compiler and compiler options to use for tests #
#-------------------------------------------------------------------------------#
: ${R_HOME=`R RHOME`}
AS_IF([test -z "${R_HOME}"],
AC_MSG_ERROR([could not determine R_HOME])
)
CC=`"${R_HOME}/bin/R" CMD config CC`
CFLAGS=`"${R_HOME}/bin/R" CMD config CFLAGS`
# Prepend user-specified CPPFLAGS to those from R:
R_CPPFLAGS=`"${R_HOME}/bin/R" CMD config CPPFLAGS`
CPPFLAGS="$CPPFLAGS $R_CPPFLAGS"
#-------------------------------------------------------------------------------#
# Find sizes of selected data types #
#-------------------------------------------------------------------------------#
AC_CHECK_SIZEOF([int])
AC_CHECK_SIZEOF([long long])
AC_CHECK_SIZEOF([size_t])
#-------------------------------------------------------------------------------#
# Find NetCDF library and header files #
#-------------------------------------------------------------------------------#
AC_ARG_WITH([nc-config],
AS_HELP_STRING([--without-nc-config],
[do not use nc-config to get netcdf configuration]),
[],
[with_nc_config=yes])
AS_IF([test "x$with_nc_config" != xno],
[AC_CHECK_PROG(have_nc_config, nc-config, yes, no, [], [])]
)
AS_IF([test "x$have_nc_config" == xyes],
[
# Prepend linker flags to LDFLAGS:
AC_MSG_CHECKING(netcdf linker flags)
NETCDF_LIBS=`nc-config --libs`
AC_MSG_RESULT($NETCDF_LIBS)
LDFLAGS="$NETCDF_LIBS $LDFLAGS"
# Prepend preprocessor and compiler flags to CPPFLAGS:
AC_MSG_CHECKING(netcdf preprocessor and compiler flags)
NETCDF_CFLAGS=`nc-config --cflags`
AC_MSG_RESULT($NETCDF_CFLAGS)
CPPFLAGS="$NETCDF_CFLAGS $CPPFLAGS"
]
)
# Check that netcdf header files can be compiled:
AC_CHECK_HEADERS(netcdf.h, [],
AC_MSG_ERROR([netcdf.h was not compiled - defining CPPFLAGS may help]))
# Check that netcdf library can be found.
# Linker flags are prepended to LIBS if needed.
AC_SEARCH_LIBS(nc_open, netcdf, [],
AC_MSG_ERROR([netcdf library was not linked - defining LDFLAGS may help]))
# Check for the existence of optional netcdf routines.
# C preprocessor macros HAVE_routine are defined for existing routines.
AC_CHECK_FUNCS([nc_rename_grp nc_get_var_chunk_cache nc_inq_var_szip \
nc_inq_var_endian nc_def_var_filter nc_inq_var_filter_ids nc_inq_var_filter_info \
nc_create_par_fortran nc_open_par_fortran nc_var_par_access])
# Check for parallel header file.
AC_CHECK_HEADERS(netcdf_par.h, [], [], [#include <netcdf.h>])
# Check for filter header file.
AC_CHECK_HEADERS(netcdf_filter.h, [], [], [#include <netcdf.h>])
#-------------------------------------------------------------------------------#
# Find UDUNITS2 library and header files #
#-------------------------------------------------------------------------------#
# The udunits2 library depends on expat, which may need to be linked explicitly:
AC_SEARCH_LIBS(XML_ErrorString, expat)
# Check that selected routines from udunits2 can be used in programs,
# including udunits2 in LIBS if needed.
# Also search for udunits2.h on its own or in a subdirectory,
# and define macro HAVE_UDUNITS2_H or HAVE_UDUNITS2_UDUNITS2_H accordingly.
AC_SEARCH_LIBS(ut_read_xml, udunits2,
AC_CHECK_FUNC(ut_offset_by_time,
AC_CHECK_FUNC(ut_decode_time,
AC_CHECK_FUNC(ut_encode_time,
AC_CHECK_HEADERS(udunits2.h udunits2/udunits2.h,
[enable_calendar=yes; break]
)
)
)
)
)
# Define HAVE_LIBUDUNITS2 if all udunits2 checks were successful:
AS_IF([test "x$enable_calendar" == xyes],
AC_DEFINE(HAVE_LIBUDUNITS2),
AC_MSG_WARN([disabling calendar functions in RNetCDF])
)
#-------------------------------------------------------------------------------#
# Do substitution #
#-------------------------------------------------------------------------------#
AC_CONFIG_FILES([src/Makevars])
AC_OUTPUT
#-------------------------------------------------------------------------------#
# Done #
#-------------------------------------------------------------------------------#