You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ogdi/ogdi-3.2.1-rpc.patch

388 lines
11 KiB

From f37ca84ec1e2ef8e252cf2d047b14eb787eefd76 Mon Sep 17 00:00:00 2001
From: Dennis Schridde <devurandom@gmx.net>
Date: Tue, 28 Nov 2017 23:25:41 +0100
Subject: [PATCH] Fall back to libtirpc if libc does not provide rpc/rpc.h
---
config/generic.mak.in | 4 +-
configure | 245 +++++++++++++++++++++++++++++++++++++++++++++++++-
configure.in | 6 ++
ogdi-config.in | 4 +-
ogdi.pc.in | 4 +-
5 files changed, 255 insertions(+), 8 deletions(-)
diff --git a/config/generic.mak.in b/config/generic.mak.in
index 355a53a..12a15ce 100644
--- a/config/generic.mak.in
+++ b/config/generic.mak.in
@@ -35,7 +35,7 @@ AR = ar cr
# Compilation and linking flags
#
SHLIB_CFLAGS = @C_PIC@
-COMMON_CFLAGS = $(OPTIMIZATION) @CFLAGS@ @C_WFLAGS@ -DUNIX=1 @C_PIC@
+COMMON_CFLAGS = $(OPTIMIZATION) @CFLAGS@ @C_WFLAGS@ -DUNIX=1 @C_PIC@ @RPC_CFLAGS@
SHLIB_LDFLAGS = -shared
COMMON_LDFLAGS = $(OPTIMIZATION) @LDFLAGS@
@@ -61,7 +61,7 @@ INST_BIN = @bindir@
#
#RPC_LINKLIB = -lrpcsvc -lnsl -lsocket
#RPC_LINKLIB = -ldl -ldbmalloc
-RPC_LINKLIB = @LIBS@
+RPC_LINKLIB = @LIBS@ @RPC_LIBS@
#
# Endian definition, could be little or big
diff --git a/configure b/configure
index c69d337..54a75c0 100755
--- a/configure
+++ b/configure
@@ -634,6 +634,8 @@ PROJ_INCLUDE
PROJ_SETTING
BIG_ENDIAN
RPC_INCLUDES
+RPC_LIBS
+RPC_CFLAGS
EGREP
GREP
CPP
@@ -643,6 +645,9 @@ CXX_PIC
C_WFLAGS
CXX_WFLAGS
HAVE_ICONV
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
+PKG_CONFIG
OBJEXT
EXEEXT
ac_ct_CC
@@ -715,7 +720,12 @@ CFLAGS
LDFLAGS
LIBS
CPPFLAGS
-CPP'
+PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
+CPP
+RPC_CFLAGS
+RPC_LIBS'
# Initialize some variables set by options.
@@ -1355,7 +1365,14 @@ Some influential environment variables:
LIBS libraries to pass to the linker, e.g. -l<library>
CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
+ PKG_CONFIG path to pkg-config utility
+ PKG_CONFIG_PATH
+ directories to add to pkg-config's search path
+ PKG_CONFIG_LIBDIR
+ path overriding pkg-config's built-in search path
CPP C preprocessor
+ RPC_CFLAGS C compiler flags for RPC, overriding pkg-config
+ RPC_LIBS linker flags for RPC, overriding pkg-config
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
@@ -2879,6 +2896,126 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+ ac_pt_PKG_CONFIG=$PKG_CONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ac_pt_PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_pt_PKG_CONFIG" = x; then
+ PKG_CONFIG=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKG_CONFIG=$ac_pt_PKG_CONFIG
+ fi
+else
+ PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=0.9.0
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ PKG_CONFIG=""
+ fi
+fi
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
$as_echo_n "checking for dlopen in -ldl... " >&6; }
if ${ac_cv_lib_dl_dlopen+:} false; then :
@@ -3057,7 +3194,6 @@ HAVE_ICONV=$HAVE_ICONV
-
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -3455,6 +3591,111 @@ fi
done
+for ac_header in rpc/rpc.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "rpc/rpc.h" "ac_cv_header_rpc_rpc_h" "$ac_includes_default"
+if test "x$ac_cv_header_rpc_rpc_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_RPC_RPC_H 1
+_ACEOF
+
+else
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libtirpc" >&5
+$as_echo_n "checking for libtirpc... " >&6; }
+
+if test -n "$RPC_CFLAGS"; then
+ pkg_cv_RPC_CFLAGS="$RPC_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtirpc\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libtirpc") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_RPC_CFLAGS=`$PKG_CONFIG --cflags "libtirpc" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$RPC_LIBS"; then
+ pkg_cv_RPC_LIBS="$RPC_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libtirpc\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libtirpc") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_RPC_LIBS=`$PKG_CONFIG --libs "libtirpc" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ RPC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libtirpc" 2>&1`
+ else
+ RPC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libtirpc" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$RPC_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements (libtirpc) were not met:
+
+$RPC_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables RPC_CFLAGS
+and RPC_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables RPC_CFLAGS
+and RPC_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ RPC_CFLAGS=$pkg_cv_RPC_CFLAGS
+ RPC_LIBS=$pkg_cv_RPC_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+fi
+
+done
+
+
for ac_header in rpc/pmap_clnt.h float.h dlfcn.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
diff --git a/configure.in b/configure.in
index 0a1526b..ccdc7f3 100644
--- a/configure.in
+++ b/configure.in
@@ -23,6 +23,7 @@ fi
dnl Checks for programs.
AC_PROG_CC
+PKG_PROG_PKG_CONFIG
dnl We always want to check /usr/local for stuff.
dnl LIBS="$LIBS -L/usr/local/lib"
@@ -38,6 +39,11 @@ AC_COMPILER_WFLAGS
AC_COMPILER_PIC
AC_LD_SHARED
+dnl ---------------------------------------------------------------------------
+dnl Do we have rpc/rpc.h
+dnl ---------------------------------------------------------------------------
+AC_CHECK_HEADERS([rpc/rpc.h],,
+ [PKG_CHECK_MODULES([RPC], [libtirpc])])
dnl ---------------------------------------------------------------------------
dnl Do we have rpc/pmap_clnt.h, float.h, dlfcn.h?
diff --git a/ogdi-config.in b/ogdi-config.in
index f3c9a03..c6dfc50 100644
--- a/ogdi-config.in
+++ b/ogdi-config.in
@@ -13,8 +13,8 @@ exec_prefix="@exec_prefix@"
libdir="@libdir@"
includedir="@includedir@/ogdi"
libs="-logdi"
-all_libs="-logdi -lproj -lexpat -lz"
-I_opts="-I${includedir}"
+all_libs="-logdi -lproj -lexpat -lz @RPC_LIBS@"
+I_opts="-I${includedir} @RPC_CFLAGS@"
L_opts=""
R_opts=""
cppflags=""
diff --git a/ogdi.pc.in b/ogdi.pc.in
index 8b919de..1f290d9 100644
--- a/ogdi.pc.in
+++ b/ogdi.pc.in
@@ -6,7 +6,7 @@ includedir=@includedir@
Name: ogdi
Description: Open Geographic Datastore Interface
Version: @OGDI_VERSION@
-Cflags: -I${includedir}/ogdi
+Cflags: -I${includedir}/ogdi @RPC_CFLAGS@
Libs: -L${libdir} -logdi
-Libs.private: -lproj -lexpat -lz
+Libs.private: -lproj -lexpat -lz @RPC_LIBS@