67cec3810964503fb26fbdb4d842abe39ce28d29
[nivanova/samba-autobuild/.git] / source3 / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2
3 dnl We must use autotools 2.53 or above
4 AC_PREREQ(2.53)
5 AC_INIT(include/includes.h)
6 AC_CONFIG_HEADER(include/config.h)
7 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
8
9 case "$PATH" in
10     */usr/ucb*)
11         AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
12         ;;
13 esac 
14
15 SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
16 echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
17
18 SAMBA_VERSION_SVN_REVISION=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_SVN_REVISION' | cut -d ' ' -f3-`
19 if test -n "${SAMBA_VERSION_SVN_REVISION}";then
20         echo "BUILD REVISION: ${SAMBA_VERSION_SVN_REVISION}"
21 fi
22
23 AC_LIBREPLACE_LOCATION_CHECKS
24
25 AC_DISABLE_STATIC
26 AC_ENABLE_SHARED
27
28 #################################################
29 # Directory handling stuff to support both the
30 # legacy SAMBA directories and FHS compliant
31 # ones...
32 AC_PREFIX_DEFAULT(/usr/local/samba)
33
34 rootsbindir="\${SBINDIR}"
35 lockdir="\${VARDIR}/locks"
36 piddir="\${VARDIR}/locks"
37 test "${mandir}" || mandir="\${prefix}/man"
38 logfilebase="\${VARDIR}"
39 privatedir="\${prefix}/private"
40 test "${libdir}" || libdir="\${prefix}/lib"
41 pammodulesdir="\${LIBDIR}/security"
42 configdir="\${LIBDIR}"
43 swatdir="\${prefix}/swat"
44
45 AC_ARG_WITH(fhs,
46 [  --with-fhs              Use FHS-compliant paths (default=no)],
47 [ case "$withval" in
48   yes)
49     lockdir="\${VARDIR}/lib/samba"
50     piddir="\${VARDIR}/run"
51     mandir="\${prefix}/share/man"
52     logfilebase="\${VARDIR}/log/samba"
53     privatedir="\${CONFIGDIR}/private"
54     libdir="\${prefix}/lib/samba"
55     configdir="\${sysconfdir}/samba"
56     swatdir="\${DATADIR}/samba/swat"
57     ;;
58   esac])
59
60 #################################################
61 # set private directory location
62 AC_ARG_WITH(privatedir,
63 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
64 [ case "$withval" in
65   yes|no)
66   #
67   # Just in case anybody calls it without argument
68   #
69     AC_MSG_WARN([--with-privatedir called without argument - will use default])
70   ;;
71   * )
72     privatedir="$withval"
73     ;;
74   esac])
75
76 #################################################
77 # set root sbin directory location
78 AC_ARG_WITH(rootsbindir,
79 [  --with-rootsbindir=DIR  Which directory to use for root sbin ($ac_default_prefix/sbin)],
80 [ case "$withval" in
81   yes|no)
82   #
83   # Just in case anybody calls it without argument
84   #
85     AC_MSG_WARN([--with-rootsbindir called without argument - will use default])
86   ;;
87   * )
88     rootsbindir="$withval"
89     ;;
90   esac])
91
92 #################################################
93 # set lock directory location
94 AC_ARG_WITH(lockdir,
95 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
96 [ case "$withval" in
97   yes|no)
98   #
99   # Just in case anybody calls it without argument
100   #
101     AC_MSG_WARN([--with-lockdir called without argument - will use default])
102   ;;
103   * )
104     lockdir="$withval"
105     ;;
106   esac])
107
108 #################################################
109 # set pid directory location
110 AC_ARG_WITH(piddir,
111 [  --with-piddir=DIR       Where to put pid files ($ac_default_prefix/var/locks)],
112 [ case "$withval" in
113   yes|no)
114   #
115   # Just in case anybody calls it without argument
116   #
117     AC_MSG_WARN([--with-piddir called without argument - will use default])
118   ;;
119   * )
120     piddir="$withval"
121     ;;
122   esac])
123
124 #################################################
125 # set SWAT directory location
126 AC_ARG_WITH(swatdir,
127 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
128 [ case "$withval" in
129   yes|no)
130   #
131   # Just in case anybody does it
132   #
133     AC_MSG_WARN([--with-swatdir called without argument - will use default])
134   ;;
135   * )
136     swatdir="$withval"
137     ;;
138   esac])
139
140 #################################################
141 # set configuration directory location
142 AC_ARG_WITH(configdir,
143 [  --with-configdir=DIR    Where to put configuration files ($libdir)],
144 [ case "$withval" in
145   yes|no)
146   #
147   # Just in case anybody does it
148   #
149     AC_MSG_WARN([--with-configdir called without argument - will use default])
150   ;;
151   * )
152     configdir="$withval"
153     ;;
154   esac])
155
156 #################################################
157 # set log directory location
158 AC_ARG_WITH(logfilebase,
159 [  --with-logfilebase=DIR  Where to put log files ($VARDIR)],
160 [ case "$withval" in
161   yes|no)
162   #
163   # Just in case anybody does it
164   #
165     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
166   ;;
167   * )
168     logfilebase="$withval"
169     ;;
170   esac])
171
172
173 #################################################
174 # set ctdb source directory location
175 AC_ARG_WITH(ctdb,
176 [  --with-ctdb=DIR  Where to find ctdb sources],
177 [ case "$withval" in
178   yes|no)
179     AC_MSG_WARN([--with-ctdb called without argument])
180   ;;
181   * )
182     ctdbdir="$withval"
183     ;;
184   esac])
185
186 #################################################
187 # set lib directory location
188 AC_ARG_WITH(libdir,
189 [  --with-libdir=DIR       Where to put libdir ($libdir)],
190 [ case "$withval" in
191   yes|no)
192   #
193   # Just in case anybody does it
194   #
195     AC_MSG_WARN([--with-libdir without argument - will use default])
196   ;;
197   * )
198     libdir="$withval"
199     ;;
200   esac])
201
202 #################################################
203 # set PAM modules directory location
204 AC_ARG_WITH(pammodulesdir,
205 [  --with-pammodulesdir=DIR  Which directory to use for PAM modules ($ac_default_prefix/$libdir/security)],
206 [ case "$withval" in
207   yes|no)
208   #
209   # Just in case anybody calls it without argument
210   #
211     AC_MSG_WARN([--with-pammodulesdir called without argument - will use default])
212   ;;
213   * )
214     pammodulesdir="$withval"
215     ;;
216   esac])
217
218 #################################################
219 # set man directory location
220 AC_ARG_WITH(mandir,
221 [  --with-mandir=DIR       Where to put man pages ($mandir)],
222 [ case "$withval" in
223   yes|no)
224   #
225   # Just in case anybody does it
226   #
227     AC_MSG_WARN([--with-mandir without argument - will use default])
228   ;;
229   * )
230     mandir="$withval"
231     ;;
232   esac])
233
234 AC_ARG_WITH(cfenc,
235 [  --with-cfenc=HEADERDIR  Use internal CoreFoundation encoding API
236                           for optimization (Mac OS X/Darwin only)],
237 [
238 # May be in source $withval/CoreFoundation/StringEncodings.subproj.
239 # Should have been in framework $withval/CoreFoundation.framework/Headers.
240 for d in \
241     $withval/CoreFoundation/StringEncodings.subproj \
242     $withval/StringEncodings.subproj \
243     $withval/CoreFoundation.framework/Headers \
244     $withval/Headers \
245     $withval
246 do
247     if test -r $d/CFStringEncodingConverter.h; then
248         ln -sfh $d include/CoreFoundation
249     fi
250 done
251 ])
252
253 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include  -I. -I${srcdir-.}"
254 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
255 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/talloc"
256 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/tdb/include"
257 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
258 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
259
260 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/popt"
261
262 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
263 if test "x${srcdir-.}" != "x."; then
264         SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
265 fi
266
267 AC_SUBST(configdir)
268 AC_SUBST(lockdir)
269 AC_SUBST(piddir)
270 AC_SUBST(logfilebase)
271 AC_SUBST(ctdbdir)
272 AC_SUBST(privatedir)
273 AC_SUBST(swatdir)
274 AC_SUBST(bindir)
275 AC_SUBST(sbindir)
276 AC_SUBST(rootsbindir)
277 AC_SUBST(pammodulesdir)
278
279 dnl Unique-to-Samba variables we'll be playing with.
280 AC_SUBST(SAMBA_CPPFLAGS)
281 AC_SUBST(SHELL)
282 AC_SUBST(LDSHFLAGS)
283 AC_SUBST(MODULE_EXPORTS)
284 AC_SUBST(SONAMEFLAG)
285 AC_SUBST(SHLD)
286 AC_SUBST(DSO_EXPORTS)
287 AC_SUBST(HOST_OS)
288 AC_SUBST(PICFLAG)
289 AC_SUBST(PIE_CFLAGS)
290 AC_SUBST(PIE_LDFLAGS)
291 AC_SUBST(SHLIBEXT)
292 AC_SUBST(INSTALLLIBCMD_SH)
293 AC_SUBST(INSTALLLIBCMD_A)
294 AC_SUBST(UNINSTALLLIBCMD_SH)
295 AC_SUBST(UNINSTALLLIBCMD_A)
296 AC_SUBST(INSTALL_LIBMSRPC)
297 AC_SUBST(UNINSTALL_LIBMSRPC)
298 AC_SUBST(LIBMSRPC_SHARED)
299 AC_SUBST(LIBMSRPC)
300 AC_SUBST(INSTALL_LIBADDNS)
301 AC_SUBST(UNINSTALL_LIBADDNS)
302 AC_SUBST(LIBADDNS_SHARED)
303 AC_SUBST(LIBADDNS)
304 AC_SUBST(INSTALL_LIBSMBCLIENT)
305 AC_SUBST(UNINSTALL_LIBSMBCLIENT)
306 AC_SUBST(LIBSMBCLIENT_SHARED)
307 AC_SUBST(LIBSMBCLIENT)
308 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
309 AC_SUBST(UNINSTALL_LIBSMBSHAREMODES)
310 AC_SUBST(LIBSMBSHAREMODES_SHARED)
311 AC_SUBST(LIBSMBSHAREMODES)
312 AC_SUBST(PRINT_LIBS)
313 AC_SUBST(AUTH_LIBS)
314 AC_SUBST(ACL_LIBS)
315 AC_SUBST(PASSDB_LIBS)
316 AC_SUBST(IDMAP_LIBS)
317 AC_SUBST(KRB5_LIBS)
318 AC_SUBST(UUID_LIBS)
319 AC_SUBST(LDAP_LIBS)
320 AC_SUBST(PAM_MODULES)
321 AC_SUBST(INSTALL_PAM_MODULES)
322 AC_SUBST(UNINSTALL_PAM_MODULES)
323 AC_SUBST(NSS_MODULES)
324 AC_SUBST(EXTRA_BIN_PROGS)
325 AC_SUBST(SMBMOUNT_PROGS)
326 AC_SUBST(CIFSMOUNT_PROGS)
327 AC_SUBST(INSTALL_CIFSMOUNT)
328 AC_SUBST(UNINSTALL_CIFSMOUNT)
329 AC_SUBST(EXTRA_SBIN_PROGS)
330 AC_SUBST(EXTRA_ALL_TARGETS)
331 AC_SUBST(CONFIG_LIBS)
332 AC_SUBST(NSCD_LIBS)
333
334 ## check for --enable-debug first before checking CFLAGS before
335 ## so that we don't mix -O and -g
336 AC_ARG_ENABLE(debug,
337 [  --enable-debug          Turn on compiler debugging information (default=no)],
338     [if eval "test x$enable_debug = xyes"; then
339         CFLAGS="${CFLAGS} -g"
340     fi])
341
342 # compile with optimization and without debugging by default, but
343 # allow people to set their own preference.
344 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
345 # if it has no value.  This prevent *very* large debug binaries from occurring
346 # by default.
347 if test "x$CFLAGS" = x; then
348   CFLAGS="-O"
349 fi
350
351 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
352
353 AC_LIBREPLACE_CC_CHECKS
354
355 m4_include(lib/socket_wrapper/config.m4)
356
357 SWAT_SBIN_TARGETS='bin/swat$(EXEEXT)'
358 SWAT_INSTALL_TARGETS=installswat
359
360 AC_ARG_ENABLE(swat,
361 [  --enable-swat           Build the SWAT tool (default=yes)],
362 [
363     case "$enable_swat" in
364         no)
365             SWAT_SBIN_TARGETS=''
366             SWAT_INSTALL_TARGETS=''
367             ;;
368     esac
369 ])
370
371 AC_SUBST(SWAT_SBIN_TARGETS)
372 AC_SUBST(SWAT_INSTALL_TARGETS)
373
374 #################################################
375 # set prefix for 'make test'
376 selftest_prefix="./"
377 AC_SUBST(selftest_prefix)
378 AC_ARG_WITH(selftest-prefix,
379 [  --with-selftest-prefix=DIR    The prefix where make test will be runned ($selftest_prefix)],
380 [ case "$withval" in
381   yes|no)
382     AC_MSG_WARN([--with-selftest-prefix called without argument - will use default])
383   ;;
384   * )
385     selftest_prefix="$withval"
386     ;;
387   esac
388 ])
389
390 AC_ARG_ENABLE(launchd,
391 [  --enable-launchd        Support running under launchd (default=auto)])
392
393 if test x"$enable_launchd" != x"no" ; then
394     AC_CACHE_CHECK([whether to include launchd support],
395         samba_cv_launchd_support,
396         [
397             AC_TRY_COMPILE(
398             [
399 #include <launch.h>
400             ],
401             [
402                 launchd_msg(NULL);
403                 launchd_data_get_fd(NULL);
404             ],
405             samba_cv_launchd_support=yes,
406             samba_cv_launchd_support=no)
407         ])
408
409     if test x"$samba_cv_launchd_support" = x"yes" ; then
410         AC_DEFINE(WITH_LAUNCHD_SUPPORT, 1,
411                     [Whether launchd support should be enabled])
412     else
413         if test x"$enable_launchd" = x"yes" ; then
414             AC_ERROR(launchd support is not available)
415         fi
416     fi
417 fi
418
419 #################################################
420 # set path of samba4's smbtorture
421 smbtorture4_path=""
422 AC_SUBST(smbtorture4_path)
423 AC_ARG_WITH(smbtorture4_path,
424 [  --with-smbtorture4-path=PATH    The path to a samba4 smbtorture for make test (none)],
425 [ case "$withval" in
426   yes|no)
427     AC_MSG_ERROR([--with-smbtorture4-path should take a path])
428   ;;
429   * )
430     smbtorture4_path="$withval"
431     if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then
432         AC_MSG_ERROR(['$smbtorture_path' does not  exist!])
433     fi
434   ;;
435  esac
436 ])
437
438 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
439     [if eval "test x$enable_developer = xyes"; then
440         developer=yes
441     fi])
442
443 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
444     [if eval "test x$enable_krb5developer = xyes"; then
445         developer=yes
446         krb5_developer=yes
447     fi])
448
449 # Probe the gcc version for extra CFLAGS. We always stash these in
450 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
451 # Makefile edit, avoiding the need to re-run configure.
452 if test x"$ac_cv_prog_gcc" = x"yes" ; then
453         DEVELOPER_CFLAGS="-gstabs -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
454         # Add -Wdeclaration-after-statement if compiler supports it
455         AC_CACHE_CHECK(
456           [that the C compiler understands -Wdeclaration-after-statement],
457           samba_cv_HAVE_Wdeclaration_after_statement, [
458           AC_TRY_RUN_STRICT([
459             int main(void)
460             {
461                 return 0;
462             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
463             samba_cv_HAVE_Wdeclaration_after_statement=yes,
464             samba_cv_HAVE_Wdeclaration_after_statement=no,
465             samba_cv_HAVE_Wdeclaration_after_statement=cross)
466        ])
467
468         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
469             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
470         fi
471
472         #-Werror-implicit-function-declaration
473         AC_CACHE_CHECK(
474           [that the C compiler understands -Werror-implicit-function-declaration],
475           samba_cv_HAVE_Werror_implicit_function_declaration, [
476           AC_TRY_RUN_STRICT([
477             int main(void)
478             {
479                 return 0;
480             }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
481             samba_cv_HAVE_Werror_implicit_function_declaration=yes,
482             samba_cv_HAVE_Werror_implicit_function_declaration=no,
483             samba_cv_HAVE_Werror_implicit_function_declaration=cross)
484        ])
485        if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
486             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
487        fi
488
489         # krb5developer is like developer, except we don't get
490         # -Wstrict-prototypes.
491        if test x"$krb5_developer" != x"$yes" ; then
492             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
493        fi
494 fi
495
496 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
497
498 if test "x$enable_dmalloc" = xyes
499 then
500         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
501         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
502                   [Define to check invariants around some common functions])
503         LIBS="$LIBS -ldmalloc"  
504 fi
505
506 #################################################
507 # check for a shared memory profiling support
508 AC_MSG_CHECKING(whether to use profiling)
509 AC_ARG_WITH(profiling-data,
510 [  --with-profiling-data   Include gathering source code profile information (default=no)],
511 [ case "$withval" in
512   yes)
513     AC_MSG_RESULT(yes)
514     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
515     samba_cv_WITH_PROFILE=yes
516     ;;
517   *)
518     AC_MSG_RESULT(no)
519     samba_cv_WITH_PROFILE=no
520     ;;
521   esac ],
522   AC_MSG_RESULT(no)
523 )
524
525 dnl Checks for programs.
526
527 AC_PROG_INSTALL
528 AC_PROG_AWK
529 AC_PATH_PROG(PERL, perl)
530
531 AC_CHECK_TOOL(AR, ar)
532
533 dnl Check if we use GNU ld
534 LD=ld
535 AC_PROG_LD_GNU
536
537 dnl Certain versions of GNU ld the default is not to have the
538 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
539 dnl warnings when building modules.
540 if test "$ac_cv_prog_gnu_ld" = "yes"; then
541         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
542         AC_MSG_CHECKING(GNU ld release date)
543         changequote(,)dnl
544         ac_cv_gnu_ld_date=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'`
545         changequote([,])dnl
546         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
547         if test -n "$ac_cv_gnu_ld_date"; then
548         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
549                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
550         fi
551         if test "$ac_cv_gnu_ld_date" -gt 20030101; then
552                 ac_cv_gnu_ld_version_script=yes
553         fi
554         else
555            AC_MSG_CHECKING(GNU ld release version)
556            changequote(,)dnl
557            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
558            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
559            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
560            changequote([,])dnl
561            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
562            AC_MSG_CHECKING(GNU ld release version major)
563            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
564            AC_MSG_CHECKING(GNU ld release version minor)
565            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
566            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
567              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
568            fi
569            if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_l= d_vernr_major"=2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then
570              ac_cv_gnu_ld_version_script=yes
571            fi
572         fi
573 fi
574
575 dnl look for executable suffix
576 AC_EXEEXT
577
578 dnl Check if C compiler understands -c and -o at the same time
579 AC_PROG_CC_C_O
580 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
581       BROKEN_CC=
582 else
583       BROKEN_CC=#
584 fi
585 AC_SUBST(BROKEN_CC)
586
587 dnl Check if the C compiler understands -Werror
588 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
589  AC_TRY_RUN_STRICT([
590   int main(void)
591   {
592         return 0;
593   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
594   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
595 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
596    Werror_FLAGS="-Werror"
597 else
598 dnl Check if the C compiler understands -w2
599 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
600  AC_TRY_RUN_STRICT([
601   int main(void)
602   {
603         return 0;
604   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
605   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
606 if test x"$samba_cv_HAVE_w2" = x"yes"; then
607    Werror_FLAGS="-w2"
608 fi
609 fi
610
611 dnl Check if the C compiler understands volatile (it should, being ANSI).
612 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
613     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
614         samba_cv_volatile=yes,samba_cv_volatile=no)])
615 if test x"$samba_cv_volatile" = x"yes"; then
616    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
617 fi
618
619 ############################################
620 # check if the compiler can handle negative enum values
621 # and don't truncate the values to INT_MAX
622 # a runtime test is needed here
623 AC_SUBST(PIDL_ARGS)
624 AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
625     AC_TRY_RUN(
626 [
627         #include <stdio.h>
628         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
629         int main(void) {
630                 enum negative_values v1 = NEGATIVE_VALUE;
631                 unsigned v2 = NEGATIVE_VALUE;
632
633                 if (v1 != 0xFFFFFFFF) {
634                         printf("%u != 0xFFFFFFFF\n", v1);
635                         return 1;
636                 }
637                 if (v2 != 0xFFFFFFFF) {
638                         printf("%u != 0xFFFFFFFF\n", v2);
639                         return 1;
640                 }
641
642                 return 0;
643         }
644 ],
645         SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
646 if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
647         AC_MSG_WARN([using --unit-enums for pidl])
648         PIDL_ARGS="$PIDL_ARGS --uint-enums"
649 fi
650
651 ############################################
652 # Check whether we can do automatic dependency tracking
653
654 m4_include(m4/substnot.m4)
655 m4_include(m4/cond.m4)
656 m4_include(m4/make.m4)
657 m4_include(m4/depout.m4)
658 m4_include(m4/lead-dot.m4)
659 m4_include(m4/check_gnu_make.m4)
660 m4_include(m4/depend.m4)
661
662 # Using the dependency files requires GNU make until someone adds support
663 # for Makefile includes for other make implementations. Note that
664 # CHECK_GNU_MAKE() can find a non-default make.
665 CHECK_GNU_MAKE()
666 if test "x$_cv_gnu_make_command" != "x" -a \
667     x`which make` = x`which "$_cv_gnu_make_command"` ; then
668     AC_SUBST(MAKE, $_cv_gnu_make_command)
669 else
670     # If GNU make is not the default, don't enable GNU-isms because we can't
671     # guarantee that GNU make will actually be the make that is invoked.
672     ifGNUmake='#'
673 fi
674
675 AM_DEP_TRACK()
676 _AM_DEPENDENCIES(CC)
677
678 # As per vl, disable dependency tracking by default until we don't need
679 # to use "make proto' -- jpeach
680 if test "x$enable_dependency_tracking" != xyes; then
681     ifGNUmake='#'
682 fi
683
684 ############################################
685 # Figure out the flags to support named structure initializers
686
687 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
688
689 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
690 AC_MSG_CHECKING(uname -s)
691 AC_MSG_RESULT(${UNAME_S})
692
693 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
694 AC_MSG_CHECKING(uname -r)
695 AC_MSG_RESULT(${UNAME_R})
696
697 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
698 AC_MSG_CHECKING(uname -m)
699 AC_MSG_RESULT(${UNAME_M})
700
701 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
702 AC_MSG_CHECKING(uname -p)
703 AC_MSG_RESULT(${UNAME_P})
704
705 dnl Add #include for broken IRIX header files
706   case "$host_os" in
707         *irix6*)
708                 #TODO add to libreplace
709                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
710                         dnl Fix sensible defaults for MIPSPro compilers. The
711                         dnl error numbers are valid for the 7.3 compilers,
712                         dnl hopefully also valid for the 7.4 series.
713                         dnl
714                         dnl Bugzilla 3801. Force an error on warning 1035
715                         dnl so we don't incorrectly detect stdint.h. This
716                         dnl warning is emitted for #error directives.
717                         CFLAGS="$CFLAGS -diag_error 1035"
718                         dnl 1209: Controlling expression is constant
719                         dnl 1174: Function foo declared but never referenced
720                         dnl 3201: Parameter foo was never referenced
721                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
722                 fi
723         ;;
724 esac
725
726 DYNEXP=
727 AC_SUBST(DYNEXP)
728
729 dnl Add modules that have to be built by default here
730 dnl These have to be built static:
731 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_winreg rpc_initshutdown rpc_lsa_ds rpc_wkssvc rpc_svcctl2 rpc_ntsvcs rpc_net rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog2 rpc_unixinfo rpc_epmapper auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
732
733 dnl These are preferably build shared, and static if dlopen() is not available
734 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy charset_CP850 charset_CP437 auth_script vfs_readahead"
735
736 if test "x$developer" = xyes; then
737    default_static_modules="$default_static_modules rpc_rpcecho"
738    default_shared_modules="$default_shared_modules charset_weird"
739 fi
740
741 #
742 # Config CPPFLAG settings for strange OS's that must be set
743 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
744 # case statement; its first reference must be unconditional.
745 #
746 case "$host_os" in
747     *hpux*)
748 #
749 # Defines needed for HPUX support.
750 # HPUX has bigcrypt but (sometimes?) doesn't use it for
751 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
752 #
753       case `uname -r` in
754                         *9*|*10*)
755                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
756                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
757                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
758                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
759                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
760                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
761                                 ;;
762                         *11*)
763                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
764                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
765                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
766                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
767                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
768                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
769                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
770                                 ;;
771       esac
772       ;;
773
774 #
775 # CRAY Unicos has broken const handling
776        *unicos*)
777           AC_MSG_RESULT([disabling const])
778           CPPFLAGS="$CPPFLAGS -Dconst="
779           ;;
780         
781 #
782 # AIX4.x doesn't even admit to having large
783 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
784 #
785     *aix4*)
786           AC_MSG_RESULT([enabling large file support])
787       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
788           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
789       ;;
790 #
791 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
792 # to the existance of large files..
793 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
794 # recommendations on large file support, however it makes the
795 # compile work using gcc 2.7 and 2.8, whereas using the Sun
796 # recommendation makes the compile fail on gcc2.7. JRA.
797 #
798 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
799 #
800         *solaris*)
801                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
802                 case `uname -r` in
803                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
804                                 AC_MSG_RESULT([no large file support])
805                                 ;;
806                         5.*)
807                         AC_MSG_RESULT([enabling large file support])
808                         if test "$ac_cv_prog_gcc" = yes; then
809                                 ${CC-cc} -v >conftest.c 2>&1
810                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
811                                 rm -fr conftest.c
812                                 case "$ac_cv_gcc_compiler_version_number" in
813                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
814                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
815                                                 LDFLAGS="$LDFLAGS -lthread"
816                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
817                                                 ;;
818                                         *)
819                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
820                                                 LDFLAGS="$LDFLAGS -lthread"
821                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
822                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
823                                                 ;;
824                                 esac
825                         else
826                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
827                                 LDFLAGS="$LDFLAGS -lthread"
828                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
829                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
830                         fi
831                         ;;
832                 esac
833                 ;;
834 #
835 # IRIX uses SYSV printing.  Make sure to set that here
836 #
837         *irix*)
838                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
839                 ;;
840         *freebsd*|*dragonfly*)
841                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
842                 ;;
843 #
844 # VOS may need to have POSIX support and System V compatibility enabled.
845 #
846     *vos*)
847     case "$CPPFLAGS" in
848           *-D_POSIX_C_SOURCE*)
849                 ;;
850           *)
851                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
852                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
853                 ;;
854     esac
855     case "$CPPFLAGS" in
856           *-D_SYSV*|*-D_SVID_SOURCE*)
857                 ;;
858           *)
859                 CPPFLAGS="$CPPFLAGS -D_SYSV"
860                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
861     esac
862     ;;
863 #
864 # Tests needed for SINIX large file support.
865 #
866     *sysv4*)
867       if test $host = mips-sni-sysv4 ; then
868         AC_MSG_CHECKING([for LFS support])
869         old_CPPFLAGS="$CPPFLAGS"
870         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
871         AC_TRY_RUN([
872 #include <unistd.h>
873 int main () {
874 #if _LFS64_LARGEFILE == 1
875 return 0;
876 #else
877 return 1;
878 #endif
879 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
880         CPPFLAGS="$old_CPPFLAGS"
881         if test x$SINIX_LFS_SUPPORT = xyes ; then
882           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
883                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
884           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
885           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
886           LIBS="`getconf LFS64_LIBS` $LIBS"
887         fi
888       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
889       fi
890     ;;
891
892 # Systems with LFS support.
893 #
894     gnu* | k*bsd*-gnu)
895         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
896         AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
897         AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
898         AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
899         ;;
900
901 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
902 #
903     *linux*)
904         AC_MSG_CHECKING([for LFS support])
905         old_CPPFLAGS="$CPPFLAGS"
906         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
907        AC_TRY_RUN([
908 #include <unistd.h>
909 #include <sys/utsname.h>
910 #include <string.h>
911 #include <stdlib.h>
912 int main() {
913 #if _LFS64_LARGEFILE == 1
914        struct utsname uts;
915        char *release;
916        int major, minor;
917
918        /* Ensure this is glibc 2.2 or higher */
919 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
920        int libc_major = __GLIBC__;
921        int libc_minor = __GLIBC_MINOR__;
922
923        if (libc_major < 2)
924               return 1;
925        if (libc_minor < 2)
926               return 1;
927 #endif
928
929        /* Ensure this is kernel 2.4 or higher */
930
931        uname(&uts);
932        release = strdup(uts.release);
933        major = atoi(strsep(&release, "."));
934        minor = atoi(strsep(&release, "."));
935
936        if (major > 2 || (major == 2 && minor > 3))
937                return 0;
938        return 1;
939 #else
940        return 1;
941 #endif
942 }
943 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
944         CPPFLAGS="$old_CPPFLAGS"
945         if test x$LINUX_LFS_SUPPORT = xyes ; then
946                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
947                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
948                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
949                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
950         fi
951         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
952         ;;
953
954 #
955 # MacOS X is the *only* system that uses compose character in utf8. This
956 # is so horribly broken....
957 #
958     *darwin*)
959         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
960
961         # Add a system specific charset module.
962         default_shared_modules="$default_shared_modules charset_macosxfs"
963
964         ;;
965     *hurd*)
966         AC_MSG_CHECKING([for LFS support])
967         old_CPPFLAGS="$CPPFLAGS"
968         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
969         AC_TRY_RUN([
970 #include <unistd.h>
971 main () {
972 #if _LFS64_LARGEFILE == 1
973 return 0;
974 #else
975 return 1;
976 #endif
977 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
978         CPPFLAGS="$old_CPPFLAGS"
979         if test x$GLIBC_LFS_SUPPORT = xyes ; then
980           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
981                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
982           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
983         fi
984       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
985     ;;
986
987 esac
988
989 AC_LIBREPLACE_BROKEN_CHECKS
990
991 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
992
993 LIBREPLACE_OBJS=""
994 for obj in ${LIBREPLACEOBJ}; do
995         LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
996 done
997 AC_SUBST(LIBREPLACE_OBJS)
998
999 # add -ldl to the global LIBS
1000 LIBS="${LIBS} ${LIBDL}"
1001
1002 AC_CHECK_HEADERS(aio.h arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
1003 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
1004 AC_CHECK_HEADERS(limits.h float.h)
1005 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
1006 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
1007 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
1008 AC_CHECK_HEADERS(sys/un.h)
1009 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
1010 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
1011 AC_CHECK_HEADERS(sys/sysmacros.h)
1012 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
1013 AC_CHECK_HEADERS(langinfo.h locale.h)
1014 AC_CHECK_HEADERS(xfs/libxfs.h)
1015
1016 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
1017 #if HAVE_RPC_RPC_H
1018 #include <rpc/rpc.h>
1019 #endif
1020 ]])
1021
1022 ## These fail to compile on IRIX so just check for their presence
1023 AC_CHECK_HEADERS(sys/mode.h,,,)
1024
1025 # Look for Darwin headers
1026 old_CPPFLAGS="$CPPFLAGS"
1027 CPPFLAGS="-Iinclude $CPPFLAGS"
1028 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
1029 CPPFLAGS="$old_CPPFLAGS"
1030
1031 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
1032 # subdirectory of headers.
1033 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
1034
1035 # check for linux on amd64 since valgrind is not quite there yet
1036 case "$host_os" in
1037         *linux*)
1038                 case "$UNAME_P" in
1039                         *x86_64*)
1040                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
1041                                 ;;
1042                 esac
1043                 ;;
1044 esac
1045
1046
1047 #
1048 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
1049 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
1050 #
1051 case "$host_os" in
1052     *hpux*)
1053                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
1054                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
1055                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
1056                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
1057                 fi
1058         ;;
1059 esac
1060 AC_CHECK_HEADERS(shadow.h)
1061 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
1062 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
1063
1064 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
1065 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
1066
1067 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
1068
1069 # For experimental utmp support (lastlog on some BSD-like systems)
1070 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
1071
1072 AC_CHECK_SIZEOF(int,cross)
1073 AC_CHECK_SIZEOF(long,cross)
1074 AC_CHECK_SIZEOF(long long,cross)
1075 AC_CHECK_SIZEOF(short,cross)
1076
1077 AC_C_CONST
1078 AC_C_INLINE
1079 AC_C_BIGENDIAN
1080 AC_C_CHAR_UNSIGNED
1081
1082 AC_TYPE_SIGNAL
1083 AC_TYPE_UID_T
1084 AC_TYPE_MODE_T
1085 AC_TYPE_OFF_T
1086 AC_TYPE_SIZE_T
1087 AC_TYPE_PID_T
1088 AC_STRUCT_ST_RDEV
1089 AC_DIRENT_D_OFF
1090 AC_CHECK_TYPE(ino_t,unsigned)
1091 AC_CHECK_TYPE(loff_t,off_t)
1092 AC_CHECK_TYPE(offset_t,loff_t)
1093 AC_CHECK_TYPE(ssize_t, int)
1094 AC_CHECK_TYPE(wchar_t, unsigned short)
1095 AC_CHECK_TYPE(comparison_fn_t,
1096 [AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])])
1097
1098 ############################################
1099 # for cups support we need libcups, and a handful of header files
1100
1101 AC_ARG_ENABLE(cups,
1102 [  --enable-cups           Turn on CUPS support (default=auto)])
1103
1104 if test x$enable_cups != xno; then
1105         AC_PATH_PROG(CUPS_CONFIG, cups-config)
1106
1107         if test "x$CUPS_CONFIG" != x; then
1108                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
1109                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
1110                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
1111                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
1112         elif test x"$enable_cups" = x"yes"; then
1113                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
1114         fi
1115 fi
1116
1117 AC_ARG_ENABLE(iprint,
1118 [  --enable-iprint         Turn on iPrint support (default=yes if cups is yes)])
1119
1120 if test x$enable_iprint != xno; then
1121         if test "x$CUPS_CONFIG" != x; then
1122                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
1123         elif test x"$enable_iprint" = x"yes"; then
1124                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
1125         fi
1126 fi
1127
1128 ############################################
1129 # check if the compiler will optimize out function calls
1130 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
1131     AC_TRY_LINK([
1132 #include <stdio.h>],
1133 [
1134                 if (0) {
1135                    this_function_does_not_exist();
1136                 } else {
1137                   return 1;
1138                 }
1139
1140 ],
1141         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
1142 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
1143    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
1144 fi
1145
1146 ############################################
1147 # check for unix domain sockets
1148 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
1149     AC_TRY_COMPILE([
1150 #include <sys/types.h>
1151 #include <stdlib.h>
1152 #include <stddef.h>
1153 #include <sys/socket.h>
1154 #include <sys/un.h>],
1155 [
1156   struct sockaddr_un sunaddr;
1157   sunaddr.sun_family = AF_UNIX;
1158 ],
1159         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1160 if test x"$samba_cv_unixsocket" = x"yes"; then
1161    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1162 fi
1163
1164
1165 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
1166     AC_TRY_COMPILE([
1167 #include <sys/types.h>
1168 #if STDC_HEADERS
1169 #include <stdlib.h>
1170 #include <stddef.h>
1171 #endif
1172 #include <signal.h>],[sig_atomic_t i = 0],
1173         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
1174 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
1175    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
1176 fi
1177
1178 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
1179     AC_TRY_COMPILE([
1180 #include <sys/types.h>
1181 #if STDC_HEADERS
1182 #include <stdlib.h>
1183 #include <stddef.h>
1184 #endif
1185 #if TIME_WITH_SYS_TIME
1186 # include <sys/time.h>
1187 # include <time.h>
1188 #else
1189 # if HAVE_SYS_TIME_H
1190 #  include <sys/time.h>
1191 # else
1192 #  include <time.h>
1193 # endif
1194 #endif
1195 ],[struct timespec ts;],
1196         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
1197 if test x"$samba_cv_struct_timespec" = x"yes"; then
1198    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1199 fi
1200
1201 # stupid headers have the functions but no declaration. grrrr.
1202 AC_HAVE_DECL(errno, [#include <errno.h>])
1203 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1204 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1205 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1206 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1207 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1208 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1209
1210 # and glibc has setresuid under linux but the function does
1211 # nothing until kernel 2.1.44! very dumb.
1212 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1213     AC_TRY_RUN([#include <errno.h>
1214 int main() { setresuid(1,1,1); setresuid(2,2,2); return errno==EPERM?0:1;}],
1215         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1216 if test x"$samba_cv_have_setresuid" = x"yes"; then
1217     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1218 fi
1219
1220 # Do the same check for setresguid...
1221 #
1222 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1223     AC_TRY_RUN([#include <unistd.h>
1224 #include <errno.h>
1225 int main() { errno = 0; setresgid(1,1,1); return errno != 0 ? (errno==EPERM ? 0 : 1) : 0;}],
1226         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1227 if test x"$samba_cv_have_setresgid" = x"yes"; then
1228     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1229 fi
1230
1231 AC_FUNC_MEMCMP
1232
1233 ###############################################
1234 # Readline included by default unless explicitly asked not to
1235 test "${with_readline+set}" != "set" && with_readline=yes
1236
1237 # test for where we get readline() from
1238 AC_MSG_CHECKING(whether to use readline)
1239 AC_ARG_WITH(readline,
1240 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
1241 [  case "$with_readline" in
1242   yes)
1243     AC_MSG_RESULT(yes)
1244
1245     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1246     AC_CHECK_HEADERS(readline/history.h)
1247
1248     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1249       for termlib in ncurses curses termcap terminfo termlib tinfo; do
1250        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1251       done
1252       AC_CHECK_LIB(readline, rl_callback_handler_install,
1253        [TERMLIBS="-lreadline $TERMLIBS"
1254        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1255        break], [TERMLIBS=], $TERMLIBS)])
1256     ;;
1257   no)
1258     AC_MSG_RESULT(no)
1259     ;;
1260   *)
1261     AC_MSG_RESULT(yes)
1262
1263     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1264     # alternate readline path
1265     _ldflags=${LDFLAGS}
1266     _cppflags=${CPPFLAGS}
1267
1268     # Add additional search path
1269     LDFLAGS="-L$with_readline/lib $LDFLAGS"
1270     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1271
1272     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1273     AC_CHECK_HEADERS(readline/history.h)
1274
1275     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1276       for termlib in ncurses curses termcap terminfo termlib; do
1277        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1278       done
1279       AC_CHECK_LIB(readline, rl_callback_handler_install,
1280        [TERMLDFLAGS="-L$with_readline/lib"
1281        TERMCPPFLAGS="-I$with_readline/include"
1282        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1283        TERMLIBS="-lreadline $TERMLIBS"
1284        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1285        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1286
1287     LDFLAGS=$_ldflags
1288     ;;
1289   esac],
1290   AC_MSG_RESULT(no)
1291 )
1292 AC_SUBST(TERMLIBS)
1293 AC_SUBST(TERMLDFLAGS)
1294
1295 # The readline API changed slightly from readline3 to readline4, so
1296 # code will generate warnings on one of them unless we have a few
1297 # special cases.
1298 AC_CHECK_LIB(readline, rl_completion_matches,
1299              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1300                         [Do we have rl_completion_matches?])],
1301              [],
1302              [$TERMLIBS])
1303
1304 # not all readline libs have rl_event_hook or history_list
1305 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1306 AC_CHECK_LIB(readline, history_list,
1307              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1308              [],
1309              [$TERMLIBS])
1310
1311 # The following test taken from the cvs sources
1312 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1313 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1314 # libsocket.so which has a bad implementation of gethostbyname (it
1315 # only looks in /etc/hosts), so we only look for -lsocket if we need
1316 # it.
1317 AC_CHECK_FUNCS(connect)
1318 if test x"$ac_cv_func_connect" = x"no"; then
1319     case "$LIBS" in
1320     *-lnsl*) ;;
1321     *) AC_CHECK_LIB(nsl_s, connect) ;;
1322     esac
1323     case "$LIBS" in
1324     *-lnsl*) ;;
1325     *) AC_CHECK_LIB(nsl, connect) ;;
1326     esac
1327     case "$LIBS" in
1328     *-lsocket*) ;;
1329     *) AC_CHECK_LIB(socket, connect) ;;
1330     esac
1331     case "$LIBS" in
1332     *-linet*) ;;
1333     *) AC_CHECK_LIB(inet, connect) ;;
1334     esac
1335     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1336     dnl has been cached.
1337     if test x"$ac_cv_lib_socket_connect" = x"yes" ||
1338        test x"$ac_cv_lib_inet_connect" = x"yes"; then
1339         # ac_cv_func_connect=yes
1340         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
1341         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1342     fi
1343 fi
1344
1345 ###############################################
1346 # test for where we get yp_get_default_domain() from
1347 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1348 AC_CHECK_FUNCS(yp_get_default_domain)
1349
1350 # Check if we have execl, if not we need to compile smbrun.
1351 AC_CHECK_FUNCS(execl)
1352 if test x"$ac_cv_func_execl" = x"no"; then
1353     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1354 fi
1355
1356 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown lchown chmod fchmod chroot link mknod mknod64)
1357 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1358 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1359 AC_CHECK_FUNCS(getrlimit fsync memset strlcpy strlcat setpgid)
1360 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1361 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1362 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1363 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1364 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1365 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1366 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1367 AC_CHECK_FUNCS(getpwent_r)
1368 AC_CHECK_FUNCS(getdents getdents64)
1369 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1370 AC_CHECK_FUNCS(syslog vsyslog timegm)
1371 AC_CHECK_FUNCS(setlocale nl_langinfo)
1372 AC_CHECK_FUNCS(nanosleep)
1373 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1374 AC_CHECK_FUNCS(memalign posix_memalign)
1375 AC_CHECK_HEADERS(sys/mman.h)
1376 # setbuffer, shmget, shm_open are needed for smbtorture
1377 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1378 AC_CHECK_FUNCS(makecontext getcontext setcontext swapcontext)
1379
1380 # Find a method of generating a stack trace
1381 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1382 AC_CHECK_FUNCS(backtrace_symbols)
1383 AC_CHECK_LIB(exc, trace_back_stack)
1384
1385 echo -n "checking for GPFS GPL libs... "
1386 save_LIBS="$LIBS"
1387 LIBS="$LIBS -lgpfs_gpl"
1388 AC_TRY_LINK([#include <gpfs_gpl.h>],
1389           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1390           samba_cv_HAVE_GPFS=yes,
1391           samba_cv_HAVE_GPFS=no)
1392 echo $samba_cv_HAVE_GPFS
1393 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1394     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1395     default_shared_modules="$default_shared_modules vfs_gpfs"
1396 fi
1397 LIBS="$save_LIBS"
1398
1399 # Note that all the libunwind symbols in the API are defined to internal
1400 # platform-specific version, so we must include libunwind.h before checking
1401 # any of them.
1402 AC_MSG_CHECKING([for libunwind])
1403 save_LIBS=$LIBS
1404 if test x"$UNAME_P" = xunknown ; then
1405     # This probably won't link without the platform-specific libunwind.
1406     LIBS="$LIBS -lunwind"
1407 else
1408     # Add the platform-specific libunwind module. uname -p seems the most
1409     # plausible option and works for ia64, where libunwind is most useful.
1410     LIBS="$LIBS -lunwind -lunwind-$UNAME_P"
1411 fi
1412
1413 AC_TRY_LINK(
1414     [
1415 #ifdef HAVE_LIBUNWIND_H
1416 #include <libunwind.h>
1417 #endif
1418     ],
1419     [
1420         unw_context_t ctx; unw_cursor_t cur;
1421         char buf[256]; unw_word_t off;
1422         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1423         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1424     ],
1425     [
1426         AC_MSG_RESULT(yes)
1427         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1428
1429         # If we have libunwind, test whether we also have libunwind-ptrace
1430         # which would let us unwind arbitrary processes.
1431         save_LIBS=$LIBS
1432         AC_CHECK_HEADERS(libunwind-ptrace.h)
1433         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1434             [
1435                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1436                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1437                     [Whether libunwind-ptrace.a is available.])
1438             ],
1439             [ LIBUNWIND_PTRACE="" ])
1440
1441         LIBS=$save_LIBS
1442     ],
1443     [
1444         AC_MSG_RESULT(no)
1445         LIBS=$save_LIBS
1446     ])
1447
1448 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1449 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1450     AC_CHECK_HEADERS(sys/ptrace.h)
1451     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1452     AC_TRY_LINK(
1453             [
1454 #if HAVE_SYS_TYPES_H
1455 #include <sys/types.h>
1456 #endif
1457 #if HAVE_SYS_PTRACE_H
1458 #include <sys/ptrace.h>
1459 #endif
1460             ],
1461             [
1462                 int main(int argc, const char ** argv)
1463                 {
1464                         pid_t me = (pid_t)-1;
1465                         ptrace(PTRACE_ATTACH, me, 0, 0);
1466                         ptrace(PTRACE_DETACH, me, 0, 0);
1467                         return 0;
1468                 }
1469             ],
1470             [
1471                 AC_MSG_RESULT(yes)
1472                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1473                     [Whether the Linux ptrace(2) interface is available.])
1474             ],
1475             [
1476                 AC_MSG_RESULT(no)
1477                 LIBUNWIND_PTRACE=""
1478             ])
1479 fi
1480
1481 AC_SUBST(LIBUNWIND_PTRACE)
1482
1483 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1484 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1485 AC_CHECK_FUNCS(__getcwd _getcwd)
1486 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1487 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1488 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1489 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1490 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1491 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1492 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1493 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1494 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1495 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1496 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1497 AC_CHECK_FUNCS(prctl)
1498
1499 AC_TRY_COMPILE([
1500 #ifdef HAVE_SYS_PRCTL_H
1501 #include <sys/prctl.h>
1502 #endif
1503 ],
1504 [int i; i = prtcl(0); ],
1505 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1506
1507 #
1508 #
1509 #
1510 case "$host_os" in
1511     linux*-gnu* | gnu* | k*bsd*-gnu)
1512        # glibc <= 2.3.2 has a broken getgrouplist
1513     AC_CACHE_CHECK([for a broken Linux getgrouplist API],
1514             linux_getgrouplist_ok,
1515             [
1516                 AC_TRY_RUN([
1517 #include <unistd.h>
1518 #include <sys/utsname.h>
1519
1520                     int main() {
1521                            /* glibc up to 2.3 has a broken getgrouplist */
1522 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1523                            int libc_major = __GLIBC__;
1524                            int libc_minor = __GLIBC_MINOR__;
1525
1526                            if (libc_major < 2)
1527                                   return 1;
1528                            if ((libc_major == 2) && (libc_minor <= 3))
1529                                   return 1;
1530 #endif
1531                            return 0;
1532                     }
1533
1534                 ],
1535                 [linux_getgrouplist_ok=yes],
1536                 [linux_getgrouplist_ok=no],
1537                 [linux_getgrouplist_ok=cross])
1538        ])
1539
1540        if test x"$linux_getgrouplist_ok" = x"yes"; then
1541           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1542        fi
1543        ;;
1544     *)
1545        AC_CHECK_FUNCS(getgrouplist)
1546        ;;
1547 esac
1548
1549 #
1550 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1551 #
1552
1553 if test x$ac_cv_func_stat64 = xno ; then
1554   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1555   AC_TRY_LINK([
1556 #if defined(HAVE_UNISTD_H)
1557 #include <unistd.h>
1558 #endif
1559 #include <sys/stat.h>
1560 ], [struct stat64 st64; return stat64(".",&st64);], [ac_cv_func_stat64=yes])
1561   AC_MSG_RESULT([$ac_cv_func_stat64])
1562   if test x$ac_cv_func_stat64 = xyes ; then
1563     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1564   fi
1565 fi
1566
1567 if test x$ac_cv_func_lstat64 = xno ; then
1568   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1569   AC_TRY_LINK([
1570 #if defined(HAVE_UNISTD_H)
1571 #include <unistd.h>
1572 #endif
1573 #include <sys/stat.h>
1574 ], [struct stat64 st64; return lstat64(".",&st64);], [ac_cv_func_lstat64=yes])
1575   AC_MSG_RESULT([$ac_cv_func_lstat64])
1576   if test x$ac_cv_func_lstat64 = xyes ; then
1577     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1578   fi
1579 fi
1580
1581 if test x$ac_cv_func_fstat64 = xno ; then
1582   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1583   AC_TRY_LINK([
1584 #if defined(HAVE_UNISTD_H)
1585 #include <unistd.h>
1586 #endif
1587 #include <sys/stat.h>
1588 ], [struct stat64 st64; return fstat64(0,&st64);], [ac_cv_func_fstat64=yes])
1589   AC_MSG_RESULT([$ac_cv_func_fstat64])
1590   if test x$ac_cv_func_fstat64 = xyes ; then
1591     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1592   fi
1593 fi
1594
1595 #################################################
1596 # Check whether struct stat has timestamps with sub-second resolution.
1597 # At least IRIX and Solaris have these.
1598 #
1599 # We check that
1600 #       all of st_mtim, st_atim and st_ctim exist
1601 #       all of the members are in fact of type struct timespec
1602 #
1603 # There is some conflicting standards weirdness about whether we should use
1604 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1605 # prefer struct timespec.
1606
1607 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1608     [
1609         AC_TRY_COMPILE(
1610             [
1611 #if TIME_WITH_SYS_TIME
1612 # include <sys/time.h>
1613 # include <time.h>
1614 #else
1615 # if HAVE_SYS_TIME_H
1616 #  include <sys/time.h>
1617 # else
1618 #  include <time.h>
1619 # endif
1620 #endif
1621 #ifdef HAVE_SYS_STAT_H
1622 #include <sys/stat.h>
1623 #endif
1624             ],
1625             [
1626                 struct timespec t;
1627                 struct stat s = {0};
1628                 t.tv_sec = s.st_mtim.tv_sec;
1629                 t.tv_nsec = s.st_mtim.tv_nsec;
1630                 t.tv_sec = s.st_ctim.tv_sec;
1631                 t.tv_nsec = s.st_ctim.tv_nsec;
1632                 t.tv_sec = s.st_atim.tv_sec;
1633                 t.tv_nsec = s.st_atim.tv_nsec;
1634             ],
1635             samba_stat_hires=yes, samba_stat_hires=no)
1636     ])
1637
1638 if test x"$samba_stat_hires" = x"yes" ; then
1639     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1640     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1641     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1642     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1643             [whether struct stat has sub-second timestamps])
1644 fi
1645
1646 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1647     [
1648         AC_TRY_COMPILE(
1649             [
1650 #if TIME_WITH_SYS_TIME
1651 # include <sys/time.h>
1652 # include <time.h>
1653 #else
1654 # if HAVE_SYS_TIME_H
1655 #  include <sys/time.h>
1656 # else
1657 #  include <time.h>
1658 # endif
1659 #endif
1660 #ifdef HAVE_SYS_STAT_H
1661 #include <sys/stat.h>
1662 #endif
1663             ],
1664             [
1665                 struct timespec t;
1666                 struct stat s = {0};
1667                 t.tv_sec = s.st_mtime;
1668                 t.tv_nsec = s.st_mtimensec;
1669                 t.tv_sec = s.st_ctime;
1670                 t.tv_nsec = s.st_ctimensec;
1671                 t.tv_sec = s.st_atime;
1672                 t.tv_nsec = s.st_atimensec;
1673             ],
1674             samba_stat_hires=yes, samba_stat_hires=no)
1675     ])
1676
1677 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1678     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1679     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1680     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1681     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1682             [whether struct stat has sub-second timestamps without struct timespec])
1683 fi
1684
1685 #####################################
1686 # needed for SRV lookups
1687 AC_CHECK_LIB(resolv, dn_expand)
1688 AC_CHECK_LIB(resolv, _dn_expand)
1689 AC_CHECK_LIB(resolv, __dn_expand)
1690
1691 #
1692 # Check for the functions putprpwnam, set_auth_parameters,
1693 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1694 # Needed for OSF1 and HPUX.
1695 #
1696
1697 AC_LIBTESTFUNC(security, putprpwnam)
1698 AC_LIBTESTFUNC(sec, putprpwnam)
1699
1700 AC_LIBTESTFUNC(security, set_auth_parameters)
1701 AC_LIBTESTFUNC(sec, set_auth_parameters)
1702
1703 # UnixWare 7.x has its getspnam in -lgen
1704 AC_LIBTESTFUNC(gen, getspnam)
1705
1706 AC_LIBTESTFUNC(security, getspnam)
1707 AC_LIBTESTFUNC(sec, getspnam)
1708
1709 AC_LIBTESTFUNC(security, bigcrypt)
1710 AC_LIBTESTFUNC(sec, bigcrypt)
1711
1712 AC_LIBTESTFUNC(security, getprpwnam)
1713 AC_LIBTESTFUNC(sec, getprpwnam)
1714
1715 AC_CHECK_FUNCS(strsignal)
1716
1717 ############################################
1718 # Check if we have libattr
1719 case "$host_os" in
1720   *osf*)
1721         AC_SEARCH_LIBS(getproplist, [proplist])
1722         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1723         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1724         AC_CHECK_FUNCS(sizeof_proplist_entry)
1725   ;;
1726   *)
1727         AC_SEARCH_LIBS(getxattr, [attr])
1728         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1729         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1730         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1731         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1732         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1733         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1734         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1735   ;;
1736 esac
1737
1738 ########################################################
1739 # Check if attropen() is present if this is Solaris
1740 case "$host_os" in
1741   *solaris*)
1742         AC_CHECK_FUNCS(attropen)
1743   ;;
1744 esac
1745
1746 ########################################################
1747 # Do xattr functions take additional options like on Darwin?
1748 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1749         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1750                 old_LIBS=$LIBS
1751                 LIBS="$LIBS $ACL_LIBS"
1752                 AC_TRY_COMPILE([
1753                         #include <sys/types.h>
1754                         #if HAVE_ATTR_XATTR_H
1755                         #include <attr/xattr.h>
1756                         #elif HAVE_SYS_XATTR_H
1757                         #include <sys/xattr.h>
1758                         #endif
1759                 ],[
1760                         getxattr(0, 0, 0, 0, 0, 0);
1761                 ],
1762                 [smb_attr_cv_xattr_add_opt=yes],
1763                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1764         ])
1765         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1766                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1767         fi
1768 fi
1769
1770 # Check if we have extattr
1771 case "$host_os" in
1772   *freebsd4* | *dragonfly* )
1773     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1774     ;;
1775   *)
1776     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1777     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1778     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1779     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1780     ;;
1781 esac
1782
1783 # Set defaults
1784 PIE_CFLAGS=""
1785 PIE_LDFLAGS=""
1786 AC_ARG_ENABLE(pie, [  --enable-pie            Turn on pie support if available (default=yes)])
1787
1788 if test "x$enable_pie" != xno
1789 then
1790         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1791         [
1792                 cat > conftest.c <<EOF
1793 int foo;
1794 main () { return 0;}
1795 EOF
1796                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1797                 then
1798                         samba_cv_fpie=yes
1799                 else
1800                         samba_cv_fpie=no
1801                 fi
1802                 rm -f conftest*
1803         ])
1804         if test x"${samba_cv_fpie}" = x"yes"
1805         then
1806                 PIE_CFLAGS="-fPIE"
1807                 PIE_LDFLAGS="-pie"
1808         fi
1809 fi
1810
1811 #Check if we can enable relro as well
1812 if test x"${samba_cv_fpie}" = x"yes"
1813 then
1814         AC_CACHE_CHECK(for relro, samba_cv_fpie_relro,
1815         [
1816                 cat > conftest.c <<EOF
1817 int foo;
1818 main () { return 0;}
1819 EOF
1820                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1821                 then
1822                         samba_cv_fpie_relro=yes
1823                 else
1824                         samba_cv_fpie_relro=no
1825                 fi
1826                 rm -f conftest*
1827         ])
1828         if test x"${samba_cv_fpie_relro}" = x"yes"
1829         then
1830                 PIE_LDFLAGS="-pie -Wl,-z,relro"
1831         fi
1832 fi
1833
1834 # Assume non-shared by default and override below
1835 BLDSHARED="false"
1836
1837 # these are the defaults, good for lots of systems
1838 HOST_OS="$host_os"
1839 LDSHFLAGS="-shared"
1840 MODULE_EXPORTS=""
1841 SONAMEFLAG="#"
1842 SHLD="\${CC} \${CFLAGS}"
1843 PICFLAG="${PIE_CFLAGS}"
1844 SHLIBEXT="so"
1845 DSO_EXPORTS=""
1846
1847 # this bit needs to be modified for each OS that supports share libs
1848 # You need to specify how to create a shared library and
1849 # how to compile C code to produce PIC object files
1850
1851 AC_MSG_CHECKING([ability to build shared libraries])
1852
1853 # and these are for particular systems
1854 case "$host_os" in
1855                 linux*-gnu* | gnu* | k*bsd*-gnu)
1856                         case "$host_os" in 
1857                                 linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
1858                         esac
1859                         BLDSHARED="true"
1860                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1861                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1862                         else
1863                                 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1864                         fi
1865                         DYNEXP="-Wl,--export-dynamic"
1866                         PICFLAG="-fPIC"
1867                         SONAMEFLAG="-Wl,-soname="
1868                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1869                         ;;
1870                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1871                         BLDSHARED="true"
1872                         LDSHFLAGS="-G"
1873                         SONAMEFLAG="-h "
1874                         if test "${GCC}" = "yes"; then
1875                                 PICFLAG="-fPIC"
1876                                 SONAMEFLAG="-Wl,-soname="
1877                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1878                                         DYNEXP="-Wl,-E"
1879                                 fi
1880                         else
1881                                 PICFLAG="-KPIC"
1882                                 ## ${CFLAGS} added for building 64-bit shared
1883                                 ## libs using Sun's Compiler
1884                                 LDSHFLAGS="-G \${CFLAGS}"
1885                         fi
1886                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1887                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1888                         ;;
1889                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1890                         BLDSHARED="true"
1891                         LDSHFLAGS="-G"
1892                         SONAMEFLAG="-Wl,-h,"
1893                         PICFLAG="-KPIC"   # Is this correct for SunOS
1894                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1895                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1896                         ;;
1897                 *netbsd* | *freebsd* | *dragonfly* )
1898                         BLDSHARED="true"
1899                         LDSHFLAGS="-shared"
1900                         DYNEXP="-Wl,--export-dynamic"
1901                         SONAMEFLAG="-Wl,-soname,"
1902                         PICFLAG="-fPIC -DPIC"
1903                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1904                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1905                         ;;
1906                 *openbsd*)  BLDSHARED="true"
1907                         LDSHFLAGS="-shared"
1908                         DYNEXP="-Wl,-Bdynamic"
1909                         SONAMEFLAG="-Wl,-soname,"
1910                         PICFLAG="-fPIC"
1911                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1912                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1913                         ;;
1914                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1915                         case "$host_os" in
1916                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1917                         ;;
1918                         esac
1919                         BLDSHARED="true"
1920                         LDSHFLAGS="-set_version sgi1.0 -shared"
1921                         SONAMEFLAG="-soname "
1922                         SHLD="\${LD}"
1923                         if test "${GCC}" = "yes"; then
1924                                 PICFLAG="-fPIC"
1925                         else
1926                                 PICFLAG="-KPIC"
1927                         fi
1928                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1929                         ;;
1930                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1931                         BLDSHARED="true"
1932                         LDSHFLAGS="-Wl,-G,-bexpall,-bbigtoc"
1933                         DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
1934                         PICFLAG="-O2"
1935                         # as AIX code is always position independent...
1936                         # .po will just create compile warnings, use po.o:
1937                         if test "${GCC}" != "yes"; then
1938                                 ## for funky AIX compiler using strncpy()
1939                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1940                         fi
1941
1942                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1943                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1944                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1945                         ;;
1946                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1947                         # Use special PIC flags for the native HP-UX compiler.
1948                                 BLDSHARED="true"
1949                                 SHLD="cc"
1950                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1951                                 SONAMEFLAG="-Wl,+h "
1952                                 PICFLAG="+z"
1953                         if test "${GCC}" = "yes"; then
1954                                 PICFLAG="-fPIC"
1955                         else
1956                                 PICFLAG="+z +ESnolit"
1957                         fi
1958                         if test "$host_cpu" = "ia64"; then
1959                                 SHLIBEXT="so"
1960                               PICFLAG="+z"
1961                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1962                         else
1963                                 SHLIBEXT="sl"
1964                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1965                         fi
1966                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1967                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1968                         ;;
1969                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1970                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1971                         ;;
1972                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1973                         BLDSHARED="true"
1974                         LDSHFLAGS="-shared"
1975                         SONAMEFLAG="-Wl,-soname,"
1976                         PICFLAG="-fPIC"
1977                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1978                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1979                         ;;
1980                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1981                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1982                         ;;
1983                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1984                         BLDSHARED="true"
1985                         LDSHFLAGS="-shared"
1986                         SONAMEFLAG="-Wl,-soname,"
1987                         PICFLAG="-KPIC"
1988                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1989                         ;;
1990                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1991                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1992                         ;;
1993                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1994                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1995                         ;;
1996                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1997                         case "$host" in
1998                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1999                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
2000                                         fi
2001                                         LDSHFLAGS="-G"
2002                                         DYNEXP="-Bexport"
2003                                 ;;
2004                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
2005                         esac
2006                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
2007                         ;;
2008
2009                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
2010                         if [ test "$GCC" != yes ]; then
2011                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
2012                         fi
2013                         LDSHFLAGS="-G"
2014                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
2015                         ;;
2016                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
2017                         BLDSHARED="false"
2018                         LDSHFLAGS=""
2019                         ;;
2020
2021                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
2022                         BLDSHARED="true"
2023                         LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
2024                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/modules/exports.darwin"
2025                         SHLIBEXT="dylib"
2026                         # Since gcc doesn't fail on unrecognised options, the
2027                         # PIE test incorrectly succeeds. Darwin gcc does not
2028                         # actually support the PIE stuff.
2029                         PIE_LDFLAGS=
2030                         PIE_CFLAGS=
2031                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
2032                         ;;
2033
2034                 *)
2035                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
2036                         ;;
2037 esac
2038
2039 if test "$enable_shared" != "yes"; then
2040         BLDSHARED=false
2041 fi
2042
2043 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
2044         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
2045 fi
2046
2047 AC_MSG_RESULT($BLDSHARED)
2048
2049 AC_MSG_CHECKING([LDFLAGS])
2050 AC_MSG_RESULT([$LDFLAGS])
2051 AC_MSG_CHECKING([DYNEXP])
2052 AC_MSG_RESULT([$DYNEXP])
2053
2054 #######################################################
2055 # test whether building a shared library actually works
2056 if test $BLDSHARED = true; then
2057
2058 AC_MSG_CHECKING([SHLD])
2059 AC_MSG_RESULT([$SHLD])
2060 AC_MSG_CHECKING([LDSHFLAGS])
2061 AC_MSG_RESULT([$LDSHFLAGS])
2062
2063 AC_MSG_CHECKING([SHLIBEXT])
2064 AC_MSG_RESULT([$SHLIBEXT])
2065 AC_MSG_CHECKING([SONAMEFLAG])
2066 AC_MSG_RESULT([$SONAMEFLAG])
2067
2068 AC_MSG_CHECKING([PICFLAG])
2069 AC_MSG_RESULT([$PICFLAG])
2070
2071 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
2072 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
2073
2074 AC_CACHE_CHECK([whether building shared libraries actually works],
2075                [ac_cv_shlib_works],[
2076    # try building a trivial shared library
2077    ac_cv_shlib_works=no
2078    # The $SHLD and $LDSHFLAGS variables may contain references to other
2079    # variables so they need to be eval'ed.
2080    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
2081         shlib.o ${srcdir-.}/tests/shlib.c && \
2082    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
2083         shlib.o && ac_cv_shlib_works=yes
2084    rm -f "shlib.$SHLIBEXT" shlib.o
2085
2086 ])
2087 if test $ac_cv_shlib_works = no; then
2088    BLDSHARED=false
2089 fi
2090 fi
2091
2092 if test x"$BLDSHARED" != x"true"; then
2093         LDSHFLAGS="shared-libraries-disabled"
2094         SONAMEFLAG="shared-libraries-disabled"
2095         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
2096         SHLD="shared-libraries-disabled"
2097         PICFLAG="${PIE_CFLAGS}"
2098         SHLIBEXT="shared_libraries_disabled"
2099 fi
2100
2101 AC_MSG_CHECKING([used PICFLAG])
2102 AC_MSG_RESULT([$PICFLAG])
2103
2104 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
2105
2106 ################
2107
2108 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2109 AC_TRY_RUN([#include <stdio.h>
2110 int main() { long long x = 1000000; x *= x; return ((x/1000000) == 1000000)? 0: 1; }],
2111 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2112 if test x"$samba_cv_have_longlong" = x"yes"; then
2113     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2114     AC_CHECK_TYPE(intptr_t, unsigned long long)
2115 else
2116     AC_CHECK_TYPE(intptr_t, unsigned long)
2117 fi
2118
2119 #
2120 # Check if the compiler supports the LL prefix on long long integers.
2121 # AIX needs this.
2122
2123 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2124     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2125         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2126 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2127    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2128 fi
2129
2130
2131 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2132 AC_TRY_RUN([#include <time.h>
2133 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2134 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2135 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2136     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2137 fi
2138
2139 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2140 AC_TRY_RUN([#include <stdio.h>
2141 #include <sys/stat.h>
2142 int main() { return (sizeof(off_t) == 8) ? 0 : 1; }],
2143 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2144 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2145     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2146 fi
2147
2148 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2149 AC_TRY_RUN([
2150 #if defined(HAVE_UNISTD_H)
2151 #include <unistd.h>
2152 #endif
2153 #include <stdio.h>
2154 #include <sys/stat.h>
2155 int main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) return 1; return (lstat64("/dev/null", &st)==0)?0:1; }],
2156 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2157 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2158     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2159 fi
2160
2161 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2162 AC_TRY_RUN([
2163 #if defined(HAVE_UNISTD_H)
2164 #include <unistd.h>
2165 #endif
2166 #include <stdio.h>
2167 #include <sys/stat.h>
2168 int main() { return (sizeof(ino_t) == 8) ? 0 : 1; }],
2169 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2170 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2171     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2172 fi
2173
2174 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2175 AC_TRY_RUN([
2176 #if defined(HAVE_UNISTD_H)
2177 #include <unistd.h>
2178 #endif
2179 #include <stdio.h>
2180 #include <sys/stat.h>
2181 int main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) return 1; return (lstat64("/dev/null", &st)==0)?0:1; }],
2182 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2183 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2184     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2185 fi
2186
2187 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2188 AC_TRY_RUN([
2189 #if defined(HAVE_UNISTD_H)
2190 #include <unistd.h>
2191 #endif
2192 #include <stdio.h>
2193 #include <sys/stat.h>
2194 int main() { return (sizeof(dev_t) == 8) ? 0 : 1; }],
2195 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2196 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2197     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2198 fi
2199
2200 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2201 AC_TRY_RUN([
2202 #if defined(HAVE_UNISTD_H)
2203 #include <unistd.h>
2204 #endif
2205 #include <stdio.h>
2206 #include <sys/stat.h>
2207 int main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) return 1; return (lstat64("/dev/null", &st)==0)?0:1; }],
2208 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2209 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2210     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2211 fi
2212
2213 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2214 AC_TRY_COMPILE([
2215 #if defined(HAVE_UNISTD_H)
2216 #include <unistd.h>
2217 #endif
2218 #include <sys/types.h>
2219 #include <dirent.h>],
2220 [DIR64 de;],
2221 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2222 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2223     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2224 fi
2225
2226 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2227 AC_TRY_COMPILE([
2228 #if defined(HAVE_UNISTD_H)
2229 #include <unistd.h>
2230 #endif
2231 #include <sys/types.h>
2232 #include <dirent.h>],
2233 [struct dirent64 de;],
2234 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2235 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2236     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2237 fi
2238
2239 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2240 AC_TRY_RUN([
2241 #if defined(HAVE_UNISTD_H)
2242 #include <unistd.h>
2243 #endif
2244 #include <sys/types.h>
2245 int main() { dev_t dev; int i = major(dev); return 0; }],
2246 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2247 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2248     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2249 fi
2250
2251 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2252 AC_TRY_RUN([
2253 #if defined(HAVE_UNISTD_H)
2254 #include <unistd.h>
2255 #endif
2256 #include <sys/types.h>
2257 int main() { dev_t dev; int i = minor(dev); return 0; }],
2258 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2259 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2260     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2261 fi
2262
2263 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2264 AC_TRY_RUN([
2265 #if defined(HAVE_UNISTD_H)
2266 #include <unistd.h>
2267 #endif
2268 #include <sys/types.h>
2269 int main() { dev_t dev = makedev(1,2); return 0; }],
2270 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2271 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2272     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2273 fi
2274
2275 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2276 AC_TRY_RUN([#include <stdio.h>
2277 int main() { char c; c=250; return (c > 0)?0:1; }],
2278 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2279 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2280     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2281 fi
2282
2283 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
2284 AC_TRY_COMPILE([#include <sys/types.h>
2285 #include <sys/socket.h>
2286 #include <netinet/in.h>],
2287 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
2288 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
2289 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
2290     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
2291 fi
2292
2293 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2294 AC_TRY_COMPILE([#include <sys/types.h>
2295 #include <dirent.h>
2296 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2297 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2298 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2299     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2300 fi
2301
2302 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2303 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2304 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2305 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2306     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2307 fi
2308
2309 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2310 AC_TRY_LINK([
2311 #include <sys/time.h>
2312 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2313            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2314            samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2315 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2316     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2317 fi
2318
2319 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2320
2321     # On some systems (eg. Linux) librt can pull in libpthread. We
2322     # don't want this to happen because libpthreads changes signal delivery
2323     # semantics in ways we are not prepared for. This breaks Linux oplocks
2324     # which rely on signals.
2325
2326     AC_LIBTESTFUNC(rt, clock_gettime,
2327             [
2328                 AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2329                     [Whether clock_gettime is available])
2330                 SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2331                 SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2332                 SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2333             ])
2334
2335 fi
2336
2337 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
2338 AC_TRY_LINK([#include <stdarg.h>
2339 va_list ap1,ap2;], [va_copy(ap1,ap2);],
2340 samba_cv_HAVE_VA_COPY=yes,
2341 samba_cv_HAVE_VA_COPY=no)])
2342 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
2343     AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
2344 else
2345     AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
2346     AC_TRY_LINK([#include <stdarg.h>
2347     va_list ap1,ap2;], [__va_copy(ap1,ap2);],
2348     samba_cv_HAVE___VA_COPY=yes,
2349     samba_cv_HAVE___VA_COPY=no)])
2350     if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
2351         AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
2352     fi
2353 fi
2354
2355 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
2356 AC_TRY_RUN([
2357 #include <sys/types.h>
2358 #include <stdarg.h>
2359 void foo(const char *format, ...) {
2360        va_list ap;
2361        int len;
2362        char buf[5];
2363
2364        va_start(ap, format);
2365        len = vsnprintf(buf, 0, format, ap);
2366        va_end(ap);
2367        if (len != 5) return 1;
2368
2369        va_start(ap, format);
2370        len = vsnprintf(0, 0, format, ap);
2371        va_end(ap);
2372        if (len != 5) return 1;
2373
2374        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) return 1;
2375
2376        return 0;
2377 }
2378 int main() { foo("hello"); }
2379 ],
2380 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
2381 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
2382     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
2383 fi
2384
2385 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2386 AC_TRY_RUN([#include <sys/types.h>
2387 #include <dirent.h>
2388 int main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2389 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2390 di->d_name[0] == 0) return 0; return 1;} ],
2391 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2392 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2393     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2394 fi
2395
2396 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2397 AC_TRY_COMPILE([#include <sys/types.h>
2398 #include <utime.h>],
2399 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; return utime("foo.c",&tbuf);],
2400 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2401 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2402     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2403 fi
2404
2405 ##############
2406 # Check utmp details, but only if our OS offers utmp.h
2407 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2408 dnl  utmp and utmpx come in many flavours
2409 dnl  We need to check for many of them
2410 dnl  But we don't need to do each and every one, because our code uses
2411 dnl  mostly just the utmp (not utmpx) fields.
2412
2413 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2414
2415 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2416 AC_TRY_COMPILE([#include <sys/types.h>
2417 #include <utmp.h>],
2418 [struct utmp ut;  ut.ut_name[0] = 'a';],
2419 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2420 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2421     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2422 fi
2423
2424 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2425 AC_TRY_COMPILE([#include <sys/types.h>
2426 #include <utmp.h>],
2427 [struct utmp ut;  ut.ut_user[0] = 'a';],
2428 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2429 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2430     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2431 fi
2432
2433 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2434 AC_TRY_COMPILE([#include <sys/types.h>
2435 #include <utmp.h>],
2436 [struct utmp ut;  ut.ut_id[0] = 'a';],
2437 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2438 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2439     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2440 fi
2441
2442 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2443 AC_TRY_COMPILE([#include <sys/types.h>
2444 #include <utmp.h>],
2445 [struct utmp ut;  ut.ut_host[0] = 'a';],
2446 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2447 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2448     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2449 fi
2450
2451 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2452 AC_TRY_COMPILE([#include <sys/types.h>
2453 #include <utmp.h>],
2454 [struct utmp ut;  time_t t; ut.ut_time = t;],
2455 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2456 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2457     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2458 fi
2459
2460 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2461 AC_TRY_COMPILE([#include <sys/types.h>
2462 #include <utmp.h>],
2463 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2464 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2465 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2466     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2467 fi
2468
2469 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2470 AC_TRY_COMPILE([#include <sys/types.h>
2471 #include <utmp.h>],
2472 [struct utmp ut;  ut.ut_type = 0;],
2473 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2474 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2475     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2476 fi
2477
2478 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2479 AC_TRY_COMPILE([#include <sys/types.h>
2480 #include <utmp.h>],
2481 [struct utmp ut;  ut.ut_pid = 0;],
2482 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2483 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2484     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2485 fi
2486
2487 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2488 AC_TRY_COMPILE([#include <sys/types.h>
2489 #include <utmp.h>],
2490 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2491 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2492 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2493     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2494 fi
2495
2496 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2497 AC_TRY_COMPILE([#include <sys/types.h>
2498 #include <utmp.h>],
2499 [struct utmp ut;  ut.ut_addr = 0;],
2500 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2501 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2502     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2503 fi
2504
2505 if test x$ac_cv_func_pututline = xyes ; then
2506   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2507   AC_TRY_COMPILE([#include <sys/types.h>
2508 #include <utmp.h>],
2509   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2510   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2511   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2512       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2513   fi
2514 fi
2515
2516 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2517 AC_TRY_COMPILE([#include <sys/types.h>
2518 #include <utmpx.h>],
2519 [struct utmpx ux;  ux.ut_syslen = 0;],
2520 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2521 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2522     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2523 fi
2524
2525 fi
2526 # end utmp details
2527
2528
2529 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2530 AC_ARG_WITH(libiconv,
2531 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
2532 [
2533   if test "$withval" = "no" ; then
2534     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2535   else
2536      if test "$withval" != "yes" ; then
2537         ICONV_PATH_SPEC=yes
2538         ICONV_LOOK_DIRS="$withval"
2539      fi
2540   fi
2541 ])
2542
2543 for i in $ICONV_LOOK_DIRS ; do
2544
2545     save_LIBS="$LIBS"
2546     save_LDFLAGS="$LDFLAGS"
2547     save_CPPFLAGS="$CPPFLAGS"
2548
2549     iconv_current_LIBS=""
2550     iconv_current_LDFLAGS=""
2551     iconv_current_CPPFLAGS=""
2552
2553     ICONV_FOUND="no"
2554     unset libext
2555
2556     #  This is here to handle -withval stuff for --with-libiconv
2557     #  Perhaps we should always add a -L
2558     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2559
2560     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2561     # installation paths. This gets a little tricky since we might have iconv
2562     # in both libiconv and in libc. In this case the jm_ICONV test will always
2563     # succeed when the header is found. To counter this, make sure the
2564     # library directory is there and check the ABI directory first (which
2565     # should be harmless on other systems.
2566     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2567     for l in "lib32" "lib" "lib/hpux32"; do
2568         if test -d "$i/$l" ; then
2569                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2570                 LIBS=
2571                 export LDFLAGS LIBS CPPFLAGS
2572                 # Try to find iconv(3)
2573                 jm_ICONV($i/$l)
2574                 if test x"$ICONV_FOUND" = "xyes" ; then
2575                     libext="$l"
2576                     break
2577                 fi
2578         fi
2579     done
2580
2581     if test x"$ICONV_FOUND" = "xyes" ; then
2582         iconv_current_LDFLAGS="-L$i/$libext"
2583         iconv_current_CPPFLAGS="-I$i/include"
2584
2585         if test x"$jm_cv_lib_iconv" != x; then
2586             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2587         else
2588             # We found iconv in libc.
2589             iconv_current_LIBS=""
2590         fi
2591
2592     fi
2593
2594     if test x"$ICONV_FOUND" = "xyes" ; then
2595
2596         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2597         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2598         LIBS="$save_LIBS $iconv_current_LIBS"
2599         export LDFLAGS LIBS CPPFLAGS
2600
2601         default_dos_charset=no
2602         default_display_charset=no
2603         default_unix_charset=no
2604
2605         # check for default dos charset name
2606         for j in CP850 IBM850 ; do
2607             rjs_CHARSET($j)
2608             default_dos_charset="$ICONV_CHARSET"
2609             if test x"$default_dos_charset" = x"$j"; then
2610                 break
2611             fi
2612         done
2613
2614         # check for default display charset name
2615         for j in ASCII 646 ; do
2616             rjs_CHARSET($j)
2617             default_display_charset="$ICONV_CHARSET"
2618             if test x"$default_display_charset" = x"$j"; then
2619                 break
2620             fi
2621         done
2622
2623         # check for default unix charset name
2624         for j in UTF-8 UTF8 ; do
2625             rjs_CHARSET($j)
2626             default_unix_charset="$ICONV_CHARSET"
2627             if test x"$default_unix_charset" = x"$j"; then
2628                 break
2629             fi
2630         done
2631
2632         if test "$default_dos_charset" != "no" -a \
2633                 "$default_dos_charset" != "cross" -a \
2634                 "$default_display_charset" != "no" -a \
2635                 "$default_display_charset" != "cross" -a \
2636                 "$default_unix_charset" != "no" -a \
2637                 "$default_unix_charset" != "cross"
2638         then
2639                 samba_cv_HAVE_NATIVE_ICONV=yes
2640         else
2641             if test "$default_dos_charset" = "cross" -o \
2642                      "$default_display_charset" = "cross" -o \
2643                      "$default_unix_charset" = "cross"
2644             then
2645                     samba_cv_HAVE_NATIVE_ICONV=cross
2646             else
2647                     samba_cv_HAVE_NATIVE_ICONV=no
2648             fi
2649         fi
2650
2651         # At this point, we have a libiconv candidate. We know that
2652         # we have the right headers and libraries, but we don't know
2653         # whether it does the conversions we want. We can't test this
2654         # because we are cross-compiling. This is not necessarily a big
2655         # deal, since we can't guarantee that the results we get now will
2656         # match the results we get at runtime anyway.
2657         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2658             default_dos_charset="CP850"
2659             default_display_charset="ASCII"
2660             default_unix_charset="UTF-8"
2661             samba_cv_HAVE_NATIVE_ICONV=yes
2662             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2663             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2664         fi
2665
2666         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2667
2668             CPPFLAGS=$save_CPPFLAGS
2669             LDFLAGS=$save_LDFLAGS
2670             LIBS=$save_LIBS
2671
2672             if test x"$iconv_current_LIBS" != x; then
2673                 LIBS="$LIBS $iconv_current_LIBS"
2674             fi
2675
2676             # Add the flags we need to CPPFLAGS and LDFLAGS
2677             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2678             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2679
2680             # Turn the #defines into string literals
2681             default_dos_charset="\"$default_dos_charset\""
2682             default_display_charset="\"$default_display_charset\""
2683             default_unix_charset="\"$default_unix_charset\""
2684
2685             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2686             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2687             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2688             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2689
2690            break
2691         fi
2692
2693     # We didn't find a working iconv, so keep going
2694     fi
2695
2696     #  We only need to clean these up here for the next pass through the loop
2697     CPPFLAGS=$save_CPPFLAGS
2698     LDFLAGS=$save_LDFLAGS
2699     LIBS=$save_LIBS
2700     export LDFLAGS LIBS CPPFLAGS
2701 done
2702 unset libext
2703
2704
2705 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2706     AC_MSG_WARN([Sufficient support for iconv function was not found.
2707     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2708    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2709    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2710    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2711 fi
2712
2713
2714 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2715 AC_TRY_RUN([
2716 #include <sys/types.h>
2717 #include <fcntl.h>
2718 #ifndef F_GETLEASE
2719 #define F_GETLEASE      1025
2720 #endif
2721 int main() {
2722        int fd = open("/dev/null", O_RDONLY);
2723        return fcntl(fd, F_GETLEASE, 0) == -1;
2724 }
2725 ],
2726 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2727 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2728     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2729 fi
2730
2731 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2732 AC_TRY_RUN([
2733 #include <sys/types.h>
2734 #include <fcntl.h>
2735 #include <signal.h>
2736 #ifndef F_NOTIFY
2737 #define F_NOTIFY 1026
2738 #endif
2739 int main() {
2740         return fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0;
2741 }
2742 ],
2743 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2744 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2745     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2746 fi
2747
2748 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2749 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2750 AC_CHECK_FUNC(inotify_init)
2751 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2752 ],
2753 samba_cv_HAVE_INOTIFY=yes,
2754 samba_cv_HAVE_INOTIFY=no,
2755 samba_cv_HAVE_INOTIFY=cross)
2756
2757 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2758     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2759 fi
2760
2761 #################################################
2762 # Check if FAM notifications are available. For FAM info, see
2763 #       http://oss.sgi.com/projects/fam/
2764 #       http://savannah.nongnu.org/projects/fam/
2765 AC_ARG_ENABLE(fam,
2766 [  --enable-fam            Turn on FAM support (default=auto)])
2767
2768 if test x$enable_fam != xno; then
2769     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2770     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2771         # On IRIX, libfam requires libC, but other FAM implementations
2772         # might not need it.
2773         AC_CHECK_LIB(fam, FAMOpen2,
2774             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2775             [samba_cv_HAVE_LIBFAM=no])
2776
2777         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2778             samba_fam_xtra=-lC
2779             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2780                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2781                 [samba_cv_HAVE_LIBFAM=no])
2782             unset samba_fam_xtra
2783         fi
2784     fi
2785
2786     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2787         default_shared_modules="$default_shared_modules vfs_notify_fam"
2788         AC_TRY_COMPILE([#include <fam.h>],
2789                     [FAMCodes code = FAMChanged;],
2790                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2791                         [Whether fam.h contains a typedef for enum FAMCodes]),
2792                     [])
2793     fi
2794
2795     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2796         AC_MSG_ERROR(FAM support requested but FAM library not available )
2797     fi
2798 fi
2799
2800 AC_SUBST(SMB_FAM_LIBS)
2801
2802 #################################################
2803 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2804
2805 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2806
2807 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2808 AC_TRY_RUN([
2809 #include <sys/types.h>
2810 #include <fcntl.h>
2811 #include <signal.h>
2812 #include <sys/file.h>
2813 #ifndef LOCK_MAND
2814 #define LOCK_MAND       32
2815 #define LOCK_READ       64
2816 #endif
2817 int main() {
2818         return flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0;
2819 }
2820 ],
2821 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2822 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2823     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2824 fi
2825
2826
2827 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2828 AC_TRY_COMPILE([#include <sys/types.h>
2829 #include <fcntl.h>],
2830 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2831 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2832 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2833     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2834 fi
2835
2836 #################################################
2837 # Check for POSIX capability support
2838
2839 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2840     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2841     [], [])
2842
2843 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2844
2845     ac_save_LIBS=$LIBS
2846     AC_LIBTESTFUNC(cap, cap_get_proc)
2847
2848     AC_CACHE_CHECK([for POSIX capabilities],
2849             samba_cv_HAVE_POSIX_CAPABILITIES,
2850             [
2851                 AC_TRY_RUN([
2852 #include <sys/types.h>
2853 #include <sys/capability.h>
2854 int main() {
2855  cap_t cap;
2856  cap_value_t vals[1];
2857  if (!(cap = cap_get_proc()))
2858    return 1;
2859  vals[0] = CAP_CHOWN;
2860  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2861  cap_set_proc(cap);
2862  return 0;
2863 }],
2864                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2865                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2866                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2867             ])
2868
2869 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2870     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2871             [Whether POSIX capabilities are available])
2872 else
2873     LIBS=$ac_save_LIBS
2874 fi
2875
2876 fi
2877
2878 #
2879 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2880 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2881 #
2882
2883 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2884 AC_TRY_COMPILE([#include <sys/types.h>
2885 #if defined(HAVE_RPC_RPC_H)
2886 #include <rpc/rpc.h>
2887 #endif],
2888 [int16 testvar;],
2889 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2890 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2891     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2892 fi
2893
2894 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2895 AC_TRY_COMPILE([#include <sys/types.h>
2896 #if defined(HAVE_RPC_RPC_H)
2897 #include <rpc/rpc.h>
2898 #endif],
2899 [uint16 testvar;],
2900 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2901 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2902     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2903 fi
2904
2905 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2906 AC_TRY_COMPILE([#include <sys/types.h>
2907 #if defined(HAVE_RPC_RPC_H)
2908 #include <rpc/rpc.h>
2909 #endif],
2910 [int32 testvar;],
2911 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2912 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2913     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2914 fi
2915
2916 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2917 AC_TRY_COMPILE([#include <sys/types.h>
2918 #if defined(HAVE_RPC_RPC_H)
2919 #include <rpc/rpc.h>
2920 #endif],
2921 [uint32 testvar;],
2922 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2923 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2924     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2925 fi
2926
2927 dnl
2928 dnl Some systems (SCO) have a problem including
2929 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2930 dnl as a #define in <prot.h> and as part of an enum
2931 dnl in <rpc/rpc.h>.
2932 dnl
2933
2934 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2935 AC_TRY_COMPILE([#include <sys/types.h>
2936 #ifdef HAVE_SYS_SECURITY_H
2937 #include <sys/security.h>
2938 #include <prot.h>
2939 #endif  /* HAVE_SYS_SECURITY_H */
2940 #if defined(HAVE_RPC_RPC_H)
2941 #include <rpc/rpc.h>
2942 #endif],
2943 [int testvar;],
2944 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2945 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2946     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2947 fi
2948
2949 AC_MSG_CHECKING([for test routines])
2950 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2951            AC_MSG_RESULT(yes),
2952            AC_MSG_ERROR([cant find test code. Aborting config]),
2953            AC_MSG_WARN([cannot run when cross-compiling]))
2954
2955 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2956 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2957            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2958 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2959     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2960 fi
2961
2962 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2963 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2964            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2965            samba_cv_HAVE_WORKING_AF_LOCAL=no,
2966            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2967 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2968 then
2969     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2970 fi
2971
2972 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2973 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2974            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2975 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2976     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2977 fi
2978
2979 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2980 AC_TRY_RUN([#include <stdlib.h>
2981 #include <sys/types.h>
2982 #include <sys/stat.h>
2983 #include <unistd.h>
2984 int main() {
2985   struct stat st;
2986   char tpl[20]="/tmp/test.XXXXXX";
2987   int fd = mkstemp(tpl);
2988   if (fd == -1) return 1;
2989   unlink(tpl);
2990   if (fstat(fd, &st) != 0) return 1;
2991   if ((st.st_mode & 0777) != 0600) return 1;
2992   return 0;
2993 }],
2994 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2995 samba_cv_HAVE_SECURE_MKSTEMP=no,
2996 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2997 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2998     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2999 fi
3000
3001 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
3002         AC_TRY_RUN([
3003 #include "${srcdir-.}/lib/replace/test/os2_delete.c"
3004 int main(void) {
3005     return test_readdir_os2_delete();
3006 }
3007 ],
3008                 [samba_cv_HAVE_BROKEN_READDIR=no],
3009                         [samba_cv_HAVE_BROKEN_READDIR=yes],
3010                         [samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
3011
3012 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
3013 AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
3014         AC_TRY_RUN([
3015 #include "${srcdir-.}/lib/repdir.c"
3016 #include "${srcdir-.}/lib/replace/test/os2_delete.c"
3017 int main(void) {
3018     return test_readdir_os2_delete();
3019 ],
3020         samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
3021 fi
3022
3023 if test x"$samba_cv_REPLACE_READDIR" = x"yes"; then
3024         AC_DEFINE(REPLACE_READDIR,1,[replace readdir])
3025 fi
3026
3027 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
3028 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
3029 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
3030 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
3031 AC_CHECK_FUNCS(getpagesize)
3032
3033 ##################
3034 # look for a method of finding the list of network interfaces
3035 iface=no;
3036 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
3037 SAVE_CPPFLAGS="$CPPFLAGS"
3038 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3039 AC_TRY_RUN([
3040 #define HAVE_IFACE_AIX 1
3041 #define AUTOCONF_TEST 1
3042 #undef _XOPEN_SOURCE_EXTENDED
3043 #include "${srcdir-.}/lib/interfaces.c"],
3044            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
3045 CPPFLAGS="$SAVE_CPPFLAGS"
3046 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
3047     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
3048 fi
3049
3050 if test $iface = no; then
3051 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
3052 SAVE_CPPFLAGS="$CPPFLAGS"
3053 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3054 AC_TRY_RUN([
3055 #define HAVE_IFACE_IFCONF 1
3056 #define AUTOCONF_TEST 1
3057 #include "${srcdir-.}/lib/interfaces.c"],
3058            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
3059 CPPFLAGS="$SAVE_CPPFLAGS"
3060 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
3061     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
3062 fi
3063 fi
3064
3065 if test $iface = no; then
3066 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
3067 SAVE_CPPFLAGS="$CPPFLAGS"
3068 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3069 AC_TRY_RUN([
3070 #define HAVE_IFACE_IFREQ 1
3071 #define AUTOCONF_TEST 1
3072 #include "${srcdir-.}/lib/interfaces.c"],
3073            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
3074 CPPFLAGS="$SAVE_CPPFLAGS"
3075 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
3076     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
3077 fi
3078 fi
3079
3080
3081 ################################################
3082 # look for a method of setting the effective uid
3083 seteuid=no;
3084 if test $seteuid = no; then
3085 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
3086 AC_TRY_RUN([
3087 #define AUTOCONF_TEST 1
3088 #define USE_SETRESUID 1
3089 #include "confdefs.h"
3090 #include "${srcdir-.}/lib/util_sec.c"],
3091            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
3092 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
3093     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
3094 fi
3095 fi
3096
3097
3098 if test $seteuid = no; then
3099 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
3100 AC_TRY_RUN([
3101 #define AUTOCONF_TEST 1
3102 #define USE_SETREUID 1
3103 #include "confdefs.h"
3104 #include "${srcdir-.}/lib/util_sec.c"],
3105            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
3106 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
3107     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
3108 fi
3109 fi
3110
3111 if test $seteuid = no; then
3112 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
3113 AC_TRY_RUN([
3114 #define AUTOCONF_TEST 1
3115 #define USE_SETEUID 1
3116 #include "confdefs.h"
3117 #include "${srcdir-.}/lib/util_sec.c"],
3118            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
3119 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
3120     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
3121 fi
3122 fi
3123
3124 if test $seteuid = no; then
3125 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
3126 AC_TRY_RUN([
3127 #define AUTOCONF_TEST 1
3128 #define USE_SETUIDX 1
3129 #include "confdefs.h"
3130 #include "${srcdir-.}/lib/util_sec.c"],
3131            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
3132 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
3133     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
3134 fi
3135 fi
3136
3137 AC_CACHE_CHECK([for the Darwin initgroups system call],
3138         samba_cv_DARWIN_INITGROUPS,
3139         AC_TRY_LINK([
3140 #include <sys/syscall.h>
3141 #include <unistd.h>
3142         ],
3143         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
3144         samba_cv_DARWIN_INITGROUPS=yes,
3145         samba_cv_DARWIN_INITGROUPS=no)
3146 )
3147
3148 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
3149     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
3150         [Whether to use the Darwin-specific initgroups system call])
3151 fi
3152
3153 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
3154 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
3155            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
3156 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
3157     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
3158 fi
3159
3160 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
3161 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
3162            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
3163 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
3164     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
3165 fi
3166
3167 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
3168 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
3169            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
3170 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
3171     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
3172
3173 else
3174
3175 dnl
3176 dnl Don't check for 64 bit fcntl locking if we know that the
3177 dnl glibc2.1 broken check has succeeded.
3178 dnl
3179
3180   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
3181   AC_TRY_RUN([
3182 #if defined(HAVE_UNISTD_H)
3183 #include <unistd.h>
3184 #endif
3185 #include <stdio.h>
3186 #include <stdlib.h>
3187
3188 #ifdef HAVE_FCNTL_H
3189 #include <fcntl.h>
3190 #endif
3191
3192 #ifdef HAVE_SYS_FCNTL_H
3193 #include <sys/fcntl.h>
3194 #endif
3195 int main() { struct flock64 fl64;
3196 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3197 return 0;
3198 #else
3199 return 1;
3200 #endif
3201 }],
3202        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3203
3204   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3205       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3206   fi
3207 fi
3208
3209 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3210 AC_TRY_COMPILE([#include <sys/types.h>
3211 #include <sys/stat.h>
3212 #include <unistd.h>],
3213 [struct stat st;  st.st_blocks = 0;],
3214 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3215 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3216     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3217 fi
3218
3219 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3220 AC_TRY_COMPILE([#include <sys/types.h>
3221 #include <sys/stat.h>
3222 #include <unistd.h>],
3223 [struct stat st;  st.st_blksize = 0;],
3224 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3225 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3226     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3227 fi
3228
3229 AC_CACHE_CHECK([for st_flags in struct stat],
3230         samba_cv_HAVE_STAT_ST_FLAGS,
3231         [
3232             AC_TRY_COMPILE([#include <sys/types.h>
3233 #include <sys/stat.h>
3234 #include <unistd.h>],
3235             [struct stat st;  st.st_flags = 0;],
3236             samba_cv_HAVE_STAT_ST_FLAGS=yes,
3237             samba_cv_HAVE_STAT_ST_FLAGS=no,
3238             samba_cv_HAVE_STAT_ST_FLAGS=cross)
3239         ])
3240
3241 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3242     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3243                 [Whether the stat struct has a st_flags member])
3244 fi
3245
3246 case "$host_os" in
3247 *linux*)
3248 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
3249 AC_TRY_COMPILE([
3250 #ifdef HAVE_SYS_VFS_H
3251 #include <sys/vfs.h>
3252 #endif
3253 #ifdef HAVE_SYS_CAPABILITY_H
3254 #include <sys/capability.h>
3255 #endif
3256 ],[int i;],
3257    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
3258 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
3259    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
3260 fi
3261 ;;
3262 esac
3263
3264 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3265 AC_TRY_COMPILE([
3266 #include <sys/types.h>
3267 #include <sys/acl.h>
3268 #if defined(HAVE_RPCSVC_NIS_H)
3269 #include <rpcsvc/nis.h>
3270 #endif],
3271 [int i;],
3272 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3273 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3274         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3275 fi
3276
3277 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3278 AC_TRY_RUN([
3279 #include <stdio.h>
3280 #include <stdlib.h>
3281 #include <limits.h>
3282 int main() {
3283         char *newpath = realpath("/tmp", NULL);
3284         return (newpath != NULL) ? 0 : 1;
3285 }
3286 ],
3287 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3288 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3289     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3290 fi
3291
3292 #################################################
3293 # check for AFS clear-text auth support
3294 samba_cv_WITH_AFS=no
3295 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3296 AC_ARG_WITH(afs,
3297 [  --with-afs              Include AFS clear-text auth support (default=no) ],
3298 [ case "$withval" in
3299   yes|auto)
3300     AC_MSG_RESULT($withval)
3301     samba_cv_WITH_AFS=$withval
3302     ;;
3303   *)
3304     AC_MSG_RESULT(no)
3305     ;;
3306   esac ],
3307   AC_MSG_RESULT(no)
3308 )
3309
3310 ####################################################
3311 # check for Linux-specific AFS fake-kaserver support
3312 samba_cv_WITH_FAKE_KASERVER=no
3313 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3314 AC_ARG_WITH(fake-kaserver,
3315 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
3316 [ case "$withval" in
3317   yes|auto)
3318     AC_MSG_RESULT($withval)
3319     samba_cv_WITH_FAKE_KASERVER=$withval
3320     ;;
3321   *)
3322     AC_MSG_RESULT(no)
3323     ;;
3324   esac ],
3325   AC_MSG_RESULT(no)
3326 )
3327
3328 #################################################
3329 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3330 if test x"$samba_cv_WITH_AFS" != x"no" ||
3331    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3332
3333     # see if this box has the afs-headers in /usr/include/afs
3334     AC_MSG_CHECKING(for /usr/include/afs)
3335     if test -d /usr/include/afs; then
3336           CFLAGS="$CFLAGS -I/usr/include/afs"
3337           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3338           AC_MSG_RESULT(yes)
3339     else
3340       AC_MSG_RESULT(no)
3341     fi
3342
3343     # check for afs.h
3344     have_afs_headers=no
3345     AC_CHECK_HEADERS(afs.h afs/afs.h)
3346     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3347         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3348            test x"$samba_cv_WITH_AFS" = x"auto"; then
3349                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3350         else
3351                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3352         fi
3353     else
3354         have_afs_headers=yes
3355     fi
3356 fi
3357
3358 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3359     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3360 fi
3361
3362 #################################################
3363 # check whether to compile AFS/NT ACL mapping module
3364 samba_cv_WITH_VFS_AFSACL=no
3365 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3366 AC_ARG_WITH(vfs-afsacl,
3367 [  --with-vfs-afsacl       Include AFS to NT ACL mapping module (default=no) ],
3368 [ case "$withval" in
3369   yes|auto)
3370     AC_MSG_RESULT($withval)
3371     samba_cv_WITH_VFS_AFSACL=yes
3372     ;;
3373   *)
3374     AC_MSG_RESULT(no)
3375     ;;
3376   esac ],
3377   AC_MSG_RESULT(no)
3378 )
3379
3380 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3381    default_shared_modules="$default_shared_modules vfs_afsacl"
3382 fi
3383         
3384 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3385     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3386 fi
3387
3388 #################################################
3389 # check for the DFS clear-text auth system
3390 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3391 AC_ARG_WITH(dfs,
3392 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
3393 [ case "$withval" in
3394   yes)
3395     AC_MSG_RESULT(yes)
3396     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3397     ;;
3398   *)
3399     AC_MSG_RESULT(no)
3400     ;;
3401   esac ],
3402   AC_MSG_RESULT(no)
3403 )
3404
3405 ########################################################