gdalcubes/configure.ac
2024-03-04 11:54:34 +01:00

768 lines
21 KiB
Text

# Process this file with autoconf to produce a configure script.
AC_INIT([gdalcubes],[0.7.0],[marius.appel@hs-bochum.de])
AC_LANG(C++)
# find R home and set CC/CFLAGS
: ${R_HOME=`R RHOME`}
if test -z "${R_HOME}"; then
echo "could not determine R_HOME"
exit 1
fi
RBIN="${R_HOME}/bin/R"
CC=`"${RBIN}" CMD config CC`;
CFLAGS=`"${RBIN}" CMD config CFLAGS`;
AC_SUBST(R_HOME)
INLIBS="${LIBS}"
INCPPFLAGS="${CPPFLAGS}"
INPKG_CPPFLAGS="${PKG_CPPFLAGS}"
INPKG_LIBS="${PKG_LIBS}"
# C++11 ########################################################################################################
# 2019-10-04: remove C++11 test based on R version because package now dependes on R(>=3.4)
CXX11=`"${RBIN}" CMD config CXX11`
CXX11STD=`"${RBIN}" CMD config CXX11STD`
CXX="${CXX11} ${CXX11STD}"
AC_MSG_NOTICE([CC: ${CC}])
AC_MSG_NOTICE([CXX: ${CXX}])
# GDAL #########################################################################################################
# copied from https://github.com/r-spatial/sf/blob/master/configure.ac
GDAL_CONFIG="gdal-config"
GDAL_CONFIG_SET="no"
AC_ARG_WITH([gdal-config],
AS_HELP_STRING([--with-gdal-config=GDAL_CONFIG],[the location of gdal-config]),
[gdal_config=$withval])
if test [ -n "$gdal_config" ] ; then
GDAL_CONFIG_SET="yes"
AC_SUBST([GDAL_CONFIG],["${gdal_config}"])
AC_MSG_NOTICE(gdal-config set to $GDAL_CONFIG)
fi
if test ["$GDAL_CONFIG_SET" = "no"] ; then
AC_PATH_PROG([GDAL_CONFIG], ["$GDAL_CONFIG"],["no"])
if test ["$GDAL_CONFIG" = "no"] ; then
AC_MSG_RESULT(no)
AC_MSG_ERROR([gdal-config not found or not executable.])
fi
else
AC_MSG_CHECKING(gdal-config exists)
if test -r "${GDAL_CONFIG}"; then
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
AC_MSG_ERROR([gdal-config not found - configure argument error.])
fi
AC_MSG_CHECKING(gdal-config executable)
if test -x "${GDAL_CONFIG}"; then
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
AC_MSG_ERROR([gdal-config not executable.])
fi
fi
AC_MSG_CHECKING(gdal-config usability)
if test `${GDAL_CONFIG} --version`;
then
GDAL_CPPFLAGS=`${GDAL_CONFIG} --cflags`
GDAL_VERSION=`${GDAL_CONFIG} --version`
GDAL_LIBS=`${GDAL_CONFIG} --libs`
GDAL_DEP_LIBS=`${GDAL_CONFIG} --dep-libs`
GDAL_DATADIR=`${GDAL_CONFIG} --datadir`
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
echo "Error: gdal-config not found"
echo "The gdal-config script distributed with GDAL could not be found."
echo "If you have not installed the GDAL libraries, you can"
echo "download the source from http://www.gdal.org/"
echo "If you have installed the GDAL libraries, then make sure that"
echo "gdal-config is in your path. Try typing gdal-config at a"
echo "shell prompt and see if it runs. If not, use:"
echo " --configure-args='--with-gdal-config=/usr/local/bin/gdal-config'"
echo "with appropriate values for your installation."
echo ""
exit 1
fi
AC_MSG_NOTICE([GDAL: ${GDAL_VERSION}])
AC_MSG_CHECKING([GDAL version >= 2.0.1])
GDAL_MAJ_VER=`echo $GDAL_VERSION | cut -d "." -f1`
GDAL_MIN_VER=`echo $GDAL_VERSION | cut -d "." -f2`
GDAL_PATCH_VER=`echo $GDAL_VERSION | cut -d "." -f3`
if test ${GDAL_MAJ_VER} -lt 2 ; then
AC_MSG_RESULT(no)
AC_MSG_ERROR([gdalcubes is not compatible with GDAL versions below 2.0.1])
else
AC_MSG_RESULT(yes)
fi
AC_MSG_CHECKING([GDAL version != 3.6.0])
if test ${GDAL_MAJ_VER} = 3 && test ${GDAL_MIN_VER} = 6 && test ${GDAL_PATCH_VER} = 0 ; then
AC_MSG_RESULT(no)
AC_MSG_ERROR([GDAL 3.6.0 was retracted, use a subsequent version])
else
AC_MSG_RESULT(yes)
fi
INLIBS="${LIBS}"
INCPPFLAGS="${CPPFLAGS}"
INPKG_CPPFLAGS="${PKG_CPPFLAGS}"
INPKG_LIBS="${PKG_LIBS}"
AC_SUBST([PKG_CPPFLAGS], ["${INPKG_CPPFLAGS} ${GDAL_CPPFLAGS}"])
AC_SUBST([PKG_LIBS], ["${INPKG_LIBS} ${GDAL_LIBS}"])
# honor PKG_xx overrides
# for CPPFLAGS we will superfluously double R's flags
# since we'll set PKG_CPPFLAGS with this, but that shouldn't hurt
CPPFLAGS="${INCPPFLAGS} ${PKG_CPPFLAGS}"
gdalok=yes
AC_CHECK_HEADERS(gdal.h,,gdalok=no)
if test "${gdalok}" = no; then
AC_MSG_ERROR([gdal.h not found in given locations.])
fi
NEED_DEPS=no
LIBS="${INLIBS} ${PKG_LIBS}"
[cat > gdal_test.cpp <<_EOCONF
#include <gdal.h>
#ifdef __cplusplus
extern "C" {
#endif
int main(void) {
GDALAllRegister();
}
#ifdef __cplusplus
}
#endif
_EOCONF]
AC_MSG_CHECKING(GDAL: linking with --libs only)
${CXX} ${CPPFLAGS} -o gdal_test gdal_test.cpp ${LIBS} 2> errors.txt
if test `echo $?` -ne 0 ; then
gdalok=no
AC_MSG_RESULT(no)
else
AC_MSG_RESULT(yes)
fi
if test "${gdalok}" = no; then
AC_MSG_CHECKING(GDAL: linking with --libs and --dep-libs)
LIBS="${LIBS} ${GDAL_DEP_LIBS}"
gdalok=yes
${CXX} ${CPPFLAGS} -o gdal_test gdal_test.cpp ${LIBS} 2>> errors.txt
if test `echo $?` -ne 0 ; then
gdalok=no
fi
if test "${gdalok}" = yes; then
NEED_DEPS=yes
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
fi
if test "${gdalok}" = no; then
cat errors.txt
AC_MSG_NOTICE([Install failure: compilation and/or linkage problems.])
AC_MSG_ERROR([GDALAllRegister not found in libgdal.])
fi
rm -f gdal_test errors.txt gdal_test.cpp
GDAL_GE_250="no"
GDAL_MAJ_VER=`echo $GDAL_VERSION | cut -d "." -f1`
GDAL_MOD_VER=`echo $GDAL_VERSION | cut -d "." -f2`
if test "${GDAL_MAJ_VER}" = 2 ; then
if test "${GDAL_MOD_VER}" -ge 5 ; then
GDAL_GE_250="yes"
fi
else
if test "${GDAL_MAJ_VER}" -ge 3 ; then
GDAL_GE_250="yes"
fi
fi
GDAL_DATA_TEST_FILE="${GDAL_DATADIR}/pcs.csv"
AC_MSG_CHECKING(GDAL: ${GDAL_DATADIR}/pcs.csv readable)
if test -r "${GDAL_DATA_TEST_FILE}" ; then
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
if test "${GDAL_GE_250}" = "no" ; then
AC_MSG_ERROR([pcs.csv not found in GDAL data directory.])
fi
fi
# Optional local copy of GDAL datadir and PROJ_LIB
data_copy=no
AC_ARG_WITH([data-copy],
AS_HELP_STRING([--with-data-copy=yes/no],[local copy of data directories in package, default no]),
[data_copy=$withval])
if test "${data_copy}" = "yes" ; then
AC_MSG_NOTICE([Copy data for:])
proj_lib0="${PROJ_LIB}"
AC_ARG_WITH([proj-data],
AS_HELP_STRING([--with-proj-data=DIR],[location of PROJ data directory]),
[proj_lib1=$withval])
if test -n "${proj_lib0}" ; then
proj_lib="${proj_lib0}"
else
proj_lib="${proj_lib1}"
fi
if test -n "${proj_lib}" ; then
if test -d "${proj_lib}" ; then
cp -r "${proj_lib}" "${R_PACKAGE_DIR}"
AC_MSG_NOTICE([ PROJ: ${proj_lib}])
else
AC_MSG_ERROR([PROJ data files not found; set environment variable PROJ_LIB=DIR or --with-proj-data=DIR.])
fi
else
AC_MSG_ERROR([PROJ data files not found; set environment variable PROJ_LIB=DIR or --with-proj-data=DIR.])
fi
if test -d "${GDAL_DATADIR}" ; then
cp -r "${GDAL_DATADIR}" "${R_PACKAGE_DIR}"
AC_MSG_NOTICE([ GDAL: ${GDAL_DATADIR}])
else
AC_MSG_ERROR([GDAL data files not found.])
fi
fi
#
# test whether PROJ is available to gdal:
#
gdal_has_proj=no
[cat > gdal_proj.cpp <<_EOCONF
#include <gdal.h>
#include <ogr_srs_api.h>
#include <ogr_spatialref.h>
int main(int argc, char *argv[]) {
OGRSpatialReference *dest = new OGRSpatialReference;
OGRSpatialReference *src = new OGRSpatialReference;
src->importFromEPSG(4326);
dest->importFromEPSG(3857);
OGRCoordinateTransformation *ct = OGRCreateCoordinateTransformation(src, dest);
return(ct == NULL); // signals PROJ is not available through gdal
}
_EOCONF]
AC_MSG_CHECKING(GDAL: checking whether PROJ is available for linking:)
${CXX} ${CPPFLAGS} -o gdal_proj gdal_proj.cpp ${LIBS} 2> errors.txt
if test `echo $?` -ne 0 ; then
gdal_has_proj=no
AC_MSG_RESULT(no)
else
gdal_has_proj=yes
AC_MSG_RESULT(yes)
fi
if test "${gdal_has_proj}" = no; then
cat errors.txt
AC_MSG_NOTICE([Install failure: compilation and/or linkage problems.])
AC_MSG_ERROR([cannot link projection code])
fi
AC_MSG_CHECKING(GDAL: checking whether PROJ is available fur running:)
./gdal_proj
if test `echo $?` -ne 0 ; then
gdal_has_proj=no
AC_MSG_RESULT(no)
else
gdal_has_proj=yes
AC_MSG_RESULT(yes)
fi
if test "${gdal_has_proj}" = no; then
AC_MSG_ERROR([OGRCoordinateTransformation() does not return a coord.trans: PROJ not available?])
fi
rm -fr errors.txt gdal_proj.cpp gdal_proj
AC_MSG_NOTICE([GDAL: ${GDAL_VERSION}])
# sqlite3
AC_ARG_WITH([sqlite3-lib],
AS_HELP_STRING([--with-sqlite3-lib=LIB_PATH],[the location of sqlite3 libraries]),
[sqlite3_lib_path=$withval])
if test [ -n "$sqlite3_lib_path" ] ; then
AC_SUBST([SQLITE3_LIBS], ["-L${sqlite3_lib_path}"])
fi
# proj #########################################################################################################
# copied from https://github.com/r-spatial/sf/blob/master/configure.ac
PROJ_CONFIG="pkg-config proj"
if `$PROJ_CONFIG --exists` ; then
AC_MSG_NOTICE([pkg-config proj exists, will use it])
proj_config_ok=yes
else
proj_config_ok=no
fi
AC_ARG_WITH([proj-include],
AS_HELP_STRING([--with-proj-include=DIR],[location of proj header files]),
[proj_include_path=$withval])
if test [ -n "$proj_include_path" ] ; then
AC_SUBST([PROJ_CPPFLAGS],["-I${proj_include_path}"])
else
if test "${proj_config_ok}" = yes; then
PROJ_INCLUDE_PATH=`${PROJ_CONFIG} --cflags`
AC_SUBST([PROJ_CPPFLAGS],["${PROJ_INCLUDE_PATH}"])
fi
fi
# honor PKG_xx overrides
# for CPPFLAGS we will superfluously double R's flags
# since we'll set PKG_CPPFLAGS with this, but that shouldn't hurt
AC_ARG_WITH([proj-api],
AS_HELP_STRING([--with-proj-api=yes/no],[use the deprecated proj_api.h even when PROJ 6 is available; default no]),
[proj_api=$withval])
PROJ6="no"
PROJH="no"
if test "${proj_config_ok}" = yes; then
PROJ_VERSION=`${PROJ_CONFIG} --modversion`
PROJV1=`echo "${PROJ_VERSION}" | cut -c 1`
if test "${PROJV1}" -ge 6; then
PROJ6="yes"
PROJ_CPPFLAGS="${PROJ_CPPFLAGS} -DHAVE_PROJ_H"
if test "${proj_api}" = yes; then
AC_MSG_NOTICE([using proj_api.h even with PROJ 5/6])
PROJ_CPPFLAGS="${PROJ_CPPFLAGS} -DACCEPT_USE_OF_DEPRECATED_PROJ_API_H"
else
AC_MSG_NOTICE([using proj.h.])
PROJH="yes"
fi
fi
else
if test "${PROJH}" = no ; then
PROJH=yes
AC_CHECK_HEADERS(proj.h,,PROJH=no)
if test "${PROJH}" = yes; then
PROJ6="yes"
PROJ_CPPFLAGS="${PROJ_CPPFLAGS} -DHAVE_PROJ_H"
fi
fi
fi
CPPFLAGS="${INCPPFLAGS} ${PKG_CPPFLAGS} ${PROJ_CPPFLAGS}"
if test "${PROJH}" = no
then
proj4ok=yes
AC_CHECK_HEADERS(proj_api.h,,proj4ok=no)
if test "${proj4ok}" = no; then
AC_MSG_ERROR([proj_api.h not found in standard or given locations.])
fi
fi
# dnl ditto for a library path
AC_ARG_WITH([proj-lib],
AS_HELP_STRING([--with-proj-lib=LIB_PATH],[the location of proj libraries]),
[proj_lib_path=$withval])
if test [ -n "$proj_lib_path" ] ; then
AC_SUBST([PROJ_LIBS], ["-L${proj_lib_path} ${INPKG_LIBS} -lproj"])
else
if test "${proj_config_ok}" = yes; then
if test `uname` = "Darwin"; then
PROJ_LIB_PATH=`${PROJ_CONFIG} --libs --static`
else
PROJ_LIB_PATH=`${PROJ_CONFIG} --libs`
fi
AC_SUBST([PROJ_LIBS], ["${PROJ_LIB_PATH} ${INPKG_LIBS}"])
proj_version=`${PROJ_CONFIG} --modversion`
AC_MSG_NOTICE([PROJ: ${proj_version}])
else
PROJ_LIBS="${PKG_LIBS} -lproj"
fi
fi
LIBS="${PROJ_LIBS} ${INLIBS} ${PKG_LIBS}"
if test "${PROJH}" = no; then
proj4ok=yes
AC_CHECK_LIB(proj,pj_init_plus,,proj4ok=no)
if test "${proj4ok}" = no; then
AC_MSG_ERROR([libproj not found in standard or given locations.])
fi
[cat > proj_conf_test.c <<_EOCONF
#include <stdio.h>
#include <stdlib.h>
#include <proj_api.h>
int main(void) {
printf("%d\n", PJ_VERSION);
exit(0);
}
_EOCONF]
else
[cat > proj_conf_test.cpp <<_EOCONF
#include <stdio.h>
#include <stdlib.h>
#include <proj.h>
int main(void) {
proj_context_create();
exit(0);
}
_EOCONF]
#AC_CHECK_LIB(proj,proj_context_create,,proj6ok=no)
AC_MSG_CHECKING(PROJ: checking whether PROJ and sqlite3 are available for linking:)
${CXX} ${CPPFLAGS} -o proj_conf_test proj_conf_test.cpp ${LIBS} $SQLITE3_LIBS -lsqlite3 2> errors.txt
if test `echo $?` -ne 0 ; then
proj6ok=no
AC_MSG_RESULT(no)
else
proj6ok=yes
AC_MSG_RESULT(yes)
fi
if test "${proj6ok}" = no; then
AC_MSG_ERROR([libproj or sqlite3 not found in standard or given locations.])
fi
[cat > proj_conf_test.c <<_EOCONF
#include <stdio.h>
#include <stdlib.h>
#include <proj.h>
int main(void) {
printf("%d.%d.%d\n", PROJ_VERSION_MAJOR, PROJ_VERSION_MINOR, PROJ_VERSION_PATCH);
exit(0);
}
_EOCONF]
fi
#AC_MSG_NOTICE([PKG_LIBS: ${PKG_LIBS}])
${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS}
proj_version=`./proj_conf_test`
AC_ARG_WITH([proj-share],
AS_HELP_STRING([--with-proj-share=SHARE_PATH],[the location of proj metadata files]),
[proj_share_path=$withval])
if test [ -n "$proj_share_path" ] ; then
AC_MSG_NOTICE([PROJ_LIB: ${proj_share_path}])
fi
if test ${PROJ6} = "no"; then
[cat > proj_conf_test.c <<_EOCONF
#include <stdio.h>
#include <proj_api.h>
#if PJ_VERSION <= 480
FILE *pj_open_lib(projCtx, const char *, const char *);
#endif
int main(void) {
#if PJ_VERSION <= 480
FILE *fp;
#else
PAFile fp;
#endif
projCtx ctx;
ctx = pj_get_default_ctx();
fp = pj_open_lib(ctx, "epsg", "rb");
if (fp == NULL) exit(1);
#if PJ_VERSION <= 480
fclose(fp);
#else
pj_ctx_fclose(ctx, fp);
#endif
exit(0);
}
_EOCONF]
${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS}
if test [ -n "$proj_share_path" ] ; then
PROJ_LIB="${proj_share_path}" ./proj_conf_test
proj_share=`echo $?`
else
./proj_conf_test
proj_share=`echo $?`
fi
AC_MSG_CHECKING(PROJ: epsg found and readable)
if test ${proj_share} -eq 1 ; then
AC_MSG_RESULT(no)
STOP="stop"
else
AC_MSG_RESULT(yes)
fi
rm -f proj_conf_test.c proj_conf_test
if test "$STOP" = "stop" ; then
echo "Error: proj/epsg not found"
echo "Either install missing proj support files, for example"
echo "the proj-nad and proj-epsg RPMs on systems using RPMs,"
echo "or if installed but not autodetected, set PROJ_LIB to the"
echo "correct path, and if need be use the --with-proj-share="
echo "configure argument."
exit 1
fi
else # proj >= 6
if test "${PROJH}" = no; then
[cat > proj_conf_test.c <<_EOCONF
#include <stdio.h>
#include <proj_api.h>
int main(void) {
PAFile fp;
projCtx ctx;
ctx = pj_get_default_ctx();
fp = pj_open_lib(ctx, "proj.db", "rb");
if (fp == NULL) exit(1);
pj_ctx_fclose(ctx, fp);
exit(0);
}
_EOCONF]
${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS}
if test [ -n "$proj_share_path" ] ; then
PROJ_LIB="${proj_share_path}" ./proj_conf_test
proj_share=`echo $?`
else
./proj_conf_test
proj_share=`echo $?`
fi
AC_MSG_CHECKING(PROJ: proj.db found and readable)
if test ${proj_share} -eq 1 ; then
AC_MSG_RESULT(no)
STOP="stop"
else
AC_MSG_RESULT(yes)
fi
rm -f proj_conf_test.c proj_conf_test
if test "$STOP" = "stop" ; then
echo "Error: proj/proj.db not found"
echo "Either install missing proj support files, set PROJ_LIB to the"
echo "correct path, and if need be use the --with-proj-share="
echo "configure argument."
exit 1
fi
[cat > proj_conf_test.c <<_EOCONF
#include <stdio.h>
#include <proj_api.h>
#if PJ_VERSION <= 480
FILE *pj_open_lib(projCtx, const char *, const char *);
#endif
int main(void) {
#if PJ_VERSION <= 480
FILE *fp;
#else
PAFile fp;
#endif
projCtx ctx;
ctx = pj_get_default_ctx();
fp = pj_open_lib(ctx, "conus", "rb");
if (fp == NULL) exit(1);
#if PJ_VERSION <= 480
fclose(fp);
#else
pj_ctx_fclose(ctx, fp);
#endif
exit(0);
}
_EOCONF]
${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS}
if test [ -n "$proj_share_path" ] ; then
PROJ_LIB="${proj_share_path}" ./proj_conf_test
proj_share=`echo $?`
else
./proj_conf_test
proj_share=`echo $?`
fi
AC_MSG_CHECKING(PROJ: conus found and readable)
if test ${proj_share} -eq 1 ; then
WARN="warn"
AC_MSG_RESULT(no)
else
AC_MSG_RESULT(yes)
fi
rm -f proj_conf_test.c proj_conf_test
if test "$WARN" = "warn" ; then
echo "Note: proj/conus not found"
echo "No support available in PROJ4 for NAD grid datum transformations"
echo "If required, consider re-installing from source with the contents"
echo "of proj-datumgrid-1.<latest>.zip from http://download.osgeo.org/proj/ in nad/."
fi
fi # PROJH = no
fi # proj >= 6
# NetCDF #######################################################################################################
# largely copied from https://github.com/cran/ncdf4/blob/master/tools/netcdf.m4
AC_LANG_PUSH([C])
err=0
if test x$NC_CONFIG = x; then
NC_CONFIG_SHORT=nc-config
NC_CONFIG_FULLQUAL=nc-config
NC_CONFIG_PATH=$PATH
else
echo "user specified nc-config is $NC_CONFIG"
NC_CONFIG_SHORT=`basename $NC_CONFIG`
NC_CONFIG_FULLQUAL=$NC_CONFIG
NC_CONFIG_PATH=`dirname $NC_CONFIG`
fi
AC_CHECK_PROG( HAS_NC_CONFIG, [$NC_CONFIG_SHORT], [yes], [no], [$NC_CONFIG_PATH] )
if test x$HAS_NC_CONFIG = xno; then
echo "-----------------------------------------------------------------------------------"
echo "Error, nc-config not found or not executable. This is a script that comes with the"
echo "netcdf library, version 4.1-beta2 or later, and must be present for configuration"
echo "to succeed."
echo " "
echo "If you installed the netcdf library (and nc-config) in a standard location, nc-config"
echo "should be found automatically. Otherwise, you can specify the full path and name of"
echo "the nc-config script by passing the --with-nc-config=/full/path/nc-config argument"
echo "flag to the configure script. For example:"
echo " "
echo "./configure --with-nc-config=/sw/dist/netcdf4/bin/nc-config"
echo " "
echo "Special note for R users:"
echo "-------------------------"
echo "To pass the configure flag to R, use something like this:"
echo " "
echo "R CMD INSTALL --configure-args=\"--with-nc-config=/home/joe/bin/nc-config\" ncdf4"
echo " "
echo "where you should replace /home/joe/bin etc. with the location where you have"
echo "installed the nc-config script that came with the netcdf 4 distribution."
echo "-----------------------------------------------------------------------------------"
exit -1
fi
dnl
NETCDF_CC=`$NC_CONFIG_FULLQUAL --cc`
NETCDF_LDFLAGS=`$NC_CONFIG_FULLQUAL --libs`
NETCDF_CPPFLAGS=`$NC_CONFIG_FULLQUAL --cflags`
NETCDF_VERSION=`$NC_CONFIG_FULLQUAL --version`
dnl
dnl -------------------------------------------------------------------
dnl Convert the --libs string to a rpath string.
dnl Example input string:
dnl "-L/home/pierce/src/packages/data/netcdf/netcdf-4.1.2/install/lib -lnetcdf -L/home/pierce/lib -lhdf5_hl -lhdf5 -lz -lcurl -Wl,-Bsymbolic-functions -lgssapi_krb5"
dnl Example output string:
dnl "-Wl,-rpath,/home/pierce/src/packages/data/netcdf/netcdf-4.1.2/install/lib -Wl,-rpath,/home/pierce/lib"
dnl -------------------------------------------------------------------
NETCDF_RPATH=' '
echo "netcdf.m4: about to set rpath, here is source string: >$NETCDF_LDFLAGS<"
for word in $NETCDF_LDFLAGS; do
v2=`expr "$word" : '-L/'`
if test $v2 -eq 3; then
slibdir=${word:2}
NETCDF_RPATH="$NETCDF_RPATH -Wl,-rpath,$slibdir"
fi
done
echo "netcdf.m4: final rpath: $NETCDF_RPATH"
dnl
dnl The following will be either "yes" or "no"
NETCDF_V4=`$NC_CONFIG_FULLQUAL --has-nc4`
dnl
dnl If we get here, we assume that netcdf exists. It might not if, for example,
dnl the package was installed and nc-config is present, but then the libraries
dnl were erased. Assume such deliberately broken behavior is not the case.
dnl
AC_DEFINE([HAVE_NETCDF],1,[Define if you have the NETCDF library, either v3 or v4])
dnl
if test x$NETCDF_V4 = xyes; then
AC_DEFINE([HAVE_NETCDF4],1,[Define if you have version 4 of the NETCDF library])
fi
dnl -----------------------------------------------------------------------------------
dnl At this piont, $NETCDF_V4 will be either "yes" or "no"
dnl
echo "Netcdf library version: $NETCDF_VERSION"
echo "Netcdf library has version 4 interface present: $NETCDF_V4"
echo "Netcdf library was compiled with C compiler: $NETCDF_CC"
dnl
dnl Export our variables
dnl
AC_SUBST(NETCDF_CPPFLAGS)
AC_SUBST(NETCDF_LDFLAGS)
AC_SUBST(NETCDF_LIBS)
AC_SUBST(NETCDF_VERSION)
AC_SUBST(NETCDF_CC)
AC_SUBST(NETCDF_RPATH)
if test $NETCDF_V4 = "no"; then
echo "-------------------------------------------------------------------"
echo "gdalcubes REQUIRES the netcdf library be version 4 or above,"
echo "AND installed with HDF-5 support (i.e., the netcdf library must be"
echo "compiled with the --enable-netcdf-4 flag)."
echo "-------------------------------------------------------------------"
exit -1
fi
HAVE_NETCDF=TRUE
NETCDF_LDFLAGS="$NETCDF_RPATH $NETCDF_LDFLAGS $LDFLAGS"
AC_SUBST(NETCDF_CPPFLAGS)
AC_SUBST(NETCDF_LDFLAGS)
AC_SUBST(NETCDF_RPATH)
AC_SUBST(HAVE_NETCDF)
AC_LANG_POP([C])
# Bringing everything together #################################################################################
AC_SUBST([PKG_CPPFLAGS], ["${INPKG_CPPFLAGS} ${PROJ_CPPFLAGS} ${GDAL_CPPFLAGS} ${NETCDF_CPPFLAGS} -DR_PACKAGE -DGDALCUBES_NO_SWARM"])
AC_SUBST([PKG_LIBS], ["${INPKG_LIBS} ${GDAL_LIBS} ${PROJ_LIBS} ${NETCDF_LDFLAGS}"])
if test "${NEED_DEPS}" = yes; then
AC_SUBST([PKG_LIBS], ["${PKG_LIBS} ${GDAL_DEP_LIBS}"])
fi
AC_MSG_NOTICE([Package CPP flags: ${PKG_CPPFLAGS}])
AC_MSG_NOTICE([Package LIBS: ${PKG_LIBS}])
AC_CONFIG_FILES([src/Makevars])
AC_OUTPUT