Annotation of embedaddon/rsync/configure.ac, revision 1.1.1.4

1.1       misho       1: dnl Process this file with autoconf to produce a configure script.
                      2: 
1.1.1.4 ! misho       3: AC_INIT([rsync],[ ],[https://rsync.samba.org/bug-tracking.html])
1.1.1.3   misho       4: 
                      5: AC_CONFIG_MACRO_DIR([m4])
1.1       misho       6: AC_CONFIG_SRCDIR([byteorder.h])
                      7: AC_CONFIG_HEADER(config.h)
1.1.1.3   misho       8: AC_PREREQ([2.69])
1.1       misho       9: 
1.1.1.4 ! misho      10: PACKAGE_VERSION=`sed 's/.*"\(.*\)".*/\1/' <$srcdir/version.h`
1.1       misho      11: 
1.1.1.4 ! misho      12: AC_MSG_NOTICE([Configuring rsync $PACKAGE_VERSION])
1.1       misho      13: 
                     14: LDFLAGS=${LDFLAGS-""}
                     15: 
                     16: AC_CANONICAL_HOST
                     17: 
1.1.1.3   misho      18: dnl define the directory for replacement function since AC_LIBOBJ does not
                     19: dnl officially support subdirs and fails with automake
                     20: AC_CONFIG_LIBOBJ_DIR([lib])
                     21: 
1.1       misho      22: # We must decide this before testing the compiler.
                     23: 
                     24: # Please allow this to default to yes, so that your users have more
                     25: # chance of getting a useful stack trace if problems occur.
                     26: 
                     27: AC_MSG_CHECKING([whether to include debugging symbols])
                     28: AC_ARG_ENABLE(debug,
1.1.1.3   misho      29:        AS_HELP_STRING([--disable-debug],[disable debugging symbols and features]))
1.1       misho      30: 
                     31: if test x"$enable_debug" = x"no"; then
                     32:     AC_MSG_RESULT(no)
                     33:     ac_cv_prog_cc_g=no
                     34: else
                     35:     AC_MSG_RESULT([yes])
                     36:     dnl AC_DEFINE(DEBUG, 1, [Define to turn on debugging code that may slow normal operation])
                     37:     # leave ac_cv_prog_cc_g alone; AC_PROG_CC will try to include -g if it can
                     38: fi
                     39: 
                     40: dnl Checks for programs.
                     41: AC_PROG_CC
                     42: AC_PROG_CPP
1.1.1.4 ! misho      43: AC_PROG_CXX
        !            44: AC_PROG_AWK
1.1       misho      45: AC_PROG_EGREP
                     46: AC_PROG_INSTALL
1.1.1.2   misho      47: AC_PROG_MKDIR_P
1.1       misho      48: AC_PROG_CC_STDC
                     49: AC_SUBST(SHELL)
1.1.1.3   misho      50: AC_PATH_PROG([PERL], [perl])
1.1.1.4 ! misho      51: AC_PATH_PROG([PYTHON3], [python3])
1.1       misho      52: 
                     53: AC_DEFINE([_GNU_SOURCE], 1,
                     54:           [Define _GNU_SOURCE so that we get all necessary prototypes])
                     55: 
                     56: if test x"$ac_cv_prog_cc_stdc" = x"no"; then
                     57:        AC_MSG_WARN([rsync requires an ANSI C compiler and you do not seem to have one])
                     58: fi
                     59: 
1.1.1.4 ! misho      60: no_lib=''
        !            61: err_msg=''
        !            62: nl='
        !            63: '
        !            64: 
1.1       misho      65: AC_ARG_ENABLE(profile,
1.1.1.3   misho      66:        AS_HELP_STRING([--enable-profile],[turn on CPU profiling]))
1.1       misho      67: if test x"$enable_profile" = x"yes"; then
                     68:        CFLAGS="$CFLAGS -pg"
                     69: fi
                     70: 
1.1.1.4 ! misho      71: AC_MSG_CHECKING([if md2man can create man pages])
        !            72: if test x"$ac_cv_path_PYTHON3" = x; then
        !            73:     AC_MSG_RESULT(no - python3 not found)
        !            74:     md2man_works=no
        !            75: else
        !            76:     md2man_out=`"$srcdir/md2man" --test "$srcdir/rsync-ssl.1.md" 2>&1`
        !            77:     if test $? = 0; then
        !            78:        AC_MSG_RESULT(yes)
        !            79:        md2man_works=yes
        !            80:     else
        !            81:        AC_MSG_RESULT(no)
        !            82:        md2man_works=no
        !            83:        echo "$md2man_out"
        !            84:     fi
        !            85: fi
        !            86: 
        !            87: AC_MSG_CHECKING([if we require man-page building])
        !            88: AC_ARG_ENABLE([md2man],
        !            89:        AS_HELP_STRING([--disable-md2man],[disable md2man for man page creation]))
        !            90: if test x"$enable_md2man" != x"no"; then
        !            91:     if test -f "$srcdir/rsync.1"; then
        !            92:        AC_MSG_RESULT(optional)
        !            93:     else
        !            94:        AC_MSG_RESULT(required)
        !            95:        if test x"$md2man_works" = x"no"; then
        !            96:            err_msg="$err_msg$nl- You need python3 and either the cmarkgfm OR commonmark python3 lib in order"
        !            97:            err_msg="$err_msg$nl  to build man pages based on the git source (man pages are included in the"
        !            98:            err_msg="$err_msg$nl  official release tar files)."
        !            99:            no_lib="$no_lib md2man"
        !           100:        fi
        !           101:     fi
        !           102:     MAKE_MAN=man
        !           103: else
        !           104:     AC_MSG_RESULT(no)
        !           105:     MAKE_MAN=''
        !           106: fi
1.1       misho     107: 
                    108: # Specifically, this turns on panic_action handling.
                    109: AC_ARG_ENABLE(maintainer-mode,
1.1.1.3   misho     110:        AS_HELP_STRING([--enable-maintainer-mode],[turn on extra debug features]))
1.1       misho     111: if test x"$enable_maintainer_mode" = x"yes"; then
                    112:        CFLAGS="$CFLAGS -DMAINTAINER_MODE"
                    113: fi
                    114: 
                    115: # This is needed for our included version of popt.  Kind of silly, but
                    116: # I don't want our version too far out of sync.
                    117: CFLAGS="$CFLAGS -DHAVE_CONFIG_H"
                    118: 
                    119: # If GCC, turn on warnings.
                    120: if test x"$GCC" = x"yes"; then
                    121:        CFLAGS="$CFLAGS -Wall -W"
                    122: fi
                    123: 
                    124: AC_ARG_WITH(included-popt,
1.1.1.3   misho     125:         AS_HELP_STRING([--with-included-popt],[use bundled popt library, not from system]))
1.1       misho     126: 
1.1.1.2   misho     127: AC_ARG_WITH(included-zlib,
1.1.1.3   misho     128:         AS_HELP_STRING([--with-included-zlib],[use bundled zlib library, not from system]))
1.1.1.2   misho     129: 
                    130: AC_ARG_WITH(protected-args,
1.1.1.3   misho     131:         AS_HELP_STRING([--with-protected-args],[make --protected-args option the default]))
1.1.1.2   misho     132: if test x"$with_protected_args" = x"yes"; then
                    133:        AC_DEFINE_UNQUOTED(RSYNC_USE_PROTECTED_ARGS, 1, [Define to 1 if --protected-args should be the default])
                    134: fi
                    135: 
1.1       misho     136: AC_ARG_WITH(rsync-path,
1.1.1.3   misho     137:        AS_HELP_STRING([--with-rsync-path=PATH],[set default --rsync-path to PATH (default: rsync)]),
1.1       misho     138:        [ RSYNC_PATH="$with_rsync_path" ],
                    139:        [ RSYNC_PATH="rsync" ])
                    140: 
                    141: AC_DEFINE_UNQUOTED(RSYNC_PATH, "$RSYNC_PATH", [location of rsync on remote machine])
                    142: 
                    143: AC_ARG_WITH(rsyncd-conf,
1.1.1.3   misho     144:        AS_HELP_STRING([--with-rsyncd-conf=PATH],[set configuration file for rsync server to PATH (default: /etc/rsyncd.conf)]),
1.1       misho     145:        [ if test ! -z "$with_rsyncd_conf" ; then
                    146:                case $with_rsyncd_conf in
                    147:                        yes|no)
                    148:                                RSYNCD_SYSCONF="/etc/rsyncd.conf"
                    149:                                ;;
                    150:                        /*)
                    151:                                RSYNCD_SYSCONF="$with_rsyncd_conf"
                    152:                                ;;
                    153:                        *)
                    154:                                 AC_MSG_ERROR(You must specify an absolute path to --with-rsyncd-conf=PATH)
                    155:                                ;;
                    156:                esac
                    157:        else
                    158:                RSYNCD_SYSCONF="/etc/rsyncd.conf"
                    159:        fi ],
                    160:        [ RSYNCD_SYSCONF="/etc/rsyncd.conf" ])
                    161: 
                    162: AC_DEFINE_UNQUOTED(RSYNCD_SYSCONF, "$RSYNCD_SYSCONF", [location of configuration file for rsync server])
                    163: 
                    164: AC_ARG_WITH(rsh,
1.1.1.3   misho     165:        AS_HELP_STRING([--with-rsh=CMD],[set remote shell command to CMD (default: ssh)]))
1.1       misho     166: 
                    167: AC_CHECK_PROG(HAVE_REMSH, remsh, 1, 0)
                    168: if test x$HAVE_REMSH = x1; then
                    169:        AC_DEFINE(HAVE_REMSH, 1, [Define to 1 if remote shell is remsh, not rsh])
                    170: fi
                    171: 
                    172: if test x"$with_rsh" != x; then
                    173:        RSYNC_RSH="$with_rsh"
                    174: else
                    175:        RSYNC_RSH="ssh"
                    176: fi
                    177: AC_DEFINE_UNQUOTED(RSYNC_RSH, "$RSYNC_RSH", [default -e command])
                    178: 
1.1.1.2   misho     179: # Some programs on solaris are only found in /usr/xpg4/bin (or work better than others versions).
                    180: AC_PATH_PROG(SHELL_PATH, sh, /bin/sh, [/usr/xpg4/bin$PATH_SEPARATOR$PATH])
                    181: AC_PATH_PROG(FAKEROOT_PATH, fakeroot, /usr/bin/fakeroot, [/usr/xpg4/bin$PATH_SEPARATOR$PATH])
                    182: 
1.1       misho     183: AC_ARG_WITH(nobody-group,
1.1.1.3   misho     184:     AS_HELP_STRING([--with-nobody-group=GROUP],[set the default unprivileged group (default nobody or nogroup)]),
1.1       misho     185:     [ NOBODY_GROUP="$with_nobody_group" ])
                    186: 
                    187: if test x"$with_nobody_group" = x; then
                    188:     AC_MSG_CHECKING([the group for user "nobody"])
                    189:     if grep '^nobody:' /etc/group >/dev/null 2>&1; then
                    190:        NOBODY_GROUP=nobody
                    191:     elif grep '^nogroup:' /etc/group >/dev/null 2>&1; then
                    192:        NOBODY_GROUP=nogroup
                    193:     else
                    194:        NOBODY_GROUP=nobody # test for others?
                    195:     fi
                    196:     AC_MSG_RESULT($NOBODY_GROUP)
                    197: fi
                    198: 
                    199: AC_DEFINE_UNQUOTED(NOBODY_USER, "nobody", [unprivileged user--e.g. nobody])
                    200: AC_DEFINE_UNQUOTED(NOBODY_GROUP, "$NOBODY_GROUP", [unprivileged group for unprivileged user])
                    201: 
1.1.1.4 ! misho     202: # SIMD optimizations
        !           203: SIMD=
        !           204: 
        !           205: AC_MSG_CHECKING([whether to enable SIMD optimizations])
        !           206: AC_ARG_ENABLE(simd,
        !           207:     AS_HELP_STRING([--disable-simd],[disable SIMD optimizations (requires c++)]))
        !           208: 
        !           209: # Clag is crashing with -g -O2, so we'll get rid of -g for now.
        !           210: CXXFLAGS=`echo "$CXXFLAGS" | sed 's/-g //'`
        !           211: 
        !           212: if test x"$enable_simd" != x"no"; then
        !           213:     # For x86-64 SIMD, g++ >=5 or clang++ >=7 is required
        !           214:     if test x"$build_cpu" = x"x86_64"; then
        !           215:        AC_LANG(C++)
        !           216:        AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>
        !           217: #include <immintrin.h>
        !           218: __attribute__ ((target("default"))) int test_ssse3(int x) { return x; }
        !           219: __attribute__ ((target("default"))) int test_sse2(int x) { return x; }
        !           220: __attribute__ ((target("default"))) int test_avx2(int x) { return x; }
        !           221: __attribute__ ((target("ssse3"))) int test_ssse3(int x) { return x; }
        !           222: __attribute__ ((target("sse2"))) int test_sse2(int x) { return x; }
        !           223: __attribute__ ((target("avx2"))) int test_avx2(int x) { return x; }
        !           224: typedef long long __m128i_u __attribute__((__vector_size__(16), __may_alias__, __aligned__(1)));
        !           225: typedef long long __m256i_u __attribute__((__vector_size__(32), __may_alias__, __aligned__(1)));
        !           226: __attribute__ ((target("default"))) void more_testing(char* buf, int len) { }
        !           227: __attribute__ ((target("ssse3"))) void more_testing(char* buf, int len)
        !           228: {
        !           229:     int i;
        !           230:     for (i = 0; i < (len-32); i+=32) {
        !           231:        __m128i in8_1, in8_2;
        !           232:        in8_1 = _mm_lddqu_si128((__m128i_u*)&buf[i]);
        !           233:        in8_2 = _mm_lddqu_si128((__m128i_u*)&buf[i + 16]);
        !           234:     }
        !           235: }
        !           236: ]], [[if (test_ssse3(42) != 42 || test_sse2(42) != 42 || test_avx2(42) != 42) exit(1);]])],[CXX_OK=yes],[CXX_OK=no])
        !           237:        AC_LANG(C)
        !           238:        if test x"$CXX_OK" = x"yes"; then
        !           239:            # AC_MSG_RESULT() is called below.
        !           240:            SIMD="x86_64"
        !           241:        elif test x"$enable_simd" = x"yes"; then
        !           242:            AC_MSG_RESULT(error)
        !           243:            AC_MSG_ERROR(The SIMD compilation test failed.
        !           244: Omit --enable-simd to continue without it.)
        !           245:        fi
        !           246:     elif test x"$enable_simd" = x"yes"; then
        !           247:         AC_MSG_RESULT(unavailable)
        !           248:         AC_MSG_ERROR(The SIMD optimizations are currently x86_64 only.
        !           249: Omit --enable-simd to continue without it.)
        !           250:     fi
        !           251: fi
        !           252: 
        !           253: if test x"$SIMD" != x""; then
        !           254:     AC_MSG_RESULT([yes ($SIMD)])
        !           255:     AC_DEFINE(HAVE_SIMD, 1, [Define to 1 to enable SIMD optimizations])
        !           256:     SIMD='$(SIMD_'"$SIMD)"
        !           257:     # We only use c++ for its target attribute dispatching, disable unneeded bulky features
        !           258:     CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-rtti"
        !           259:     # Apple often has "g++" as a symlink for clang. Try to find out the truth.
        !           260:     CXX_VERSION=`$CXX --version 2>/dev/null | head -n 2`
        !           261:     case "$CXX_VERSION" in
        !           262:     *clang*) CXXFLAGS="$CXXFLAGS -fno-slp-vectorize" ;; # avoid a performance hit
        !           263:     esac
        !           264: else
        !           265:     AC_MSG_RESULT(no)
        !           266: fi
        !           267: 
        !           268: AC_SUBST(SIMD)
        !           269: 
        !           270: AC_MSG_CHECKING([if assembler accepts noexecstack])
        !           271: OLD_CFLAGS="$CFLAGS"
        !           272: CFLAGS="$CFLAGS -Wa,--noexecstack"
        !           273: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ ]], [[return 0;]])],
        !           274: [ NOEXECSTACK='-Wa,--noexecstack' ; AC_MSG_RESULT(yes) ],
        !           275: [ NOEXECSTACK='' ; AC_MSG_RESULT(no) ])
        !           276: CFLAGS="$OLD_CFLAGS"
        !           277: AC_SUBST(NOEXECSTACK)
        !           278: 
        !           279: ASM=
        !           280: 
        !           281: AC_MSG_CHECKING([whether to enable ASM optimizations])
        !           282: AC_ARG_ENABLE(asm,
        !           283:     AS_HELP_STRING([--disable-asm],[disable ASM optimizations]))
        !           284: 
        !           285: if test x"$enable_asm" != x"no"; then
        !           286:     if test x"$build_cpu" = x"x86_64"; then
        !           287:        ASM="$build_cpu"
        !           288:     elif test x"$enable_asm" = x"yes"; then
        !           289:         AC_MSG_RESULT(unavailable)
        !           290:         AC_MSG_ERROR(The ASM optimizations are currently x86_64 only.
        !           291: Omit --enable-asm to continue without it.)
        !           292:     fi
        !           293: fi
        !           294: 
        !           295: if test x"$ASM" != x""; then
        !           296:     AC_MSG_RESULT([yes ($ASM)])
        !           297:     AC_DEFINE(HAVE_ASM, 1, [Define to 1 to enable ASM optimizations])
        !           298:     ASM='$(ASM_'"$ASM)"
        !           299: else
        !           300:     AC_MSG_RESULT(no)
        !           301: fi
        !           302: 
        !           303: AC_SUBST(ASM)
        !           304: 
1.1       misho     305: # arrgh. libc in some old debian version screwed up the largefile
                    306: # stuff, getting byte range locking wrong
                    307: AC_CACHE_CHECK([for broken largefile support],rsync_cv_HAVE_BROKEN_LARGEFILE,[
1.1.1.3   misho     308: AC_RUN_IFELSE([AC_LANG_SOURCE([[
1.1       misho     309: #define _FILE_OFFSET_BITS 64
                    310: #include <stdio.h>
                    311: #include <fcntl.h>
                    312: #include <sys/types.h>
                    313: #include <sys/wait.h>
1.1.1.4 ! misho     314: #if HAVE_UNISTD_H
        !           315: #include <unistd.h>
        !           316: #endif
1.1       misho     317: 
                    318: int main(void)
                    319: {
                    320:        struct flock lock;
                    321:        int status;
                    322:        char tpl[32] = "/tmp/locktest.XXXXXX";
                    323:        int fd = mkstemp(tpl);
                    324:        if (fd < 0) {
                    325:                strcpy(tpl, "conftest.dat");
                    326:                fd = open(tpl, O_CREAT|O_RDWR, 0600);
                    327:        }
                    328: 
                    329:        lock.l_type = F_WRLCK;
                    330:        lock.l_whence = SEEK_SET;
                    331:        lock.l_start = 0;
                    332:        lock.l_len = 1;
                    333:        lock.l_pid = 0;
                    334:        fcntl(fd,F_SETLK,&lock);
                    335:        if (fork() == 0) {
                    336:                lock.l_start = 1;
                    337:                _exit(fcntl(fd,F_SETLK,&lock) == 0);
                    338:        }
                    339:        wait(&status);
                    340:        unlink(tpl);
1.1.1.4 ! misho     341:        return WEXITSTATUS(status);
1.1       misho     342: }
1.1.1.3   misho     343: ]])],[rsync_cv_HAVE_BROKEN_LARGEFILE=yes],[rsync_cv_HAVE_BROKEN_LARGEFILE=no],[rsync_cv_HAVE_BROKEN_LARGEFILE=cross])])
1.1       misho     344: if test x"$rsync_cv_HAVE_BROKEN_LARGEFILE" != x"yes"; then
                    345:    AC_SYS_LARGEFILE
                    346: fi
                    347: 
                    348: ipv6type=unknown
                    349: ipv6lib=none
                    350: ipv6trylibc=yes
                    351: 
                    352: AC_ARG_ENABLE(ipv6,
1.1.1.4 ! misho     353:        AS_HELP_STRING([--disable-ipv6],[turn off IPv6 support]))
1.1       misho     354: if test x"$enable_ipv6" != x"no"; then
                    355:        AC_MSG_CHECKING([ipv6 stack type])
1.1.1.4 ! misho     356:        for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta cygwin TANDEM; do
1.1       misho     357:                case $i in
                    358:                inria)
                    359:                        # http://www.kame.net/
                    360:                        AC_EGREP_CPP(yes, [
                    361: #include <netinet/in.h>
                    362: #ifdef IPV6_INRIA_VERSION
                    363: yes
                    364: #endif],
                    365:                                [ipv6type=$i;
                    366:                                AC_DEFINE(INET6, 1, [true if you have IPv6])
                    367:                                ])
                    368:                        ;;
                    369:                kame)
                    370:                        # http://www.kame.net/
                    371:                        AC_EGREP_CPP(yes, [
                    372: #include <netinet/in.h>
                    373: #ifdef __KAME__
                    374: yes
                    375: #endif],
                    376:                                [ipv6type=$i;
                    377:                                AC_DEFINE(INET6, 1, [true if you have IPv6])])
                    378:                        ;;
                    379:                linux-glibc)
                    380:                        # http://www.v6.linux.or.jp/
                    381:                        AC_EGREP_CPP(yes, [
                    382: #include <features.h>
                    383: #if defined(__GLIBC__) && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
                    384: yes
                    385: #endif],
                    386:                                [ipv6type=$i;
                    387: AC_DEFINE(INET6, 1, [true if you have IPv6])])
                    388:                        ;;
                    389:                linux-inet6)
                    390:                        # http://www.v6.linux.or.jp/
                    391:                        if test -d /usr/inet6 -o -f /usr/inet6/lib/libinet6.a; then
                    392:                                ipv6type=$i
                    393:                                ipv6lib=inet6
                    394:                                ipv6libdir=/usr/inet6/lib
                    395:                                ipv6trylibc=yes;
                    396:                                AC_DEFINE(INET6, 1, [true if you have IPv6])
                    397:                                CFLAGS="-I/usr/inet6/include $CFLAGS"
                    398:                        fi
                    399:                        ;;
                    400:                solaris)
                    401:                        # http://www.sun.com
                    402:                        AC_EGREP_CPP(yes, [
                    403: #include <netinet/ip6.h>
                    404: #ifdef __sun
                    405: yes
                    406: #endif],
                    407:                                [ipv6type=$i;
                    408:                                AC_DEFINE(INET6, 1, [true if you have IPv6])])
                    409:                        ;;
                    410:                toshiba)
                    411:                        AC_EGREP_CPP(yes, [
                    412: #include <sys/param.h>
                    413: #ifdef _TOSHIBA_INET6
                    414: yes
                    415: #endif],
                    416:                                [ipv6type=$i;
                    417:                                ipv6lib=inet6;
                    418:                                ipv6libdir=/usr/local/v6/lib;
                    419:                                AC_DEFINE(INET6, 1, [true if you have IPv6])])
                    420:                        ;;
                    421:                v6d)
                    422:                        AC_EGREP_CPP(yes, [
                    423: #include </usr/local/v6/include/sys/v6config.h>
                    424: #ifdef __V6D__
                    425: yes
                    426: #endif],
                    427:                                [ipv6type=$i;
                    428:                                ipv6lib=v6;
                    429:                                ipv6libdir=/usr/local/v6/lib;
                    430:                                AC_DEFINE(INET6, 1, [true if you have IPv6])])
                    431:                        ;;
                    432:                zeta)
                    433:                        AC_EGREP_CPP(yes, [
                    434: #include <sys/param.h>
                    435: #ifdef _ZETA_MINAMI_INET6
                    436: yes
                    437: #endif],
                    438:                                [ipv6type=$i;
                    439:                                ipv6lib=inet6;
                    440:                                ipv6libdir=/usr/local/v6/lib;
                    441:                                AC_DEFINE(INET6, 1, [true if you have IPv6])])
                    442:                        ;;
                    443:                cygwin)
                    444:                        AC_EGREP_CPP(yes, [
                    445: #include <netinet/in.h>
                    446: #ifdef _CYGWIN_IN6_H
                    447: yes
                    448: #endif],
                    449:                                [ipv6type=$i;
                    450:                                AC_DEFINE(INET6, 1, [true if you have IPv6])])
                    451:                        ;;
1.1.1.4 ! misho     452:                TANDEM)
        !           453:                        AC_EGREP_CPP(yes, [
        !           454: #include <netinet/ip6.h>
        !           455: #ifdef __TANDEM
        !           456: yes
        !           457: #endif],
        !           458:                                [ipv6type=$i;
        !           459:                                AC_DEFINE(INET6, 1, [true if you have IPv6])])
        !           460:                        ;;
1.1       misho     461:                esac
                    462:                if test "$ipv6type" != "unknown"; then
                    463:                        break
                    464:                fi
                    465:        done
                    466:        AC_MSG_RESULT($ipv6type)
                    467: 
                    468:        AC_SEARCH_LIBS(getaddrinfo, inet6)
                    469: fi
                    470: 
                    471: dnl Do you want to disable use of locale functions
                    472: AC_ARG_ENABLE([locale],
1.1.1.3   misho     473:        AS_HELP_STRING([--disable-locale],[disable locale features]))
1.1       misho     474: AH_TEMPLATE([CONFIG_LOCALE],
                    475: [Undefine if you do not want locale features.  By default this is defined.])
                    476: if test x"$enable_locale" != x"no"; then
                    477:        AC_DEFINE(CONFIG_LOCALE)
                    478: fi
                    479: 
                    480: AC_MSG_CHECKING([whether to call shutdown on all sockets])
                    481: case $host_os in
                    482:        *cygwin* ) AC_MSG_RESULT(yes)
                    483:                    AC_DEFINE(SHUTDOWN_ALL_SOCKETS, 1,
                    484:                            [Define to 1 if sockets need to be shutdown])
                    485:                   ;;
                    486:               * ) AC_MSG_RESULT(no);;
                    487: esac
                    488: 
                    489: AC_C_BIGENDIAN
                    490: AC_HEADER_DIRENT
                    491: AC_HEADER_TIME
                    492: AC_HEADER_SYS_WAIT
                    493: AC_CHECK_HEADERS(sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h \
                    494:     unistd.h utime.h grp.h compat.h sys/param.h ctype.h sys/wait.h \
                    495:     sys/ioctl.h sys/filio.h string.h stdlib.h sys/socket.h sys/mode.h \
                    496:     sys/un.h sys/attr.h mcheck.h arpa/inet.h arpa/nameser.h locale.h \
1.1.1.4 ! misho     497:     mysql/mysql.h sqlite3.h \
1.1       misho     498:     netdb.h malloc.h float.h limits.h iconv.h libcharset.h langinfo.h \
1.1.1.4 ! misho     499:     sys/acl.h acl/libacl.h attr/xattr.h sys/xattr.h sys/extattr.h dl.h \
1.1.1.2   misho     500:     popt.h popt/popt.h linux/falloc.h netinet/in_systm.h netinet/ip.h \
1.1.1.4 ! misho     501:     zlib.h xxhash.h openssl/md4.h openssl/md5.h zstd.h lz4.h sys/file.h)
        !           502: AC_HEADER_MAJOR_FIXED
        !           503: 
        !           504: AC_MSG_CHECKING([whether to enable use of openssl crypto library])
        !           505: AC_ARG_ENABLE([openssl],
        !           506:        AS_HELP_STRING([--disable-openssl],[disable openssl crypto library]))
        !           507: AH_TEMPLATE([USE_OPENSSL],
        !           508: [Undefine if you do not want to use openssl crypto library.  By default this is defined.])
        !           509: if test x"$enable_openssl" != x"no"; then
        !           510:     if test x"$ac_cv_header_openssl_md4_h" = x"yes" && test x"$ac_cv_header_openssl_md5_h" = x"yes"; then
        !           511:       AC_MSG_RESULT(yes)
        !           512:       AC_SEARCH_LIBS(MD5_Init, crypto,
        !           513:           [AC_DEFINE(USE_OPENSSL)],
        !           514:           [err_msg="$err_msg$nl- Failed to find MD5_Init function in openssl crypto lib.";
        !           515:           no_lib="$no_lib openssl"])
        !           516:     else
        !           517:         AC_MSG_RESULT(no)
        !           518:        err_msg="$err_msg$nl- Failed to find openssl/md4.h and openssl/md5.h for openssl crypto lib support."
        !           519:        no_lib="$no_lib openssl"
        !           520:     fi
        !           521: else
        !           522:     AC_MSG_RESULT(no)
        !           523: fi
        !           524: 
        !           525: AC_MSG_CHECKING([whether to enable xxhash checksum support])
        !           526: AC_ARG_ENABLE([xxhash],
        !           527:        AS_HELP_STRING([--disable-xxhash],[disable xxhash checksums]))
        !           528: AH_TEMPLATE([SUPPORT_XXHASH],
        !           529: [Undefine if you do not want xxhash checksums.  By default this is defined.])
        !           530: if test x"$enable_xxhash" != x"no"; then
        !           531:     if test x"$ac_cv_header_xxhash_h" = x"yes"; then
        !           532:        AC_MSG_RESULT(yes)
        !           533:        AC_SEARCH_LIBS(XXH64_createState, xxhash,
        !           534:            [AC_DEFINE(SUPPORT_XXHASH)],
        !           535:            [err_msg="$err_msg$nl- Failed to find XXH64_createState function in xxhash lib.";
        !           536:             no_lib="$no_lib xxhash"])
        !           537:     else
        !           538:        AC_MSG_RESULT(no)
        !           539:        err_msg="$err_msg$nl- Failed to find xxhash.h for xxhash checksum support.";
        !           540:        no_lib="$no_lib xxhash"
        !           541:     fi
        !           542: else
        !           543:     AC_MSG_RESULT(no)
        !           544: fi
        !           545: 
        !           546: AC_MSG_CHECKING([whether to enable zstd compression])
        !           547: AC_ARG_ENABLE([zstd],
        !           548:         AC_HELP_STRING([--disable-zstd], [disable zstd compression]))
        !           549: AH_TEMPLATE([SUPPORT_ZSTD],
        !           550: [Undefine if you do not want zstd compression.  By default this is defined.])
        !           551: if test x"$enable_zstd" != x"no"; then
        !           552:     if test x"$ac_cv_header_zstd_h" = x"yes"; then
        !           553:        AC_MSG_RESULT(yes)
        !           554:        AC_SEARCH_LIBS(ZSTD_minCLevel, zstd,
        !           555:            [AC_DEFINE(SUPPORT_ZSTD)],
        !           556:            [err_msg="$err_msg$nl- Failed to find ZSTD_minCLevel function in zstd lib.";
        !           557:             no_lib="$no_lib zstd"])
        !           558:     else
        !           559:        AC_MSG_RESULT(no)
        !           560:        err_msg="$err_msg$nl- Failed to find zstd.h for zstd compression support.";
        !           561:        no_lib="$no_lib zstd"
        !           562:     fi
        !           563: else
        !           564:     AC_MSG_RESULT(no)
        !           565: fi
        !           566: 
        !           567: AC_MSG_CHECKING([whether to enable LZ4 compression])
        !           568: AC_ARG_ENABLE([lz4],
        !           569:         AC_HELP_STRING([--disable-lz4], [disable LZ4 compression]))
        !           570: AH_TEMPLATE([SUPPORT_LZ4],
        !           571: [Undefine if you do not want LZ4 compression.  By default this is defined.])
        !           572: if test x"$enable_lz4" != x"no"; then
        !           573:     if test x"$ac_cv_header_lz4_h" = x"yes"; then
        !           574:        AC_MSG_RESULT(yes)
        !           575:        AC_SEARCH_LIBS(LZ4_compress_default, lz4,
        !           576:            [AC_DEFINE(SUPPORT_LZ4)],
        !           577:            [err_msg="$err_msg$nl- Failed to find LZ4_compress_default function in lz4 lib.";
        !           578:             no_lib="$no_lib lz4"])
        !           579:     else
        !           580:        AC_MSG_RESULT(no)
        !           581:        err_msg="$err_msg$nl- Failed to find lz4.h for lz4 compression support."
        !           582:        no_lib="$no_lib lz4"
        !           583:     fi
        !           584: else
        !           585:     AC_MSG_RESULT(no)
        !           586: fi
        !           587: 
        !           588: if test x"$no_lib" != x; then
        !           589:     echo ""
        !           590:     echo "Configure found the following issues:"
        !           591:     echo "$err_msg"
        !           592:     echo ""
        !           593:     echo "See the INSTALL file for hints on how to install the missing libraries and/or"
        !           594:     echo "how to generate (or fetch) man pages:"
        !           595:     echo "    https://github.com/WayneD/rsync/blob/master/INSTALL.md"
        !           596:     echo ""
        !           597:     echo "To disable one or more features, the relevant configure options are:"
        !           598:     for lib in $no_lib; do
        !           599:        echo "    --disable-$lib"
        !           600:     done
        !           601:     echo ""
        !           602:     AC_MSG_ERROR(Aborting configure run)
        !           603: fi
1.1       misho     604: 
                    605: AC_CACHE_CHECK([if makedev takes 3 args],rsync_cv_MAKEDEV_TAKES_3_ARGS,[
1.1.1.3   misho     606: AC_RUN_IFELSE([AC_LANG_SOURCE([[
1.1       misho     607: #include <sys/types.h>
                    608: #ifdef MAJOR_IN_MKDEV
                    609: #include <sys/mkdev.h>
                    610: # if !defined makedev && (defined mkdev || defined _WIN32 || defined __WIN32__)
                    611: #  define makedev mkdev
                    612: # endif
                    613: #elif defined MAJOR_IN_SYSMACROS
                    614: #include <sys/sysmacros.h>
                    615: #endif
                    616: 
                    617: int main(void)
                    618: {
                    619:        dev_t dev = makedev(0, 5, 7);
                    620:        if (major(dev) != 5 || minor(dev) != 7)
1.1.1.4 ! misho     621:                return 1;
1.1       misho     622:        return 0;
                    623: }
1.1.1.3   misho     624: ]])],[rsync_cv_MAKEDEV_TAKES_3_ARGS=yes],[rsync_cv_MAKEDEV_TAKES_3_ARGS=no],[rsync_cv_MAKEDEV_TAKES_3_ARGS=no])])
1.1       misho     625: if test x"$rsync_cv_MAKEDEV_TAKES_3_ARGS" = x"yes"; then
                    626:    AC_DEFINE(MAKEDEV_TAKES_3_ARGS, 1, [Define to 1 if makedev() takes 3 args])
                    627: fi
                    628: 
                    629: AC_CHECK_SIZEOF(int)
                    630: AC_CHECK_SIZEOF(long)
                    631: AC_CHECK_SIZEOF(long long)
                    632: AC_CHECK_SIZEOF(short)
                    633: AC_CHECK_SIZEOF(int16_t)
                    634: AC_CHECK_SIZEOF(uint16_t)
                    635: AC_CHECK_SIZEOF(int32_t)
                    636: AC_CHECK_SIZEOF(uint32_t)
                    637: AC_CHECK_SIZEOF(int64_t)
                    638: AC_CHECK_SIZEOF(off_t)
                    639: AC_CHECK_SIZEOF(off64_t)
                    640: AC_CHECK_SIZEOF(time_t)
1.1.1.4 ! misho     641: AC_CHECK_SIZEOF(char*)
1.1       misho     642: 
                    643: AC_C_INLINE
                    644: 
1.1.1.3   misho     645: AC_TYPE_LONG_DOUBLE_WIDER
                    646: ac_cv_c_long_double=$ac_cv_type_long_double_wider
                    647: if test $ac_cv_c_long_double = yes; then
                    648:   AC_DEFINE([HAVE_LONG_DOUBLE],[1],[Define to 1 if the type `long double' works and has more range or precision than `double'.])
                    649: fi
                    650: 
1.1       misho     651: AC_TYPE_UID_T
                    652: AC_CHECK_TYPES([mode_t,off_t,size_t,pid_t,id_t])
                    653: AC_TYPE_GETGROUPS
1.1.1.2   misho     654: AC_CHECK_MEMBERS([struct stat.st_rdev,
                    655:                  struct stat.st_mtimensec,
1.1.1.4 ! misho     656:                  struct stat.st_mtimespec.tv_nsec,
1.1.1.2   misho     657:                  struct stat.st_mtim.tv_nsec],,,[
                    658: #ifdef HAVE_SYS_TYPES_H
                    659: #include <sys/types.h>
                    660: #endif
                    661: #ifdef HAVE_SYS_STAT_H
                    662: #include <sys/stat.h>
                    663: #endif
                    664: #ifdef HAVE_UNISTD_H
                    665: #include <unistd.h>
                    666: #endif])
1.1       misho     667: 
                    668: TYPE_SOCKLEN_T
                    669: 
                    670: AC_CACHE_CHECK([for errno in errno.h],rsync_cv_errno, [
1.1.1.3   misho     671:     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <errno.h>]], [[int i = errno]])],[rsync_cv_errno=yes],[rsync_cv_have_errno_decl=no])])
1.1       misho     672: if test x"$rsync_cv_errno" = x"yes"; then
                    673:    AC_DEFINE(HAVE_ERRNO_DECL, 1, [Define to 1 if errno is declared in errno.h])
                    674: fi
                    675: 
                    676: # The following test taken from the cvs sources
                    677: # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
                    678: # These need checks to be before checks for any other functions that
                    679: #    might be in the same libraries.
                    680: # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
                    681: # libsocket.so which has a bad implementation of gethostbyname (it
                    682: # only looks in /etc/hosts), so we only look for -lsocket if we need
                    683: # it.
                    684: AC_CHECK_FUNCS(connect)
                    685: if test x"$ac_cv_func_connect" = x"no"; then
                    686:     case "$LIBS" in
                    687:     *-lnsl*) ;;
                    688:     *) AC_CHECK_LIB(nsl_s, printf) ;;
                    689:     esac
                    690:     case "$LIBS" in
                    691:     *-lnsl*) ;;
                    692:     *) AC_CHECK_LIB(nsl, printf) ;;
                    693:     esac
                    694:     case "$LIBS" in
                    695:     *-lsocket*) ;;
                    696:     *) AC_CHECK_LIB(socket, connect) ;;
                    697:     esac
                    698:     case "$LIBS" in
                    699:     *-linet*) ;;
                    700:     *) AC_CHECK_LIB(inet, connect) ;;
                    701:     esac
                    702:     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
                    703:     dnl has been cached.
                    704:     if test x"$ac_cv_lib_socket_connect" = x"yes" ||
                    705:        test x"$ac_cv_lib_inet_connect" = x"yes"; then
                    706:         # ac_cv_func_connect=yes
                    707:         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
                    708:         AC_DEFINE(HAVE_CONNECT, 1, [Define to 1 if you have the "connect" function])
                    709:     fi
                    710: fi
                    711: 
                    712: AC_SEARCH_LIBS(inet_ntop, resolv)
                    713: 
                    714: # For OS X, Solaris, HP-UX, etc.: figure out if -liconv is needed.  We'll
                    715: # accept either iconv_open or libiconv_open, since some include files map
                    716: # the former to the latter.
                    717: AC_SEARCH_LIBS(iconv_open, iconv)
                    718: AC_SEARCH_LIBS(libiconv_open, iconv)
                    719: 
                    720: AC_MSG_CHECKING([for iconv declaration])
                    721: AC_CACHE_VAL(am_cv_proto_iconv, [
1.1.1.3   misho     722:     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1.1       misho     723: #include <stdlib.h>
                    724: #include <iconv.h>
                    725: extern
                    726: #ifdef __cplusplus
                    727: "C"
                    728: #endif
                    729: #if defined(__STDC__) || defined(__cplusplus)
                    730: size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
                    731: #else
                    732: size_t iconv();
                    733: #endif
1.1.1.3   misho     734: ]], [[]])],[am_cv_proto_iconv_arg1=""],[am_cv_proto_iconv_arg1="const"])
1.1       misho     735:       am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
1.1.1.4 ! misho     736:     am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed 's/( /(/'`
1.1       misho     737: AC_MSG_RESULT([$]{ac_t:-
                    738:          }[$]am_cv_proto_iconv)
                    739: AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
                    740:                   [Define as const if the declaration of iconv() needs const.])
                    741: 
                    742: dnl AC_MSG_NOTICE([Looking in libraries: $LIBS])
                    743: 
1.1.1.3   misho     744: AC_REPLACE_FUNCS([inet_ntop inet_pton])
1.1       misho     745: 
                    746: AC_HAVE_TYPE([struct addrinfo], [#include <netdb.h>])
                    747: AC_HAVE_TYPE([struct sockaddr_storage], [#include <sys/types.h>
                    748: #include <sys/socket.h>])
                    749: 
                    750: # Irix 6.5 has getaddrinfo but not the corresponding defines, so use
                    751: #   builtin getaddrinfo if one of the defines don't exist
                    752: AC_CACHE_CHECK([whether defines needed by getaddrinfo exist],
                    753:                rsync_cv_HAVE_GETADDR_DEFINES,[
                    754:                        AC_EGREP_CPP(yes, [
                    755:                        #include <sys/types.h>
                    756:                        #include <sys/socket.h>
                    757:                        #include <netdb.h>
                    758:                        #ifdef AI_PASSIVE
                    759:                        yes
                    760:                        #endif],
                    761:                        rsync_cv_HAVE_GETADDR_DEFINES=yes,
                    762:                        rsync_cv_HAVE_GETADDR_DEFINES=no)])
1.1.1.3   misho     763: AS_IF([test x"$rsync_cv_HAVE_GETADDR_DEFINES" = x"yes" -a x"$ac_cv_type_struct_addrinfo" = x"yes"],[
1.1       misho     764:        # Tru64 UNIX has getaddrinfo() but has it renamed in libc as
                    765:        # something else so we must include <netdb.h> to get the
                    766:        # redefinition.
                    767:        AC_CHECK_FUNCS(getaddrinfo, ,
                    768:                [AC_MSG_CHECKING([for getaddrinfo by including <netdb.h>])
1.1.1.3   misho     769:                AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
1.1       misho     770:                #include <sys/socket.h>
1.1.1.3   misho     771:                #include <netdb.h>]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],[AC_MSG_RESULT([yes])
1.1       misho     772:                        AC_DEFINE(HAVE_GETADDRINFO, 1,
1.1.1.3   misho     773:                                [Define to 1 if you have the "getaddrinfo" function and required types.])],[AC_MSG_RESULT([no])
                    774:                        AC_LIBOBJ([getaddrinfo])])])
                    775:     ],[AC_LIBOBJ([getaddrinfo])])
1.1       misho     776: 
                    777: AC_CHECK_MEMBER([struct sockaddr.sa_len],
                    778:                [ AC_DEFINE(HAVE_SOCKADDR_LEN, 1, [Do we have sockaddr.sa_len?]) ],
                    779:                [],
                    780:                [
                    781: #include <sys/types.h>
                    782: #include <sys/socket.h>
                    783: ])
                    784: 
                    785: AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
                    786:                [ AC_DEFINE(HAVE_SOCKADDR_IN_LEN, 1, [Do we have sockaddr_in.sin_len?]) ],
                    787:                [],
                    788:                [
                    789: #include <sys/types.h>
                    790: #include <sys/socket.h>
                    791: #include <netinet/in.h>
                    792: ])
                    793: 
                    794: AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
                    795:                [ AC_DEFINE(HAVE_SOCKADDR_UN_LEN, 1, [Do we have sockaddr_un.sun_len?]) ],
                    796:                [],
                    797:                [
                    798: #include <sys/types.h>
                    799: #include <sys/socket.h>
                    800: #include <netinet/in.h>
                    801: ])
                    802: 
                    803: AC_CHECK_MEMBER([struct sockaddr_in6.sin6_scope_id],
                    804:                [ AC_DEFINE(HAVE_SOCKADDR_IN6_SCOPE_ID, 1, [Do we have sockaddr_in6.sin6_scope_id?]) ],
                    805:                [],
                    806:                [
                    807: #include <sys/types.h>
                    808: #include <sys/socket.h>
                    809: #include <netinet/in.h>
                    810: ])
                    811: 
                    812: AC_HAVE_TYPE([struct stat64], [#include <stdio.h>
                    813: #if HAVE_SYS_TYPES_H
                    814: # include <sys/types.h>
                    815: #endif
                    816: #if HAVE_SYS_STAT_H
                    817: # include <sys/stat.h>
                    818: #endif
                    819: #if STDC_HEADERS
                    820: # include <stdlib.h>
                    821: # include <stddef.h>
                    822: #else
                    823: # if HAVE_STDLIB_H
                    824: #  include <stdlib.h>
                    825: # endif
                    826: #endif
                    827: ])
                    828: 
                    829: # if we can't find strcasecmp, look in -lresolv (for Unixware at least)
                    830: #
                    831: AC_CHECK_FUNCS(strcasecmp)
                    832: if test x"$ac_cv_func_strcasecmp" = x"no"; then
                    833:     AC_CHECK_LIB(resolv, strcasecmp)
                    834: fi
                    835: 
                    836: AC_CHECK_FUNCS(aclsort)
                    837: if test x"$ac_cv_func_aclsort" = x"no"; then
                    838:     AC_CHECK_LIB(sec, aclsort)
                    839: fi
                    840: 
                    841: dnl At the moment we don't test for a broken memcmp(), because all we
                    842: dnl need to do is test for equality, not comparison, and it seems that
                    843: dnl every platform has a memcmp that can do at least that.
                    844: dnl AC_FUNC_MEMCMP
                    845: 
                    846: AC_FUNC_UTIME_NULL
                    847: AC_FUNC_ALLOCA
1.1.1.4 ! misho     848: AC_CHECK_FUNCS(waitpid wait4 getcwd chown chmod lchmod mknod mkfifo \
1.1       misho     849:     fchmod fstat ftruncate strchr readlink link utime utimes lutimes strftime \
1.1.1.4 ! misho     850:     chflags getattrlist mktime innetgr linkat \
1.1       misho     851:     memmove lchown vsnprintf snprintf vasprintf asprintf setsid strpbrk \
                    852:     strlcat strlcpy strtol mallinfo getgroups setgroups geteuid getegid \
                    853:     setlocale setmode open64 lseek64 mkstemp64 mtrace va_copy __va_copy \
                    854:     seteuid strerror putenv iconv_open locale_charset nl_langinfo getxattr \
1.1.1.2   misho     855:     extattr_get_link sigaction sigprocmask setattrlist getgrouplist \
1.1.1.4 ! misho     856:     initgroups utimensat posix_fallocate attropen setvbuf nanosleep usleep)
1.1       misho     857: 
                    858: dnl cygwin iconv.h defines iconv_open as libiconv_open
                    859: if test x"$ac_cv_func_iconv_open" != x"yes"; then
                    860:     AC_CHECK_FUNC(libiconv_open, [ac_cv_func_iconv_open=yes; AC_DEFINE(HAVE_ICONV_OPEN, 1)])
                    861: fi
                    862: 
1.1.1.2   misho     863: dnl Preallocation stuff (also fallocate, posix_fallocate function tests above):
                    864: 
                    865: AC_CACHE_CHECK([for useable fallocate],rsync_cv_have_fallocate,[
1.1.1.3   misho     866: AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <fcntl.h>
                    867: #include <sys/types.h>]], [[fallocate(0, 0, 0, 0);]])],[rsync_cv_have_fallocate=yes],[rsync_cv_have_fallocate=no])])
1.1.1.2   misho     868: if test x"$rsync_cv_have_fallocate" = x"yes"; then
                    869:     AC_DEFINE(HAVE_FALLOCATE, 1, [Define to 1 if you have the fallocate function and it compiles and links without error])
                    870: fi
                    871: 
1.1.1.4 ! misho     872: AC_MSG_CHECKING([for FALLOC_FL_PUNCH_HOLE])
        !           873: AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
        !           874:         #define _GNU_SOURCE 1
        !           875:         #include <linux/falloc.h>
        !           876:         #ifndef FALLOC_FL_PUNCH_HOLE
        !           877:         #error FALLOC_FL_PUNCH_HOLE is missing
        !           878:         #endif
        !           879:     ]])], [
        !           880:         AC_MSG_RESULT([yes])
        !           881:         AC_DEFINE([HAVE_FALLOC_FL_PUNCH_HOLE], [1], [Define if FALLOC_FL_PUNCH_HOLE is available.])
        !           882:     ], [
        !           883:         AC_MSG_RESULT([no])
        !           884:     ]
        !           885: )
        !           886: 
        !           887: AC_MSG_CHECKING([for FALLOC_FL_ZERO_RANGE])
        !           888: AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
        !           889:         #define _GNU_SOURCE 1
        !           890:         #include <linux/falloc.h>
        !           891:         #ifndef FALLOC_FL_ZERO_RANGE
        !           892:         #error FALLOC_FL_ZERO_RANGE is missing
        !           893:         #endif
        !           894:     ]])], [
        !           895:         AC_MSG_RESULT([yes])
        !           896:         AC_DEFINE([HAVE_FALLOC_FL_ZERO_RANGE], [1], [Define if FALLOC_FL_ZERO_RANGE is available.])
        !           897:     ], [
        !           898:         AC_MSG_RESULT([no])
        !           899:     ]
        !           900: )
        !           901: 
1.1.1.2   misho     902: AC_CACHE_CHECK([for SYS_fallocate],rsync_cv_have_sys_fallocate,[
1.1.1.3   misho     903: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/syscall.h>
1.1.1.4 ! misho     904: #include <unistd.h>
1.1.1.3   misho     905: #include <sys/types.h>]], [[syscall(SYS_fallocate, 0, 0, (loff_t)0, (loff_t)0);]])],[rsync_cv_have_sys_fallocate=yes],[rsync_cv_have_sys_fallocate=no])])
1.1.1.2   misho     906: if test x"$rsync_cv_have_sys_fallocate" = x"yes"; then
                    907:     AC_DEFINE(HAVE_SYS_FALLOCATE, 1, [Define to 1 if you have the SYS_fallocate syscall number])
                    908: fi
                    909: 
                    910: if test x"$ac_cv_func_posix_fallocate" = x"yes"; then
                    911:     AC_MSG_CHECKING([whether posix_fallocate is efficient])
                    912:     case $host_os in
                    913:     *cygwin*)
                    914:        AC_MSG_RESULT(yes)
                    915:        AC_DEFINE(HAVE_EFFICIENT_POSIX_FALLOCATE, 1,
                    916:                  [Define if posix_fallocate is efficient (Cygwin)])
                    917:        ;;
                    918:     *)
                    919:        AC_MSG_RESULT(no)
                    920:        ;;
                    921:     esac
                    922: fi
                    923: 
                    924: dnl End of preallocation stuff
                    925: 
1.1       misho     926: AC_CHECK_FUNCS(getpgrp tcgetpgrp)
                    927: if test $ac_cv_func_getpgrp = yes; then
                    928:     AC_FUNC_GETPGRP
                    929: fi
                    930: 
                    931: AC_ARG_ENABLE(iconv-open,
1.1.1.3   misho     932:     AS_HELP_STRING([--disable-iconv-open],[disable all use of iconv_open() function]),
1.1       misho     933:     [], [enable_iconv_open=$ac_cv_func_iconv_open])
                    934: 
                    935: if test x"$enable_iconv_open" != x"no"; then
                    936:     AC_DEFINE(USE_ICONV_OPEN, 1, [Define to 1 if you want rsync to make use of iconv_open()])
                    937: fi
                    938: 
                    939: AC_ARG_ENABLE(iconv,
1.1.1.3   misho     940:     AS_HELP_STRING([--disable-iconv],[disable rsync's --iconv option]),
1.1       misho     941:     [], [enable_iconv=$enable_iconv_open])
                    942: AH_TEMPLATE([ICONV_OPTION],
1.1.1.4 ! misho     943: [Define if you want the --iconv option.  Specifying a value will set the
1.1       misho     944: default iconv setting (a NULL means no --iconv processing by default).])
                    945: if test x"$enable_iconv" != x"no"; then
                    946:        if test x"$enable_iconv" = x"yes"; then
                    947:                AC_DEFINE(ICONV_OPTION, NULL)
                    948:        else
                    949:                AC_DEFINE_UNQUOTED(ICONV_OPTION, "$enable_iconv")
                    950:        fi
                    951:        AC_DEFINE(UTF8_CHARSET, "UTF-8", [String to pass to iconv() for the UTF-8 charset.])
                    952: fi
                    953: 
1.1.1.4 ! misho     954: AC_ARG_WITH([gssapi],
        !           955:   [AS_HELP_STRING([--with-gssapi],
        !           956:     [support GSSAPI authentication @<:@default=check@:>@])],
        !           957:   [],
        !           958:   [with_gssapi=check])
        !           959: 
        !           960: AH_TEMPLATE([GSSAPI_OPTION],
        !           961: [Define if you want GSSAPI authentication. Specifing a value will set the search path.])
        !           962: 
        !           963: AS_IF([test "x$with_gssapi" != xno],
        !           964:     [AC_SEARCH_LIBS([gss_import_name], gss gssapi_krb5 ,
        !           965:       [AC_CHECK_HEADERS(gssapi/gssapi_generic.h gssapi/gssapi.h) ]
        !           966:       [ AC_DEFINE([GSSAPI_OPTION], [1]) ]
        !           967:       ,
        !           968:       [if test "x$with_gssapi" = xcheck; then
        !           969:         AC_MSG_FAILURE(
        !           970:           [--with-gssapi was given, but test for function failed])
        !           971:        fi
        !           972:        ])
        !           973:      ])
        !           974: 
        !           975: if test x"$enable_gssapi" != x"no"; then
        !           976:    AC_DEFINE(GSSAPI_OPTION, 1)
        !           977: fi
        !           978: 
1.1       misho     979: AC_CACHE_CHECK([whether chown() modifies symlinks],rsync_cv_chown_modifies_symlink,[
1.1.1.3   misho     980:   AC_RUN_IFELSE([AC_LANG_SOURCE([[
1.1       misho     981: #if HAVE_UNISTD_H
                    982: # include <unistd.h>
                    983: #endif
                    984: #include <stdlib.h>
                    985: #include <errno.h>
1.1.1.4 ! misho     986: int main(void) {
1.1       misho     987:        char const *dangling_symlink = "conftest.dangle";
                    988:        unlink(dangling_symlink);
                    989:        if (symlink("conftest.no-such", dangling_symlink) < 0) abort();
1.1.1.4 ! misho     990:        if (chown(dangling_symlink, getuid(), getgid()) < 0 && errno == ENOENT) return 1;
        !           991:        return 0;
1.1.1.3   misho     992:     }]])],[rsync_cv_chown_modifies_symlink=yes],[rsync_cv_chown_modifies_symlink=no],[rsync_cv_chown_modifies_symlink=no])])
1.1       misho     993: if test $rsync_cv_chown_modifies_symlink = yes; then
                    994:   AC_DEFINE(CHOWN_MODIFIES_SYMLINK, 1, [Define to 1 if chown modifies symlinks.])
                    995: fi
                    996: 
                    997: AC_CACHE_CHECK([whether link() can hard-link symlinks],rsync_cv_can_hardlink_symlink,[
1.1.1.3   misho     998:   AC_RUN_IFELSE([AC_LANG_SOURCE([[
1.1.1.4 ! misho     999: #ifdef HAVE_FCNTL_H
        !          1000: # include <fcntl.h>
        !          1001: #elif defined HAVE_SYS_FCNTL_H
        !          1002: # include <sys/fcntl.h>
        !          1003: #endif
1.1       misho    1004: #if HAVE_UNISTD_H
                   1005: # include <unistd.h>
                   1006: #endif
                   1007: #include <stdlib.h>
                   1008: #include <errno.h>
                   1009: #define FILENAME "conftest.dangle"
1.1.1.4 ! misho    1010: int main(void) {
1.1       misho    1011:        unlink(FILENAME);
                   1012:        if (symlink("conftest.no-such", FILENAME) < 0) abort();
1.1.1.3   misho    1013:        unlink(FILENAME "2");
1.1.1.4 ! misho    1014: #ifdef HAVE_LINKAT
        !          1015:        if (linkat(AT_FDCWD, FILENAME, AT_FDCWD, FILENAME "2", 0) < 0) return 1;
        !          1016: #else
        !          1017:        if (link(FILENAME, FILENAME "2") < 0) return 1;
        !          1018: #endif
        !          1019:        return 0;
1.1.1.3   misho    1020:     }]])],[rsync_cv_can_hardlink_symlink=yes],[rsync_cv_can_hardlink_symlink=no],[rsync_cv_can_hardlink_symlink=no])])
1.1       misho    1021: if test $rsync_cv_can_hardlink_symlink = yes; then
                   1022:   AC_DEFINE(CAN_HARDLINK_SYMLINK, 1, [Define to 1 if link() can hard-link symlinks.])
                   1023: fi
                   1024: 
                   1025: AC_CACHE_CHECK([whether link() can hard-link special files],rsync_cv_can_hardlink_special,[
1.1.1.3   misho    1026:   AC_RUN_IFELSE([AC_LANG_SOURCE([[
1.1       misho    1027: #if HAVE_UNISTD_H
                   1028: # include <unistd.h>
                   1029: #endif
1.1.1.4 ! misho    1030: #ifdef HAVE_SYS_STAT_H
        !          1031: #include <sys/stat.h>
        !          1032: #endif
1.1       misho    1033: #include <stdlib.h>
                   1034: #include <errno.h>
                   1035: #define FILENAME "conftest.fifi"
1.1.1.4 ! misho    1036: int main(void) {
1.1       misho    1037:        unlink(FILENAME);
                   1038:        if (mkfifo(FILENAME, 0777) < 0) abort();
1.1.1.3   misho    1039:        unlink(FILENAME "2");
1.1.1.4 ! misho    1040:        if (link(FILENAME, FILENAME "2") < 0) return 1;
        !          1041:        return 0;
1.1.1.3   misho    1042:     }]])],[rsync_cv_can_hardlink_special=yes],[rsync_cv_can_hardlink_special=no],[rsync_cv_can_hardlink_special=no])])
1.1       misho    1043: if test $rsync_cv_can_hardlink_special = yes; then
                   1044:     AC_DEFINE(CAN_HARDLINK_SPECIAL, 1, [Define to 1 if link() can hard-link special files.])
                   1045: fi
                   1046: 
1.1.1.4 ! misho    1047: AC_ARG_ENABLE(slp, [  --disable-slp           turn off SLP support, defaults to on])
        !          1048: AC_ARG_WITH(openslp-libs, [  --with-openslp-libs     set directory for OpenSLP library],
        !          1049:     LDFLAGS="-L$withval $LDFLAGS"
        !          1050:     DSOFLAGS="-L$withval $DSOFLAGS",)
        !          1051: AC_ARG_WITH(openslp-includes, [  --with-openslp-includes set directory for OpenSLP includes],
        !          1052:     CFLAGS="-I$withval $CFLAGS"
        !          1053:     CXXFLAGS="-I$withval $CXXFLAGS"
        !          1054:     CPPFLAGS="-I$withval $CPPFLAGS",)
        !          1055: 
        !          1056: LIBSLP=""
        !          1057: SLPOBJ=""
        !          1058: 
        !          1059: if test x$enable_slp != xno; then
        !          1060:     AC_CHECK_HEADER(slp.h,
        !          1061:         AC_CHECK_LIB(slp, SLPOpen,
        !          1062:            AC_DEFINE(HAVE_LIBSLP, 1, [Define to 1 for SLP support])
        !          1063:            SLPOBJ="srvreg.o srvloc.o"
        !          1064:             LIBSLP="-lslp"))
        !          1065: fi
        !          1066: 
        !          1067: AC_SUBST(LIBSLP)
        !          1068: AC_SUBST(SLPOBJ)
        !          1069: 
1.1       misho    1070: AC_CACHE_CHECK([for working socketpair],rsync_cv_HAVE_SOCKETPAIR,[
1.1.1.3   misho    1071: AC_RUN_IFELSE([AC_LANG_SOURCE([[
1.1       misho    1072: #include <sys/types.h>
                   1073: #include <sys/socket.h>
                   1074: 
1.1.1.4 ! misho    1075: int main(void) {
1.1       misho    1076:        int fd[2];
1.1.1.4 ! misho    1077:        return (socketpair(AF_UNIX, SOCK_STREAM, 0, fd) != -1) ? 0 : 1;
1.1.1.3   misho    1078: }]])],[rsync_cv_HAVE_SOCKETPAIR=yes],[rsync_cv_HAVE_SOCKETPAIR=no],[rsync_cv_HAVE_SOCKETPAIR=cross])])
1.1       misho    1079: if test x"$rsync_cv_HAVE_SOCKETPAIR" = x"yes"; then
                   1080:     AC_DEFINE(HAVE_SOCKETPAIR, 1, [Define to 1 if you have the "socketpair" function])
                   1081: fi
                   1082: 
1.1.1.3   misho    1083: AC_REPLACE_FUNCS([getpass])
1.1.1.2   misho    1084: 
1.1       misho    1085: if test x"$with_included_popt" != x"yes"; then
                   1086:     AC_CHECK_LIB(popt, poptGetContext, , [with_included_popt=yes])
                   1087: fi
                   1088: if test x"$ac_cv_header_popt_popt_h" = x"yes"; then
                   1089:     # If the system has /usr/include/popt/popt.h, we enable the
                   1090:     # included popt because an attempt to "#include <popt/popt.h>"
                   1091:     # would use our included header file anyway (due to -I.), and
                   1092:     # might conflict with the system popt.
                   1093:     with_included_popt=yes
                   1094: elif test x"$ac_cv_header_popt_h" != x"yes"; then
                   1095:     with_included_popt=yes
                   1096: fi
                   1097: 
                   1098: AC_MSG_CHECKING([whether to use included libpopt])
                   1099: if test x"$with_included_popt" = x"yes"; then
                   1100:     AC_MSG_RESULT($srcdir/popt)
                   1101:     BUILD_POPT='$(popt_OBJS)'
1.1.1.3   misho    1102:     CFLAGS="-I$srcdir/popt $CFLAGS"
1.1       misho    1103:     if test x"$ALLOCA" != x
                   1104:     then
                   1105:        # this can be removed when/if we add an included alloca.c;
                   1106:        #  see autoconf documentation on AC_FUNC_ALLOCA
                   1107:        AC_MSG_WARN([included libpopt will use malloc, not alloca (which wastes a small amount of memory)])
                   1108:     fi
                   1109: else
                   1110:     AC_MSG_RESULT(no)
                   1111: fi
                   1112: 
1.1.1.2   misho    1113: # We default to using our zlib unless --with-included-zlib=no is given.
                   1114: if test x"$with_included_zlib" != x"no"; then
                   1115:     with_included_zlib=yes
                   1116: elif test x"$ac_cv_header_zlib_h" != x"yes"; then
                   1117:     with_included_zlib=yes
                   1118: fi
                   1119: if test x"$with_included_zlib" != x"yes"; then
                   1120:     AC_CHECK_LIB(z, deflateParams, , [with_included_zlib=yes])
                   1121: fi
                   1122: 
                   1123: AC_MSG_CHECKING([whether to use included zlib])
                   1124: if test x"$with_included_zlib" = x"yes"; then
                   1125:     AC_MSG_RESULT($srcdir/zlib)
                   1126:     BUILD_ZLIB='$(zlib_OBJS)'
1.1.1.3   misho    1127:     CFLAGS="-I$srcdir/zlib $CFLAGS"
1.1.1.2   misho    1128: else
1.1.1.3   misho    1129:     AC_DEFINE(EXTERNAL_ZLIB, 1, [Define to 1 if using external zlib])
1.1.1.2   misho    1130:     AC_MSG_RESULT(no)
                   1131: fi
                   1132: 
1.1       misho    1133: AC_CACHE_CHECK([for unsigned char],rsync_cv_SIGNED_CHAR_OK,[
1.1.1.3   misho    1134: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char *s = ""]])],[rsync_cv_SIGNED_CHAR_OK=yes],[rsync_cv_SIGNED_CHAR_OK=no])])
1.1       misho    1135: if test x"$rsync_cv_SIGNED_CHAR_OK" = x"yes"; then
                   1136:     AC_DEFINE(SIGNED_CHAR_OK, 1, [Define to 1 if "signed char" is a valid type])
                   1137: fi
                   1138: 
                   1139: AC_CACHE_CHECK([for broken readdir],rsync_cv_HAVE_BROKEN_READDIR,[
1.1.1.3   misho    1140: AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <sys/types.h>
1.1       misho    1141: #include <dirent.h>
1.1.1.4 ! misho    1142: int main(void) { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1.1       misho    1143: if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1.1.1.4 ! misho    1144: di->d_name[0] == 0) return 0; return 1;} ]])],[rsync_cv_HAVE_BROKEN_READDIR=yes],[rsync_cv_HAVE_BROKEN_READDIR=no],[rsync_cv_HAVE_BROKEN_READDIR=cross])])
1.1       misho    1145: if test x"$rsync_cv_HAVE_BROKEN_READDIR" = x"yes"; then
                   1146:     AC_DEFINE(HAVE_BROKEN_READDIR, 1, [Define to 1 if readdir() is broken])
                   1147: fi
                   1148: 
                   1149: AC_CACHE_CHECK([for utimbuf],rsync_cv_HAVE_STRUCT_UTIMBUF,[
1.1.1.3   misho    1150: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
1.1.1.4 ! misho    1151: #include <utime.h>]], [[struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; return utime("foo.c",&tbuf);]])],[rsync_cv_HAVE_STRUCT_UTIMBUF=yes],[rsync_cv_HAVE_STRUCT_UTIMBUF=no])])
1.1       misho    1152: if test x"$rsync_cv_HAVE_STRUCT_UTIMBUF" = x"yes"; then
                   1153:     AC_DEFINE(HAVE_STRUCT_UTIMBUF, 1, [Define to 1 if you have the "struct utimbuf" type])
                   1154: fi
                   1155: 
                   1156: AC_CACHE_CHECK([if gettimeofday takes tz argument],rsync_cv_HAVE_GETTIMEOFDAY_TZ,[
1.1.1.3   misho    1157: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>
1.1.1.4 ! misho    1158: #include <unistd.h>]], [[struct timeval tv; return gettimeofday(&tv, NULL);]])],[rsync_cv_HAVE_GETTIMEOFDAY_TZ=yes],[rsync_cv_HAVE_GETTIMEOFDAY_TZ=no])])
1.1       misho    1159: if test x"$rsync_cv_HAVE_GETTIMEOFDAY_TZ" != x"no"; then
                   1160:     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ, 1, [Define to 1 if gettimeofday() takes a time-zone arg])
                   1161: fi
                   1162: 
                   1163: AC_CACHE_CHECK([for C99 vsnprintf],rsync_cv_HAVE_C99_VSNPRINTF,[
1.1.1.3   misho    1164: AC_RUN_IFELSE([AC_LANG_SOURCE([[
1.1       misho    1165: #include <sys/types.h>
                   1166: #include <stdarg.h>
1.1.1.4 ! misho    1167: #include <stdio.h>
        !          1168: #include <stdlib.h>
        !          1169: #include <string.h>
1.1       misho    1170: void foo(const char *format, ...) {
                   1171:        va_list ap;
                   1172:        int len;
1.1.1.4 ! misho    1173:        static char buf[] = "12345678901234567890";
1.1       misho    1174: 
                   1175:        va_start(ap, format);
                   1176:        len = vsnprintf(0, 0, format, ap);
                   1177:        va_end(ap);
                   1178:        if (len != 5) exit(1);
                   1179: 
                   1180:        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
                   1181: }
1.1.1.4 ! misho    1182: int main(void) { foo("hello"); return 0; }
1.1.1.3   misho    1183: ]])],[rsync_cv_HAVE_C99_VSNPRINTF=yes],[rsync_cv_HAVE_C99_VSNPRINTF=no],[rsync_cv_HAVE_C99_VSNPRINTF=cross])])
1.1       misho    1184: if test x"$rsync_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
                   1185:     AC_DEFINE(HAVE_C99_VSNPRINTF, 1, [Define to 1 if vsprintf has a C99-compatible return value])
                   1186: fi
                   1187: 
                   1188: 
                   1189: AC_CACHE_CHECK([for secure mkstemp],rsync_cv_HAVE_SECURE_MKSTEMP,[
1.1.1.3   misho    1190: AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
1.1       misho    1191: #include <sys/types.h>
                   1192: #include <sys/stat.h>
                   1193: #include <unistd.h>
1.1.1.4 ! misho    1194: int main(void) {
1.1       misho    1195:   struct stat st;
                   1196:   char tpl[20]="/tmp/test.XXXXXX";
                   1197:   int fd = mkstemp(tpl);
1.1.1.4 ! misho    1198:   if (fd == -1) return 1;
1.1       misho    1199:   unlink(tpl);
1.1.1.4 ! misho    1200:   if (fstat(fd, &st) != 0) return 1;
        !          1201:   if ((st.st_mode & 0777) != 0600) return 1;
        !          1202:   return 0;
1.1.1.3   misho    1203: }]])],[rsync_cv_HAVE_SECURE_MKSTEMP=yes],[rsync_cv_HAVE_SECURE_MKSTEMP=no],[rsync_cv_HAVE_SECURE_MKSTEMP=cross])])
1.1       misho    1204: if test x"$rsync_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
                   1205:     case $host_os in
                   1206:     hpux*)
                   1207:        dnl HP-UX has a broken mkstemp() implementation they refuse to fix,
                   1208:        dnl so we noisily skip using it.  See HP change request JAGaf34426
                   1209:        dnl for details. (sbonds)
                   1210:        AC_MSG_WARN(Skipping broken HP-UX mkstemp() -- using mktemp() instead)
                   1211:        ;;
                   1212:     *)
                   1213:        AC_DEFINE(HAVE_SECURE_MKSTEMP, 1, [Define to 1 if mkstemp() is available and works right])
                   1214:        ;;
                   1215:     esac
                   1216: fi
                   1217: 
                   1218: 
                   1219: AC_CACHE_CHECK([if mknod creates FIFOs],rsync_cv_MKNOD_CREATES_FIFOS,[
1.1.1.3   misho    1220: AC_RUN_IFELSE([AC_LANG_SOURCE([[
1.1       misho    1221: #include <stdio.h>
                   1222: #include <sys/stat.h>
                   1223: #include <errno.h>
1.1.1.4 ! misho    1224: #if HAVE_UNISTD_H
        !          1225: # include <unistd.h>
        !          1226: #endif
        !          1227: int main(void) { int rc, ec; char *fn = "fifo-test";
1.1       misho    1228: unlink(fn); rc = mknod(fn,S_IFIFO,0600); ec = errno; unlink(fn);
                   1229: if (rc) {printf("(%d %d) ",rc,ec); return ec;}
1.1.1.3   misho    1230: return 0;}]])],[rsync_cv_MKNOD_CREATES_FIFOS=yes],[rsync_cv_MKNOD_CREATES_FIFOS=no],[rsync_cv_MKNOD_CREATES_FIFOS=cross])])
1.1       misho    1231: if test x"$rsync_cv_MKNOD_CREATES_FIFOS" = x"yes"; then
                   1232:     AC_DEFINE(MKNOD_CREATES_FIFOS, 1, [Define to 1 if mknod() can create FIFOs.])
                   1233: fi
                   1234: 
                   1235: AC_CACHE_CHECK([if mknod creates sockets],rsync_cv_MKNOD_CREATES_SOCKETS,[
1.1.1.3   misho    1236: AC_RUN_IFELSE([AC_LANG_SOURCE([[
1.1       misho    1237: #include <stdio.h>
                   1238: #include <sys/stat.h>
                   1239: #include <errno.h>
1.1.1.4 ! misho    1240: #if HAVE_UNISTD_H
        !          1241: # include <unistd.h>
        !          1242: #endif
        !          1243: int main(void) { int rc, ec; char *fn = "sock-test";
1.1       misho    1244: unlink(fn); rc = mknod(fn,S_IFSOCK,0600); ec = errno; unlink(fn);
                   1245: if (rc) {printf("(%d %d) ",rc,ec); return ec;}
1.1.1.3   misho    1246: return 0;}]])],[rsync_cv_MKNOD_CREATES_SOCKETS=yes],[rsync_cv_MKNOD_CREATES_SOCKETS=no],[rsync_cv_MKNOD_CREATES_SOCKETS=cross])])
1.1       misho    1247: if test x"$rsync_cv_MKNOD_CREATES_SOCKETS" = x"yes"; then
                   1248:     AC_DEFINE(MKNOD_CREATES_SOCKETS, 1, [Define to 1 if mknod() can create sockets.])
                   1249: fi
                   1250: 
                   1251: #
                   1252: # The following test was mostly taken from the tcl/tk plus patches
                   1253: #
                   1254: AC_CACHE_CHECK([whether -c -o works],rsync_cv_DASHC_WORKS_WITH_DASHO,[
                   1255: rm -rf conftest*
                   1256: cat > conftest.$ac_ext <<EOF
1.1.1.4 ! misho    1257: int main(void) { return 0; }
1.1       misho    1258: EOF
                   1259: ${CC-cc} -c -o conftest..o conftest.$ac_ext
                   1260: if test -f conftest..o; then
                   1261:     rsync_cv_DASHC_WORKS_WITH_DASHO=yes
                   1262: else
                   1263:     rsync_cv_DASHC_WORKS_WITH_DASHO=no
                   1264: fi
                   1265: rm -rf conftest*
                   1266: ])
                   1267: if test x"$rsync_cv_DASHC_WORKS_WITH_DASHO" = x"yes"; then
                   1268:     OBJ_SAVE="#"
                   1269:     OBJ_RESTORE="#"
                   1270:     CC_SHOBJ_FLAG='-o $@'
                   1271: else
                   1272:     OBJ_SAVE=' @b=`basename $@ .o`;rm -f $$b.o.sav;if test -f $$b.o; then mv $$b.o $$b.o.sav;fi;'
                   1273:     OBJ_RESTORE='      @b=`basename $@ .o`;if test "$$b.o" != "$@"; then mv $$b.o $@; if test -f $$b.o.sav; then mv $$b.o.sav $$b.o; fi; fi'
                   1274:     CC_SHOBJ_FLAG=""
                   1275: fi
                   1276: 
                   1277: AC_SUBST(OBJ_SAVE)
                   1278: AC_SUBST(OBJ_RESTORE)
                   1279: AC_SUBST(CC_SHOBJ_FLAG)
                   1280: AC_SUBST(BUILD_POPT)
1.1.1.2   misho    1281: AC_SUBST(BUILD_ZLIB)
1.1       misho    1282: AC_SUBST(MAKE_MAN)
                   1283: 
                   1284: AC_CHECK_FUNCS(_acl __acl _facl __facl)
                   1285: #################################################
                   1286: # check for ACL support
                   1287: 
                   1288: AC_MSG_CHECKING([whether to support ACLs])
                   1289: AC_ARG_ENABLE(acl-support,
1.1.1.3   misho    1290:        AS_HELP_STRING([--disable-acl-support],[disable ACL support]))
1.1       misho    1291: 
                   1292: if test x"$enable_acl_support" = x"no"; then
                   1293:     AC_MSG_RESULT(no)
                   1294: else
                   1295:     case "$host_os" in
                   1296:     *sysv5*)
                   1297:        AC_MSG_RESULT(Using UnixWare ACLs)
                   1298:        AC_DEFINE(HAVE_UNIXWARE_ACLS, 1, [true if you have UnixWare ACLs])
                   1299:        AC_DEFINE(SUPPORT_ACLS, 1, [Define to 1 to add support for ACLs])
                   1300:        ;;
1.1.1.4 ! misho    1301:     solaris*)
1.1       misho    1302:        AC_MSG_RESULT(Using solaris ACLs)
                   1303:        AC_DEFINE(HAVE_SOLARIS_ACLS, 1, [true if you have solaris ACLs])
                   1304:        AC_DEFINE(SUPPORT_ACLS, 1)
                   1305:        ;;
                   1306:     *irix*)
                   1307:        AC_MSG_RESULT(Using IRIX ACLs)
                   1308:        AC_DEFINE(HAVE_IRIX_ACLS, 1, [true if you have IRIX ACLs])
                   1309:        AC_DEFINE(SUPPORT_ACLS, 1)
                   1310:        ;;
                   1311:     *aix*)
                   1312:        AC_MSG_RESULT(Using AIX ACLs)
                   1313:        AC_DEFINE(HAVE_AIX_ACLS, 1, [true if you have AIX ACLs])
                   1314:        AC_DEFINE(SUPPORT_ACLS, 1)
                   1315:        ;;
                   1316:     *osf*)
                   1317:        AC_MSG_RESULT(Using Tru64 ACLs)
                   1318:        AC_DEFINE(HAVE_TRU64_ACLS, 1, [true if you have Tru64 ACLs])
                   1319:        AC_DEFINE(SUPPORT_ACLS, 1)
                   1320:        LIBS="$LIBS -lpacl"
                   1321:        ;;
                   1322:     darwin*)
                   1323:        AC_MSG_RESULT(Using OS X ACLs)
                   1324:        AC_DEFINE(HAVE_OSX_ACLS, 1, [true if you have Mac OS X ACLs])
                   1325:        AC_DEFINE(SUPPORT_ACLS, 1)
                   1326:        ;;
1.1.1.4 ! misho    1327:     *hpux*|*nsk*)
        !          1328:        AC_MSG_RESULT(Using HPUX ACLs)
        !          1329:        AC_DEFINE(HAVE_HPUX_ACLS, 1, [true if you have HPUX ACLs])
        !          1330:        AC_DEFINE(SUPPORT_ACLS, 1)
        !          1331:        ;;
1.1       misho    1332:     *)
                   1333:        AC_MSG_RESULT(running tests:)
                   1334:        AC_CHECK_LIB(acl,acl_get_file)
1.1.1.3   misho    1335:        AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
                   1336:            AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
                   1337: #include <sys/acl.h>]], [[ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);]])],[samba_cv_HAVE_POSIX_ACLS=yes],[samba_cv_HAVE_POSIX_ACLS=no])])
1.1       misho    1338:        AC_MSG_CHECKING(ACL test results)
                   1339:        if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
                   1340:            AC_MSG_RESULT(Using posix ACLs)
                   1341:            AC_DEFINE(HAVE_POSIX_ACLS, 1, [true if you have posix ACLs])
                   1342:            AC_DEFINE(SUPPORT_ACLS, 1)
                   1343:            AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
1.1.1.3   misho    1344:                AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
                   1345: #include <sys/acl.h>]], [[ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);]])],[samba_cv_HAVE_ACL_GET_PERM_NP=yes],[samba_cv_HAVE_ACL_GET_PERM_NP=no])])
1.1       misho    1346:            if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
                   1347:                AC_DEFINE(HAVE_ACL_GET_PERM_NP, 1, [true if you have acl_get_perm_np])
                   1348:            fi
                   1349:        else
                   1350:            if test x"$enable_acl_support" = x"yes"; then
                   1351:                AC_MSG_ERROR(Failed to find ACL support)
                   1352:            else
                   1353:                AC_MSG_RESULT(No ACL support found)
                   1354:            fi
                   1355:        fi
                   1356:        ;;
                   1357:     esac
                   1358: fi
                   1359: 
                   1360: #################################################
                   1361: # check for extended attribute support
                   1362: AC_MSG_CHECKING(whether to support extended attributes)
                   1363: AC_ARG_ENABLE(xattr-support,
1.1.1.3   misho    1364:     AS_HELP_STRING([--disable-xattr-support],[disable extended attributes]),
1.1.1.2   misho    1365:     [], [case "$ac_cv_func_getxattr$ac_cv_func_extattr_get_link$ac_cv_func_attropen" in
1.1       misho    1366:        *yes*) enable_xattr_support=maybe ;;
                   1367:        *) enable_xattr_support=no ;;
                   1368:        esac])
                   1369: AH_TEMPLATE([SUPPORT_XATTRS],
                   1370: [Define to 1 to add support for extended attributes])
                   1371: if test x"$enable_xattr_support" = x"no"; then
                   1372:     AC_MSG_RESULT(no)
                   1373: else
                   1374:     case "$host_os" in
1.1.1.4 ! misho    1375:     *linux*|*netbsd*|*cygwin*)
1.1       misho    1376:        AC_MSG_RESULT(Using Linux xattrs)
1.1.1.3   misho    1377:        AC_DEFINE(HAVE_LINUX_XATTRS, 1, [True if you have Linux xattrs (or equivalent)])
1.1       misho    1378:        AC_DEFINE(SUPPORT_XATTRS, 1)
1.1.1.2   misho    1379:        AC_DEFINE(NO_SYMLINK_USER_XATTRS, 1, [True if symlinks do not support user xattrs])
1.1.1.3   misho    1380:        AC_CHECK_LIB(attr,getxattr)
1.1       misho    1381:        ;;
                   1382:     darwin*)
                   1383:        AC_MSG_RESULT(Using OS X xattrs)
                   1384:        AC_DEFINE(HAVE_OSX_XATTRS, 1, [True if you have Mac OS X xattrs])
                   1385:        AC_DEFINE(SUPPORT_XATTRS, 1)
                   1386:        AC_DEFINE(NO_DEVICE_XATTRS, 1, [True if device files do not support xattrs])
                   1387:        AC_DEFINE(NO_SPECIAL_XATTRS, 1, [True if special files do not support xattrs])
                   1388:        ;;
                   1389:     freebsd*)
                   1390:        AC_MSG_RESULT(Using FreeBSD extattrs)
                   1391:        AC_DEFINE(HAVE_FREEBSD_XATTRS, 1, [True if you have FreeBSD xattrs])
                   1392:        AC_DEFINE(SUPPORT_XATTRS, 1)
                   1393:        ;;
                   1394:     solaris*)
1.1.1.2   misho    1395:        AC_MSG_RESULT(Using Solaris xattrs)
                   1396:        AC_DEFINE(HAVE_SOLARIS_XATTRS, 1, [True if you have Solaris xattrs])
                   1397:        AC_DEFINE(SUPPORT_XATTRS, 1)
1.1       misho    1398:        AC_DEFINE(NO_SYMLINK_XATTRS, 1, [True if symlinks do not support xattrs])
                   1399:        ;;
                   1400:     *)
                   1401:        if test x"$enable_xattr_support" = x"yes"; then
                   1402:            AC_MSG_ERROR(Failed to find extended attribute support)
                   1403:        else
                   1404:            AC_MSG_RESULT(No extended attribute support found)
                   1405:        fi
                   1406:        ;;
                   1407:     esac
                   1408: fi
                   1409: 
                   1410: if test x"$enable_acl_support" = x"no" -o x"$enable_xattr_support" = x"no" -o x"$enable_iconv" = x"no"; then
                   1411:     AC_MSG_CHECKING([whether $CC supports -Wno-unused-parameter])
                   1412:     OLD_CFLAGS="$CFLAGS"
                   1413:     CFLAGS="$CFLAGS -Wno-unused-parameter"
1.1.1.3   misho    1414:     AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[printf("hello\n");]])],[rsync_warn_flag=yes],[rsync_warn_flag=no])
1.1       misho    1415:     AC_MSG_RESULT([$rsync_warn_flag])
                   1416:     if test x"$rsync_warn_flag" = x"no"; then
                   1417:        CFLAGS="$OLD_CFLAGS"
                   1418:     fi
                   1419: fi
                   1420: 
1.1.1.4 ! misho    1421: AC_MSG_CHECKING([whether to include mysql DB support])
        !          1422: AC_ARG_ENABLE(mysql,
        !          1423:        AC_HELP_STRING([--disable-mysql],
        !          1424:                [disable mysql DB support]))
        !          1425: 
        !          1426: if test x"$enable_mysql" = x"no"; then
        !          1427:     AC_MSG_RESULT(no)
        !          1428: else
        !          1429:     AC_MSG_RESULT([yes])
        !          1430:     AC_CHECK_PROG(MYSQL_CONFIG, mysql_config, 1, 0)
        !          1431:     if test x$MYSQL_CONFIG = x1; then
        !          1432:        AC_MSG_CHECKING(for mysql version >= 4)
        !          1433:        mysql_version=`mysql_config --version`
        !          1434:        mysql_major_version=`echo $mysql_version | sed 's/\..*//'`
        !          1435:        if test $mysql_major_version -lt 4; then
        !          1436:            AC_MSG_RESULT(no.. skipping MySQL)
        !          1437:        else
        !          1438:            AC_MSG_RESULT(yes)
        !          1439: 
        !          1440:            MYSQL_CFLAGS=`mysql_config --cflags`
        !          1441:            MYSQL_LIBS=`mysql_config --libs`
        !          1442: 
        !          1443:            CPPFLAGS="$CPPFLAGS $MYSQL_CFLAGS"
        !          1444:            LIBS="$MYSQL_LIBS $LIBS"
        !          1445: 
        !          1446:            AC_CHECK_LIB(mysqlclient, mysql_init)
        !          1447:        fi
        !          1448:     fi
        !          1449: fi
        !          1450: 
        !          1451: AC_MSG_CHECKING([whether to include sqlite DB support])
        !          1452: AC_ARG_ENABLE(sqlite,
        !          1453:        AC_HELP_STRING([--disable-sqlite],
        !          1454:                [disable sqlite DB support]))
        !          1455: 
        !          1456: if test x"$enable_sqlite" = x"no"; then
        !          1457:     AC_MSG_RESULT(no)
        !          1458: else
        !          1459:     AC_CHECK_LIB(sqlite3, sqlite3_open)
        !          1460:     AC_CHECK_FUNCS(sqlite3_open_v2 sqlite3_prepare_v2)
        !          1461: fi
        !          1462: 
1.1       misho    1463: case "$CC" in
                   1464: ' checker'*|checker*)
                   1465:     AC_DEFINE(FORCE_FD_ZERO_MEMSET, 1, [Used to make "checker" understand that FD_ZERO() clears memory.])
                   1466:     ;;
                   1467: esac
                   1468: 
                   1469: AC_CONFIG_FILES([Makefile lib/dummy zlib/dummy popt/dummy shconfig])
                   1470: AC_OUTPUT
                   1471: 
                   1472: AC_MSG_RESULT()
1.1.1.4 ! misho    1473: AC_MSG_RESULT([    rsync $PACKAGE_VERSION configuration successful])
1.1       misho    1474: AC_MSG_RESULT()

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>