Commit 7ca6e856 authored by Martin Pool's avatar Martin Pool

Commit getconf/socklen_t/largefile patch suggested by Albert Chin.

This is tested on
  Solaris 2.5.2, 2.6, 7, 8/SPARC, HP-UX 10.20, 11.00,
  Tru64 UNIX 4.0D, 5.0A, IRIX 6.2, 6.5, AIX 4.3.2
and it works ok.

This patch *requires* autoconf 2.52.
parent 74be4fc3
...@@ -22,81 +22,6 @@ AC_DEFUN(AC_VALIDATE_CACHE_SYSTEM_TYPE, [ ...@@ -22,81 +22,6 @@ AC_DEFUN(AC_VALIDATE_CACHE_SYSTEM_TYPE, [
ac_cv_target_system_type="$target" ac_cv_target_system_type="$target"
]) ])
#serial 12
dnl By default, many hosts won't let programs access large files;
dnl one must use special compiler options to get large-file access to work.
dnl For more details about this brain damage please see:
dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
dnl Written by Paul Eggert <eggert@twinsun.com>.
dnl Internal subroutine of AC_SYS_LARGEFILE.
dnl AC_SYS_LARGEFILE_TEST_INCLUDES
AC_DEFUN(AC_SYS_LARGEFILE_TEST_INCLUDES,
[[#include <sys/types.h>
int a[(off_t) 9223372036854775807 == 9223372036854775807 ? 1 : -1];
]])
dnl Internal subroutine of AC_SYS_LARGEFILE.
dnl AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR, COMMENT, INCLUDES, FUNCTION-BODY)
AC_DEFUN([AC_SYS_LARGEFILE_MACRO_VALUE],
[AC_CACHE_CHECK([for $1 value needed for large files], $3,
[$3=no
AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES
$5
,
[$6],
,
[AC_TRY_COMPILE([#define $1 $2]
AC_SYS_LARGEFILE_TEST_INCLUDES
$5
,
[$6],
[$3=$2])])])
if test "[$]$3" != no; then
AC_DEFINE_UNQUOTED([$1], [$]$3, [$4])
fi])
AC_DEFUN([AC_SYS_LARGEFILE],
[AC_ARG_ENABLE(largefile,
[ --disable-largefile omit support for large files])
if test "$enable_largefile" != no; then
AC_CACHE_CHECK([for special C compiler options needed for large files],
ac_cv_sys_largefile_CC,
[ac_cv_sys_largefile_CC=no
if test "$GCC" != yes; then
# IRIX 6.2 and later do not support large files by default,
# so use the C compiler's -n32 option if that helps.
AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, , ,
[ac_save_CC="$CC"
CC="$CC -n32"
AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, ,
ac_cv_sys_largefile_CC=' -n32')
CC="$ac_save_CC"])
fi])
if test "$ac_cv_sys_largefile_CC" != no; then
CC="$CC$ac_cv_sys_largefile_CC"
fi
AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64,
ac_cv_sys_file_offset_bits,
[Number of bits in a file offset, on hosts where this is settable.])
AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE, 1,
ac_cv_sys_largefile_source,
[Define to make ftello visible on some hosts (e.g. HP-UX 10.20).],
[#include <stdio.h>], [return !ftello;])
AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1,
ac_cv_sys_large_files,
[Define for large files, on AIX-style hosts.])
AC_SYS_LARGEFILE_MACRO_VALUE(_XOPEN_SOURCE, 500,
ac_cv_sys_xopen_source,
[Define to make ftello visible on some hosts (e.g. glibc 2.1.3).],
[#include <stdio.h>], [return !ftello;])
fi
])
dnl Check for socklen_t: historically on BSD it is an int, and in dnl Check for socklen_t: historically on BSD it is an int, and in
dnl POSIX 1g it is a type of its own, but some platforms use different dnl POSIX 1g it is a type of its own, but some platforms use different
dnl types for the argument to getsockopt, getpeername, etc. So we dnl types for the argument to getsockopt, getpeername, etc. So we
...@@ -108,50 +33,37 @@ dnl the moment. ...@@ -108,50 +33,37 @@ dnl the moment.
AC_DEFUN([TYPE_SOCKLEN_T], AC_DEFUN([TYPE_SOCKLEN_T],
[ [
AC_MSG_CHECKING([for socklen_t]) AC_CHECK_TYPE([socklen_t], ,[
AC_CACHE_VAL([lftp_cv_socklen_t],
[
lftp_cv_socklen_t=no
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>
],
[
socklen_t len;
getpeername(0,0,&len);
],
[
lftp_cv_socklen_t=yes
])
])
AC_MSG_RESULT($lftp_cv_socklen_t)
if test $lftp_cv_socklen_t = no; then
AC_MSG_CHECKING([for socklen_t equivalent]) AC_MSG_CHECKING([for socklen_t equivalent])
AC_CACHE_VAL([lftp_cv_socklen_t_equiv], AC_CACHE_VAL([rsync_cv_socklen_t_equiv],
[ [
lftp_cv_socklen_t_equiv=int # Systems have either "struct sockaddr *" or
AC_LANG_SAVE # "void *" as the second argument to getpeername
for t in int size_t unsigned long "unsigned long"; do rsync_cv_socklen_t_equiv=
AC_TRY_COMPILE([ for arg2 in "struct sockaddr" void; do
#include <sys/types.h> for t in int size_t unsigned long "unsigned long"; do
#include <sys/socket.h> AC_TRY_COMPILE([
], #include <sys/types.h>
[ #include <sys/socket.h>
$t len;
getpeername(0,0,&len); int getpeername (int, $arg2 *, $t *);
], ],[
[ $t len;
lftp_cv_socklen_t_equiv="$t" getpeername(0,0,&len);
break ],[
], rsync_cv_socklen_t_equiv="$t"
[ break
AC_MSG_ERROR([Cannot find a type to use in place of socklen_t]) ])
]) done
done done
if test "x$rsync_cv_socklen_t_equiv" = x; then
AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
fi
]) ])
AC_MSG_RESULT($lftp_cv_socklen_t_equiv) AC_MSG_RESULT($rsync_cv_socklen_t_equiv)
AC_DEFINE_UNQUOTED(socklen_t, $lftp_cv_socklen_t_equiv, AC_DEFINE_UNQUOTED(socklen_t, $rsync_cv_socklen_t_equiv,
[type to use in place of socklen_t if not defined]) [type to use in place of socklen_t if not defined])],
fi [#include <sys/types.h>
#include <sys/socket.h>])
]) ])
dnl Process this file with autoconf to produce a configure script. dnl Process this file with autoconf to produce a configure script.
AC_INIT(byteorder.h) AC_INIT(byteorder.h)
AC_CONFIG_HEADER(config.h) AC_CONFIG_HEADER(config.h)
AC_PREREQ(2.12) AC_PREREQ(2.52)
LDFLAGS=${LDFLAGS-""} LDFLAGS=${LDFLAGS-""}
...@@ -28,13 +28,6 @@ fi ...@@ -28,13 +28,6 @@ fi
CFLAGS="$CFLAGS -DHAVE_CONFIG_H" CFLAGS="$CFLAGS -DHAVE_CONFIG_H"
# look for getconf early as this affects just about everything
AC_CHECK_PROG(HAVE_GETCONF, getconf, "yes", "no")
if test $HAVE_GETCONF = "yes"; then
CFLAGS=$CFLAGS" "`getconf LFS_CFLAGS 2> /dev/null`
LDFLAGS=$LDFLAGS" "`getconf LFS_LDFLAGS 2> /dev/null`
fi
AC_ARG_WITH(included-popt, AC_ARG_WITH(included-popt,
[ --with-included-popt use bundled popt library, not from system]) [ --with-included-popt use bundled popt library, not from system])
...@@ -77,8 +70,7 @@ AC_TYPE_PID_T ...@@ -77,8 +70,7 @@ AC_TYPE_PID_T
AC_TYPE_GETGROUPS AC_TYPE_GETGROUPS
AC_STRUCT_ST_RDEV AC_STRUCT_ST_RDEV
AC_CHECK_TYPE([ino_t], [unsigned]) AC_CHECK_TYPE([ino_t], [unsigned])
dnl TYPE_SOCKLEN_T TYPE_SOCKLEN_T
AC_CHECK_TYPE([socklen_t], [size_t])
AC_CACHE_CHECK([for errno in errno.h],rsync_cv_errno, [ AC_CACHE_CHECK([for errno in errno.h],rsync_cv_errno, [
AC_TRY_COMPILE([#include <errno.h>],[int i = errno], AC_TRY_COMPILE([#include <errno.h>],[int i = errno],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment