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