mirror of
https://github.com/appelmar/gdalcubes.git
synced 2025-02-22 14:54:14 +01:00
768 lines
21 KiB
Text
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
|