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>