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