File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / rsync / configure.ac
Revision 1.1.1.4 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 00:32:36 2021 UTC (3 years, 3 months ago) by misho
Branches: rsync, MAIN
CVS tags: v3_2_3, HEAD
rsync 3.2.3

    1: dnl Process this file with autoconf to produce a configure script.
    2: 
    3: AC_INIT([rsync],[ ],[https://rsync.samba.org/bug-tracking.html])
    4: 
    5: AC_CONFIG_MACRO_DIR([m4])
    6: AC_CONFIG_SRCDIR([byteorder.h])
    7: AC_CONFIG_HEADER(config.h)
    8: AC_PREREQ([2.69])
    9: 
   10: PACKAGE_VERSION=`sed 's/.*"\(.*\)".*/\1/' <$srcdir/version.h`
   11: 
   12: AC_MSG_NOTICE([Configuring rsync $PACKAGE_VERSION])
   13: 
   14: LDFLAGS=${LDFLAGS-""}
   15: 
   16: AC_CANONICAL_HOST
   17: 
   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: 
   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,
   29: 	AS_HELP_STRING([--disable-debug],[disable debugging symbols and features]))
   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
   43: AC_PROG_CXX
   44: AC_PROG_AWK
   45: AC_PROG_EGREP
   46: AC_PROG_INSTALL
   47: AC_PROG_MKDIR_P
   48: AC_PROG_CC_STDC
   49: AC_SUBST(SHELL)
   50: AC_PATH_PROG([PERL], [perl])
   51: AC_PATH_PROG([PYTHON3], [python3])
   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: 
   60: no_lib=''
   61: err_msg=''
   62: nl='
   63: '
   64: 
   65: AC_ARG_ENABLE(profile,
   66: 	AS_HELP_STRING([--enable-profile],[turn on CPU profiling]))
   67: if test x"$enable_profile" = x"yes"; then
   68: 	CFLAGS="$CFLAGS -pg"
   69: fi
   70: 
   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
  107: 
  108: # Specifically, this turns on panic_action handling.
  109: AC_ARG_ENABLE(maintainer-mode,
  110: 	AS_HELP_STRING([--enable-maintainer-mode],[turn on extra debug features]))
  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,
  125:         AS_HELP_STRING([--with-included-popt],[use bundled popt library, not from system]))
  126: 
  127: AC_ARG_WITH(included-zlib,
  128:         AS_HELP_STRING([--with-included-zlib],[use bundled zlib library, not from system]))
  129: 
  130: AC_ARG_WITH(protected-args,
  131:         AS_HELP_STRING([--with-protected-args],[make --protected-args option the default]))
  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: 
  136: AC_ARG_WITH(rsync-path,
  137: 	AS_HELP_STRING([--with-rsync-path=PATH],[set default --rsync-path to PATH (default: rsync)]),
  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,
  144: 	AS_HELP_STRING([--with-rsyncd-conf=PATH],[set configuration file for rsync server to PATH (default: /etc/rsyncd.conf)]),
  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,
  165: 	AS_HELP_STRING([--with-rsh=CMD],[set remote shell command to CMD (default: ssh)]))
  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: 
  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: 
  183: AC_ARG_WITH(nobody-group,
  184:     AS_HELP_STRING([--with-nobody-group=GROUP],[set the default unprivileged group (default nobody or nogroup)]),
  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: 
  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: 
  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,[
  308: AC_RUN_IFELSE([AC_LANG_SOURCE([[
  309: #define _FILE_OFFSET_BITS 64
  310: #include <stdio.h>
  311: #include <fcntl.h>
  312: #include <sys/types.h>
  313: #include <sys/wait.h>
  314: #if HAVE_UNISTD_H
  315: #include <unistd.h>
  316: #endif
  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);
  341: 	return WEXITSTATUS(status);
  342: }
  343: ]])],[rsync_cv_HAVE_BROKEN_LARGEFILE=yes],[rsync_cv_HAVE_BROKEN_LARGEFILE=no],[rsync_cv_HAVE_BROKEN_LARGEFILE=cross])])
  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,
  353: 	AS_HELP_STRING([--disable-ipv6],[turn off IPv6 support]))
  354: if test x"$enable_ipv6" != x"no"; then
  355: 	AC_MSG_CHECKING([ipv6 stack type])
  356: 	for i in inria kame linux-glibc linux-inet6 solaris toshiba v6d zeta cygwin TANDEM; do
  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: 			;;
  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: 			;;
  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],
  473: 	AS_HELP_STRING([--disable-locale],[disable locale features]))
  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 \
  497:     mysql/mysql.h sqlite3.h \
  498:     netdb.h malloc.h float.h limits.h iconv.h libcharset.h langinfo.h \
  499:     sys/acl.h acl/libacl.h attr/xattr.h sys/xattr.h sys/extattr.h dl.h \
  500:     popt.h popt/popt.h linux/falloc.h netinet/in_systm.h netinet/ip.h \
  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
  604: 
  605: AC_CACHE_CHECK([if makedev takes 3 args],rsync_cv_MAKEDEV_TAKES_3_ARGS,[
  606: AC_RUN_IFELSE([AC_LANG_SOURCE([[
  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)
  621: 		return 1;
  622: 	return 0;
  623: }
  624: ]])],[rsync_cv_MAKEDEV_TAKES_3_ARGS=yes],[rsync_cv_MAKEDEV_TAKES_3_ARGS=no],[rsync_cv_MAKEDEV_TAKES_3_ARGS=no])])
  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)
  641: AC_CHECK_SIZEOF(char*)
  642: 
  643: AC_C_INLINE
  644: 
  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: 
  651: AC_TYPE_UID_T
  652: AC_CHECK_TYPES([mode_t,off_t,size_t,pid_t,id_t])
  653: AC_TYPE_GETGROUPS
  654: AC_CHECK_MEMBERS([struct stat.st_rdev,
  655: 		  struct stat.st_mtimensec,
  656: 		  struct stat.st_mtimespec.tv_nsec,
  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])
  667: 
  668: TYPE_SOCKLEN_T
  669: 
  670: AC_CACHE_CHECK([for errno in errno.h],rsync_cv_errno, [
  671:     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <errno.h>]], [[int i = errno]])],[rsync_cv_errno=yes],[rsync_cv_have_errno_decl=no])])
  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, [
  722:     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
  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
  734: ]], [[]])],[am_cv_proto_iconv_arg1=""],[am_cv_proto_iconv_arg1="const"])
  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);"])
  736:     am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed 's/( /(/'`
  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: 
  744: AC_REPLACE_FUNCS([inet_ntop inet_pton])
  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)])
  763: AS_IF([test x"$rsync_cv_HAVE_GETADDR_DEFINES" = x"yes" -a x"$ac_cv_type_struct_addrinfo" = x"yes"],[
  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>])
  769: 		AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
  770: 		#include <sys/socket.h>
  771: 		#include <netdb.h>]], [[getaddrinfo(NULL, NULL, NULL, NULL);]])],[AC_MSG_RESULT([yes])
  772: 			AC_DEFINE(HAVE_GETADDRINFO, 1,
  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])])
  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
  848: AC_CHECK_FUNCS(waitpid wait4 getcwd chown chmod lchmod mknod mkfifo \
  849:     fchmod fstat ftruncate strchr readlink link utime utimes lutimes strftime \
  850:     chflags getattrlist mktime innetgr linkat \
  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 \
  855:     extattr_get_link sigaction sigprocmask setattrlist getgrouplist \
  856:     initgroups utimensat posix_fallocate attropen setvbuf nanosleep usleep)
  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: 
  863: dnl Preallocation stuff (also fallocate, posix_fallocate function tests above):
  864: 
  865: AC_CACHE_CHECK([for useable fallocate],rsync_cv_have_fallocate,[
  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])])
  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: 
  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: 
  902: AC_CACHE_CHECK([for SYS_fallocate],rsync_cv_have_sys_fallocate,[
  903: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/syscall.h>
  904: #include <unistd.h>
  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])])
  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: 
  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,
  932:     AS_HELP_STRING([--disable-iconv-open],[disable all use of iconv_open() function]),
  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,
  940:     AS_HELP_STRING([--disable-iconv],[disable rsync's --iconv option]),
  941:     [], [enable_iconv=$enable_iconv_open])
  942: AH_TEMPLATE([ICONV_OPTION],
  943: [Define if you want the --iconv option.  Specifying a value will set the
  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: 
  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: 
  979: AC_CACHE_CHECK([whether chown() modifies symlinks],rsync_cv_chown_modifies_symlink,[
  980:   AC_RUN_IFELSE([AC_LANG_SOURCE([[
  981: #if HAVE_UNISTD_H
  982: # include <unistd.h>
  983: #endif
  984: #include <stdlib.h>
  985: #include <errno.h>
  986: int main(void) {
  987: 	char const *dangling_symlink = "conftest.dangle";
  988: 	unlink(dangling_symlink);
  989: 	if (symlink("conftest.no-such", dangling_symlink) < 0) abort();
  990: 	if (chown(dangling_symlink, getuid(), getgid()) < 0 && errno == ENOENT) return 1;
  991: 	return 0;
  992:     }]])],[rsync_cv_chown_modifies_symlink=yes],[rsync_cv_chown_modifies_symlink=no],[rsync_cv_chown_modifies_symlink=no])])
  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,[
  998:   AC_RUN_IFELSE([AC_LANG_SOURCE([[
  999: #ifdef HAVE_FCNTL_H
 1000: # include <fcntl.h>
 1001: #elif defined HAVE_SYS_FCNTL_H
 1002: # include <sys/fcntl.h>
 1003: #endif
 1004: #if HAVE_UNISTD_H
 1005: # include <unistd.h>
 1006: #endif
 1007: #include <stdlib.h>
 1008: #include <errno.h>
 1009: #define FILENAME "conftest.dangle"
 1010: int main(void) {
 1011: 	unlink(FILENAME);
 1012: 	if (symlink("conftest.no-such", FILENAME) < 0) abort();
 1013: 	unlink(FILENAME "2");
 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;
 1020:     }]])],[rsync_cv_can_hardlink_symlink=yes],[rsync_cv_can_hardlink_symlink=no],[rsync_cv_can_hardlink_symlink=no])])
 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,[
 1026:   AC_RUN_IFELSE([AC_LANG_SOURCE([[
 1027: #if HAVE_UNISTD_H
 1028: # include <unistd.h>
 1029: #endif
 1030: #ifdef HAVE_SYS_STAT_H
 1031: #include <sys/stat.h>
 1032: #endif
 1033: #include <stdlib.h>
 1034: #include <errno.h>
 1035: #define FILENAME "conftest.fifi"
 1036: int main(void) {
 1037: 	unlink(FILENAME);
 1038: 	if (mkfifo(FILENAME, 0777) < 0) abort();
 1039: 	unlink(FILENAME "2");
 1040: 	if (link(FILENAME, FILENAME "2") < 0) return 1;
 1041: 	return 0;
 1042:     }]])],[rsync_cv_can_hardlink_special=yes],[rsync_cv_can_hardlink_special=no],[rsync_cv_can_hardlink_special=no])])
 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: 
 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: 
 1070: AC_CACHE_CHECK([for working socketpair],rsync_cv_HAVE_SOCKETPAIR,[
 1071: AC_RUN_IFELSE([AC_LANG_SOURCE([[
 1072: #include <sys/types.h>
 1073: #include <sys/socket.h>
 1074: 
 1075: int main(void) {
 1076:        int fd[2];
 1077:        return (socketpair(AF_UNIX, SOCK_STREAM, 0, fd) != -1) ? 0 : 1;
 1078: }]])],[rsync_cv_HAVE_SOCKETPAIR=yes],[rsync_cv_HAVE_SOCKETPAIR=no],[rsync_cv_HAVE_SOCKETPAIR=cross])])
 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: 
 1083: AC_REPLACE_FUNCS([getpass])
 1084: 
 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)'
 1102:     CFLAGS="-I$srcdir/popt $CFLAGS"
 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: 
 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)'
 1127:     CFLAGS="-I$srcdir/zlib $CFLAGS"
 1128: else
 1129:     AC_DEFINE(EXTERNAL_ZLIB, 1, [Define to 1 if using external zlib])
 1130:     AC_MSG_RESULT(no)
 1131: fi
 1132: 
 1133: AC_CACHE_CHECK([for unsigned char],rsync_cv_SIGNED_CHAR_OK,[
 1134: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[signed char *s = ""]])],[rsync_cv_SIGNED_CHAR_OK=yes],[rsync_cv_SIGNED_CHAR_OK=no])])
 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,[
 1140: AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <sys/types.h>
 1141: #include <dirent.h>
 1142: int main(void) { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
 1143: if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
 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])])
 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,[
 1150: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
 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])])
 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,[
 1157: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/time.h>
 1158: #include <unistd.h>]], [[struct timeval tv; return gettimeofday(&tv, NULL);]])],[rsync_cv_HAVE_GETTIMEOFDAY_TZ=yes],[rsync_cv_HAVE_GETTIMEOFDAY_TZ=no])])
 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,[
 1164: AC_RUN_IFELSE([AC_LANG_SOURCE([[
 1165: #include <sys/types.h>
 1166: #include <stdarg.h>
 1167: #include <stdio.h>
 1168: #include <stdlib.h>
 1169: #include <string.h>
 1170: void foo(const char *format, ...) {
 1171:        va_list ap;
 1172:        int len;
 1173:        static char buf[] = "12345678901234567890";
 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: }
 1182: int main(void) { foo("hello"); return 0; }
 1183: ]])],[rsync_cv_HAVE_C99_VSNPRINTF=yes],[rsync_cv_HAVE_C99_VSNPRINTF=no],[rsync_cv_HAVE_C99_VSNPRINTF=cross])])
 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,[
 1190: AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
 1191: #include <sys/types.h>
 1192: #include <sys/stat.h>
 1193: #include <unistd.h>
 1194: int main(void) {
 1195:   struct stat st;
 1196:   char tpl[20]="/tmp/test.XXXXXX";
 1197:   int fd = mkstemp(tpl);
 1198:   if (fd == -1) return 1;
 1199:   unlink(tpl);
 1200:   if (fstat(fd, &st) != 0) return 1;
 1201:   if ((st.st_mode & 0777) != 0600) return 1;
 1202:   return 0;
 1203: }]])],[rsync_cv_HAVE_SECURE_MKSTEMP=yes],[rsync_cv_HAVE_SECURE_MKSTEMP=no],[rsync_cv_HAVE_SECURE_MKSTEMP=cross])])
 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,[
 1220: AC_RUN_IFELSE([AC_LANG_SOURCE([[
 1221: #include <stdio.h>
 1222: #include <sys/stat.h>
 1223: #include <errno.h>
 1224: #if HAVE_UNISTD_H
 1225: # include <unistd.h>
 1226: #endif
 1227: int main(void) { int rc, ec; char *fn = "fifo-test";
 1228: unlink(fn); rc = mknod(fn,S_IFIFO,0600); ec = errno; unlink(fn);
 1229: if (rc) {printf("(%d %d) ",rc,ec); return ec;}
 1230: return 0;}]])],[rsync_cv_MKNOD_CREATES_FIFOS=yes],[rsync_cv_MKNOD_CREATES_FIFOS=no],[rsync_cv_MKNOD_CREATES_FIFOS=cross])])
 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,[
 1236: AC_RUN_IFELSE([AC_LANG_SOURCE([[
 1237: #include <stdio.h>
 1238: #include <sys/stat.h>
 1239: #include <errno.h>
 1240: #if HAVE_UNISTD_H
 1241: # include <unistd.h>
 1242: #endif
 1243: int main(void) { int rc, ec; char *fn = "sock-test";
 1244: unlink(fn); rc = mknod(fn,S_IFSOCK,0600); ec = errno; unlink(fn);
 1245: if (rc) {printf("(%d %d) ",rc,ec); return ec;}
 1246: return 0;}]])],[rsync_cv_MKNOD_CREATES_SOCKETS=yes],[rsync_cv_MKNOD_CREATES_SOCKETS=no],[rsync_cv_MKNOD_CREATES_SOCKETS=cross])])
 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
 1257: int main(void) { return 0; }
 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)
 1281: AC_SUBST(BUILD_ZLIB)
 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,
 1290: 	AS_HELP_STRING([--disable-acl-support],[disable ACL support]))
 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: 	;;
 1301:     solaris*)
 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: 	;;
 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: 	;;
 1332:     *)
 1333: 	AC_MSG_RESULT(running tests:)
 1334: 	AC_CHECK_LIB(acl,acl_get_file)
 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])])
 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,[
 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])])
 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,
 1364:     AS_HELP_STRING([--disable-xattr-support],[disable extended attributes]),
 1365:     [], [case "$ac_cv_func_getxattr$ac_cv_func_extattr_get_link$ac_cv_func_attropen" in
 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
 1375:     *linux*|*netbsd*|*cygwin*)
 1376: 	AC_MSG_RESULT(Using Linux xattrs)
 1377: 	AC_DEFINE(HAVE_LINUX_XATTRS, 1, [True if you have Linux xattrs (or equivalent)])
 1378: 	AC_DEFINE(SUPPORT_XATTRS, 1)
 1379: 	AC_DEFINE(NO_SYMLINK_USER_XATTRS, 1, [True if symlinks do not support user xattrs])
 1380: 	AC_CHECK_LIB(attr,getxattr)
 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*)
 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)
 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"
 1414:     AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[printf("hello\n");]])],[rsync_warn_flag=yes],[rsync_warn_flag=no])
 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: 
 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: 
 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()
 1473: AC_MSG_RESULT([    rsync $PACKAGE_VERSION configuration successful])
 1474: AC_MSG_RESULT()

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