25e3b3600bd87961c2bd7d99cbebd44370a43695
[ira/wip.git] / source3 / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2
3 dnl We must use autotools 2.53 or above
4 AC_PREREQ(2.53)
5 AC_INIT(include/includes.h)
6 AC_CONFIG_HEADER(include/config.h)
7 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
8
9 case "$PATH" in
10     */usr/ucb*)
11         AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
12         ;;
13 esac 
14
15 SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
16 echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
17
18 SAMBA_VERSION_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_STATIC)
326 AC_SUBST(LIBWBCLIENT)
327 AC_SUBST(WINBIND_LIBS)
328
329 AC_SUBST(LIBSAMBAUTIL_SHARED)
330
331 AC_SUBST(INSTALL_LIBSMBCLIENT)
332 AC_SUBST(UNINSTALL_LIBSMBCLIENT)
333 AC_SUBST(LIBSMBCLIENT_SHARED)
334 AC_SUBST(LIBSMBCLIENT)
335 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
336 AC_SUBST(UNINSTALL_LIBSMBSHAREMODES)
337 AC_SUBST(LIBSMBSHAREMODES_SHARED)
338 AC_SUBST(LIBSMBSHAREMODES)
339 AC_SUBST(INSTALL_LIBNETAPI)
340 AC_SUBST(UNINSTALL_LIBNETAPI)
341 AC_SUBST(LIBNETAPI_SHARED)
342 AC_SUBST(LIBNETAPI)
343 AC_SUBST(PRINT_LIBS)
344 AC_SUBST(AUTH_LIBS)
345 AC_SUBST(ACL_LIBS)
346 AC_SUBST(PASSDB_LIBS)
347 AC_SUBST(IDMAP_LIBS)
348 AC_SUBST(KRB5_LIBS)
349 AC_SUBST(UUID_LIBS)
350 AC_SUBST(LDAP_LIBS)
351 AC_SUBST(PAM_MODULES)
352 AC_SUBST(INSTALL_PAM_MODULES)
353 AC_SUBST(UNINSTALL_PAM_MODULES)
354 AC_SUBST(NSS_MODULES)
355 AC_SUBST(EXTRA_BIN_PROGS)
356 AC_SUBST(SMBMOUNT_PROGS)
357 AC_SUBST(CIFSMOUNT_PROGS)
358 AC_SUBST(INSTALL_CIFSMOUNT)
359 AC_SUBST(UNINSTALL_CIFSMOUNT)
360 AC_SUBST(CIFSSPNEGO_PROGS)
361 AC_SUBST(INSTALL_CIFSSPNEGO)
362 AC_SUBST(UNINSTALL_CIFSSPNEGO)
363 AC_SUBST(EXTRA_SBIN_PROGS)
364 AC_SUBST(EXTRA_ALL_TARGETS)
365 AC_SUBST(CONFIG_LIBS)
366 AC_SUBST(NSCD_LIBS)
367
368 ## check for --enable-debug first before checking CFLAGS before
369 ## so that we don't mix -O and -g
370 AC_ARG_ENABLE(debug,
371 [  --enable-debug          Turn on compiler debugging information (default=no)],
372     [if eval "test x$enable_debug = xyes"; then
373         CFLAGS="${CFLAGS} -g"
374     fi])
375
376 # compile with optimization and without debugging by default, but
377 # allow people to set their own preference.
378 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
379 # if it has no value.  This prevent *very* large debug binaries from occurring
380 # by default.
381 if test "x$CFLAGS" = x; then
382   CFLAGS="-O"
383 fi
384
385 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
386
387 AC_LIBREPLACE_CC_CHECKS
388
389 m4_include(lib/socket_wrapper/config.m4)
390 m4_include(lib/nss_wrapper/config.m4)
391
392 SWAT_SBIN_TARGETS='bin/swat$(EXEEXT)'
393 SWAT_INSTALL_TARGETS=installswat
394
395 AC_ARG_ENABLE(swat,
396 [  --enable-swat           Build the SWAT tool (default=yes)],
397 [
398     case "$enable_swat" in
399         no)
400             SWAT_SBIN_TARGETS=''
401             SWAT_INSTALL_TARGETS=''
402             ;;
403     esac
404 ])
405
406 AC_SUBST(SWAT_SBIN_TARGETS)
407 AC_SUBST(SWAT_INSTALL_TARGETS)
408
409 #################################################
410 # set prefix for 'make test'
411 selftest_prefix="./"
412 AC_SUBST(selftest_prefix)
413 AC_ARG_WITH(selftest-prefix,
414 [  --with-selftest-prefix=DIR    The prefix where make test will be run ($selftest_prefix)],
415 [ case "$withval" in
416   yes|no)
417     AC_MSG_WARN([--with-selftest-prefix called without argument - will use default])
418   ;;
419   * )
420     selftest_prefix="$withval"
421     ;;
422   esac
423 ])
424
425 #################################################
426 # set path of samba4's smbtorture
427 smbtorture4_path=""
428 AC_SUBST(smbtorture4_path)
429 AC_ARG_WITH(smbtorture4_path,
430 [  --with-smbtorture4-path=PATH    The path to a samba4 smbtorture for make test (none)],
431 [ case "$withval" in
432   yes|no)
433     AC_MSG_ERROR([--with-smbtorture4-path should take a path])
434   ;;
435   * )
436     smbtorture4_path="$withval"
437     if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then
438         AC_MSG_ERROR(['$smbtorture_path' does not  exist!])
439     fi
440   ;;
441  esac
442 ])
443
444 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
445     [if eval "test x$enable_developer = xyes"; then
446         developer=yes
447     fi])
448
449 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
450     [if eval "test x$enable_krb5developer = xyes"; then
451         developer=yes
452         krb5_developer=yes
453     fi])
454
455 # Probe the gcc version for extra CFLAGS. We always stash these in
456 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
457 # Makefile edit, avoiding the need to re-run configure.
458 if test x"$ac_cv_prog_gcc" = x"yes" ; then
459         DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
460         # Add -Wdeclaration-after-statement if compiler supports it
461         AC_CACHE_CHECK(
462           [that the C compiler understands -Wdeclaration-after-statement],
463           samba_cv_HAVE_Wdeclaration_after_statement, [
464           AC_TRY_RUN_STRICT([
465             int main(void)
466             {
467                 return 0;
468             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
469             samba_cv_HAVE_Wdeclaration_after_statement=yes,
470             samba_cv_HAVE_Wdeclaration_after_statement=no,
471             samba_cv_HAVE_Wdeclaration_after_statement=cross)
472        ])
473
474         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
475             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
476         fi
477
478         #-Werror-implicit-function-declaration
479         AC_CACHE_CHECK(
480           [that the C compiler understands -Werror-implicit-function-declaration],
481           samba_cv_HAVE_Werror_implicit_function_declaration, [
482           AC_TRY_RUN_STRICT([
483             int main(void)
484             {
485                 return 0;
486             }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
487             samba_cv_HAVE_Werror_implicit_function_declaration=yes,
488             samba_cv_HAVE_Werror_implicit_function_declaration=no,
489             samba_cv_HAVE_Werror_implicit_function_declaration=cross)
490        ])
491        if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
492             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
493        fi
494
495         # krb5developer is like developer, except we don't get
496         # -Wstrict-prototypes.
497        if test x"$krb5_developer" != x"$yes" ; then
498             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
499        fi
500 fi
501
502 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
503
504 if test "x$enable_dmalloc" = xyes
505 then
506         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
507         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
508                   [Define to check invariants around some common functions])
509         LIBS="$LIBS -ldmalloc"  
510 fi
511
512 #################################################
513 # check for a shared memory profiling support
514 AC_MSG_CHECKING(whether to use profiling)
515 AC_ARG_WITH(profiling-data,
516 [  --with-profiling-data   Include gathering source code profile information (default=no)],
517 [ case "$withval" in
518   yes)
519     AC_MSG_RESULT(yes)
520     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
521     samba_cv_WITH_PROFILE=yes
522     ;;
523   *)
524     AC_MSG_RESULT(no)
525     samba_cv_WITH_PROFILE=no
526     ;;
527   esac ],
528   AC_MSG_RESULT(no)
529 )
530
531 dnl Checks for programs.
532
533 AC_PROG_INSTALL
534 AC_PROG_AWK
535 AC_PATH_PROG(PERL, perl)
536
537 AC_CHECK_TOOL(AR, ar)
538
539 dnl Check if we use GNU ld
540 LD=ld
541 AC_PROG_LD_GNU
542
543 dnl Certain versions of GNU ld the default is not to have the
544 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
545 dnl warnings when building modules.
546 if test "$ac_cv_prog_gnu_ld" = "yes"; then
547         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
548         AC_MSG_CHECKING(GNU ld release date)
549         changequote(,)dnl
550         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'`
551         changequote([,])dnl
552         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
553         if test -n "$ac_cv_gnu_ld_date"; then
554         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
555                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
556         fi
557         if test "$ac_cv_gnu_ld_date" -gt 20030101; then
558                 ac_cv_gnu_ld_version_script=yes
559         fi
560         else
561            AC_MSG_CHECKING(GNU ld release version)
562            changequote(,)dnl
563            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
564            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
565            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
566            changequote([,])dnl
567            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
568            AC_MSG_CHECKING(GNU ld release version major)
569            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
570            AC_MSG_CHECKING(GNU ld release version minor)
571            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
572            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
573              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
574            fi
575            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
576              ac_cv_gnu_ld_version_script=yes
577            fi
578         fi
579 fi
580
581 dnl look for executable suffix
582 AC_EXEEXT
583
584 dnl Check if C compiler understands -c and -o at the same time
585 AC_PROG_CC_C_O
586 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
587       BROKEN_CC=
588 else
589       BROKEN_CC=#
590 fi
591 AC_SUBST(BROKEN_CC)
592
593 dnl Check if the C compiler understands -Werror
594 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
595  AC_TRY_RUN_STRICT([
596   int main(void)
597   {
598         return 0;
599   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
600   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
601 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
602    Werror_FLAGS="-Werror"
603 else
604 dnl Check if the C compiler understands -w2
605 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
606  AC_TRY_RUN_STRICT([
607   int main(void)
608   {
609         return 0;
610   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
611   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
612 if test x"$samba_cv_HAVE_w2" = x"yes"; then
613    Werror_FLAGS="-w2"
614 fi
615 fi
616
617 dnl Check if the C compiler understands volatile (it should, being ANSI).
618 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
619     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
620         samba_cv_volatile=yes,samba_cv_volatile=no)])
621 if test x"$samba_cv_volatile" = x"yes"; then
622    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
623 fi
624
625 ############################################
626 # check if the compiler can handle negative enum values
627 # and don't truncate the values to INT_MAX
628 # a runtime test is needed here
629 AC_SUBST(PIDL_ARGS)
630 AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
631     AC_TRY_RUN(
632 [
633         #include <stdio.h>
634         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
635         int main(void) {
636                 enum negative_values v1 = NEGATIVE_VALUE;
637                 unsigned v2 = NEGATIVE_VALUE;
638
639                 if (v1 != 0xFFFFFFFF) {
640                         printf("%u != 0xFFFFFFFF\n", v1);
641                         return 1;
642                 }
643                 if (v2 != 0xFFFFFFFF) {
644                         printf("%u != 0xFFFFFFFF\n", v2);
645                         return 1;
646                 }
647
648                 return 0;
649         }
650 ],
651         SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
652 if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
653         AC_MSG_WARN([using --unit-enums for pidl])
654         PIDL_ARGS="$PIDL_ARGS --uint-enums"
655 fi
656
657 dnl Figure out the flags to support named structure initializers
658
659 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
660
661 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
662 AC_MSG_CHECKING(uname -s)
663 AC_MSG_RESULT(${UNAME_S})
664
665 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
666 AC_MSG_CHECKING(uname -r)
667 AC_MSG_RESULT(${UNAME_R})
668
669 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
670 AC_MSG_CHECKING(uname -m)
671 AC_MSG_RESULT(${UNAME_M})
672
673 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
674 AC_MSG_CHECKING(uname -p)
675 AC_MSG_RESULT(${UNAME_P})
676
677 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
678 AC_MSG_CHECKING(uname -i)
679 AC_MSG_RESULT(${UNAME_I})
680
681 dnl Add #include for broken IRIX header files
682   case "$host_os" in
683         *irix6*)
684                 #TODO add to libreplace
685                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
686                         dnl Fix sensible defaults for MIPSPro compilers. The
687                         dnl error numbers are valid for the 7.3 compilers,
688                         dnl hopefully also valid for the 7.4 series.
689                         dnl
690                         dnl Bugzilla 3801. Force an error on warning 1035
691                         dnl so we don't incorrectly detect stdint.h. This
692                         dnl warning is emitted for #error directives.
693                         CFLAGS="$CFLAGS -diag_error 1035"
694                         dnl 1209: Controlling expression is constant
695                         dnl 1174: Function foo declared but never referenced
696                         dnl 3201: Parameter foo was never referenced
697                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
698                 fi
699         ;;
700 esac
701
702 DYNEXP=
703 AC_SUBST(DYNEXP)
704
705 dnl Add modules that have to be built by default here
706 dnl These have to be built static:
707 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"
708
709 dnl These are preferably build shared, and static if dlopen() is not available
710 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 vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_syncops vfs_xattr_tdb vfs_streams_xattr"
711
712 if test "x$developer" = xyes; then
713    default_static_modules="$default_static_modules rpc_rpcecho"
714    default_shared_modules="$default_shared_modules charset_weird"
715 fi
716
717 #
718 # Config CPPFLAG settings for strange OS's that must be set
719 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
720 # case statement; its first reference must be unconditional.
721 #
722 case "$host_os" in
723     *hpux*)
724 #
725 # Defines needed for HPUX support.
726 # HPUX has bigcrypt but (sometimes?) doesn't use it for
727 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
728 #
729       case `uname -r` in
730                 *9*|*10*|*11)
731                         AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
732                 ;;
733       esac
734       ;;
735
736 #
737 # CRAY Unicos has broken const handling
738        *unicos*)
739           AC_MSG_RESULT([disabling const])
740           CPPFLAGS="$CPPFLAGS -Dconst="
741           ;;
742         
743 #
744 # AIX4.x doesn't even admit to having large
745 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
746 #
747     *aix4*)
748           AC_MSG_RESULT([enabling large file support])
749       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
750           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
751       ;;
752 #
753 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
754 # to the existance of large files..
755 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
756 # recommendations on large file support, however it makes the
757 # compile work using gcc 2.7 and 2.8, whereas using the Sun
758 # recommendation makes the compile fail on gcc2.7. JRA.
759 #
760 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
761 #
762         *solaris*)
763                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
764                 case `uname -r` in
765                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
766                                 AC_MSG_RESULT([no large file support])
767                                 ;;
768                         5.*)
769                         AC_MSG_RESULT([enabling large file support])
770                         if test "$ac_cv_prog_gcc" = yes; then
771                                 ${CC-cc} -v >conftest.c 2>&1
772                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
773                                 rm -fr conftest.c
774                                 case "$ac_cv_gcc_compiler_version_number" in
775                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
776                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
777                                                 LDFLAGS="$LDFLAGS -lthread"
778                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
779                                                 ;;
780                                         *)
781                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
782                                                 LDFLAGS="$LDFLAGS -lthread"
783                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
784                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
785                                                 ;;
786                                 esac
787                         else
788                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
789                                 LDFLAGS="$LDFLAGS -lthread"
790                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
791                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
792                         fi
793                         ;;
794                 esac
795                 ;;
796 #
797 # IRIX uses SYSV printing.  Make sure to set that here
798 #
799         *irix*)
800                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
801                 ;;
802         *freebsd*|*dragonfly*)
803                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
804                 ;;
805 #
806 # VOS may need to have POSIX support and System V compatibility enabled.
807 #
808     *vos*)
809     case "$CPPFLAGS" in
810           *-D_POSIX_C_SOURCE*)
811                 ;;
812           *)
813                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
814                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
815                 ;;
816     esac
817     case "$CPPFLAGS" in
818           *-D_SYSV*|*-D_SVID_SOURCE*)
819                 ;;
820           *)
821                 CPPFLAGS="$CPPFLAGS -D_SYSV"
822                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
823     esac
824     ;;
825 #
826 # Tests needed for SINIX large file support.
827 #
828     *sysv4*)
829       if test $host = mips-sni-sysv4 ; then
830         AC_MSG_CHECKING([for LFS support])
831         old_CPPFLAGS="$CPPFLAGS"
832         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
833         AC_TRY_RUN([
834 #include <unistd.h>
835 main () {
836 #if _LFS64_LARGEFILE == 1
837 exit(0);
838 #else
839 exit(1);
840 #endif
841 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
842         CPPFLAGS="$old_CPPFLAGS"
843         if test x$SINIX_LFS_SUPPORT = xyes ; then
844           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
845                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
846           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
847           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
848           LIBS="`getconf LFS64_LIBS` $LIBS"
849         fi
850       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
851       fi
852     ;;
853
854 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
855 #
856     *linux*)
857         AC_MSG_CHECKING([for LFS support])
858         old_CPPFLAGS="$CPPFLAGS"
859         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
860        AC_TRY_RUN([
861 #include <unistd.h>
862 #include <sys/utsname.h>
863 #include <string.h>
864 #include <stdlib.h>
865 main() {
866 #if _LFS64_LARGEFILE == 1
867        struct utsname uts;
868        char *release;
869        int major, minor;
870
871        /* Ensure this is glibc 2.2 or higher */
872 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
873        int libc_major = __GLIBC__;
874        int libc_minor = __GLIBC_MINOR__;
875
876        if (libc_major < 2)
877               exit(1);
878        if (libc_minor < 2)
879               exit(1);
880 #endif
881
882        /* Ensure this is kernel 2.4 or higher */
883
884        uname(&uts);
885        release = strdup(uts.release);
886        major = atoi(strsep(&release, "."));
887        minor = atoi(strsep(&release, "."));
888
889        if (major > 2 || (major == 2 && minor > 3))
890                exit(0);
891        exit(1);
892 #else
893        exit(1);
894 #endif
895 }
896 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
897         CPPFLAGS="$old_CPPFLAGS"
898         if test x$LINUX_LFS_SUPPORT = xyes ; then
899                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
900                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
901                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
902                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
903         fi
904         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
905         ;;
906
907 #
908 # MacOS X is the *only* system that uses compose character in utf8. This
909 # is so horribly broken....
910 #
911     *darwin*)
912         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
913
914 # Add a system specific charset module.
915         default_shared_modules="$default_shared_modules charset_macosxfs"
916
917         ;;
918     *hurd*)
919         AC_MSG_CHECKING([for LFS support])
920         old_CPPFLAGS="$CPPFLAGS"
921         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
922         AC_TRY_RUN([
923 #include <unistd.h>
924 main () {
925 #if _LFS64_LARGEFILE == 1
926 exit(0);
927 #else
928 exit(1);
929 #endif
930 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
931         CPPFLAGS="$old_CPPFLAGS"
932         if test x$GLIBC_LFS_SUPPORT = xyes ; then
933           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
934                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
935           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
936         fi
937       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
938     ;;
939
940 esac
941
942 AC_LIBREPLACE_BROKEN_CHECKS
943
944 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
945
946 LIBREPLACE_OBJS=""
947 for obj in ${LIBREPLACEOBJ}; do
948         LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
949 done
950 AC_SUBST(LIBREPLACE_OBJS)
951
952 # add -ldl to the global LIBS
953 LIBS="${LIBS} ${LIBDL}"
954
955 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)
956 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
957 AC_CHECK_HEADERS(limits.h float.h pthread.h)
958 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
959 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
960 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
961 AC_CHECK_HEADERS(sys/un.h ifaddrs.h)
962 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
963 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
964 AC_CHECK_HEADERS(sys/sysmacros.h)
965 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
966 AC_CHECK_HEADERS(langinfo.h locale.h)
967 AC_CHECK_HEADERS(xfs/libxfs.h)
968
969 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
970 #if HAVE_RPC_RPC_H
971 #include <rpc/rpc.h>
972 #endif
973 ]])
974
975 ## These fail to compile on IRIX so just check for their presence
976 AC_CHECK_HEADERS(sys/mode.h,,,)
977
978 # Look for Darwin headers
979 old_CPPFLAGS="$CPPFLAGS"
980 CPPFLAGS="-Iinclude $CPPFLAGS"
981 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
982 CPPFLAGS="$old_CPPFLAGS"
983
984 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
985 # subdirectory of headers.
986 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
987
988 # check for linux on amd64 since valgrind is not quite there yet
989 case "$host_os" in
990         *linux*)
991                 case "$UNAME_P" in
992                         *x86_64*)
993                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
994                                 ;;
995                 esac
996                 ;;
997 esac
998
999
1000 #
1001 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
1002 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
1003 #
1004 case "$host_os" in
1005     *hpux*)
1006                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
1007                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
1008                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
1009                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
1010                 fi
1011         ;;
1012 esac
1013 AC_CHECK_HEADERS(shadow.h)
1014 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
1015 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
1016
1017 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
1018 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
1019
1020 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
1021
1022 # For experimental utmp support (lastlog on some BSD-like systems)
1023 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
1024
1025 AC_CHECK_SIZEOF(int,cross)
1026 AC_CHECK_SIZEOF(long,cross)
1027 AC_CHECK_SIZEOF(long long,cross)
1028 AC_CHECK_SIZEOF(short,cross)
1029
1030 AC_C_CONST
1031 AC_C_INLINE
1032 AC_C_BIGENDIAN
1033 AC_C_CHAR_UNSIGNED
1034
1035 AC_TYPE_SIGNAL
1036 AC_TYPE_UID_T
1037 AC_TYPE_MODE_T
1038 AC_TYPE_OFF_T
1039 AC_TYPE_SIZE_T
1040 AC_TYPE_PID_T
1041 AC_STRUCT_ST_RDEV
1042 AC_DIRENT_D_OFF
1043 AC_CHECK_TYPE(ino_t,unsigned)
1044 AC_CHECK_TYPE(loff_t,off_t)
1045 AC_CHECK_TYPE(offset_t,loff_t)
1046 AC_CHECK_TYPE(ssize_t, int)
1047 AC_CHECK_TYPE(wchar_t, unsigned short)
1048 AC_CHECK_TYPE(comparison_fn_t,
1049 [AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])])
1050
1051 ############################################
1052 # for cups support we need libcups, and a handful of header files
1053
1054 AC_ARG_ENABLE(cups,
1055 [  --enable-cups           Turn on CUPS support (default=auto)])
1056
1057 if test x$enable_cups != xno; then
1058         AC_PATH_PROG(CUPS_CONFIG, cups-config)
1059
1060         if test "x$CUPS_CONFIG" != x; then
1061                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
1062                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
1063                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
1064                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
1065         elif test x"$enable_cups" = x"yes"; then
1066                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
1067         fi
1068 fi
1069
1070 AC_ARG_ENABLE(iprint,
1071 [  --enable-iprint         Turn on iPrint support (default=yes if cups is yes)])
1072
1073 if test x$enable_iprint != xno; then
1074         if test "x$CUPS_CONFIG" != x; then
1075                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
1076         elif test x"$enable_iprint" = x"yes"; then
1077                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
1078         fi
1079 fi
1080
1081 ############################################
1082 # check if the compiler will optimize out function calls
1083 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
1084     AC_TRY_LINK([
1085 #include <stdio.h>],
1086 [
1087                 if (0) {
1088                    this_function_does_not_exist();
1089                 } else {
1090                   return 1;
1091                 }
1092
1093 ],
1094         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
1095 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
1096    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
1097 fi
1098
1099 ############################################
1100 # check for unix domain sockets
1101 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
1102     AC_TRY_COMPILE([
1103 #include <sys/types.h>
1104 #include <stdlib.h>
1105 #include <stddef.h>
1106 #include <sys/socket.h>
1107 #include <sys/un.h>],
1108 [
1109   struct sockaddr_un sunaddr;
1110   sunaddr.sun_family = AF_UNIX;
1111 ],
1112         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1113 if test x"$samba_cv_unixsocket" = x"yes"; then
1114    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1115 fi
1116
1117
1118 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
1119     AC_TRY_COMPILE([
1120 #include <sys/types.h>
1121 #if STDC_HEADERS
1122 #include <stdlib.h>
1123 #include <stddef.h>
1124 #endif
1125 #include <signal.h>],[sig_atomic_t i = 0],
1126         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
1127 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
1128    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
1129 fi
1130
1131 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
1132     AC_TRY_COMPILE([
1133 #include <sys/types.h>
1134 #if STDC_HEADERS
1135 #include <stdlib.h>
1136 #include <stddef.h>
1137 #endif
1138 #if TIME_WITH_SYS_TIME
1139 # include <sys/time.h>
1140 # include <time.h>
1141 #else
1142 # if HAVE_SYS_TIME_H
1143 #  include <sys/time.h>
1144 # else
1145 #  include <time.h>
1146 # endif
1147 #endif
1148 ],[struct timespec ts;],
1149         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
1150 if test x"$samba_cv_struct_timespec" = x"yes"; then
1151    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1152 fi
1153
1154 # stupid headers have the functions but no declaration. grrrr.
1155 AC_HAVE_DECL(errno, [#include <errno.h>])
1156 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1157 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1158 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1159 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1160 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1161 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1162
1163 # and glibc has setresuid under linux but the function does
1164 # nothing until kernel 2.1.44! very dumb.
1165 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1166     AC_TRY_RUN([#include <errno.h>
1167 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
1168         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1169 if test x"$samba_cv_have_setresuid" = x"yes"; then
1170     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1171 fi
1172
1173 # Do the same check for setresguid...
1174 #
1175 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1176     AC_TRY_RUN([#include <unistd.h>
1177 #include <errno.h>
1178 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1179         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1180 if test x"$samba_cv_have_setresgid" = x"yes"; then
1181     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1182 fi
1183
1184 AC_FUNC_MEMCMP
1185
1186 ###############################################
1187 # Readline included by default unless explicitly asked not to
1188 test "${with_readline+set}" != "set" && with_readline=yes
1189
1190 # test for where we get readline() from
1191 AC_MSG_CHECKING(whether to use readline)
1192 AC_ARG_WITH(readline,
1193 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
1194 [  case "$with_readline" in
1195   yes)
1196     AC_MSG_RESULT(yes)
1197
1198     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1199     AC_CHECK_HEADERS(readline/history.h)
1200
1201     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1202       for termlib in ncurses curses termcap terminfo termlib tinfo; do
1203        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1204       done
1205       AC_CHECK_LIB(readline, rl_callback_handler_install,
1206        [TERMLIBS="-lreadline $TERMLIBS"
1207        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1208        break], [TERMLIBS=], $TERMLIBS)])
1209     ;;
1210   no)
1211     AC_MSG_RESULT(no)
1212     ;;
1213   *)
1214     AC_MSG_RESULT(yes)
1215
1216     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1217     # alternate readline path
1218     _ldflags=${LDFLAGS}
1219     _cppflags=${CPPFLAGS}
1220
1221     # Add additional search path
1222     LDFLAGS="-L$with_readline/lib $LDFLAGS"
1223     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1224
1225     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1226     AC_CHECK_HEADERS(readline/history.h)
1227
1228     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1229       for termlib in ncurses curses termcap terminfo termlib; do
1230        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1231       done
1232       AC_CHECK_LIB(readline, rl_callback_handler_install,
1233        [TERMLDFLAGS="-L$with_readline/lib"
1234        TERMCPPFLAGS="-I$with_readline/include"
1235        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1236        TERMLIBS="-lreadline $TERMLIBS"
1237        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1238        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1239
1240     LDFLAGS=$_ldflags
1241     ;;
1242   esac],
1243   AC_MSG_RESULT(no)
1244 )
1245 AC_SUBST(TERMLIBS)
1246 AC_SUBST(TERMLDFLAGS)
1247
1248 # The readline API changed slightly from readline3 to readline4, so
1249 # code will generate warnings on one of them unless we have a few
1250 # special cases.
1251 AC_CHECK_LIB(readline, rl_completion_matches,
1252              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1253                         [Do we have rl_completion_matches?])],
1254              [],
1255              [$TERMLIBS])
1256
1257 # not all readline libs have rl_event_hook or history_list
1258 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1259 AC_CHECK_LIB(readline, history_list,
1260              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1261              [],
1262              [$TERMLIBS])
1263
1264 # The following test taken from the cvs sources
1265 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1266 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1267 # libsocket.so which has a bad implementation of gethostbyname (it
1268 # only looks in /etc/hosts), so we only look for -lsocket if we need
1269 # it.
1270 AC_CHECK_FUNCS(connect)
1271 if test x"$ac_cv_func_connect" = x"no"; then
1272     case "$LIBS" in
1273     *-lnsl*) ;;
1274     *) AC_CHECK_LIB(nsl_s, connect) ;;
1275     esac
1276     case "$LIBS" in
1277     *-lnsl*) ;;
1278     *) AC_CHECK_LIB(nsl, connect) ;;
1279     esac
1280     case "$LIBS" in
1281     *-lsocket*) ;;
1282     *) AC_CHECK_LIB(socket, connect) ;;
1283     esac
1284     case "$LIBS" in
1285     *-linet*) ;;
1286     *) AC_CHECK_LIB(inet, connect) ;;
1287     esac
1288     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1289     dnl has been cached.
1290     if test x"$ac_cv_lib_socket_connect" = x"yes" ||
1291        test x"$ac_cv_lib_inet_connect" = x"yes"; then
1292         # ac_cv_func_connect=yes
1293         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
1294         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1295     fi
1296 fi
1297
1298 ###############################################
1299 # test for where we get yp_get_default_domain() from
1300 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1301 AC_CHECK_FUNCS(yp_get_default_domain)
1302
1303 # Check if we have execl, if not we need to compile smbrun.
1304 AC_CHECK_FUNCS(execl)
1305 if test x"$ac_cv_func_execl" = x"no"; then
1306     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1307 fi
1308
1309 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown lchown chmod fchmod chroot link mknod mknod64)
1310 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1311 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1312 AC_CHECK_FUNCS(getrlimit fsync fdatasync memset strlcpy strlcat setpgid)
1313 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1314 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1315 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1316 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1317 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1318 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1319 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1320 AC_CHECK_FUNCS(getpwent_r)
1321 AC_CHECK_FUNCS(getdents getdents64)
1322 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1323 AC_CHECK_FUNCS(syslog vsyslog timegm)
1324 AC_CHECK_FUNCS(setlocale nl_langinfo)
1325 AC_CHECK_FUNCS(nanosleep)
1326 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1327 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1328 AC_CHECK_HEADERS(sys/mman.h)
1329 # setbuffer, shmget, shm_open are needed for smbtorture
1330 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1331
1332 # Find a method of generating a stack trace
1333 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1334 AC_CHECK_FUNCS(backtrace_symbols)
1335 AC_CHECK_LIB(exc, trace_back_stack)
1336
1337 echo -n "checking for GPFS GPL libs... "
1338 save_LIBS="$LIBS"
1339 LIBS="$LIBS -lgpfs_gpl"
1340 AC_TRY_LINK([#include <gpfs_gpl.h>],
1341           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1342           samba_cv_HAVE_GPFS=yes,
1343           samba_cv_HAVE_GPFS=no)
1344 echo $samba_cv_HAVE_GPFS
1345 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1346     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1347     default_shared_modules="$default_shared_modules vfs_gpfs"
1348 fi
1349 LIBS="$save_LIBS"
1350
1351 # Note that all the libunwind symbols in the API are defined to internal
1352 # platform-specific version, so we must include libunwind.h before checking
1353 # any of them.
1354 AC_MSG_CHECKING([for libunwind])
1355 save_LIBS=$LIBS
1356
1357 UNWIND_ARCH="unknown"
1358 if test x"$UNAME_I" != x"unknown"; then
1359         UNWIND_ARCH="$UNAME_I"
1360 elif test x"$UNAME_M" != x"unknown"; then
1361         UNWIND_ARCH="$UNAME_M"
1362 elif test x"$UNAME_P" != x"unknown"; then
1363         UNWIND_ARCH="$UNAME_P"
1364 fi
1365
1366 case "$UNWIND_ARCH" in
1367         unknown)
1368                 # This probably won't link without
1369                 # the platform-specific libunwind.
1370                 LIBS="$LIBS -lunwind"
1371                 ;;
1372         i386|i586|i686)
1373                 # Add the platform-specific libunwind module.
1374                 LIBS="$LIBS -lunwind -lunwind-x86"
1375                 ;;
1376         *)
1377                 # Add the platform-specific libunwind module.
1378                 # based on uname -i, uname -m or uname -p
1379                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1380                 ;;
1381 esac
1382
1383 AC_TRY_LINK(
1384     [
1385 #ifdef HAVE_LIBUNWIND_H
1386 #include <libunwind.h>
1387 #endif
1388     ],
1389     [
1390         unw_context_t ctx; unw_cursor_t cur;
1391         char buf[256]; unw_word_t off;
1392         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1393         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1394     ],
1395     [
1396         AC_MSG_RESULT(yes)
1397         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1398
1399         # If we have libunwind, test whether we also have libunwind-ptrace
1400         # which would let us unwind arbitrary processes.
1401         save_LIBS=$LIBS
1402         AC_CHECK_HEADERS(libunwind-ptrace.h)
1403         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1404             [
1405                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1406                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1407                     [Whether libunwind-ptrace.a is available.])
1408             ],
1409             [ LIBUNWIND_PTRACE="" ])
1410
1411         LIBS=$save_LIBS
1412     ],
1413     [
1414         AC_MSG_RESULT(no)
1415         LIBS=$save_LIBS
1416     ])
1417
1418 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1419 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1420     AC_CHECK_HEADERS(sys/ptrace.h)
1421     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1422     AC_TRY_LINK(
1423             [
1424 #if HAVE_SYS_TYPES_H
1425 #include <sys/types.h>
1426 #endif
1427 #if HAVE_SYS_PTRACE_H
1428 #include <sys/ptrace.h>
1429 #endif
1430             ],
1431             [
1432                 int main(int argc, const char ** argv)
1433                 {
1434                         pid_t me = (pid_t)-1;
1435                         ptrace(PTRACE_ATTACH, me, 0, 0);
1436                         ptrace(PTRACE_DETACH, me, 0, 0);
1437                         return 0;
1438                 }
1439             ],
1440             [
1441                 AC_MSG_RESULT(yes)
1442                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1443                     [Whether the Linux ptrace(2) interface is available.])
1444             ],
1445             [
1446                 AC_MSG_RESULT(no)
1447                 LIBUNWIND_PTRACE=""
1448             ])
1449 fi
1450
1451 AC_SUBST(LIBUNWIND_PTRACE)
1452
1453 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1454 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1455 AC_CHECK_FUNCS(__getcwd _getcwd)
1456 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1457 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1458 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1459 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1460 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1461 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1462 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1463 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1464 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1465 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1466 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1467 AC_CHECK_FUNCS(prctl)
1468
1469 AC_TRY_COMPILE([
1470 #ifdef HAVE_SYS_PRCTL_H
1471 #include <sys/prctl.h>
1472 #endif
1473 ],
1474 [int i; i = prtcl(0); ],
1475 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1476
1477 #
1478 #
1479 #
1480 case "$host_os" in
1481     *linux*)
1482        # glibc <= 2.3.2 has a broken getgrouplist
1483        AC_TRY_RUN([
1484 #include <unistd.h>
1485 #include <sys/utsname.h>
1486 main() {
1487        /* glibc up to 2.3 has a broken getgrouplist */
1488 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1489        int libc_major = __GLIBC__;
1490        int libc_minor = __GLIBC_MINOR__;
1491
1492        if (libc_major < 2)
1493               exit(1);
1494        if ((libc_major == 2) && (libc_minor <= 3))
1495               exit(1);
1496 #endif
1497        exit(0);
1498 }
1499 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1500        if test x"$linux_getgrouplist_ok" = x"yes"; then
1501           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1502        fi
1503        ;;
1504     *)
1505        AC_CHECK_FUNCS(getgrouplist)
1506        ;;
1507 esac
1508
1509 #
1510 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1511 #
1512
1513 if test x$ac_cv_func_stat64 = xno ; then
1514   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1515   AC_TRY_LINK([
1516 #if defined(HAVE_UNISTD_H)
1517 #include <unistd.h>
1518 #endif
1519 #include <sys/stat.h>
1520 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1521   AC_MSG_RESULT([$ac_cv_func_stat64])
1522   if test x$ac_cv_func_stat64 = xyes ; then
1523     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1524   fi
1525 fi
1526
1527 if test x$ac_cv_func_lstat64 = xno ; then
1528   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1529   AC_TRY_LINK([
1530 #if defined(HAVE_UNISTD_H)
1531 #include <unistd.h>
1532 #endif
1533 #include <sys/stat.h>
1534 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1535   AC_MSG_RESULT([$ac_cv_func_lstat64])
1536   if test x$ac_cv_func_lstat64 = xyes ; then
1537     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1538   fi
1539 fi
1540
1541 if test x$ac_cv_func_fstat64 = xno ; then
1542   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1543   AC_TRY_LINK([
1544 #if defined(HAVE_UNISTD_H)
1545 #include <unistd.h>
1546 #endif
1547 #include <sys/stat.h>
1548 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1549   AC_MSG_RESULT([$ac_cv_func_fstat64])
1550   if test x$ac_cv_func_fstat64 = xyes ; then
1551     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1552   fi
1553 fi
1554
1555 #################################################
1556 # Check whether struct stat has timestamps with sub-second resolution.
1557 # At least IRIX and Solaris have these.
1558 #
1559 # We check that
1560 #       all of st_mtim, st_atim and st_ctim exist
1561 #       all of the members are in fact of type struct timespec
1562 #
1563 # There is some conflicting standards weirdness about whether we should use
1564 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1565 # prefer struct timespec.
1566
1567 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1568     [
1569         AC_TRY_COMPILE(
1570             [
1571 #if TIME_WITH_SYS_TIME
1572 # include <sys/time.h>
1573 # include <time.h>
1574 #else
1575 # if HAVE_SYS_TIME_H
1576 #  include <sys/time.h>
1577 # else
1578 #  include <time.h>
1579 # endif
1580 #endif
1581 #ifdef HAVE_SYS_STAT_H
1582 #include <sys/stat.h>
1583 #endif
1584             ],
1585             [
1586                 struct timespec t;
1587                 struct stat s = {0};
1588                 t.tv_sec = s.st_mtim.tv_sec;
1589                 t.tv_nsec = s.st_mtim.tv_nsec;
1590                 t.tv_sec = s.st_ctim.tv_sec;
1591                 t.tv_nsec = s.st_ctim.tv_nsec;
1592                 t.tv_sec = s.st_atim.tv_sec;
1593                 t.tv_nsec = s.st_atim.tv_nsec;
1594             ],
1595             samba_stat_hires=yes, samba_stat_hires=no)
1596     ])
1597
1598 if test x"$samba_stat_hires" = x"yes" ; then
1599     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1600     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1601     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1602     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1603             [whether struct stat has sub-second timestamps])
1604 fi
1605
1606 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1607     [
1608         AC_TRY_COMPILE(
1609             [
1610 #if TIME_WITH_SYS_TIME
1611 # include <sys/time.h>
1612 # include <time.h>
1613 #else
1614 # if HAVE_SYS_TIME_H
1615 #  include <sys/time.h>
1616 # else
1617 #  include <time.h>
1618 # endif
1619 #endif
1620 #ifdef HAVE_SYS_STAT_H
1621 #include <sys/stat.h>
1622 #endif
1623             ],
1624             [
1625                 struct timespec t;
1626                 struct stat s = {0};
1627                 t.tv_sec = s.st_mtime;
1628                 t.tv_nsec = s.st_mtimensec;
1629                 t.tv_sec = s.st_ctime;
1630                 t.tv_nsec = s.st_ctimensec;
1631                 t.tv_sec = s.st_atime;
1632                 t.tv_nsec = s.st_atimensec;
1633             ],
1634             samba_stat_hires=yes, samba_stat_hires=no)
1635     ])
1636
1637 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1638     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1639     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1640     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1641     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1642             [whether struct stat has sub-second timestamps without struct timespec])
1643 fi
1644
1645 #####################################
1646 # needed for SRV lookups
1647 AC_CHECK_LIB(resolv, dn_expand)
1648 AC_CHECK_LIB(resolv, _dn_expand)
1649 AC_CHECK_LIB(resolv, __dn_expand)
1650
1651 #
1652 # Check for the functions putprpwnam, set_auth_parameters,
1653 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1654 # Needed for OSF1 and HPUX.
1655 #
1656
1657 AC_LIBTESTFUNC(security, putprpwnam)
1658 AC_LIBTESTFUNC(sec, putprpwnam)
1659
1660 AC_LIBTESTFUNC(security, set_auth_parameters)
1661 AC_LIBTESTFUNC(sec, set_auth_parameters)
1662
1663 # UnixWare 7.x has its getspnam in -lgen
1664 AC_LIBTESTFUNC(gen, getspnam)
1665
1666 AC_LIBTESTFUNC(security, getspnam)
1667 AC_LIBTESTFUNC(sec, getspnam)
1668
1669 AC_LIBTESTFUNC(security, bigcrypt)
1670 AC_LIBTESTFUNC(sec, bigcrypt)
1671
1672 AC_LIBTESTFUNC(security, getprpwnam)
1673 AC_LIBTESTFUNC(sec, getprpwnam)
1674
1675 AC_CHECK_FUNCS(strsignal)
1676
1677 ############################################
1678 # Check if we have libattr
1679 case "$host_os" in
1680   *osf*)
1681         AC_SEARCH_LIBS(getproplist, [proplist])
1682         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1683         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1684         AC_CHECK_FUNCS(sizeof_proplist_entry)
1685   ;;
1686   *)
1687         AC_SEARCH_LIBS(getxattr, [attr])
1688         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1689         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1690         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1691         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1692         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1693         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1694         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1695   ;;
1696 esac
1697
1698 ########################################################
1699 # Check if attropen() is present if this is Solaris
1700 case "$host_os" in
1701   *solaris*)
1702         AC_CHECK_FUNCS(attropen)
1703   ;;
1704 esac
1705
1706 ########################################################
1707 # Do xattr functions take additional options like on Darwin?
1708 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1709         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1710                 old_LIBS=$LIBS
1711                 LIBS="$LIBS $ACL_LIBS"
1712                 AC_TRY_COMPILE([
1713                         #include <sys/types.h>
1714                         #if HAVE_ATTR_XATTR_H
1715                         #include <attr/xattr.h>
1716                         #elif HAVE_SYS_XATTR_H
1717                         #include <sys/xattr.h>
1718                         #endif
1719                 ],[
1720                         getxattr(0, 0, 0, 0, 0, 0);
1721                 ],
1722                 [smb_attr_cv_xattr_add_opt=yes],
1723                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1724         ])
1725         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1726                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1727         fi
1728 fi
1729
1730 # Check if we have extattr
1731 case "$host_os" in
1732   *freebsd4* | *dragonfly* )
1733     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1734     ;;
1735   *)
1736     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1737     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1738     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1739     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1740     ;;
1741 esac
1742
1743 # Set defaults
1744 PIE_CFLAGS=""
1745 PIE_LDFLAGS=""
1746 AC_ARG_ENABLE(pie, [  --enable-pie            Turn on pie support if available (default=yes)])
1747
1748 if test "x$enable_pie" != xno
1749 then
1750         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1751         [
1752                 cat > conftest.c <<EOF
1753 int foo;
1754 main () { return 0;}
1755 EOF
1756                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1757                 then
1758                         samba_cv_fpie=yes
1759                 else
1760                         samba_cv_fpie=no
1761                 fi
1762                 rm -f conftest*
1763         ])
1764         if test x"${samba_cv_fpie}" = x"yes"
1765         then
1766                 PIE_CFLAGS="-fPIE"
1767                 PIE_LDFLAGS="-pie"
1768         fi
1769 fi
1770
1771 # Assume non-shared by default and override below
1772 BLDSHARED="false"
1773
1774 # these are the defaults, good for lots of systems
1775 HOST_OS="$host_os"
1776 LDSHFLAGS="-shared"
1777 MODULE_EXPORTS=""
1778 SONAMEFLAG="#"
1779 SHLD="\${CC} \${CFLAGS}"
1780 PICFLAG="${PIE_CFLAGS}"
1781 SHLIBEXT="so"
1782 DSO_EXPORTS=""
1783
1784 # this bit needs to be modified for each OS that supports share libs
1785 # You need to specify how to create a shared library and
1786   # how to compile C code to produce PIC object files
1787
1788   AC_MSG_CHECKING([ability to build shared libraries])
1789
1790   # and these are for particular systems
1791   case "$host_os" in
1792                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1793                         BLDSHARED="true"
1794                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1795                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1796                         else
1797                                 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1798                         fi
1799                         DYNEXP="-Wl,--export-dynamic"
1800                         PICFLAG="-fPIC"
1801                         SONAMEFLAG="-Wl,-soname="
1802                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1803                         ;;
1804                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1805                         BLDSHARED="true"
1806                         LDSHFLAGS="-G"
1807                         SONAMEFLAG="-h "
1808                         if test "${GCC}" = "yes"; then
1809                                 PICFLAG="-fPIC"
1810                                 SONAMEFLAG="-Wl,-soname="
1811                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1812                                         DYNEXP="-Wl,-E"
1813                                 fi
1814                         else
1815                                 PICFLAG="-KPIC"
1816                                 ## ${CFLAGS} added for building 64-bit shared
1817                                 ## libs using Sun's Compiler
1818                                 LDSHFLAGS="-G \${CFLAGS}"
1819                         fi
1820                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1821                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1822                         ;;
1823                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1824                         BLDSHARED="true"
1825                         LDSHFLAGS="-G"
1826                         SONAMEFLAG="-Wl,-h,"
1827                         PICFLAG="-KPIC"   # Is this correct for SunOS
1828                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1829                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1830                         ;;
1831                 *netbsd* | *freebsd* | *dragonfly* )
1832                         BLDSHARED="true"
1833                         LDSHFLAGS="-shared"
1834                         DYNEXP="-Wl,--export-dynamic"
1835                         SONAMEFLAG="-Wl,-soname,"
1836                         PICFLAG="-fPIC -DPIC"
1837                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1838                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1839                         ;;
1840                 *openbsd*)  BLDSHARED="true"
1841                         LDSHFLAGS="-shared"
1842                         DYNEXP="-Wl,-Bdynamic"
1843                         SONAMEFLAG="-Wl,-soname,"
1844                         PICFLAG="-fPIC"
1845                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1846                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1847                         ;;
1848                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1849                         case "$host_os" in
1850                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1851                         ;;
1852                         esac
1853                         BLDSHARED="true"
1854                         LDSHFLAGS="-set_version sgi1.0 -shared"
1855                         SONAMEFLAG="-soname "
1856                         SHLD="\${LD}"
1857                         if test "${GCC}" = "yes"; then
1858                                 PICFLAG="-fPIC"
1859                         else
1860                                 PICFLAG="-KPIC"
1861                         fi
1862                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1863                         ;;
1864                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1865                         BLDSHARED="true"
1866                         LDSHFLAGS="-Wl,-G,-bexpall,-bbigtoc"
1867                         DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
1868                         PICFLAG="-O2"
1869                         # as AIX code is always position independent...
1870                         # .po will just create compile warnings, use po.o:
1871                         if test "${GCC}" != "yes"; then
1872                                 ## for funky AIX compiler using strncpy()
1873                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1874                         fi
1875
1876                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1877                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1878                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1879                         ;;
1880                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1881                         # Use special PIC flags for the native HP-UX compiler.
1882                                 BLDSHARED="true"
1883                                 SHLD="cc"
1884                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1885                                 SONAMEFLAG="-Wl,+h "
1886                                 PICFLAG="+z"
1887                         if test "${GCC}" = "yes"; then
1888                                 PICFLAG="-fPIC"
1889                         else
1890                                 PICFLAG="+z +ESnolit"
1891                         fi
1892                         if test "$host_cpu" = "ia64"; then
1893                                 SHLIBEXT="so"
1894                               PICFLAG="+z"
1895                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1896                         else
1897                                 SHLIBEXT="sl"
1898                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1899                         fi
1900                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1901                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1902                         ;;
1903                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1904                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1905                         ;;
1906                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1907                         BLDSHARED="true"
1908                         LDSHFLAGS="-shared"
1909                         SONAMEFLAG="-Wl,-soname,"
1910                         PICFLAG="-fPIC"
1911                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1912                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1913                         ;;
1914                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1915                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1916                         ;;
1917                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1918                         BLDSHARED="true"
1919                         LDSHFLAGS="-shared"
1920                         SONAMEFLAG="-Wl,-soname,"
1921                         PICFLAG="-KPIC"
1922                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1923                         ;;
1924                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1925                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1926                         ;;
1927                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1928                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1929                         ;;
1930                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1931                         case "$host" in
1932                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1933                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1934                                         fi
1935                                         LDSHFLAGS="-G"
1936                                         DYNEXP="-Bexport"
1937                                 ;;
1938                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1939                         esac
1940                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1941                         ;;
1942
1943                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1944                         if [ test "$GCC" != yes ]; then
1945                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1946                         fi
1947                         LDSHFLAGS="-G"
1948                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1949                         ;;
1950                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1951                         BLDSHARED="false"
1952                         LDSHFLAGS=""
1953                         ;;
1954
1955                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1956                         BLDSHARED="true"
1957                         LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1958                         SHLIBEXT="dylib"
1959                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1960                         SHLIBEXT="dylib"
1961                         # Since gcc doesn't fail on unrecognised options, the
1962                         # PIE test incorrectly succeeds. Darwin gcc does not
1963                         # actually support the PIE stuff.
1964                         PIE_LDFLAGS=
1965                         PIE_CFLAGS=
1966                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1967                         ;;
1968
1969                 *)
1970                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1971                         ;;
1972   esac
1973
1974 if test "$enable_shared" != "yes"; then
1975         BLDSHARED=false
1976 fi
1977
1978 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1979         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1980 fi
1981
1982 AC_MSG_RESULT($BLDSHARED)
1983
1984 AC_MSG_CHECKING([LDFLAGS])
1985 AC_MSG_RESULT([$LDFLAGS])
1986 AC_MSG_CHECKING([DYNEXP])
1987 AC_MSG_RESULT([$DYNEXP])
1988
1989 #######################################################
1990 # test whether building a shared library actually works
1991 if test $BLDSHARED = true; then
1992
1993 AC_MSG_CHECKING([SHLD])
1994 AC_MSG_RESULT([$SHLD])
1995 AC_MSG_CHECKING([LDSHFLAGS])
1996 AC_MSG_RESULT([$LDSHFLAGS])
1997
1998 AC_MSG_CHECKING([SHLIBEXT])
1999 AC_MSG_RESULT([$SHLIBEXT])
2000 AC_MSG_CHECKING([SONAMEFLAG])
2001 AC_MSG_RESULT([$SONAMEFLAG])
2002
2003 AC_MSG_CHECKING([PICFLAG])
2004 AC_MSG_RESULT([$PICFLAG])
2005
2006 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
2007 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
2008
2009 AC_CACHE_CHECK([whether building shared libraries actually works],
2010                [ac_cv_shlib_works],[
2011    # try building a trivial shared library
2012    ac_cv_shlib_works=no
2013    # The $SHLD and $LDSHFLAGS variables may contain references to other
2014    # variables so they need to be eval'ed.
2015    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
2016         shlib.o ${srcdir-.}/tests/shlib.c && \
2017    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
2018         shlib.o && ac_cv_shlib_works=yes
2019    rm -f "shlib.$SHLIBEXT" shlib.o
2020
2021 ])
2022 if test $ac_cv_shlib_works = no; then
2023    BLDSHARED=false
2024 fi
2025 fi
2026
2027 if test x"$BLDSHARED" != x"true"; then
2028         LDSHFLAGS="shared-libraries-disabled"
2029         SONAMEFLAG="shared-libraries-disabled"
2030         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
2031         SHLD="shared-libraries-disabled"
2032         PICFLAG="${PIE_CFLAGS}"
2033         SHLIBEXT="shared_libraries_disabled"
2034 fi
2035
2036 AC_MSG_CHECKING([used PICFLAG])
2037 AC_MSG_RESULT([$PICFLAG])
2038
2039 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
2040
2041 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
2042
2043 ################
2044
2045 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2046 AC_TRY_RUN([#include <stdio.h>
2047 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2048 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2049 if test x"$samba_cv_have_longlong" = x"yes"; then
2050     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2051     AC_CHECK_TYPE(intptr_t, unsigned long long)
2052 else
2053     AC_CHECK_TYPE(intptr_t, unsigned long)
2054 fi
2055
2056 #
2057 # Check if the compiler supports the LL prefix on long long integers.
2058 # AIX needs this.
2059
2060 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2061     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2062         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2063 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2064    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2065 fi
2066
2067
2068 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2069 AC_TRY_RUN([#include <time.h>
2070 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2071 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2072 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2073     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2074 fi
2075
2076 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2077 AC_TRY_RUN([#include <stdio.h>
2078 #include <sys/stat.h>
2079 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2080 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2081 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2082     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2083 fi
2084
2085 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2086 AC_TRY_RUN([
2087 #if defined(HAVE_UNISTD_H)
2088 #include <unistd.h>
2089 #endif
2090 #include <stdio.h>
2091 #include <sys/stat.h>
2092 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2093 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2094 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2095     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2096 fi
2097
2098 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2099 AC_TRY_RUN([
2100 #if defined(HAVE_UNISTD_H)
2101 #include <unistd.h>
2102 #endif
2103 #include <stdio.h>
2104 #include <sys/stat.h>
2105 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2106 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2107 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2108     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2109 fi
2110
2111 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2112 AC_TRY_RUN([
2113 #if defined(HAVE_UNISTD_H)
2114 #include <unistd.h>
2115 #endif
2116 #include <stdio.h>
2117 #include <sys/stat.h>
2118 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2119 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2120 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2121     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2122 fi
2123
2124 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2125 AC_TRY_RUN([
2126 #if defined(HAVE_UNISTD_H)
2127 #include <unistd.h>
2128 #endif
2129 #include <stdio.h>
2130 #include <sys/stat.h>
2131 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2132 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2133 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2134     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2135 fi
2136
2137 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2138 AC_TRY_RUN([
2139 #if defined(HAVE_UNISTD_H)
2140 #include <unistd.h>
2141 #endif
2142 #include <stdio.h>
2143 #include <sys/stat.h>
2144 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2145 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2146 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2147     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2148 fi
2149
2150 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2151 AC_TRY_COMPILE([
2152 #if defined(HAVE_UNISTD_H)
2153 #include <unistd.h>
2154 #endif
2155 #include <sys/types.h>
2156 #include <dirent.h>],
2157 [DIR64 de;],
2158 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2159 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2160     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2161 fi
2162
2163 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2164 AC_TRY_COMPILE([
2165 #if defined(HAVE_UNISTD_H)
2166 #include <unistd.h>
2167 #endif
2168 #include <sys/types.h>
2169 #include <dirent.h>],
2170 [struct dirent64 de;],
2171 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2172 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2173     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2174 fi
2175
2176 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2177 AC_TRY_RUN([
2178 #if defined(HAVE_UNISTD_H)
2179 #include <unistd.h>
2180 #endif
2181 #include <sys/types.h>
2182 main() { dev_t dev; int i = major(dev); return 0; }],
2183 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2184 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2185     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2186 fi
2187
2188 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2189 AC_TRY_RUN([
2190 #if defined(HAVE_UNISTD_H)
2191 #include <unistd.h>
2192 #endif
2193 #include <sys/types.h>
2194 main() { dev_t dev; int i = minor(dev); return 0; }],
2195 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2196 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2197     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2198 fi
2199
2200 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2201 AC_TRY_RUN([
2202 #if defined(HAVE_UNISTD_H)
2203 #include <unistd.h>
2204 #endif
2205 #include <sys/types.h>
2206 main() { dev_t dev = makedev(1,2); return 0; }],
2207 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2208 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2209     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2210 fi
2211
2212 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2213 AC_TRY_RUN([#include <stdio.h>
2214 main() { char c; c=250; exit((c > 0)?0:1); }],
2215 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2216 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2217     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2218 fi
2219
2220 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
2221 AC_TRY_COMPILE([#include <sys/types.h>
2222 #include <sys/socket.h>
2223 #include <netinet/in.h>],
2224 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
2225 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
2226 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
2227     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
2228 fi
2229
2230 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2231 AC_TRY_COMPILE([#include <sys/types.h>
2232 #include <dirent.h>
2233 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2234 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2235 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2236     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2237 fi
2238
2239 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2240 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2241 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2242 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2243     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2244 fi
2245
2246 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2247 AC_TRY_LINK([
2248 #include <sys/time.h>
2249 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2250            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2251            samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2252 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2253     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2254 fi
2255
2256 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2257
2258     # On some systems (eg. Linux) librt can pull in libpthread. We
2259     # don't want this to happen because libpthreads changes signal delivery
2260     # semantics in ways we are not prepared for. This breaks Linux oplocks
2261     # which rely on signals.
2262
2263     AC_LIBTESTFUNC(rt, clock_gettime,
2264             [
2265                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2266                                 [Whether clock_gettime is available])
2267                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2268                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2269                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2270                         ])
2271
2272 fi
2273
2274 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
2275 AC_TRY_LINK([#include <stdarg.h>
2276 va_list ap1,ap2;], [va_copy(ap1,ap2);],
2277 samba_cv_HAVE_VA_COPY=yes,
2278 samba_cv_HAVE_VA_COPY=no)])
2279 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
2280     AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
2281 else
2282     AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
2283     AC_TRY_LINK([#include <stdarg.h>
2284     va_list ap1,ap2;], [__va_copy(ap1,ap2);],
2285     samba_cv_HAVE___VA_COPY=yes,
2286     samba_cv_HAVE___VA_COPY=no)])
2287     if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
2288         AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
2289     fi
2290 fi
2291
2292 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
2293 AC_TRY_RUN([
2294 #include <sys/types.h>
2295 #include <stdarg.h>
2296 void foo(const char *format, ...) {
2297        va_list ap;
2298        int len;
2299        char buf[5];
2300
2301        va_start(ap, format);
2302        len = vsnprintf(buf, 0, format, ap);
2303        va_end(ap);
2304        if (len != 5) exit(1);
2305
2306        va_start(ap, format);
2307        len = vsnprintf(0, 0, format, ap);
2308        va_end(ap);
2309        if (len != 5) exit(1);
2310
2311        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
2312
2313        exit(0);
2314 }
2315 main() { foo("hello"); }
2316 ],
2317 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
2318 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
2319     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
2320 fi
2321
2322 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2323 AC_TRY_RUN([#include <sys/types.h>
2324 #include <dirent.h>
2325 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2326 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2327 di->d_name[0] == 0) exit(0); exit(1);} ],
2328 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2329 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2330     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2331 fi
2332
2333 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2334 AC_TRY_COMPILE([#include <sys/types.h>
2335 #include <utime.h>],
2336 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2337 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2338 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2339     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2340 fi
2341
2342 ##############
2343 # Check utmp details, but only if our OS offers utmp.h
2344 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2345 dnl  utmp and utmpx come in many flavours
2346 dnl  We need to check for many of them
2347 dnl  But we don't need to do each and every one, because our code uses
2348 dnl  mostly just the utmp (not utmpx) fields.
2349
2350 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2351
2352 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2353 AC_TRY_COMPILE([#include <sys/types.h>
2354 #include <utmp.h>],
2355 [struct utmp ut;  ut.ut_name[0] = 'a';],
2356 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2357 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2358     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2359 fi
2360
2361 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2362 AC_TRY_COMPILE([#include <sys/types.h>
2363 #include <utmp.h>],
2364 [struct utmp ut;  ut.ut_user[0] = 'a';],
2365 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2366 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2367     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2368 fi
2369
2370 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2371 AC_TRY_COMPILE([#include <sys/types.h>
2372 #include <utmp.h>],
2373 [struct utmp ut;  ut.ut_id[0] = 'a';],
2374 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2375 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2376     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2377 fi
2378
2379 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2380 AC_TRY_COMPILE([#include <sys/types.h>
2381 #include <utmp.h>],
2382 [struct utmp ut;  ut.ut_host[0] = 'a';],
2383 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2384 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2385     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2386 fi
2387
2388 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2389 AC_TRY_COMPILE([#include <sys/types.h>
2390 #include <utmp.h>],
2391 [struct utmp ut;  time_t t; ut.ut_time = t;],
2392 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2393 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2394     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2395 fi
2396
2397 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2398 AC_TRY_COMPILE([#include <sys/types.h>
2399 #include <utmp.h>],
2400 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2401 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2402 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2403     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2404 fi
2405
2406 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2407 AC_TRY_COMPILE([#include <sys/types.h>
2408 #include <utmp.h>],
2409 [struct utmp ut;  ut.ut_type = 0;],
2410 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2411 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2412     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2413 fi
2414
2415 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2416 AC_TRY_COMPILE([#include <sys/types.h>
2417 #include <utmp.h>],
2418 [struct utmp ut;  ut.ut_pid = 0;],
2419 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2420 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2421     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2422 fi
2423
2424 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2425 AC_TRY_COMPILE([#include <sys/types.h>
2426 #include <utmp.h>],
2427 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2428 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2429 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2430     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2431 fi
2432
2433 dnl Look for the IPv6 varient by preference. Many systems have both.
2434 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2435 AC_TRY_COMPILE([#include <sys/types.h>
2436 #include <utmp.h>],
2437 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2438 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2439 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2440     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2441 fi
2442
2443 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2444 AC_TRY_COMPILE([#include <sys/types.h>
2445 #include <utmp.h>],
2446 [struct utmp ut;  ut.ut_addr = 0;],
2447 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2448 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2449     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2450 fi
2451
2452 if test x$ac_cv_func_pututline = xyes ; then
2453   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2454   AC_TRY_COMPILE([#include <sys/types.h>
2455 #include <utmp.h>],
2456   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2457   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2458   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2459       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2460   fi
2461 fi
2462
2463 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2464 AC_TRY_COMPILE([#include <sys/types.h>
2465 #include <utmpx.h>],
2466 [struct utmpx ux;  ux.ut_syslen = 0;],
2467 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2468 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2469     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2470 fi
2471
2472 fi
2473 # end utmp details
2474
2475
2476 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2477 AC_ARG_WITH(libiconv,
2478 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
2479 [
2480   if test "$withval" = "no" ; then
2481     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2482   else
2483      if test "$withval" != "yes" ; then
2484         ICONV_PATH_SPEC=yes
2485         ICONV_LOOK_DIRS="$withval"
2486      fi
2487   fi
2488 ])
2489
2490 for i in $ICONV_LOOK_DIRS ; do
2491
2492     save_LIBS="$LIBS"
2493     save_LDFLAGS="$LDFLAGS"
2494     save_CPPFLAGS="$CPPFLAGS"
2495
2496     iconv_current_LIBS=""
2497     iconv_current_LDFLAGS=""
2498     iconv_current_CPPFLAGS=""
2499
2500     ICONV_FOUND="no"
2501     unset libext
2502
2503     #  This is here to handle -withval stuff for --with-libiconv
2504     #  Perhaps we should always add a -L
2505     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2506
2507     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2508     # installation paths. This gets a little tricky since we might have iconv
2509     # in both libiconv and in libc. In this case the jm_ICONV test will always
2510     # succeed when the header is found. To counter this, make sure the
2511     # library directory is there and check the ABI directory first (which
2512     # should be harmless on other systems.
2513     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2514     for l in "lib32" "lib" "lib/hpux32"; do
2515         if test -d "$i/$l" ; then
2516                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2517                 LIBS=
2518                 export LDFLAGS LIBS CPPFLAGS
2519                 # Try to find iconv(3)
2520                 jm_ICONV($i/$l)
2521                 if test x"$ICONV_FOUND" = "xyes" ; then
2522                     libext="$l"
2523                     break
2524                 fi
2525         fi
2526     done
2527
2528     if test x"$ICONV_FOUND" = "xyes" ; then
2529         iconv_current_LDFLAGS="-L$i/$libext"
2530         iconv_current_CPPFLAGS="-I$i/include"
2531
2532         if test x"$jm_cv_lib_iconv" != x; then
2533             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2534         else
2535             # We found iconv in libc.
2536             iconv_current_LIBS=""
2537         fi
2538
2539     fi
2540
2541     if test x"$ICONV_FOUND" = "xyes" ; then
2542
2543         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2544         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2545         LIBS="$save_LIBS $iconv_current_LIBS"
2546         export LDFLAGS LIBS CPPFLAGS
2547
2548         default_dos_charset=no
2549         default_display_charset=no
2550         default_unix_charset=no
2551
2552         # check for default dos charset name
2553         for j in CP850 IBM850 ; do
2554             rjs_CHARSET($j)
2555             default_dos_charset="$ICONV_CHARSET"
2556             if test x"$default_dos_charset" = x"$j"; then
2557                 break
2558             fi
2559         done
2560
2561         # check for default display charset name
2562         for j in ASCII 646 ; do
2563             rjs_CHARSET($j)
2564             default_display_charset="$ICONV_CHARSET"
2565             if test x"$default_display_charset" = x"$j"; then
2566                 break
2567             fi
2568         done
2569
2570         # check for default unix charset name
2571         for j in UTF-8 UTF8 ; do
2572             rjs_CHARSET($j)
2573             default_unix_charset="$ICONV_CHARSET"
2574             if test x"$default_unix_charset" = x"$j"; then
2575                 break
2576             fi
2577         done
2578
2579         if test "$default_dos_charset" != "no" -a \
2580                 "$default_dos_charset" != "cross" -a \
2581                 "$default_display_charset" != "no" -a \
2582                 "$default_display_charset" != "cross" -a \
2583                 "$default_unix_charset" != "no" -a \
2584                 "$default_unix_charset" != "cross"
2585         then
2586                 samba_cv_HAVE_NATIVE_ICONV=yes
2587         else
2588             if test "$default_dos_charset" = "cross" -o \
2589                      "$default_display_charset" = "cross" -o \
2590                      "$default_unix_charset" = "cross"
2591             then
2592                     samba_cv_HAVE_NATIVE_ICONV=cross
2593             else
2594                     samba_cv_HAVE_NATIVE_ICONV=no
2595             fi
2596         fi
2597
2598         # At this point, we have a libiconv candidate. We know that
2599         # we have the right headers and libraries, but we don't know
2600         # whether it does the conversions we want. We can't test this
2601         # because we are cross-compiling. This is not necessarily a big
2602         # deal, since we can't guarantee that the results we get now will
2603         # match the results we get at runtime anyway.
2604         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2605             default_dos_charset="CP850"
2606             default_display_charset="ASCII"
2607             default_unix_charset="UTF-8"
2608             samba_cv_HAVE_NATIVE_ICONV=yes
2609             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2610             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2611         fi
2612
2613         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2614
2615             CPPFLAGS=$save_CPPFLAGS
2616             LDFLAGS=$save_LDFLAGS
2617             LIBS=$save_LIBS
2618
2619             if test x"$iconv_current_LIBS" != x; then
2620                 LIBS="$LIBS $iconv_current_LIBS"
2621             fi
2622
2623             # Add the flags we need to CPPFLAGS and LDFLAGS
2624             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2625             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2626
2627             # Turn the #defines into string literals
2628             default_dos_charset="\"$default_dos_charset\""
2629             default_display_charset="\"$default_display_charset\""
2630             default_unix_charset="\"$default_unix_charset\""
2631
2632             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2633             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2634             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2635             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2636
2637            break
2638         fi
2639
2640     # We didn't find a working iconv, so keep going
2641     fi
2642
2643     #  We only need to clean these up here for the next pass through the loop
2644     CPPFLAGS=$save_CPPFLAGS
2645     LDFLAGS=$save_LDFLAGS
2646     LIBS=$save_LIBS
2647     export LDFLAGS LIBS CPPFLAGS
2648 done
2649 unset libext
2650
2651
2652 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2653     AC_MSG_WARN([Sufficient support for iconv function was not found.
2654     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2655    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2656    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2657    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2658 fi
2659
2660
2661 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2662 AC_TRY_RUN([
2663 #include <sys/types.h>
2664 #include <fcntl.h>
2665 #ifndef F_GETLEASE
2666 #define F_GETLEASE      1025
2667 #endif
2668 main() {
2669        int fd = open("/dev/null", O_RDONLY);
2670        return fcntl(fd, F_GETLEASE, 0) == -1;
2671 }
2672 ],
2673 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2674 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2675     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2676 fi
2677
2678 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2679 AC_TRY_RUN([
2680 #include <sys/types.h>
2681 #include <fcntl.h>
2682 #include <signal.h>
2683 #ifndef F_NOTIFY
2684 #define F_NOTIFY 1026
2685 #endif
2686 main() {
2687         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2688 }
2689 ],
2690 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2691 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2692     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2693 fi
2694
2695 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2696 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2697 AC_CHECK_FUNC(inotify_init)
2698 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2699 ],
2700 samba_cv_HAVE_INOTIFY=yes,
2701 samba_cv_HAVE_INOTIFY=no,
2702 samba_cv_HAVE_INOTIFY=cross)
2703
2704 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2705     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2706 fi
2707
2708 #################################################
2709 # Check if FAM notifications are available. For FAM info, see
2710 #       http://oss.sgi.com/projects/fam/
2711 #       http://savannah.nongnu.org/projects/fam/
2712 AC_ARG_ENABLE(fam,
2713 [  --enable-fam            Turn on FAM support (default=auto)])
2714
2715 if test x$enable_fam != xno; then
2716     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2717     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2718         # On IRIX, libfam requires libC, but other FAM implementations
2719         # might not need it.
2720         AC_CHECK_LIB(fam, FAMOpen2,
2721             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2722             [samba_cv_HAVE_LIBFAM=no])
2723
2724         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2725             samba_fam_xtra=-lC
2726             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2727                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2728                 [samba_cv_HAVE_LIBFAM=no])
2729             unset samba_fam_xtra
2730         fi
2731     fi
2732
2733     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2734         default_shared_modules="$default_shared_modules vfs_notify_fam"
2735         AC_TRY_COMPILE([#include <fam.h>],
2736                     [FAMCodes code = FAMChanged;],
2737                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2738                         [Whether fam.h contains a typedef for enum FAMCodes]),
2739                     [])
2740     fi
2741
2742     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2743         AC_MSG_ERROR(FAM support requested but FAM library not available )
2744     fi
2745 fi
2746
2747 AC_SUBST(SMB_FAM_LIBS)
2748
2749 #################################################
2750 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2751
2752 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2753
2754 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2755 # Theoretically it should work with AIX JFS2 too but this needs testing
2756 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2757     default_shared_modules="$default_shared_modules vfs_tsmsm"
2758 fi
2759
2760 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2761 AC_TRY_RUN([
2762 #include <sys/types.h>
2763 #include <fcntl.h>
2764 #include <signal.h>
2765 #include <sys/file.h>
2766 #ifndef LOCK_MAND
2767 #define LOCK_MAND       32
2768 #define LOCK_READ       64
2769 #endif
2770 main() {
2771         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2772 }
2773 ],
2774 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2775 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2776     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2777 fi
2778
2779
2780 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2781 AC_TRY_COMPILE([#include <sys/types.h>
2782 #include <fcntl.h>],
2783 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2784 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2785 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2786     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2787 fi
2788
2789 #################################################
2790 # Check for POSIX capability support
2791
2792 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2793     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2794     [], [])
2795
2796 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2797
2798     ac_save_LIBS=$LIBS
2799     AC_LIBTESTFUNC(cap, cap_get_proc)
2800
2801     AC_CACHE_CHECK([for POSIX capabilities],
2802             samba_cv_HAVE_POSIX_CAPABILITIES,
2803             [
2804                 AC_TRY_RUN([
2805 #include <sys/types.h>
2806 #include <sys/capability.h>
2807 main() {
2808  cap_t cap;
2809  cap_value_t vals[1];
2810  if (!(cap = cap_get_proc()))
2811    exit(1);
2812  vals[0] = CAP_CHOWN;
2813  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2814  cap_set_proc(cap);
2815  exit(0);
2816 }],
2817                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2818                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2819                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2820             ])
2821
2822 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2823     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2824             [Whether POSIX capabilities are available])
2825 else
2826     LIBS=$ac_save_LIBS
2827 fi
2828
2829 fi
2830
2831 #
2832 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2833 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2834 #
2835
2836 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2837 AC_TRY_COMPILE([#include <sys/types.h>
2838 #if defined(HAVE_RPC_RPC_H)
2839 #include <rpc/rpc.h>
2840 #endif],
2841 [int16 testvar;],
2842 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2843 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2844     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2845 fi
2846
2847 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2848 AC_TRY_COMPILE([#include <sys/types.h>
2849 #if defined(HAVE_RPC_RPC_H)
2850 #include <rpc/rpc.h>
2851 #endif],
2852 [uint16 testvar;],
2853 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2854 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2855     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2856 fi
2857
2858 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2859 AC_TRY_COMPILE([#include <sys/types.h>
2860 #if defined(HAVE_RPC_RPC_H)
2861 #include <rpc/rpc.h>
2862 #endif],
2863 [int32 testvar;],
2864 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2865 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2866     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2867 fi
2868
2869 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2870 AC_TRY_COMPILE([#include <sys/types.h>
2871 #if defined(HAVE_RPC_RPC_H)
2872 #include <rpc/rpc.h>
2873 #endif],
2874 [uint32 testvar;],
2875 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2876 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2877     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2878 fi
2879
2880 dnl
2881 dnl Some systems (SCO) have a problem including
2882 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2883 dnl as a #define in <prot.h> and as part of an enum
2884 dnl in <rpc/rpc.h>.
2885 dnl
2886
2887 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2888 AC_TRY_COMPILE([#include <sys/types.h>
2889 #ifdef HAVE_SYS_SECURITY_H
2890 #include <sys/security.h>
2891 #include <prot.h>
2892 #endif  /* HAVE_SYS_SECURITY_H */
2893 #if defined(HAVE_RPC_RPC_H)
2894 #include <rpc/rpc.h>
2895 #endif],
2896 [int testvar;],
2897 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2898 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2899     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2900 fi
2901
2902 AC_MSG_CHECKING([for test routines])
2903 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2904            AC_MSG_RESULT(yes),
2905            AC_MSG_ERROR([cant find test code. Aborting config]),
2906            AC_MSG_WARN([cannot run when cross-compiling]))
2907
2908 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2909 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2910            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2911 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2912     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2913 fi
2914
2915 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2916 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2917            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2918            samba_cv_HAVE_WORKING_AF_LOCAL=no,
2919            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2920 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2921 then
2922     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2923 fi
2924
2925 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2926 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2927            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2928 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2929     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2930 fi
2931
2932 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2933 AC_TRY_RUN([#include <stdlib.h>
2934 #include <sys/types.h>
2935 #include <sys/stat.h>
2936 #include <unistd.h>
2937 main() {
2938   struct stat st;
2939   char tpl[20]="/tmp/test.XXXXXX";
2940   int fd = mkstemp(tpl);
2941   if (fd == -1) exit(1);
2942   unlink(tpl);
2943   if (fstat(fd, &st) != 0) exit(1);
2944   if ((st.st_mode & 0777) != 0600) exit(1);
2945   exit(0);
2946 }],
2947 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2948 samba_cv_HAVE_SECURE_MKSTEMP=no,
2949 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2950 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2951     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2952 fi
2953
2954 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
2955         AC_TRY_RUN([#include "${srcdir-.}/tests/os2_delete.c"],
2956                 [samba_cv_HAVE_BROKEN_READDIR=no],
2957                         [samba_cv_HAVE_BROKEN_READDIR=yes],
2958                         [samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
2959
2960 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
2961 AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
2962         AC_TRY_RUN([
2963 #include "${srcdir-.}/lib/repdir.c"
2964 #include "${srcdir-.}/tests/os2_delete.c"],
2965         samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
2966 fi
2967
2968 if test x"$samba_cv_REPLACE_READDIR" = x"yes"; then
2969         AC_DEFINE(REPLACE_READDIR,1,[replace readdir])
2970 fi
2971
2972 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2973 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2974 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2975 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2976 AC_CHECK_FUNCS(getpagesize)
2977
2978 dnl test for getifaddrs and freeifaddrs
2979 AC_CACHE_CHECK([for getifaddrs and freeifaddrs],samba_cv_HAVE_GETIFADDRS,[
2980 AC_TRY_COMPILE([
2981 #include <sys/socket.h>
2982 #include <sys/types.h>
2983 #include <netinet/in.h>
2984 #include <arpa/inet.h>
2985 #include <ifaddrs.h>
2986 #include <netdb.h>],
2987 [
2988 struct ifaddrs *ifp = NULL;
2989 int ret = getifaddrs (&ifp);
2990 freeifaddrs(ifp);
2991 ],
2992 samba_cv_HAVE_GETIFADDRS=yes,samba_cv_HAVE_GETIFADDRS=no)])
2993 if test x"$samba_cv_HAVE_GETIFADDRS" = x"yes"; then
2994     AC_DEFINE(HAVE_GETIFADDRS,1,[Whether the system has getifaddrs])
2995     AC_DEFINE(HAVE_FREEIFADDRS,1,[Whether the system has freeifaddrs])
2996 fi
2997
2998 ##################
2999 # look for a method of finding the list of network interfaces
3000 iface=no;
3001 AC_CACHE_CHECK([for iface getifaddrs],samba_cv_HAVE_IFACE_GETIFADDRS,[
3002 SAVE_CPPFLAGS="$CPPFLAGS"
3003 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3004 AC_TRY_RUN([
3005 #define NO_CONFIG_H 1
3006 #define HAVE_IFACE_GETIFADDRS 1
3007 #define AUTOCONF_TEST 1
3008 #include "${srcdir-.}/lib/replace/replace.c"
3009 #include "${srcdir-.}/lib/interfaces.c"],
3010            samba_cv_HAVE_IFACE_GETIFADDRS=yes,samba_cv_HAVE_IFACE_GETIFADDRS=no,samba_cv_HAVE_IFACE_GETIFADDRS=cross)])
3011 CPPFLAGS="$SAVE_CPPFLAGS"
3012 if test x"$samba_cv_HAVE_IFACE_GETIFADDRS" = x"yes"; then
3013     iface=yes;AC_DEFINE(HAVE_IFACE_GETIFADDRS,1,[Whether iface getifaddrs is available])
3014 fi
3015
3016 if test $iface = no; then
3017 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
3018 SAVE_CPPFLAGS="$CPPFLAGS"
3019 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3020 AC_TRY_RUN([
3021 #define NO_CONFIG_H 1
3022 #define HAVE_IFACE_IFCONF 1
3023 #define AUTOCONF_TEST 1
3024 #define SOCKET_WRAPPER_NOT_REPLACE
3025 #include "${srcdir-.}/lib/replace/replace.c"
3026 #include "${srcdir-.}/lib/interfaces.c"],
3027            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
3028 CPPFLAGS="$SAVE_CPPFLAGS"
3029 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
3030     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
3031 fi
3032 fi
3033
3034 if test $iface = no; then
3035 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
3036 SAVE_CPPFLAGS="$CPPFLAGS"
3037 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3038 AC_TRY_RUN([
3039 #define NO_CONFIG_H 1
3040 #define HAVE_IFACE_IFREQ 1
3041 #define AUTOCONF_TEST 1
3042 #define SOCKET_WRAPPER_NOT_REPLACE
3043 #include "${srcdir-.}/lib/replace/replace.c"
3044 #include "${srcdir-.}/lib/replace/getaddrinfo.c"
3045 #include "${srcdir-.}/lib/replace/snprintf.c"
3046 #include "${srcdir-.}/lib/interfaces.c"],
3047            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
3048 CPPFLAGS="$SAVE_CPPFLAGS"
3049 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
3050     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
3051 fi
3052 fi
3053
3054 if test $iface = no; then
3055 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
3056 SAVE_CPPFLAGS="$CPPFLAGS"
3057 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3058 AC_TRY_RUN([
3059 #define NO_CONFIG_H 1
3060 #define HAVE_IFACE_AIX 1
3061 #define AUTOCONF_TEST 1
3062 #undef _XOPEN_SOURCE_EXTENDED
3063 #define SOCKET_WRAPPER_NOT_REPLACE
3064 #include "${srcdir-.}/lib/replace/replace.c"
3065 #include "${srcdir-.}/lib/replace/snprintf.c"
3066 #include "${srcdir-.}/lib/interfaces.c"],
3067            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
3068 CPPFLAGS="$SAVE_CPPFLAGS"
3069 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
3070     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
3071 fi
3072 fi
3073
3074 dnl test for ipv6
3075 AC_CACHE_CHECK([for ipv6 support],samba_cv_HAVE_IPV6,[
3076 AC_TRY_COMPILE([
3077 #include <stdlib.h> /* for NULL */
3078 #include <sys/socket.h>
3079 #include <sys/types.h>
3080 #include <netdb.h>],
3081 [
3082 struct sockaddr_storage sa_store;
3083 struct addrinfo *ai = NULL;
3084 struct in6_addr in6addr;
3085 int s = socket(AF_INET6, SOCK_STREAM, 0);
3086 int ret = getaddrinfo(NULL, NULL, NULL, &ai);
3087 if (ret != 0) {
3088         const char *es = gai_strerror(ret);
3089 }
3090 freeaddrinfo(ai);
3091 ],
3092 samba_cv_HAVE_IPV6=yes,samba_cv_HAVE_IPV6=no)])
3093 if test x"$samba_cv_HAVE_IPV6" = x"yes"; then
3094     AC_DEFINE(HAVE_IPV6,1,[Whether the system has IPv6 support])
3095 fi
3096
3097 ################################################
3098 # look for a method of setting the effective uid
3099 seteuid=no;
3100 if test $seteuid = no; then
3101 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
3102 AC_TRY_RUN([
3103 #define AUTOCONF_TEST 1
3104 #define USE_SETRESUID 1
3105 #include "confdefs.h"
3106 #include "${srcdir-.}/lib/util_sec.c"],
3107            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
3108 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
3109     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
3110 fi
3111 fi
3112
3113
3114 if test $seteuid = no; then
3115 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
3116 AC_TRY_RUN([
3117 #define AUTOCONF_TEST 1
3118 #define USE_SETREUID 1
3119 #include "confdefs.h"
3120 #include "${srcdir-.}/lib/util_sec.c"],
3121            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
3122 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
3123     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
3124 fi
3125 fi
3126
3127 if test $seteuid = no; then
3128 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
3129 AC_TRY_RUN([
3130 #define AUTOCONF_TEST 1
3131 #define USE_SETEUID 1
3132 #include "confdefs.h"
3133 #include "${srcdir-.}/lib/util_sec.c"],
3134            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
3135 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
3136     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
3137 fi
3138 fi
3139
3140 if test $seteuid = no; then
3141 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
3142 AC_TRY_RUN([
3143 #define AUTOCONF_TEST 1
3144 #define USE_SETUIDX 1
3145 #include "confdefs.h"
3146 #include "${srcdir-.}/lib/util_sec.c"],
3147            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
3148 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
3149     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
3150 fi
3151 fi
3152
3153 AC_CACHE_CHECK([for the Darwin initgroups system call],
3154         samba_cv_DARWIN_INITGROUPS,
3155         AC_TRY_LINK([
3156 #include <sys/syscall.h>
3157 #include <unistd.h>
3158         ],
3159         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
3160         samba_cv_DARWIN_INITGROUPS=yes,
3161         samba_cv_DARWIN_INITGROUPS=no)
3162 )
3163
3164 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
3165     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
3166         [Whether to use the Darwin-specific initgroups system call])
3167 fi
3168
3169 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
3170 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
3171            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
3172 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
3173     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
3174 fi
3175
3176 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
3177 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
3178            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
3179 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
3180     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
3181 fi
3182
3183 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
3184 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
3185            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
3186 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
3187     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
3188
3189 else
3190
3191 dnl
3192 dnl Don't check for 64 bit fcntl locking if we know that the
3193 dnl glibc2.1 broken check has succeeded.
3194 dnl
3195
3196   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
3197   AC_TRY_RUN([
3198 #if defined(HAVE_UNISTD_H)
3199 #include <unistd.h>
3200 #endif
3201 #include <stdio.h>
3202 #include <stdlib.h>
3203
3204 #ifdef HAVE_FCNTL_H
3205 #include <fcntl.h>
3206 #endif
3207
3208 #ifdef HAVE_SYS_FCNTL_H
3209 #include <sys/fcntl.h>
3210 #endif
3211 main() { struct flock64 fl64;
3212 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3213 exit(0);
3214 #else
3215 exit(1);
3216 #endif
3217 }],
3218        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3219
3220   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3221       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3222   fi
3223 fi
3224
3225 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3226 AC_TRY_COMPILE([#include <sys/types.h>
3227 #include <sys/stat.h>
3228 #include <unistd.h>],
3229 [struct stat st;  st.st_blocks = 0;],
3230 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3231 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3232     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3233 fi
3234
3235 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3236 AC_TRY_COMPILE([#include <sys/types.h>
3237 #include <sys/stat.h>
3238 #include <unistd.h>],
3239 [struct stat st;  st.st_blksize = 0;],
3240 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3241 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3242     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3243 fi
3244
3245 AC_CACHE_CHECK([for st_flags in struct stat],
3246         samba_cv_HAVE_STAT_ST_FLAGS,
3247         [
3248             AC_TRY_COMPILE([#include <sys/types.h>
3249 #include <sys/stat.h>
3250 #include <unistd.h>],
3251             [struct stat st;  st.st_flags = 0;],
3252             samba_cv_HAVE_STAT_ST_FLAGS=yes,
3253             samba_cv_HAVE_STAT_ST_FLAGS=no,
3254             samba_cv_HAVE_STAT_ST_FLAGS=cross)
3255         ])
3256
3257 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3258     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3259                 [Whether the stat struct has a st_flags member])
3260 fi
3261
3262 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3263 AC_TRY_COMPILE([
3264 #include <sys/types.h>
3265 #include <sys/acl.h>
3266 #if defined(HAVE_RPCSVC_NIS_H)
3267 #include <rpcsvc/nis.h>
3268 #endif],
3269 [int i;],
3270 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3271 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3272         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3273 fi
3274
3275 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3276 AC_TRY_RUN([
3277 #include <stdio.h>
3278 #include <limits.h>
3279 main() {
3280         char *newpath = realpath("/tmp", NULL);
3281         exit ((newpath != NULL) ? 0 : 1);
3282 }
3283 ],
3284 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3285 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3286     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3287 fi
3288
3289 #################################################
3290 # check for AFS clear-text auth support
3291 samba_cv_WITH_AFS=no
3292 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3293 AC_ARG_WITH(afs,
3294 [  --with-afs              Include AFS clear-text auth support (default=no) ],
3295 [ case "$withval" in
3296   yes|auto)
3297     AC_MSG_RESULT($withval)
3298     samba_cv_WITH_AFS=$withval
3299     ;;
3300   *)
3301     AC_MSG_RESULT(no)
3302     ;;
3303   esac ],
3304   AC_MSG_RESULT(no)
3305 )
3306
3307 ####################################################
3308 # check for Linux-specific AFS fake-kaserver support
3309 samba_cv_WITH_FAKE_KASERVER=no
3310 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3311 AC_ARG_WITH(fake-kaserver,
3312 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
3313 [ case "$withval" in
3314   yes|auto)
3315     AC_MSG_RESULT($withval)
3316     samba_cv_WITH_FAKE_KASERVER=$withval
3317     ;;
3318   *)
3319     AC_MSG_RESULT(no)
3320     ;;
3321   esac ],
3322   AC_MSG_RESULT(no)
3323 )
3324
3325 #################################################
3326 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3327 if test x"$samba_cv_WITH_AFS" != x"no" ||
3328    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3329
3330     # see if this box has the afs-headers in /usr/include/afs
3331     AC_MSG_CHECKING(for /usr/include/afs)
3332     if test -d /usr/include/afs; then
3333           CFLAGS="$CFLAGS -I/usr/include/afs"
3334           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3335           AC_MSG_RESULT(yes)
3336     else
3337       AC_MSG_RESULT(no)
3338     fi
3339
3340     # check for afs.h
3341     have_afs_headers=no
3342     AC_CHECK_HEADERS(afs.h afs/afs.h)
3343     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3344         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3345            test x"$samba_cv_WITH_AFS" = x"auto"; then
3346                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3347         else
3348                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3349         fi
3350     else
3351         have_afs_headers=yes
3352     fi
3353 fi
3354
3355 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3356     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3357 fi
3358
3359 #################################################
3360 # check whether to compile AFS/NT ACL mapping module
3361 samba_cv_WITH_VFS_AFSACL=no
3362 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3363 AC_ARG_WITH(vfs-afsacl,
3364 [  --with-vfs-afsacl       Include AFS to NT ACL mapping module (default=no) ],
3365 [ case "$withval" in
3366   yes|auto)
3367     AC_MSG_RESULT($withval)
3368     samba_cv_WITH_VFS_AFSACL=yes
3369     ;;
3370   *)
3371     AC_MSG_RESULT(no)
3372     ;;
3373   esac ],
3374   AC_MSG_RESULT(no)
3375 )
3376
3377 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3378    default_shared_modules="$default_shared_modules vfs_afsacl"
3379 fi
3380         
3381 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3382     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3383 fi
3384
3385 #################################################
3386 # check for the DFS clear-text auth system
3387 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3388 AC_ARG_WITH(dfs,
3389 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
3390 [ case "$withval" in
3391   yes)
3392     AC_MSG_RESULT(yes)
3393     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3394     ;;
3395   *)
3396     AC_MSG_RESULT(no)
3397     ;;
3398   esac ],
3399   AC_MSG_RESULT(no)
3400 )
3401
3402 ########################################################
3403 # Compile with LDAP support?
3404
3405 with_ldap_support=auto
3406 AC_MSG_CHECKING([for LDAP support])
3407
3408 AC_ARG_WITH(ldap,
3409 [  --with-ldap             LDAP support (default yes)],
3410 [ case "$withval" in
3411     yes|no)
3412         with_ldap_support=$withval
3413         ;;
3414   esac ])
3415
3416 AC_MSG_RESULT($with_ldap_support)
3417
3418 SMBLDAP=""
3419 AC_SUBST(SMBLDAP)
3420 SMBLDAPUTIL=""
3421 AC_SUBST(SMBLDAPUTIL)
3422 LDBLDAP=""
3423 AC_SUBST(LDBLDAP)
3424
3425 if test x"$with_ldap_support" != x"no"; then
3426
3427   ##################################################################
3428   # first test for ldap.h and lber.h
3429   # (ldap.h is required for this test)
3430   AC_CHECK_HEADERS(ldap.h lber.h)
3431
3432   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3433         if test x"$with_ldap_support" = x"yes"; then
3434          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3435         else
3436          AC_MSG_WARN(ldap.h is needed for LDAP support)
3437         fi
3438         
3439         with_ldap_support=no
3440   fi
3441
3442   ##################################################################
3443   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3444   # unsigned int in include/includes.h
3445   case $host_os in
3446         *hpux*)
3447          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3448          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3449         with_ldap_support=yes
3450         ;;
3451         *)
3452         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3453         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3454                 if test x"$with_ldap_support" = x"yes"; then
3455                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3456                 else
3457                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3458                 fi
3459                 with_ldap_support=no
3460         fi
3461         ;;
3462   esac
3463 fi
3464
3465 if test x"$with_ldap_support" != x"no"; then
3466   ac_save_LIBS=$LIBS
3467
3468   ##################################################################
3469   # we might need the lber lib on some systems. To avoid link errors
3470   # this test must be before the libldap test
3471   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3472
3473   ########################################################
3474   # If ber_sockbuf_add_io() is available we can add
3475   # SASL wrapping hooks
3476   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3477
3478   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3479                  AC_TRY_COMPILE([#include <ldap.h>],
3480                                 [int val = LDAP_OPT_SOCKBUF;],
3481                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3482                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3483
3484   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3485           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3486         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3487   fi
3488
3489   ########################################################
3490   # now see if we can find the ldap libs in standard paths
3491   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3492
3493   ########################################################
3494   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3495   # Check found in pam_ldap 145.
3496   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3497
3498   LIBS="$LIBS $LDAP_LIBS"
3499   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3500     AC_TRY_COMPILE([
3501         #include <lber.h>
3502         #include <ldap.h>],
3503         [ldap_set_rebind_proc(0, 0, 0);],
3504         [smb_ldap_cv_ldap_set_rebind_proc=3],
3505         [smb_ldap_cv_ldap_set_rebind_proc=2]
3506     )
3507   ])
3508
3509   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3510
3511   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3512
3513   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3514     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3515     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3516     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3517     default_shared_modules="$default_shared_modules";
3518     SMBLDAP="lib/smbldap.o"
3519     SMBLDAPUTIL="lib/smbldap_util.o"
3520     with_ldap_support=yes
3521     AC_MSG_CHECKING(whether LDAP support is used)
3522     AC_MSG_RESULT(yes)
3523   else
3524     if test x"$with_ldap_support" = x"yes"; then
3525         AC_MSG_ERROR(libldap is needed for LDAP support)
3526     else
3527         AC_MSG_WARN(libldap is needed for LDAP support)
3528     fi
3529
3530     LDAP_LIBS=""
3531     with_ldap_support=no
3532   fi
3533   LIBS=$ac_save_LIBS
3534 fi
3535
3536
3537 #################################################
3538 # active directory support
3539
3540 with_ads_support=auto
3541 AC_MSG_CHECKING([for Active Directory and krb5 support])
3542
3543 AC_ARG_WITH(ads,
3544 [  --with-ads              Active Directory support (default auto)],
3545 [ case "$withval" in
3546     yes|no)
3547         with_ads_support="$withval"
3548         ;;
3549   esac ])
3550
3551 AC_MSG_RESULT($with_ads_support)
3552
3553 FOUND_KRB5=no
3554 KRB5_LIBS=""
3555
3556 if test x"$with_ldap_support" != x"yes"; then
3557
3558     if test x"$with_ads_support" = x"yes"; then
3559         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3560     elif test x"$with_ads_support" = x"auto"; then
3561         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3562         with_ads_support=no
3563     fi
3564
3565 else
3566
3567     # Check to see whether there is enough LDAP functionality to be able
3568     # to build AD support.
3569
3570 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3571 case "$host_os" in
3572         *hpux*)
3573     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3574
3575     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3576         if test x"$with_ads_support" = x"yes"; then
3577             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3578         elif test x"$with_ads_support" = x"auto"; then
3579             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3580             with_ads_support=no
3581         fi
3582     fi
3583     ;;
3584         *)
3585     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3586
3587     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3588         if test x"$with_ads_support" = x"yes"; then
3589             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3590         elif test x"$with_ads_support" = x"auto"; then
3591             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3592             with_ads_support=no
3593         fi
3594     fi
3595     ;;
3596 esac
3597
3598
3599     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3600
3601     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3602         if test x"$with_ads_support" = x"yes"; then
3603             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3604         elif test x"$with_ads_support" = x"auto"; then
3605             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3606             with_ads_support=no
3607         fi
3608     fi
3609
3610 fi
3611
3612 if test x"$with_ads_support" != x"no"; then
3613
3614   # Do no harm to the values of CFLAGS and LIBS while testing for
3615   # Kerberos support.
3616
3617   if test x$FOUND_KRB5 = x"no"; then
3618     #################################################
3619     # check for location of Kerberos 5 install
3620     AC_MSG_CHECKING(for kerberos 5 install path)
3621     AC_ARG_WITH(krb5,
3622     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
3623     [ case "$withval" in
3624       no)
3625         AC_MSG_RESULT(no krb5-path given)
3626         ;;
3627       yes)
3628         AC_MSG_RESULT(/usr)
3629         FOUND_KRB5=yes
3630         ;;
3631       *)
3632         AC_MSG_RESULT($withval)
3633         KRB5_CFLAGS="-I$withval/include"
3634         KRB5_CPPFLAGS="-I$withval/include"
3635         KRB5_LDFLAGS="-L$withval/lib"
3636         FOUND_KRB5=yes
3637         if test -x "$withval/bin/krb5-config"; then
3638                 KRB5CONFIG=$withval/bin/krb5-config
3639         fi
3640         ;;
3641       esac ],
3642       AC_MSG_RESULT(no krb5-path given)
3643     )
3644   fi
3645
3646   #################################################
3647   # check for krb5-config from recent MIT and Heimdal kerberos 5
3648   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3649   AC_MSG_CHECKING(for working krb5-config)
3650   if test -x "$KRB5CONFIG"; then
3651     ac_save_CFLAGS=$CFLAGS
3652     CFLAGS="";export CFLAGS
3653     ac_save_LDFLAGS=$LDFLAGS
3654     LDFLAGS="";export LDFLAGS
3655     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3656     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3657     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3658     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3659     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3660     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3661     FOUND_KRB5=yes
3662     AC_MSG_RESULT(yes)
3663   else
3664     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3665   fi
3666
3667   if test x$FOUND_KRB5 = x"no"; then
3668     #################################################
3669     # see if this box has the SuSE location for the heimdal krb implementation
3670     AC_MSG_CHECKING(for /usr/include/heimdal)
3671     if test -d /usr/include/heimdal; then
3672       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3673           KRB5_CFLAGS="-I/usr/include/heimdal"
3674           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3675           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3676           FOUND_KRB5=yes
3677           AC_MSG_RESULT(yes)
3678       else
3679           KRB5_CFLAGS="-I/usr/include/heimdal"
3680           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3681           FOUND_KRB5=yes
3682           AC_MSG_RESULT(yes)
3683       fi
3684     else
3685       AC_MSG_RESULT(no)
3686     fi
3687   fi
3688
3689   if test x$FOUND_KRB5 = x"no"; then
3690     #################################################
3691     # see if this box has the RedHat location for kerberos
3692     AC_MSG_CHECKING(for /usr/kerberos)
3693     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3694       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3695       KRB5_CFLAGS="-I/usr/kerberos/include"
3696       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3697       FOUND_KRB5=yes
3698       AC_MSG_RESULT(yes)
3699     else
3700       AC_MSG_RESULT(no)
3701     fi
3702   fi
3703
3704   if test x$FOUND_KRB5 = x"no"; then
3705     #################################################
3706     # see if this box has the OpenBSD location for heimdal krb5
3707     AC_MSG_CHECKING(for /usr/include/kerberosV)
3708     if test -d /usr/include/kerberosV; then
3709       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3710       KRB5_LIBS="-lcrypto"
3711       FOUND_KRB5=yes
3712       AC_MSG_RESULT(yes)
3713     else
3714       AC_MSG_RESULT(no)
3715     fi
3716   fi
3717
3718   ac_save_CFLAGS=$CFLAGS
3719   ac_save_CPPFLAGS=$CPPFLAGS
3720   ac_save_LDFLAGS=$LDFLAGS
3721
3722   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3723   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3724   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3725
3726   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3727
3728   # now check for krb5.h. Some systems have the libraries without the headers!
3729   # note that this check is done here to allow for different kerberos
3730   # include paths
3731   AC_CHECK_HEADERS(krb5.h)
3732
3733   if test x"$ac_cv_header_krb5_h" = x"no"; then
3734
3735     # Give a warning if AD support was not explicitly requested,
3736     # i.e with_ads_support = auto, otherwise die with an error.
3737
3738     if test x"$with_ads_support" = x"yes"; then
3739       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3740     else
3741       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3742     fi
3743
3744     # Turn off AD support and restore CFLAGS and LIBS variables
3745
3746     with_ads_support="no"
3747
3748     CFLAGS=$ac_save_CFLAGS
3749     CPPFLAGS=$ac_save_CPPFLAGS
3750     LDFLAGS=$ac_save_LDFLAGS
3751   fi
3752   AC_CHECK_HEADERS(krb5/locate_plugin.h)
3753   if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3754         WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3755         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3756   fi
3757 fi
3758
3759 # Now we have determined whether we really want ADS support
3760 use_ads=no
3761 if test x"$with_ads_support" != x"no"; then
3762   use_ads=yes
3763   have_gssapi=no
3764   ac_save_LIBS=$LIBS
3765
3766   # now check for gssapi headers.  This is also done here to allow for
3767   # different kerberos include paths
3768   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3769
3770   ##################################################################
3771   # we might need the k5crypto and com_err libraries on some systems
3772   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3773   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3774
3775   # Heimdal checks.
3776   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3777   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3778   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3779
3780   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3781   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3782
3783   ########################################################
3784   # now see if we can find the krb5 libs in standard paths
3785   # or as specified above
3786   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3787   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3788
3789   ########################################################
3790   # now see if we can find the gssapi libs in standard paths
3791   if test x"$have_gssapi" != x"yes"; then
3792      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3793   fi
3794
3795   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3796   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3797   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3798   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3799   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3800   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3801   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3802   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3803   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3804   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3805   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3806   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3807   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3808   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3809   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3810   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3811   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3812   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3813   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3814   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3815   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3816   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3817   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3818   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3819   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3820   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3821   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3822   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3823   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3824   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3825   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3826   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3827   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3828   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3829   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3830   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3831   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3832   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3833   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3834   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3835   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3836
3837   LIBS="$KRB5_LIBS $LIBS"
3838
3839   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3840         smb_krb5_ticket_has_keyinfo,
3841         [
3842             AC_TRY_COMPILE(
3843             [
3844                 #include <krb5.h>
3845             ],
3846             [
3847                 krb5_ticket ticket;
3848                 krb5_kvno kvno;
3849                 krb5_enctype enctype;
3850
3851                 enctype = ticket.enc_part.enctype;
3852                 kvno = ticket.enc_part.kvno;
3853             ],
3854             [ smb_krb5_ticket_has_keyinfo=yes ],
3855             [ smb_krb5_ticket_has_keyinfo=no ])
3856         ])
3857
3858   if test x"$smb_krb5_ticket_has_keyinfo" = x"yes" ; then
3859         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3860             [Whether the krb5_ticket structure contains the kvno and enctype])
3861   fi
3862
3863   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3864           smb_krb5_creds_opt_free_context,
3865           [
3866                 AC_TRY_COMPILE([
3867                     #include <krb5.h>],
3868                     [
3869                         krb5_context ctx;
3870                         krb5_get_init_creds_opt *opt = NULL;
3871                         krb5_get_init_creds_opt_free(ctx, opt);
3872                     ],
3873                     [smb_krb5_creds_opt_free_context=yes],
3874                     [smb_krb5_creds_opt_free_context=no]
3875                 )
3876           ])
3877
3878   if test x"$smb_krb5_creds_opt_free_context" = x"yes" ; then
3879         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3880             [Whether krb5_get_init_creds_opt_free takes a context argument])
3881   fi
3882
3883   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3884     AC_TRY_COMPILE([
3885         #include <krb5.h>],
3886         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3887         [smb_krb5_verify_checksum=7],
3888         [smb_krb5_verify_checksum=6],
3889     )
3890   ])
3891   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3892
3893   AC_CACHE_CHECK([for checksum in krb5_checksum],
3894                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3895     AC_TRY_COMPILE([#include <krb5.h>],
3896       [krb5_checksum cksum; cksum.checksum.length = 0;],
3897       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3898       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3899
3900   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3901     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3902                [Whether the krb5_checksum struct has a checksum property])
3903   fi
3904
3905   AC_CACHE_CHECK([for etype in EncryptedData],
3906                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3907     AC_TRY_COMPILE([#include <krb5.h>],
3908       [EncryptedData edata; edata.etype = 0;],
3909       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3910       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3911
3912   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3913     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3914                [Whether the EncryptedData struct has a etype property])
3915   fi
3916
3917   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3918                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3919     AC_TRY_COMPILE([#include <krb5.h>],
3920       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3921       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3922       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3923
3924   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3925     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3926                [Whether the krb5_ap_req struct has a ticket pointer])
3927   fi
3928
3929   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3930                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3931     AC_TRY_COMPILE([#include <krb5.h>],
3932       [krb5_error err; err.e_data = NULL;],
3933       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3934       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3935
3936   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3937     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3938                [Whether the krb5_error struct has a e_data pointer])
3939   fi
3940
3941   AC_CACHE_CHECK([for krb5_crypto type],
3942                 samba_cv_HAVE_KRB5_CRYPTO,[
3943     AC_TRY_COMPILE([#include <krb5.h>],
3944       [krb5_crypto crypto;],
3945       samba_cv_HAVE_KRB5_CRYPTO=yes,
3946       samba_cv_HAVE_KRB5_CRYPTO=no)])
3947
3948   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3949     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3950                [Whether the type krb5_crypto exists])
3951   fi
3952
3953   AC_CACHE_CHECK([for krb5_encrypt_block type],
3954                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3955     AC_TRY_COMPILE([#include <krb5.h>],
3956       [krb5_encrypt_block block;],
3957       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3958       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3959
3960   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3961     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3962                [Whether the type krb5_encrypt_block exists])
3963   fi
3964
3965   AC_CACHE_CHECK([for addrtype in krb5_address],
3966                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3967     AC_TRY_COMPILE([#include <krb5.h>],
3968       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3969       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3970       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3971
3972   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3973     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3974                [Whether the krb5_address struct has a addrtype property])
3975   fi
3976
3977   AC_CACHE_CHECK([for addr_type in krb5_address],
3978                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3979     AC_TRY_COMPILE([#include <krb5.h>],
3980       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3981       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3982       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3983
3984   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3985     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3986               [Whether the krb5_address struct has a addr_type property])
3987   fi
3988
3989   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3990                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3991                  [AC_TRY_COMPILE([#include <krb5.h>],
3992     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3993     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3994
3995   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3996     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3997               [Whether the krb5_ticket struct has a enc_part2 property])
3998   fi
3999
4000   AC_CACHE_CHECK([for keyblock in krb5_creds],
4001                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
4002     AC_TRY_COMPILE([#include <krb5.h>],
4003       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
4004       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
4005       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
4006
4007   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
4008     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
4009               [Whether the krb5_creds struct has a keyblock property])
4010   fi
4011
4012   AC_CACHE_CHECK([for session in krb5_creds],
4013                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
4014     AC_TRY_COMPILE([#include <krb5.h>],
4015       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
4016       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
4017       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
4018
4019   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
4020     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
4021               [Whether the krb5_creds struct has a session property])
4022   fi
4023
4024   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
4025                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
4026     AC_TRY_COMPILE([#include <krb5.h>],
4027       [krb5_keyblock key; key.keyvalue.data = NULL;],
4028       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
4029       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
4030
4031   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
4032     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
4033               [Whether the krb5_keyblock struct has a keyvalue property])
4034   fi
4035
4036   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
4037                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
4038     AC_TRY_COMPILE([#include <krb5.h>],
4039       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
4040       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
4041       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
4042   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
4043                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
4044     AC_TRY_COMPILE([#include <krb5.h>],
4045       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
4046       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
4047       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
4048 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
4049 # w.r.t. arcfour and windows, so we must not enable it here
4050   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
4051           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
4052     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
4053               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
4054   fi
4055
4056   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
4057                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
4058     AC_TRY_COMPILE([#include <krb5.h>],
4059       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
4060       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
4061       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
4062
4063   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
4064     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
4065               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
4066   fi
4067
4068   AC_CACHE_CHECK([for KV5M_KEYTAB],
4069                  samba_cv_HAVE_KV5M_KEYTAB,[
4070     AC_TRY_COMPILE([#include <krb5.h>],
4071       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
4072       samba_cv_HAVE_KV5M_KEYTAB=yes,
4073       samba_cv_HAVE_KV5M_KEYTAB=no)])
4074
4075   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
4076       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
4077              [Whether the KV5M_KEYTAB option is available])
4078   fi
4079
4080   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
4081                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
4082     AC_TRY_COMPILE([#include <krb5.h>],
4083       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
4084       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
4085       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
4086
4087   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
4088     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
4089               [Whether KRB5_KU_OTHER_CKSUM is available])
4090   fi
4091
4092   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
4093                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
4094     AC_TRY_COMPILE([#include <krb5.h>],
4095       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
4096       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
4097       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
4098
4099   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
4100     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
4101               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
4102   fi
4103
4104   AC_CACHE_CHECK([for the krb5_princ_component macro],
4105                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
4106     AC_TRY_LINK([#include <krb5.h>],
4107       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
4108       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
4109       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
4110
4111   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
4112     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
4113                [Whether krb5_princ_component is available])
4114   fi
4115
4116   AC_CACHE_CHECK([for key in krb5_keytab_entry],
4117                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
4118     AC_TRY_COMPILE([#include <krb5.h>],
4119       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
4120       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
4121       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
4122
4123   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
4124     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
4125               [Whether krb5_keytab_entry has key member])
4126   fi
4127
4128   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
4129                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
4130     AC_TRY_COMPILE([#include <krb5.h>],
4131       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
4132       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
4133       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
4134
4135   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
4136     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
4137               [Whether krb5_keytab_entry has keyblock member])
4138   fi
4139
4140   AC_CACHE_CHECK([for magic in krb5_address],
4141                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
4142     AC_TRY_COMPILE([#include <krb5.h>],
4143       [krb5_address addr; addr.magic = 0;],
4144       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
4145       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
4146
4147   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
4148     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
4149               [Whether the krb5_address struct has a magic property])
4150   fi
4151
4152   AC_CACHE_CHECK([for WRFILE: keytab support],
4153                 samba_cv_HAVE_WRFILE_KEYTAB,[
4154     AC_TRY_RUN([
4155 #include<krb5.h>
4156   main()
4157   {
4158     krb5_context context;
4159     krb5_keytab keytab;
4160
4161     krb5_init_context(&context);
4162     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
4163   }],
4164   samba_cv_HAVE_WRFILE_KEYTAB=yes,
4165   samba_cv_HAVE_WRFILE_KEYTAB=no)])
4166
4167   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
4168       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
4169                [Whether the WRFILE:-keytab is supported])
4170   fi
4171
4172   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4173                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4174     AC_TRY_COMPILE([#include <krb5.h>],
4175     [
4176     krb5_context context;
4177     krb5_principal principal;
4178     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4179     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4180     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4181
4182   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4183     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4184               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4185   fi
4186
4187   AC_CACHE_CHECK([for krb5_addresses type],
4188                 samba_cv_HAVE_KRB5_ADDRESSES,[
4189     AC_TRY_COMPILE([#include <krb5.h>],
4190       [krb5_addresses addr;],
4191       samba_cv_HAVE_KRB5_ADDRESSES=yes,
4192       samba_cv_HAVE_KRB5_ADDRESSES=no)])
4193
4194   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4195     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4196                [Whether the type krb5_addresses type exists])
4197   fi
4198
4199   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4200                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4201     AC_TRY_COMPILE([#include <krb5.h>],
4202     [
4203     krb5_mk_error(0,0,0);],
4204     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4205     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4206
4207   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4208     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4209               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4210   fi
4211
4212   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4213     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4214         smb_krb5_enctype_to_string_takes_krb5_context_arg,[
4215         AC_TRY_RUN_STRICT([
4216                 #include <krb5.h>
4217                 int main(void) {
4218                         krb5_context context = NULL;
4219                         char *str = NULL;
4220                         krb5_enctype_to_string(context, 1, &str);
4221                         if (str) free (str); 
4222                         return 0;
4223                 }
4224                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4225                 smb_krb5_enctype_to_string_takes_krb5_context_arg=yes,
4226                 smb_krb5_enctype_to_string_takes_krb5_context_arg=no)])
4227
4228     if test x"$smb_krb5_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4229       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4230                 [whether krb5_enctype_to_string takes krb5_context argument])
4231     fi
4232
4233     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4234         smb_krb5_enctype_to_string_takes_size_t_arg,[
4235         AC_TRY_RUN_STRICT([
4236                 #include <krb5.h>
4237                 int main(void) {
4238                         char buf[256];
4239                         krb5_enctype_to_string(1, buf, 256);
4240                         return 0;
4241                 }
4242                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4243                 smb_krb5_enctype_to_string_takes_size_t_arg=yes,
4244                 smb_krb5_enctype_to_string_takes_size_t_arg=no)])
4245
4246     if test x"$smb_krb5_enctype_to_string_takes_size_t_arg" = x"yes"; then
4247       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4248                 [whether krb5_enctype_to_string takes size_t argument])
4249     fi
4250   fi
4251
4252   AC_CACHE_CHECK([for krb5_principal_get_realm],
4253                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4254     AC_TRY_LINK([#include <krb5.h>],
4255       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4256       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4257       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4258
4259   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4260     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4261                [Whether the function krb5_principal_get_realm is defined])
4262   fi
4263
4264   AC_CACHE_CHECK([for krb5_princ_realm],
4265                 samba_cv_HAVE_KRB5_PRINC_REALM,[
4266     AC_TRY_LINK([#include <krb5.h>],
4267       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4268       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4269       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4270
4271   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4272     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4273                [Whether the macro krb5_princ_realm is defined])
4274   fi
4275
4276   #
4277   #
4278   # Now the decisions whether we can support krb5
4279   #
4280   # NOTE: all tests should be done before this block!
4281   #
4282   #
4283   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4284     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4285     use_ads=no
4286   fi
4287
4288   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4289           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4290   then
4291     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4292     use_ads=no
4293   fi
4294
4295   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4296           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4297   then
4298     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4299     use_ads=no
4300   fi
4301
4302   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4303           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4304   then
4305     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4306     use_ads=no
4307   fi
4308
4309   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4310           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4311   then
4312     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4313     use_ads=no
4314   fi
4315
4316   if test x"$smb_krb5_ticket_has_keyinfo" != x"yes" ; then
4317
4318       # We only need the following functions if we can't get the enctype
4319       # and kvno out of the ticket directly (ie. on Heimdal).
4320
4321       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4322       then
4323         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4324         use_ads=no
4325       fi
4326
4327       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4328       then
4329         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4330         use_ads=no
4331       fi
4332
4333   fi
4334
4335   if test x"$use_ads" = x"yes"; then
4336     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4337     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4338     if test x"$have_gssapi" = x"yes"; then
4339       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4340     fi
4341   else
4342     if test x"$with_ads_support" = x"yes"; then
4343         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4344     else
4345         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4346     fi
4347     AC_REMOVE_DEFINE(HAVE_KRB5_H)
4348     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4349     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4350     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4351     KRB5_LIBS=""
4352     with_ads_support=no
4353   fi
4354   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4355   AC_MSG_RESULT([$use_ads])
4356
4357 LIBS="$ac_save_LIBS"
4358 fi
4359
4360 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4361 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4362
4363
4364 ########################################################
4365 # Compile with DNS Updates support?
4366
4367 with_dnsupdate_support=no
4368 AC_MSG_CHECKING([whether to enable DNS Updates support])
4369
4370 AC_ARG_WITH(dnsupdate,
4371 [  --with-dnsupdate        Enable DNS Updates support (default no)],
4372 [ case "$withval" in
4373     yes|no)
4374         with_dnsupdate_support=$withval
4375         ;;
4376   esac ])
4377
4378 AC_MSG_RESULT($with_dnsupdate_support)
4379
4380 if test x"$with_dnsupdate_support" != x"no"; then
4381
4382   ################################################################
4383   # first test for Active Directory support being enabled
4384   #if test x"$with_ads_support" = x"no"; then
4385   #             AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4386   #             with_dnsupdate_support=no
4387   #fi           
4388   ##################################################################
4389   # then test for uuid.h (necessary to generate unique DNS keynames
4390   # (uuid.h is required for this test)
4391   AC_CHECK_HEADERS(uuid/uuid.h)
4392
4393   if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4394         if test x"$with_dnsupdate_support" = x"yes"; then
4395          AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4396         else
4397          AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4398         fi
4399         with_dnsupdate_support=no
4400   fi
4401 fi
4402
4403 if test x"$with_dnsupdate_support" != x"no"; then
4404
4405   ########################################################
4406   # Now see if we can find the uuid libs in standard paths
4407   # On some systems, the uuid API is in libc, so we have to
4408   # be careful not to insert a spurious -luuid.
4409
4410   UUID_LIBS=""
4411   AC_LIBTESTFUNC(uuid, uuid_generate,
4412           [
4413             case " $LIBS " in
4414                 *\ -luuid\ *)
4415                 UUID_LIBS="-luuid"
4416                 SMB_REMOVE_LIB(uuid)
4417                 ;;
4418             esac
4419
4420             with_dnsupdate_support=yes
4421             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4422         ],
4423         [
4424             if test x"$with_dnsupdate_support" = x"yes"; then
4425                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4426             else
4427                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4428             fi
4429             with_dnsupdate_support=no
4430         ])
4431 fi
4432
4433 #################################################
4434 # check for automount support
4435 AC_MSG_CHECKING(whether to use automount)
4436 AC_ARG_WITH(automount,
4437 [  --with-automount        Include automount support (default=no)],
4438 [ case "$withval" in
4439   yes)
4440     AC_MSG_RESULT(yes)
4441     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4442     ;;
4443   *)
4444     AC_MSG_RESULT(no)
4445     ;;
4446   esac ],
4447   AC_MSG_RESULT(no)
4448 )
4449
4450 #################################################
4451 # check for smbmount support
4452 AC_MSG_CHECKING(whether to use smbmount)
4453 AC_ARG_WITH(smbmount,
4454 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
4455 [ case "$withval" in
4456   yes)
4457         case "$host_os" in
4458         *linux*)
4459                 AC_MSG_RESULT(yes)
4460                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
4461                 SMBMOUNT_PROGS="bin/smbmount bin/smbmnt bin/smbumount"
4462                 ;;
4463         *)
4464                 AC_MSG_ERROR(not on a linux system!)
4465                 ;;
4466         esac
4467     ;;
4468   *)
4469     AC_MSG_RESULT(no)
4470     ;;
4471   esac ],
4472   AC_MSG_RESULT(no)
4473 )
4474
4475 #################################################
4476 # check for mount- and umount.cifs support
4477 CIFSMOUNT_PROGS=""
4478 INSTALL_CIFSMOUNT=""
4479 UNINSTALL_CIFSMOUNT=""
4480 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4481 AC_ARG_WITH(cifsmount,
4482 [  --with-cifsmount        Include mount.cifs and umount.cifs (Linux only) support (default=yes)],
4483 [ case "$withval" in
4484   no)
4485         AC_MSG_RESULT(no)
4486         ;;
4487   *)
4488         case "$host_os" in
4489         *linux*)
4490                 AC_MSG_RESULT(yes)
4491                 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4492                 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4493                 INSTALL_CIFSMOUNT="installcifsmount"
4494                 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4495                 ;;
4496         *)
4497                 AC_MSG_ERROR(not on a linux system!)
4498                 ;;
4499         esac
4500     ;;
4501   esac ],
4502 [ case "$host_os" in
4503   *linux*)
4504         AC_MSG_RESULT(yes)
4505         AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4506         CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4507         INSTALL_CIFSMOUNT="installcifsmount"
4508         UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4509         ;;
4510   *)
4511         AC_MSG_RESULT(no)
4512         ;;
4513   esac ]
4514 )
4515
4516 #################################################
4517 # check for cifs.spnego support
4518 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4519 CIFSSPNEGO_PROGS=""
4520 INSTALL_CIFSSPNEGO=""
4521 UNINSTALL_CIFSSPNEGO=""
4522 AC_MSG_CHECKING(whether to build cifs.spnego)
4523 AC_ARG_WITH(cifsspnego,
4524 [  --with-cifsspnego       Include cifs.spnego (Linux only) support (default=no)],
4525 [ case "$withval" in
4526   no)
4527         AC_MSG_RESULT(no)
4528         ;;
4529   *)
4530         case "$host_os" in
4531         *linux*)
4532                 if test x"$use_ads" != x"yes"; then
4533                         AC_MSG_ERROR(ADS support should be enabled for building cifs.spnego)
4534                 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4535                         AC_MSG_ERROR(keyutils package is required for cifs.spnego)
4536                 else
4537                         AC_MSG_RESULT(yes)
4538                         AC_DEFINE(WITH_CIFSSPNEGO,1,[whether to build cifs.spnego])
4539                         CIFSSPNEGO_PROGS="bin/cifs.spnego"
4540                         INSTALL_CIFSSPNEGO="installcifsspnego"
4541                         UNINSTALL_CIFSSPNEGO="uninstallcifsspnego"
4542                 fi
4543                 ;;
4544         *)
4545                 AC_MSG_ERROR(not on a linux system!)
4546                 ;;
4547         esac
4548     ;;
4549   esac ],
4550 [
4551   AC_MSG_RESULT(no)
4552   ]
4553 )
4554
4555
4556 #################################################
4557 # Check for a PAM clear-text auth, accounts, password
4558 # and session support. Most PAM implementations keep their
4559 # headers in /usr/include/security. Darwin keeps its in
4560 # /usr/include/pam.
4561
4562 with_pam_for_crypt=no
4563 try_pam=no
4564 AC_MSG_CHECKING(whether to try PAM support)
4565 AC_ARG_WITH(pam,
4566 [  --with-pam              Include PAM support (default=no)],
4567 [ case "$withval" in
4568   yes|no)
4569     try_pam=$withval
4570     ;;
4571   esac
4572 ])
4573 AC_MSG_RESULT([$try_pam])
4574
4575 use_pam=no
4576 create_pam_modules=no
4577 if test x"${try_pam}" != x"no";then
4578         use_pam=yes
4579         create_pam_modules=yes
4580
4581         # Most systems have PAM headers in /usr/include/security, but Darwin
4582         # has them in /usr/include/pam.
4583         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4584         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4585                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4586                 if test x"${try_pam}" = x"yes";then
4587                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4588                 fi
4589                 use_pam=no
4590                 create_pam_modules=no
4591         fi
4592
4593         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4594         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4595                 if test x"${try_pam}" = x"yes";then
4596                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4597                 fi
4598                 use_pam=no
4599                 create_pam_modules=no
4600         fi
4601
4602         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4603                 #if HAVE_SECURITY_PAM_APPL_H
4604                 #include <security/pam_appl.h>
4605                 #endif
4606                 #if HAVE_PAM_PAM_APPL_H
4607                 #include <pam/pam_appl.h>
4608                 #endif
4609         ]])
4610         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4611                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4612                 if test x"${try_pam}" = x"yes";then
4613                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4614        fi
4615                 create_pam_modules=no
4616     fi
4617
4618         if test x"$use_pam" = x"yes"; then
4619     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4620                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4621                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4622     with_pam_for_crypt=yes
4623
4624                 if test x"$create_pam_modules" = x"yes"; then
4625                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4626                         # this checks are optional,
4627                         # we don't care about the results here
4628                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4629                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4630                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4631                 else
4632                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4633                 fi
4634         fi
4635         AC_MSG_CHECKING(whether to use PAM support)
4636         AC_MSG_RESULT([$use_pam])
4637
4638         AC_MSG_CHECKING(whether to have PAM MODULES support)
4639         AC_MSG_RESULT([$create_pam_modules])
4640 fi # try_pam != no
4641
4642 #################################################
4643 # check for pam_smbpass support
4644 PAM_MODULES=""
4645 INSTALL_PAM_MODULES=""
4646 UNINSTALL_PAM_MODULES=""
4647 AC_MSG_CHECKING(whether to use pam_smbpass)
4648 AC_ARG_WITH(pam_smbpass,
4649 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
4650 [ case "$withval" in
4651   yes)
4652     AC_MSG_RESULT(yes)
4653
4654        # Conditions under which pam_smbpass should not be built.
4655
4656        if test x"$BLDSHARED" != x"true"; then
4657           AC_MSG_ERROR([No support for shared modules])
4658        elif test x"$create_pam_modules" != x"yes"; then
4659           AC_MSG_ERROR([No support for PAM MODULES])
4660        else
4661           PAM_MODULES="pam_smbpass"
4662           INSTALL_PAM_MODULES="installpammodules"
4663           UNINSTALL_PAM_MODULES="uninstallpammodules"
4664        fi
4665     ;;
4666   *)
4667     AC_MSG_RESULT(no)
4668     ;;
4669   esac ],
4670   AC_MSG_RESULT(no)
4671 )
4672
4673
4674 ###############################################
4675 # test for where we get crypt() from
4676 AC_SEARCH_LIBS(crypt, [crypt],
4677   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4678   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4679
4680 ##
4681 ## moved after the check for -lcrypt in order to
4682 ## ensure that the necessary libraries are included
4683 ## check checking for truncated salt.  Wrapped by the
4684 ## $with_pam_for_crypt variable as above   --jerry
4685 ##
4686 if test $with_pam_for_crypt = no; then
4687 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4688 crypt_LIBS="$LIBS"
4689 LIBS="$AUTH_LIBS $LIBS"
4690 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4691         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4692 LIBS="$crypt_LIBS"])
4693 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4694         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4695 fi
4696 fi
4697
4698 #################################################
4699 # check for a NISPLUS_HOME support
4700 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4701 AC_ARG_WITH(nisplus-home,
4702 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
4703 [ case "$withval" in
4704   yes)
4705     AC_MSG_RESULT(yes)
4706     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4707     ;;
4708   *)
4709     AC_MSG_RESULT(no)
4710     ;;
4711   esac ],
4712   AC_MSG_RESULT(no)
4713 )
4714
4715 #################################################
4716 # check for syslog logging
4717 AC_MSG_CHECKING(whether to use syslog logging)
4718 AC_ARG_WITH(syslog,
4719 [  --with-syslog           Include experimental SYSLOG support (default=no)],
4720 [ case "$withval" in
4721   yes)
4722     AC_MSG_RESULT(yes)
4723     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4724     ;;
4725   *)
4726     AC_MSG_RESULT(no)
4727     ;;
4728   esac ],
4729   AC_MSG_RESULT(no)
4730 )
4731
4732 #################################################
4733 # check for experimental disk-quotas support
4734
4735 samba_cv_WITH_QUOTAS=auto
4736 samba_cv_TRY_QUOTAS=no
4737 samba_cv_RUN_QUOTA_TESTS=auto
4738 samba_cv_WITH_SYS_QUOTAS=auto
4739 samba_cv_TRY_SYS_QUOTAS=auto
4740 samba_cv_SYSQUOTA_FOUND=no
4741
4742 AC_MSG_CHECKING(whether to try disk-quotas support)
4743 AC_ARG_WITH(quotas,
4744 [  --with-quotas           Include disk-quota support (default=no)],
4745 [ case "$withval" in
4746   yes)
4747     AC_MSG_RESULT(yes)
4748     samba_cv_WITH_QUOTAS=yes
4749     samba_cv_TRY_QUOTAS=yes
4750     samba_cv_RUN_QUOTA_TESTS=yes
4751     #set sys quotas to auto in this case
4752     samba_cv_TRY_SYS_QUOTAS=auto
4753     ;;
4754   auto)
4755     AC_MSG_RESULT(auto)
4756     samba_cv_WITH_QUOTAS=auto
4757     samba_cv_TRY_QUOTAS=auto
4758     samba_cv_RUN_QUOTA_TESTS=auto
4759     #set sys quotas to auto in this case
4760     samba_cv_TRY_SYS_QUOTAS=auto
4761     ;;
4762   no)
4763     AC_MSG_RESULT(no)
4764     samba_cv_WITH_QUOTAS=no
4765     samba_cv_TRY_QUOTAS=no
4766     samba_cv_RUN_QUOTA_TESTS=no
4767     ;;
4768   *)
4769     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4770     ;;
4771   esac ],
4772   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4773 )
4774
4775 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4776 AC_ARG_WITH(sys-quotas,
4777 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
4778 [ case "$withval" in
4779   yes)
4780     AC_MSG_RESULT(yes)
4781     samba_cv_WITH_SYS_QUOTAS=yes
4782     samba_cv_TRY_SYS_QUOTAS=yes
4783     samba_cv_RUN_QUOTA_TESTS=yes
4784     ;;
4785   auto)
4786     AC_MSG_RESULT(auto)
4787     samba_cv_WITH_SYS_QUOTAS=auto
4788     samba_cv_TRY_SYS_QUOTAS=auto
4789     samba_cv_RUN_QUOTA_TESTS=auto
4790     ;;
4791   no)
4792     AC_MSG_RESULT(no)
4793     samba_cv_WITH_SYS_QUOTAS=no
4794     samba_cv_TRY_SYS_QUOTAS=no
4795     ;;
4796   *)
4797     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4798     ;;
4799   esac ],
4800   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4801 )
4802
4803 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4804 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4805   case "$host_os" in
4806         *linux*)
4807             AC_MSG_RESULT(yes)
4808             samba_cv_TRY_SYS_QUOTAS=yes
4809             samba_cv_RUN_QUOTA_TESTS=yes
4810             ;;
4811         *)
4812             AC_MSG_RESULT(no)
4813             samba_cv_TRY_SYS_QUOTAS=no
4814             ;;
4815   esac
4816 fi
4817
4818 #############################################
4819 # only check for quota stuff if --with-quotas
4820 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4821
4822 case "$host_os" in
4823         # on linux we didn't need to test we have builtin support
4824         *linux*)
4825             samba_cv_SYSQUOTA_FOUND=yes
4826             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4827             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4828             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4829             AC_MSG_RESULT(yes)
4830
4831             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4832             samba_cv_found_xfs_header=yes
4833             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4834             AC_MSG_RESULT(yes)
4835             ;;
4836         *solaris*)
4837             # need to set this define when using static linking (BUG 1473)
4838             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4839             ;;
4840         *)
4841             ;;
4842 esac
4843
4844 # some broken header files need this
4845 AC_CHECK_HEADER(asm/types.h,[
4846             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4847             AC_ADD_INCLUDE(<asm/types.h>)
4848             ])
4849
4850 # For quotas on Veritas VxFS filesystems
4851 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4852
4853 # For quotas on Linux XFS filesystems
4854 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4855
4856 # For sys/quota.h and linux/quota.h
4857 AC_CHECK_HEADERS(sys/quota.h)
4858
4859 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4860 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4861 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4862 AC_TRY_COMPILE([
4863 #include "confdefs.h"
4864 #ifdef HAVE_SYS_TYPES_H
4865 #include <sys/types.h>
4866 #endif
4867 #ifdef HAVE_ASM_TYPES_H
4868 #include <asm/types.h>
4869 #endif
4870 #include <sys/quota.h>
4871 ],[int i = Q_XGETQUOTA;],
4872 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4873 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4874         samba_cv_found_xfs_header=yes
4875 fi
4876 fi
4877
4878 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4879 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4880 AC_TRY_COMPILE([
4881 #include "confdefs.h"
4882 #ifdef HAVE_SYS_QUOTA_H
4883 #include <sys/quota.h>
4884 #endif
4885 ],[
4886 struct dqblk D;
4887 D.dqb_fsoftlimit = 0;],
4888 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4889 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4890         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4891 fi
4892
4893 ##################
4894 # look for a working quota system
4895
4896 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4897 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4898 AC_TRY_RUN_STRICT([
4899 #define HAVE_QUOTACTL_4A 1
4900 #define AUTOCONF_TEST 1
4901 #include "confdefs.h"
4902 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4903            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4904 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4905     samba_cv_SYSQUOTA_FOUND=yes;
4906     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4907     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4908 fi
4909 fi
4910
4911 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4912 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4913 AC_TRY_RUN_STRICT([
4914 #define HAVE_QUOTACTL_4B 1
4915 #define AUTOCONF_TEST 1
4916 #include "confdefs.h"
4917 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4918            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4919 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4920     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4921     samba_cv_SYSQUOTA_FOUND=yes;
4922     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4923     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4924 fi
4925 fi
4926
4927 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4928 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4929 AC_TRY_RUN_STRICT([
4930 #define HAVE_QUOTACTL_3 1
4931 #define AUTOCONF_TEST 1
4932 #include "confdefs.h"
4933 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4934            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4935 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4936     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4937     samba_cv_SYSQUOTA_FOUND=yes;
4938     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4939     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4940 fi
4941 fi
4942
4943 #################################################
4944 # check for mntent.h and struct mntent
4945 AC_CHECK_HEADERS(mntent.h)
4946 #################################################
4947 # check for setmntent,getmntent,endmntent
4948 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4949
4950 #################################################
4951 # check for devnm.h and struct mntent
4952 AC_CHECK_HEADERS(devnm.h)
4953 #################################################
4954 # check for devnm
4955 AC_CHECK_FUNCS(devnm)
4956
4957 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4958     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4959         # if --with-sys-quotas=yes then build it
4960         # you have can use the get/set quota command smb.conf
4961         # options then
4962         samba_cv_SYSQUOTA_FOUND=auto
4963     fi
4964     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4965         # if --with-sys-quotas=yes then build it
4966         # you have can use the get/set quota command smb.conf
4967         # options then
4968         samba_cv_TRY_SYS_QUOTAS=auto
4969     fi
4970 fi
4971
4972 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4973 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4974 SAVE_CPPFLAGS="$CPPFLAGS"
4975 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4976 AC_TRY_COMPILE([
4977 #include "confdefs.h"
4978 #define NO_PROTO_H 1
4979 #define NO_CONFIG_H 1
4980 #define HAVE_SYS_QUOTAS 1
4981 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4982 #include "${srcdir-.}/lib/sysquotas.c"
4983 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4984 CPPFLAGS="$SAVE_CPPFLAGS"
4985 ])
4986 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4987 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4988     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4989         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4990         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4991         samba_cv_WE_USE_SYS_QUOTAS=yes
4992         AC_MSG_RESULT(yes)
4993     else
4994         AC_MSG_RESULT(no)
4995     fi
4996 fi
4997 fi
4998
4999 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
5000 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
5001 SAVE_CPPFLAGS="$CPPFLAGS"
5002 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5003 AC_TRY_COMPILE([
5004 #include "confdefs.h"
5005 #define NO_PROTO_H 1
5006 #define NO_CONFIG_H 1
5007 #define HAVE_SYS_QUOTAS 1
5008 #define HAVE_XFS_QUOTAS 1
5009 #include "${srcdir-.}/lib/sysquotas_xfs.c"
5010 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
5011 CPPFLAGS="$SAVE_CPPFLAGS"
5012 ])
5013 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
5014     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
5015         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
5016     fi
5017 fi
5018 fi
5019
5020 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
5021 SAVE_CPPFLAGS="$CPPFLAGS"
5022 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5023 AC_TRY_COMPILE([
5024 #include "confdefs.h"
5025 #define NO_PROTO_H 1
5026 #define NO_CONFIG_H 1
5027 #include "${srcdir-.}/smbd/quotas.c"
5028 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
5029 CPPFLAGS="$SAVE_CPPFLAGS"
5030 ])
5031 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
5032 AC_MSG_CHECKING(whether to use the old quota support)
5033     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
5034       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
5035         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
5036         AC_MSG_RESULT(yes)
5037       else
5038         AC_MSG_RESULT(no)
5039       fi
5040     else
5041       AC_MSG_RESULT(no)
5042     fi
5043 fi
5044
5045 ####################
5046 # End of quota check samba_cv_RUN_QUOTA_TESTS
5047 fi
5048
5049 #################################################
5050 # check for experimental utmp accounting
5051
5052 AC_MSG_CHECKING(whether to support utmp accounting)
5053 WITH_UTMP=yes
5054 AC_ARG_WITH(utmp,
5055 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
5056 [ case "$withval" in
5057   no)
5058                 WITH_UTMP=no
5059                 ;;
5060   *)
5061                 WITH_UTMP=yes
5062                 ;;
5063   esac ],
5064 )
5065
5066 # utmp requires utmp.h
5067 # Note similar check earlier, when checking utmp details.
5068
5069 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
5070         utmp_no_reason=", no utmp.h on $host_os"
5071         WITH_UTMP=no
5072 fi
5073
5074 # Display test results
5075
5076 if test x"$WITH_UTMP" = x"yes"; then
5077         AC_MSG_RESULT(yes)
5078         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
5079 else
5080         AC_MSG_RESULT(no$utmp_no_reason)
5081 fi
5082
5083 INSTALLLIBCMD_SH=:
5084 INSTALLLIBCMD_A=:
5085 UNINSTALLLIBCMD_SH=:
5086 UNINSTALLLIBCMD_A=:
5087
5088 if test $BLDSHARED = true; then
5089         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
5090         UNINSTALLLIBCMD_SH="rm -f"
5091 fi
5092 if test $enable_static = yes; then
5093         INSTALLLIBCMD_A="\$(INSTALLCMD)"
5094         UNINSTALLLIBCMD_A="rm -f"
5095 fi
5096
5097 #################################################
5098 # should we build libnetapi?
5099 INSTALL_LIBNETAPI=
5100 UNINSTALL_LIBNETAPI=
5101 LIBNETAPI_SHARED=
5102 LIBNETAPI=
5103 AC_MSG_CHECKING(whether to build the libnetapi shared library)
5104 AC_ARG_WITH(libnetapi,
5105 [  --with-libnetapi        Build the libnetapi shared library (default=yes if shared libs supported)],
5106 [ case "$withval" in
5107   *)
5108      AC_MSG_RESULT(no)
5109      ;;
5110   yes)
5111      if test $BLDSHARED = true; then
5112         LIBNETAPI_SHARED=bin/libnetapi.$SHLIBEXT
5113         LIBNETAPI=libnetapi
5114         AC_MSG_RESULT(yes)
5115      else
5116         enable_static=yes
5117         AC_MSG_RESULT(no shared library support -- will supply static library)
5118      fi
5119      if test $enable_static = yes; then
5120         LIBNETAPI=libnetapi
5121      fi
5122      INSTALL_LIBNETAPI=installlibnetapi
5123      UNINSTALL_LIBNETAPI=uninstalllibnetapi
5124      ;;
5125   esac ],
5126 [
5127 # if unspecified, default is to built it if possible.
5128   if test $BLDSHARED = true; then
5129      LIBNETAPI_SHARED=bin/libnetapi.$SHLIBEXT
5130      LIBNETAPI=libnetapi
5131      AC_MSG_RESULT(yes)
5132    else
5133      enable_static=yes
5134      AC_MSG_RESULT(no shared library support -- will supply static library)
5135    fi
5136    if test $enable_static = yes; then
5137      LIBNETAPI=libnetapi
5138   fi]
5139   INSTALL_LIBNETAPI=installlibnetapi
5140 )
5141
5142 #################################################
5143 # should we build libaddns?
5144 INSTALL_LIBADDNS=
5145 UNINSTALL_LIBADDNS=
5146 LIBADDNS_SHARED=
5147 LIBADDNS=
5148 AC_MSG_CHECKING(whether to build the libaddns shared library)
5149 AC_ARG_WITH(libaddns,
5150 [  --with-libaddns         Build the libaddns shared library (default=no undefined API)],
5151 [ case "$withval" in
5152   *)
5153      AC_MSG_RESULT(no)
5154      ;;
5155   yes)
5156      if test $BLDSHARED = true; then
5157         LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
5158         LIBADDNS=libaddns
5159         AC_MSG_RESULT(yes)
5160      else
5161         enable_static=yes
5162         AC_MSG_RESULT(no shared library support -- will supply static library)
5163      fi
5164      if test $enable_static = yes; then
5165         LIBADDNS=libaddns
5166      fi
5167      INSTALL_LIBADDNS=installlibaddns
5168      UNINSTALL_LIBADDNS=uninstalllibaddns
5169      ;;
5170   esac ],
5171 [AC_MSG_RESULT(no)]
5172 )
5173
5174 #################################################
5175 # should we build libsmbclient?
5176
5177 INSTALL_LIBSMBCLIENT=
5178 UNINSTALL_LIBSMBCLIENT=
5179 LIBSMBCLIENT_SHARED=
5180 LIBSMBCLIENT=
5181 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
5182 AC_ARG_WITH(libsmbclient,
5183 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
5184 [ case "$withval" in
5185   no)
5186      AC_MSG_RESULT(no)
5187      ;;
5188   *)
5189      if test $BLDSHARED = true; then
5190         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
5191         LIBSMBCLIENT=libsmbclient
5192         AC_MSG_RESULT(yes)
5193      else
5194         enable_static=yes
5195         AC_MSG_RESULT(no shared library support -- will supply static library)
5196      fi
5197      if test $enable_static = yes; then
5198         LIBSMBCLIENT=libsmbclient
5199      fi
5200      INSTALL_LIBSMBCLIENT=installclientlib
5201      UNINSTALL_LIBSMBCLIENT=uninstallclientlib
5202      ;;
5203   esac ],
5204 [
5205 # if unspecified, default is to built it if possible.
5206   if test $BLDSHARED = true; then
5207      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
5208      LIBSMBCLIENT=libsmbclient
5209      AC_MSG_RESULT(yes)
5210    else
5211      enable_static=yes
5212      AC_MSG_RESULT(no shared library support -- will supply static library)
5213    fi
5214    if test $enable_static = yes; then
5215      LIBSMBCLIENT=libsmbclient
5216   fi]
5217   INSTALL_LIBSMBCLIENT=installclientlib
5218   UNINSTALL_LIBSMBCLIENT=uninstallclientlib
5219 )
5220
5221 INSTALL_LIBSMBSHAREMODES=
5222 LIBSMBSHAREMODES_SHARED=
5223 LIBSMBSHAREMODES=
5224 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
5225 AC_ARG_WITH(libsmbsharemodes,
5226 [  --with-libsmbsharemodes     Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
5227 [ case "$withval" in
5228   no)
5229      AC_MSG_RESULT(no)
5230      ;;
5231   *)
5232      if test $BLDSHARED = true; then
5233         LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
5234         LIBSMBSHAREMODES=libsmbsharemodes
5235         AC_MSG_RESULT(yes)
5236      else
5237         enable_static=yes
5238         AC_MSG_RESULT(no shared library support -- will supply static library)
5239      fi
5240      if test $enable_static = yes; then
5241         LIBSMBSHAREMODES=libsmbsharemodes
5242      fi
5243      INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
5244      UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
5245      ;;
5246   esac ],
5247 [
5248 # if unspecified, default is to built it if possible.
5249   if test $BLDSHARED = true; then
5250      LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
5251      LIBSMBSHAREMODES=libsmbsharemodes
5252      AC_MSG_RESULT(yes)
5253    else
5254      enable_static=yes
5255      AC_MSG_RESULT(no shared library support -- will supply static library)
5256    fi
5257    if test $enable_static = yes; then
5258      LIBSMBSHAREMODES=libsmbsharemodes
5259   fi]
5260   INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
5261 )
5262
5263
5264 #################################################
5265 # these tests are taken from the GNU fileutils package
5266 AC_CHECKING(how to get filesystem space usage)
5267 space=no
5268
5269 # Test for statvfs64.
5270 if test $space = no; then
5271   # SVR4
5272   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
5273   [AC_TRY_RUN([
5274 #if defined(HAVE_UNISTD_H)
5275 #include <unistd.h>
5276 #endif
5277 #include <sys/types.h>
5278 #include <sys/statvfs.h>
5279   main ()
5280   {
5281     struct statvfs64 fsd;
5282     exit (statvfs64 (".", &fsd));
5283   }],
5284   fu_cv_sys_stat_statvfs64=yes,
5285   fu_cv_sys_stat_statvfs64=no,
5286   fu_cv_sys_stat_statvfs64=cross)])
5287   if test $fu_cv_sys_stat_statvfs64 = yes; then
5288     space=yes
5289     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
5290   fi
5291 fi
5292
5293 # Perform only the link test since it seems there are no variants of the
5294 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
5295 # because that got a false positive on SCO OSR5.  Adding the declaration
5296 # of a `struct statvfs' causes this test to fail (as it should) on such
5297 # systems.  That system is reported to work fine with STAT_STATFS4 which
5298 # is what it gets when this test fails.
5299 if test $space = no; then
5300   # SVR4
5301   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
5302                  [AC_TRY_LINK([#include <sys/types.h>
5303 #include <sys/statvfs.h>],
5304                               [struct statvfs fsd; statvfs (0, &fsd);],
5305                               fu_cv_sys_stat_statvfs=yes,
5306                               fu_cv_sys_stat_statvfs=no)])
5307   if test $fu_cv_sys_stat_statvfs = yes; then
5308     space=yes
5309     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
5310   fi
5311 fi
5312
5313 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
5314 # This is not the case on ancient Linux systems.
5315
5316 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
5317     AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5318         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5319 if test x"$samba_cv_fsid_int" = x"yes"; then
5320     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5321 fi
5322
5323 if test $space = no; then
5324   # DEC Alpha running OSF/1
5325   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5326   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5327   [AC_TRY_RUN([
5328 #include <sys/param.h>
5329 #include <sys/types.h>
5330 #include <sys/mount.h>
5331   main ()
5332   {
5333     struct statfs fsd;
5334     fsd.f_fsize = 0;
5335     exit (statfs (".", &fsd, sizeof (struct statfs)));
5336   }],
5337   fu_cv_sys_stat_statfs3_osf1=yes,
5338   fu_cv_sys_stat_statfs3_osf1=no,
5339   fu_cv_sys_stat_statfs3_osf1=no)])
5340   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5341   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5342     space=yes
5343     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5344   fi
5345 fi
5346
5347 if test $space = no; then
5348 # AIX
5349   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5350 member (AIX, 4.3BSD)])
5351   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5352   [AC_TRY_RUN([
5353 #ifdef HAVE_SYS_PARAM_H
5354 #include <sys/param.h>
5355 #endif
5356 #ifdef HAVE_SYS_MOUNT_H
5357 #include <sys/mount.h>
5358 #endif
5359 #ifdef HAVE_SYS_VFS_H
5360 #include <sys/vfs.h>
5361 #endif
5362   main ()
5363   {
5364   struct statfs fsd;
5365   fsd.f_bsize = 0;
5366   exit (statfs (".", &fsd));
5367   }],
5368   fu_cv_sys_stat_statfs2_bsize=yes,
5369   fu_cv_sys_stat_statfs2_bsize=no,
5370   fu_cv_sys_stat_statfs2_bsize=no)])
5371   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5372   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5373     space=yes
5374     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5375   fi
5376 fi
5377
5378 if test $space = no; then
5379 # SVR3
5380   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5381   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5382   [AC_TRY_RUN([#include <sys/types.h>
5383 #include <sys/statfs.h>
5384   main ()
5385   {
5386   struct statfs fsd;
5387   exit (statfs (".", &fsd, sizeof fsd, 0));
5388   }],
5389     fu_cv_sys_stat_statfs4=yes,
5390     fu_cv_sys_stat_statfs4=no,
5391     fu_cv_sys_stat_statfs4=no)])
5392   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5393   if test $fu_cv_sys_stat_statfs4 = yes; then
5394     space=yes
5395     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5396   fi
5397 fi
5398
5399 if test $space = no; then
5400 # 4.4BSD and NetBSD
5401   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5402 member (4.4BSD and NetBSD)])
5403   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5404   [AC_TRY_RUN([#include <sys/types.h>
5405 #ifdef HAVE_SYS_PARAM_H
5406 #include <sys/param.h>
5407 #endif
5408 #ifdef HAVE_SYS_MOUNT_H
5409 #include <sys/mount.h>
5410 #endif
5411   main ()
5412   {
5413   struct statfs fsd;
5414   fsd.f_fsize = 0;
5415   exit (statfs (".", &fsd));
5416   }],
5417   fu_cv_sys_stat_statfs2_fsize=yes,
5418   fu_cv_sys_stat_statfs2_fsize=no,
5419   fu_cv_sys_stat_statfs2_fsize=no)])
5420   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5421   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5422     space=yes
5423         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5424   fi
5425 fi
5426
5427 if test $space = no; then
5428   # Ultrix
5429   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5430   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5431   [AC_TRY_RUN([#include <sys/types.h>
5432 #ifdef HAVE_SYS_PARAM_H
5433 #include <sys/param.h>
5434 #endif
5435 #ifdef HAVE_SYS_MOUNT_H
5436 #include <sys/mount.h>
5437 #endif
5438 #ifdef HAVE_SYS_FS_TYPES_H
5439 #include <sys/fs_types.h>
5440 #endif
5441   main ()
5442   {
5443   struct fs_data fsd;
5444   /* Ultrix's statfs returns 1 for success,
5445      0 for not mounted, -1 for failure.  */
5446   exit (statfs (".", &fsd) != 1);
5447   }],
5448   fu_cv_sys_stat_fs_data=yes,
5449   fu_cv_sys_stat_fs_data=no,
5450   fu_cv_sys_stat_fs_data=no)])
5451   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5452   if test $fu_cv_sys_stat_fs_data = yes; then
5453     space=yes
5454     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5455   fi
5456 fi
5457
5458 #
5459 # As a gating factor for large file support, in order to
5460 # use <4GB files we must have the following minimal support
5461 # available.
5462 # long long, and a 64 bit off_t or off64_t.
5463 # If we don't have all of these then disable large
5464 # file support.
5465 #
5466 AC_MSG_CHECKING([if large file support can be enabled])
5467 AC_TRY_COMPILE([
5468 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5469 #include <sys/types.h>
5470 #else
5471 __COMPILE_ERROR_
5472 #endif
5473 ],
5474 [int i],
5475 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5476 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5477         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5478 fi
5479 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5480
5481 #################################################
5482 # check for cluster extensions
5483
5484 AC_MSG_CHECKING(whether to include cluster support)
5485 AC_ARG_WITH(cluster-support,
5486 [  --with-cluster-support  Enable cluster extensions (default=no)])
5487 if test "x$with_cluster_support" = "xyes"; then
5488     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5489     AC_MSG_RESULT(yes)
5490 else
5491     AC_MSG_RESULT(no)
5492 fi
5493
5494
5495 #################################################
5496 # check for ACL support
5497
5498 AC_MSG_CHECKING(whether to support ACLs)
5499 AC_ARG_WITH(acl-support,
5500 [  --with-acl-support      Include ACL support (default=auto)],
5501 [ case "$withval" in
5502         yes|no)
5503                 with_acl_support="$withval"
5504                 ;;
5505   esac ])
5506
5507 if test x"$with_acl_support" = x ; then
5508         with_acl_support="auto"
5509 fi
5510
5511 AC_MSG_RESULT($with_acl_support)
5512
5513 if test x"$with_acl_support" = x"no"; then
5514         AC_MSG_RESULT(Disabling ACL support)
5515         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5516 else
5517         AC_MSG_NOTICE(checking whether ACL support is available:)
5518         case "$host_os" in
5519         *sysv5*)
5520                 AC_MSG_NOTICE(Using UnixWare ACLs)
5521                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5522                 default_static_modules="$default_static_modules vfs_solarisacl"
5523                 ;;
5524         *solaris*)
5525                 AC_MSG_NOTICE(Using solaris ACLs)
5526                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5527                 ACL_LIBS="$ACL_LIBS -lsec"
5528                 default_static_modules="$default_static_modules vfs_solarisacl"
5529                 ;;
5530         *hpux*)
5531                 AC_MSG_NOTICE(Using HPUX ACLs)
5532                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5533                 default_static_modules="$default_static_modules vfs_hpuxacl"
5534                 ;;
5535         *irix*)
5536                 AC_MSG_NOTICE(Using IRIX ACLs)
5537                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5538                 default_static_modules="$default_static_modules vfs_irixacl"
5539                 ;;
5540         *aix*)
5541                 AC_MSG_NOTICE(Using AIX ACLs)
5542                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5543                 default_static_modules="$default_static_modules vfs_aixacl"
5544                 ;;
5545         *osf*)
5546                 AC_MSG_NOTICE(Using Tru64 ACLs)
5547                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5548                 ACL_LIBS="$ACL_LIBS -lpacl"
5549                 default_static_modules="$default_static_modules vfs_tru64acl"
5550                 ;;
5551         *darwin*)
5552                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5553                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5554                 ;;
5555         *)
5556                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5557                 case "$host_os" in
5558                 *linux*)
5559                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5560                         ;;
5561                 esac
5562                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5563                         acl_LIBS=$LIBS
5564                         LIBS="$LIBS $ACL_LIBS"
5565                         AC_TRY_LINK([
5566                                 #include <sys/types.h>
5567                                 #include <sys/acl.h>
5568                         ],[
5569                                 acl_t acl;
5570                                 int entry_id;
5571                                 acl_entry_t *entry_p;
5572                                 return acl_get_entry(acl, entry_id, entry_p);
5573                         ],
5574                         [samba_cv_HAVE_POSIX_ACLS=yes],
5575                         [samba_cv_HAVE_POSIX_ACLS=no])
5576                         LIBS=$acl_LIBS
5577                 ])
5578                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5579                         AC_MSG_NOTICE(Using posix ACLs)
5580                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5581                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5582                                 acl_LIBS=$LIBS
5583                                 LIBS="$LIBS $ACL_LIBS"
5584                                 AC_TRY_LINK([
5585                                         #include <sys/types.h>
5586                                         #include <sys/acl.h>
5587                                 ],[
5588                                         acl_permset_t permset_d;
5589                                         acl_perm_t perm;
5590                                         return acl_get_perm_np(permset_d, perm);
5591                                 ],
5592                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5593                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5594                                 LIBS=$acl_LIBS
5595                         ])
5596                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5597                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5598                         fi
5599                         default_static_modules="$default_static_modules vfs_posixacl"
5600                 else
5601                         AC_MSG_NOTICE(ACL support is not avaliable)
5602                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5603                 fi
5604                 ;;
5605         esac
5606 fi # with_acl_support
5607
5608
5609
5610 #################################################
5611 # check for AIO support
5612
5613 AC_MSG_CHECKING(whether to support asynchronous io)
5614 AC_ARG_WITH(aio-support,
5615 [  --with-aio-support      Include asynchronous io support (default=no)],
5616 [ case "$withval" in
5617   yes)
5618
5619         AC_MSG_RESULT(yes)
5620         case "$host_os" in
5621         *)
5622                 AIO_LIBS=$LIBS
5623                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5624                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5625                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5626                 aio_LIBS=$LIBS
5627                 LIBS=$AIO_LIBS
5628                 AC_TRY_LINK([#include <sys/types.h>
5629 #include <aio.h>],
5630 [ struct aiocb a; return aio_read(&a);],
5631 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5632                 LIBS=$aio_LIBS])
5633                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5634                 aio_LIBS=$LIBS
5635                 LIBS=$AIO_LIBS
5636                 AC_TRY_LINK([#include <sys/types.h>
5637 #include <aio.h>],
5638 [ struct aiocb64 a; return aio_read64(&a);],
5639 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5640                 LIBS=$aio_LIBS])
5641                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5642                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5643                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5644                         LIBS=$AIO_LIBS
5645                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5646                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5647                         LIBS=$AIO_LIBS
5648                 fi
5649
5650                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5651                         AC_MSG_CHECKING(for aio_read)
5652                         AC_LINK_IFELSE([#include <aio.h>
5653 int main() { struct aiocb a; return aio_read(&a); }],
5654 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5655 [AC_MSG_RESULT(no)])
5656
5657                         AC_MSG_CHECKING(for aio_write)
5658                         AC_LINK_IFELSE([#include <aio.h>
5659 int main() { struct aiocb a; return aio_write(&a); }],
5660 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5661 [AC_MSG_RESULT(no)])
5662
5663                         AC_MSG_CHECKING(for aio_fsync)
5664                         AC_LINK_IFELSE([#include <aio.h>
5665 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5666 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5667 [AC_MSG_RESULT(no)])
5668
5669                         AC_MSG_CHECKING(for aio_return)
5670                         AC_LINK_IFELSE([#include <aio.h>
5671 int main() { struct aiocb a; return aio_return(&a); }],
5672 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5673 [AC_MSG_RESULT(no)])
5674
5675                         AC_MSG_CHECKING(for aio_error)
5676                         AC_LINK_IFELSE([#include <aio.h>
5677 int main() { struct aiocb a; return aio_error(&a); }],
5678 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5679 [AC_MSG_RESULT(no)])
5680
5681                         AC_MSG_CHECKING(for aio_cancel)
5682                         AC_LINK_IFELSE([#include <aio.h>
5683 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5684 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5685 [AC_MSG_RESULT(no)])
5686
5687                         AC_MSG_CHECKING(for aio_suspend)
5688                         AC_LINK_IFELSE([#include <aio.h>
5689 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5690 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5691 [AC_MSG_RESULT(no)])
5692                 fi
5693
5694                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5695                         AC_MSG_CHECKING(for aio_read64)
5696                         AC_LINK_IFELSE([#include <aio.h>
5697 int main() { struct aiocb a; return aio_read64(&a); }],
5698 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5699 [AC_MSG_RESULT(no)])
5700
5701                         AC_MSG_CHECKING(for aio_write64)
5702                         AC_LINK_IFELSE([#include <aio.h>
5703 int main() { struct aiocb a; return aio_write64(&a); }],
5704 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5705 [AC_MSG_RESULT(no)])
5706
5707                         AC_MSG_CHECKING(for aio_fsync64)
5708                         AC_LINK_IFELSE([#include <aio.h>
5709 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5710 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5711 [AC_MSG_RESULT(no)])
5712
5713                         AC_MSG_CHECKING(for aio_return64)
5714                         AC_LINK_IFELSE([#include <aio.h>
5715 int main() { struct aiocb a; return aio_return64(&a); }],
5716 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5717 [AC_MSG_RESULT(no)])
5718
5719                         AC_MSG_CHECKING(for aio_error64)
5720                         AC_LINK_IFELSE([#include <aio.h>
5721 int main() { struct aiocb a; return aio_error64(&a); }],
5722 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5723 [AC_MSG_RESULT(no)])
5724
5725                         AC_MSG_CHECKING(for aio_cancel64)
5726                         AC_LINK_IFELSE([#include <aio.h>
5727 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5728 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5729 [AC_MSG_RESULT(no)])
5730
5731                         AC_MSG_CHECKING(for aio_suspend64)
5732                         AC_LINK_IFELSE([#include <aio.h>
5733 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5734 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5735 [AC_MSG_RESULT(no)])
5736                 fi
5737             ;;
5738         esac
5739         ;;
5740   *)
5741     AC_MSG_RESULT(no)
5742     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5743     ;;
5744   esac ],
5745   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5746   AC_MSG_RESULT(no)
5747 )
5748
5749 #################################################
5750 # check for sendfile support
5751
5752 with_sendfile_support=yes
5753 AC_MSG_CHECKING(whether to check to support sendfile)
5754 AC_ARG_WITH(sendfile-support,
5755 [  --with-sendfile-support Check for sendfile support (default=yes)],
5756 [ case "$withval" in
5757   yes)
5758
5759         AC_MSG_RESULT(yes);
5760
5761         case "$host_os" in
5762         *linux*)
5763                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5764                 AC_TRY_LINK([#include <sys/sendfile.h>],
5765 [\
5766 int tofd, fromfd;
5767 off64_t offset;
5768 size_t total;
5769 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5770 ],
5771 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5772
5773                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5774                 AC_TRY_LINK([#include <sys/sendfile.h>],
5775 [\
5776 int tofd, fromfd;
5777 off_t offset;
5778 size_t total;
5779 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5780 ],
5781 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5782
5783 # Try and cope with broken Linux sendfile....
5784                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5785                 AC_TRY_LINK([\
5786 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5787 #undef _FILE_OFFSET_BITS
5788 #endif
5789 #include <sys/sendfile.h>],
5790 [\
5791 int tofd, fromfd;
5792 off_t offset;
5793 size_t total;
5794 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5795 ],
5796 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5797
5798         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5799                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5800                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5801                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5802         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5803                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5804                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5805                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5806         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5807                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5808                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5809         else
5810                 AC_MSG_RESULT(no);
5811         fi
5812
5813         ;;
5814         *freebsd* | *dragonfly* )
5815                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5816                 AC_TRY_LINK([\
5817 #include <sys/types.h>
5818 #include <unistd.h>
5819 #include <sys/socket.h>
5820 #include <sys/uio.h>],
5821 [\
5822         int fromfd, tofd, ret, total=0;
5823         off_t offset, nwritten;
5824         struct sf_hdtr hdr;
5825         struct iovec hdtrl;
5826         hdr.headers = &hdtrl;
5827         hdr.hdr_cnt = 1;
5828         hdr.trailers = NULL;
5829         hdr.trl_cnt = 0;
5830         hdtrl.iov_base = NULL;
5831         hdtrl.iov_len = 0;
5832         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5833 ],
5834 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5835
5836         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5837                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5838                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5839                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5840         else
5841                 AC_MSG_RESULT(no);
5842         fi
5843         ;;
5844
5845         *hpux*)
5846                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5847                 AC_TRY_LINK([\
5848 #include <sys/socket.h>
5849 #include <sys/uio.h>],
5850 [\
5851         int fromfd, tofd;
5852         size_t total=0;
5853         struct iovec hdtrl[2];
5854         ssize_t nwritten;
5855         off64_t offset;
5856
5857         hdtrl[0].iov_base = 0;
5858         hdtrl[0].iov_len = 0;
5859
5860         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5861 ],
5862 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5863         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5864                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5865                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5866                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5867         else
5868                 AC_MSG_RESULT(no);
5869         fi
5870
5871                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5872                 AC_TRY_LINK([\
5873 #include <sys/socket.h>
5874 #include <sys/uio.h>],
5875 [\
5876         int fromfd, tofd;
5877         size_t total=0;
5878         struct iovec hdtrl[2];
5879         ssize_t nwritten;
5880         off_t offset;
5881
5882         hdtrl[0].iov_base = 0;
5883         hdtrl[0].iov_len = 0;
5884
5885         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5886 ],
5887 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5888         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5889                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5890                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5891                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5892         else
5893                 AC_MSG_RESULT(no);
5894         fi
5895         ;;
5896
5897         *solaris*)
5898                 AC_CHECK_LIB(sendfile,sendfilev)
5899                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5900                 AC_TRY_LINK([\
5901 #include <sys/sendfile.h>],
5902 [\
5903         int sfvcnt;
5904         size_t xferred;
5905         struct sendfilevec vec[2];
5906         ssize_t nwritten;
5907         int tofd;
5908
5909         sfvcnt = 2;
5910
5911         vec[0].sfv_fd = SFV_FD_SELF;
5912         vec[0].sfv_flag = 0;
5913         vec[0].sfv_off = 0;
5914         vec[0].sfv_len = 0;
5915
5916         vec[1].sfv_fd = 0;
5917         vec[1].sfv_flag = 0;
5918         vec[1].sfv_off = 0;
5919         vec[1].sfv_len = 0;
5920         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5921 ],
5922 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5923
5924         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5925                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5926                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5927                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5928         else
5929                 AC_MSG_RESULT(no);
5930         fi
5931
5932                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5933                 AC_TRY_LINK([\
5934 #include <sys/sendfile.h>],
5935 [\
5936         int sfvcnt;
5937         size_t xferred;
5938         struct sendfilevec vec[2];
5939         ssize_t nwritten;
5940         int tofd;
5941
5942         sfvcnt = 2;
5943
5944         vec[0].sfv_fd = SFV_FD_SELF;
5945         vec[0].sfv_flag = 0;
5946         vec[0].sfv_off = 0;
5947         vec[0].sfv_len = 0;
5948
5949         vec[1].sfv_fd = 0;
5950         vec[1].sfv_flag = 0;
5951         vec[1].sfv_off = 0;
5952         vec[1].sfv_len = 0;
5953         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5954 ],
5955 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5956
5957         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5958                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5959                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5960                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5961         else
5962                 AC_MSG_RESULT(no);
5963         fi
5964         ;;
5965         *aix*)
5966                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5967                 AC_TRY_LINK([\
5968 #include <sys/socket.h>],
5969 [\
5970         int fromfd, tofd;
5971         size_t total=0;
5972         struct sf_parms hdtrl;
5973         ssize_t nwritten;
5974         off64_t offset;
5975
5976         hdtrl.header_data = 0;
5977         hdtrl.header_length = 0;
5978         hdtrl.file_descriptor = fromfd;
5979         hdtrl.file_offset = 0;
5980         hdtrl.file_bytes = 0;
5981         hdtrl.trailer_data = 0;
5982         hdtrl.trailer_length = 0;
5983
5984         nwritten = send_file(&tofd, &hdtrl, 0);
5985 ],
5986 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5987         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5988                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5989                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5990                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5991         else
5992                 AC_MSG_RESULT(no);
5993         fi
5994         ;;
5995         *)
5996         ;;
5997         esac
5998         ;;
5999   *)
6000     AC_MSG_RESULT(no)
6001     ;;
6002   esac ],
6003   AC_MSG_RESULT(yes)
6004 )
6005
6006 ############################################
6007 # See if we have the Linux readahead syscall.
6008
6009 AC_CACHE_CHECK([for Linux readahead],
6010                 samba_cv_HAVE_LINUX_READAHEAD,[
6011     AC_TRY_LINK([
6012 #if defined(HAVE_UNISTD_H)
6013 #include <unistd.h>
6014 #endif
6015 #include <fcntl.h>],
6016     [ssize_t err = readahead(0,0,0x80000);],
6017     samba_cv_HAVE_LINUX_READAHEAD=yes,
6018     samba_cv_HAVE_LINUX_READAHEAD=no)])
6019
6020 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
6021   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
6022              [Whether Linux readahead is available])
6023 fi
6024
6025 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
6026
6027 ############################################
6028 # See if we have the posix_fadvise syscall.
6029
6030 AC_CACHE_CHECK([for posix_fadvise],
6031                 samba_cv_HAVE_POSIX_FADVISE,[
6032     AC_TRY_LINK([
6033 #if defined(HAVE_UNISTD_H)
6034 #include <unistd.h>
6035 #endif
6036 #include <fcntl.h>],
6037     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
6038     samba_cv_HAVE_POSIX_FADVISE=yes,
6039     samba_cv_HAVE_POSIX_FADVISE=no)])
6040
6041 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
6042   AC_DEFINE(HAVE_POSIX_FADVISE,1,
6043              [Whether posix_fadvise is available])
6044 fi
6045
6046
6047
6048 #################################################
6049 # Check whether winbind is supported on this platform.  If so we need to
6050 # build and install client programs, sbin programs and shared libraries
6051
6052 AC_MSG_CHECKING(whether to build winbind)
6053
6054 # Initially, the value of $host_os decides whether winbind is supported
6055
6056 HAVE_WINBIND=yes
6057
6058 # Define the winbind shared library name and any specific linker flags
6059 # it needs to be built with.
6060
6061 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
6062 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
6063 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
6064 NSSSONAMEVERSIONSUFFIX=""
6065 WINBIND_NSS_PTHREAD=""
6066
6067 case "$host_os" in
6068         *linux*)
6069                 NSSSONAMEVERSIONSUFFIX=".2"
6070                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
6071                 ;;
6072         *freebsd[[5-9]]*)
6073                 # FreeBSD winbind client is implemented as a wrapper around
6074                 # the Linux version.
6075                 NSSSONAMEVERSIONSUFFIX=".1"
6076                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
6077                     nsswitch/winbind_nss_linux.o"
6078                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
6079                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
6080                 ;;
6081
6082         *netbsd*[[3-9]]*)
6083                 # NetBSD winbind client is implemented as a wrapper
6084                 # around the Linux version. It needs getpwent_r() to
6085                 # indicate libc's use of the correct nsdispatch API.
6086                 #
6087                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
6088                         WINBIND_NSS_EXTRA_OBJS="\
6089                             nsswitch/winbind_nss_netbsd.o \
6090                             nsswitch/winbind_nss_linux.o"
6091                         WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
6092                         WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
6093                 else
6094                         HAVE_WINBIND=no
6095                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
6096                 fi
6097                 ;;
6098         *irix*)
6099                 # IRIX has differently named shared libraries
6100                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
6101                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
6102                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
6103                 ;;
6104         *solaris*)
6105                 # Solaris winbind client is implemented as a wrapper around
6106                 # the Linux version.
6107                 NSSSONAMEVERSIONSUFFIX=".1"
6108                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
6109                     nsswitch/winbind_nss_linux.o"
6110                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
6111                 ;;
6112         *hpux11*)
6113                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
6114                 ;;
6115         *aix*)
6116                 # AIX has even differently named shared libraries.  No
6117                 # WINS support has been implemented yet.
6118                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
6119                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6120                 WINBIND_NSS="nsswitch/WINBIND"
6121                 WINBIND_WINS_NSS=""
6122                 ;;
6123         *)
6124                 HAVE_WINBIND=no
6125                 winbind_no_reason=", unsupported on $host_os"
6126                 ;;
6127 esac
6128
6129 # Check the setting of --with-winbind
6130
6131 AC_ARG_WITH(winbind,
6132 [  --with-winbind          Build winbind (default, if supported by OS)],
6133 [
6134   case "$withval" in
6135         yes)
6136                 HAVE_WINBIND=yes
6137                 ;;
6138         no)
6139                 HAVE_WINBIND=no
6140                 winbind_reason=""
6141                 ;;
6142   esac ],
6143 )
6144
6145 # We need unix domain sockets for winbind
6146
6147 if test x"$HAVE_WINBIND" = x"yes"; then
6148         if test x"$samba_cv_unixsocket" = x"no"; then
6149                 winbind_no_reason=", no unix domain socket support on $host_os"
6150                 HAVE_WINBIND=no
6151         fi
6152 fi
6153
6154 # Display test results
6155
6156 if test x"$HAVE_WINBIND" = x"no"; then
6157         WINBIND_NSS=""
6158         WINBIND_WINS_NSS=""
6159 fi
6160
6161 BUILD_LIBWBCLIENT_SHARED=yes
6162
6163 AC_ARG_ENABLE(libwbclient-shared,
6164 [ --enable-libwbclient-shared   Build libwbclient as shared object (default=yes, \"no\" only for --enable-developer)],
6165         [if eval "test x$enable_developer = xyes -a x$enable_libwbclient_shared = xno" ; then
6166                 BUILD_LIBWBCLIENT_SHARED=no
6167         fi])
6168
6169 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6170         NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6171         ## Only worry about libwbclient if we have shared library support
6172         ## and winbindd
6173         LIBWBCLIENT_SHARED=bin/libwbclient.$SHLIBEXT
6174         LIBWBCLIENT=libwbclient
6175         INSTALL_LIBWBCLIENT=installlibwbclient
6176         UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6177         WINBIND_LIBS="-lwbclient"
6178         LDFLAGS="$LDFLAGS -L./bin"
6179 else
6180         LIBWBCLIENT_STATIC=bin/libwbclient.a
6181 fi
6182
6183 if test x"$HAVE_WINBIND" = x"yes"; then
6184         AC_MSG_RESULT(yes)
6185         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6186
6187         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6188         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6189         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6190                 PAM_MODULES="$PAM_MODULES pam_winbind"
6191                 INSTALL_PAM_MODULES="installpammodules"
6192                 UNINSTALL_PAM_MODULES="uninstallpammodules"
6193         fi
6194 else
6195         AC_MSG_RESULT(no$winbind_no_reason)
6196 fi
6197
6198 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
6199                         AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
6200
6201 AC_SUBST(WINBIND_NSS_PTHREAD)
6202 AC_SUBST(WINBIND_NSS)
6203 AC_SUBST(WINBIND_WINS_NSS)
6204 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6205 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6206 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
6207 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6208
6209 AC_SUBST(WINBIND_KRB5_LOCATOR)
6210
6211 # Solaris 10 does have new member in nss_XbyY_key
6212 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6213                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6214                 [#include <nss_dbdefs.h>])
6215
6216 # Solaris has some extra fields in struct passwd that need to be
6217 # initialised otherwise nscd crashes.
6218
6219 AC_CHECK_MEMBER(struct passwd.pw_comment,
6220                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6221                 [#include <pwd.h>])
6222
6223 AC_CHECK_MEMBER(struct passwd.pw_age,
6224                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6225                 [#include <pwd.h>])
6226
6227 # AIX 4.3.x and 5.1 do not have as many members in
6228 # struct secmethod_table as AIX 5.2
6229 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6230        [#include <usersec.h>])
6231 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6232        [#include <usersec.h>])
6233
6234 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6235 AC_TRY_COMPILE([#include <sys/types.h>
6236 #include <sys/socket.h>],
6237 [struct ucred cred;
6238  socklen_t cred_len;
6239  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6240 ],
6241 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6242 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6243     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6244 fi
6245
6246
6247 #################################################
6248 # Check to see if we should use the included popt
6249
6250 AC_ARG_WITH(included-popt,
6251 [  --with-included-popt    use bundled popt library, not from system],
6252 [
6253   case "$withval" in
6254         yes)
6255                 INCLUDED_POPT=yes
6256                 ;;
6257         no)
6258                 INCLUDED_POPT=no
6259                 ;;
6260   esac ],
6261 )
6262 if test x"$INCLUDED_POPT" != x"yes"; then
6263     AC_CHECK_LIB(popt, poptGetContext,
6264                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
6265 fi
6266
6267 AC_MSG_CHECKING(whether to use included popt)
6268 if test x"$INCLUDED_POPT" = x"yes"; then
6269     AC_MSG_RESULT(yes)
6270     BUILD_POPT='$(POPT_OBJ)'
6271     POPTLIBS='$(POPT_OBJ)'
6272     FLAGS1="-I\$(srcdir)/popt"
6273 else
6274     AC_MSG_RESULT(no)
6275         BUILD_POPT=""
6276     POPTLIBS="-lpopt"
6277 fi
6278 AC_SUBST(BUILD_POPT)
6279 AC_SUBST(POPTLIBS)
6280 AC_SUBST(FLAGS1)
6281
6282 #################################################
6283 # Check if user wants DNS service discovery support
6284
6285 AC_ARG_ENABLE(dnssd,
6286 [  --enable-dnssd          Enable DNS service discovery support (default=auto)])
6287
6288 AC_SUBST(DNSSD_LIBS)
6289 if test x"$enable_dnssd" != x"no"; then
6290     have_dnssd_support=yes
6291
6292     AC_CHECK_HEADERS(dns_sd.h)
6293     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6294         have_dnssd_support=no
6295     fi
6296
6297     # On Darwin the DNSSD API is in libc, but on other platforms it's
6298     # probably in -ldns_sd
6299     AC_CHECK_FUNCS(DNSServiceRegister)
6300     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6301     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6302             x"$ac_cv_lib_ext_DNSServiceRegister" != x"yes"; then
6303         have_dnssd_support=no
6304     fi
6305
6306     if test x"$have_dnssd_support" = x"yes"; then
6307         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6308                 [Whether to enable DNS service discovery support])
6309     else
6310         if test x"$enable_dnssd" = x"yes"; then
6311             AC_MSG_ERROR(DNS service discovery support not available)
6312         fi
6313     fi
6314
6315 fi
6316
6317 #################################################
6318 # Check to see if we should use the included iniparser
6319
6320 AC_ARG_WITH(included-iniparser,
6321 [  --with-included-iniparser    use bundled iniparser library, not from system],
6322 [
6323   case "$withval" in
6324         yes)
6325                 INCLUDED_INIPARSER=yes
6326                 ;;
6327         no)
6328                 INCLUDED_INIPARSER=no
6329                 ;;
6330   esac ],
6331 )
6332 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6333     AC_CHECK_LIB(iniparser, iniparser_load,
6334                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6335 fi
6336
6337 AC_MSG_CHECKING(whether to use included iniparser)
6338 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6339     AC_MSG_RESULT(yes)
6340     BUILD_INIPARSER='$(INIPARSER_OBJ)'
6341         INIPARSERLIBS=""
6342     FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
6343 else
6344     AC_MSG_RESULT(no)
6345         BUILD_INIPARSER=""
6346     INIPARSERLIBS="-liniparser"
6347 fi
6348 AC_SUBST(BUILD_INIPARSER)
6349 AC_SUBST(INIPARSERLIBS)
6350 AC_SUBST(FLAGS1)
6351
6352
6353
6354 # Checks for the vfs_fileid module
6355 # Start
6356 AC_CHECK_FUNC(getmntent)
6357
6358 AC_CHECK_HEADERS(sys/statfs.h)
6359
6360 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6361 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6362              AC_TRY_RUN([
6363                 #include <sys/types.h>
6364                 #include <sys/statfs.h>
6365                 int main(void)
6366                 {
6367                         struct statfs fsd;
6368                         fsid_t fsid = fsd.f_fsid;
6369                         return statfs (".", &fsd);
6370                 }],
6371                 vfsfileid_cv_statfs=yes,
6372                 vfsfileid_cv_statfs=no,
6373                 vfsfileid_cv_statfs=cross)
6374 ])
6375 AC_MSG_RESULT($vfsfileid_cv_statfs)
6376
6377 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6378         x"$vfsfileid_cv_statfs" = x"yes"; then
6379         default_shared_modules="$default_shared_modules vfs_fileid"
6380 fi
6381 # End
6382 # Checks for the vfs_fileid module
6383
6384
6385 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6386 do
6387         eval MODULE_DEFAULT_$i=STATIC
6388 done
6389
6390 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6391 do
6392         dnl Fall back to static if we cannot build shared libraries
6393         eval MODULE_DEFAULT_$i=STATIC
6394
6395         if test $BLDSHARED = true; then
6396                 eval MODULE_DEFAULT_$i=SHARED
6397         fi
6398 done
6399
6400 dnl Always built these modules static
6401 MODULE_rpc_spoolss=STATIC
6402 MODULE_rpc_srvsvc2=STATIC
6403 MODULE_idmap_tdb=STATIC
6404 MODULE_idmap_passdb=STATIC
6405 MODULE_idmap_nss=STATIC
6406
6407 MODULE_nss_info_template=STATIC
6408
6409 AC_ARG_WITH(static-modules,
6410 [  --with-static-modules=MODULES  Comma-separated list of names of modules to statically link in],
6411 [ if test $withval; then
6412         for i in `echo $withval | sed -e 's/,/ /g'`
6413         do
6414                 eval MODULE_$i=STATIC
6415         done
6416 fi ])
6417
6418 AC_ARG_WITH(shared-modules,
6419 [  --with-shared-modules=MODULES  Comma-separated list of names of modules to build shared],
6420 [ if test $withval; then
6421         for i in `echo $withval | sed -e 's/,/ /g'`
6422         do
6423                         eval MODULE_$i=SHARED
6424         done
6425 fi ])
6426
6427 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6428                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6429 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6430 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6431 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6432
6433
6434 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6435 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6436 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6437 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
6438 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6439 SMB_MODULE(rpc_svcctl2, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl2.$SHLIBEXT", RPC)
6440 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6441 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6442 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6443 SMB_MODULE(rpc_srvsvc2, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc2.$SHLIBEXT", RPC)
6444 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6445 SMB_MODULE(rpc_eventlog2, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog2.$SHLIBEXT", RPC)
6446 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6447 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6448 SMB_SUBSYSTEM(RPC,smbd/server.o)
6449
6450 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6451 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6452 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6453 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6454 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6455 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6456 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6457 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6458
6459 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6460 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6461
6462 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6463 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6464 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6465 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6466 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6467
6468 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6469 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6470 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6471 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6472 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6473 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6474 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6475 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6476
6477 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6478 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6479 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6480 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6481 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6482 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6483 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6484 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6485 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6486 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6487 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6488 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6489 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6490 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6491 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6492 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6493 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6494 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6495 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6496 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6497 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6498 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6499 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6500 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6501 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6502 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6503 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6504 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6505 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6506 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6507 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6508 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6509 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6510 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6511 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6512
6513
6514 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6515
6516 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6517
6518 #################################################
6519 # do extra things if we are running insure
6520
6521 if test "${ac_cv_prog_CC}" = "insure"; then
6522         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6523 fi
6524
6525 #################################################
6526 # If run from the build farm, enable NASTY hacks
6527 #################################################
6528 AC_MSG_CHECKING(whether to enable build farm hacks)
6529 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6530         AC_MSG_RESULT(yes)
6531         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6532 else
6533         AC_MSG_RESULT(no)
6534 fi
6535
6536 #################################################
6537 # check for bad librt/libpthread interactions
6538
6539 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6540     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6541     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6542     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6543
6544 SMB_IF_RTSIGNAL_BUG(
6545         [
6546             # Have RT_SIGNAL bug, need to check whether the problem will
6547             # affect anything we have configured.
6548
6549             rt_do_error=no
6550             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6551                 if test x"$rt_signal_lease_ok" = x"no" ; then
6552                     rt_do_error=yes
6553                 fi
6554             fi
6555
6556             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6557                 if test x"$rt_signal_notify_ok" = x"no" ; then
6558                     rt_do_error=yes
6559                 fi
6560             fi
6561
6562             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6563                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6564                 if test x"$rt_signal_aio_ok" = x"no" ; then
6565                     rt_do_error=yes
6566                 fi
6567             fi
6568
6569             if test x"$rt_do_error" = x"yes" ; then
6570                 SMB_IS_LIBPTHREAD_LINKED(
6571                     [
6572                         cat<<MSG
6573
6574 *** On this platforms, linking Samba against pthreads causes problems
6575 *** with the oplock and change notification mechanisms. You may be
6576 *** using pthreads as a side-effect of using the --with-aio-support
6577 *** or --with-profiling-data options. Please remove these and try again.
6578
6579 MSG
6580                     ],
6581                     [
6582                         cat<<MSG
6583
6584 *** On this platform, the oplock and change notification mechanisms do not
6585 *** appear to work. Please report this problem to samba-technical@samba.org
6586 *** and attach the config.log file from this directory.
6587
6588 MSG
6589                     ])
6590                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6591             fi
6592         ],
6593         [
6594             # no RT_SIGNAL bug, we are golden
6595             SMB_IS_LIBPTHREAD_LINKED(
6596                 [
6597                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6598                 ])
6599
6600         ],
6601         [
6602             # cross compiling, I hope you know what you are doing
6603             true
6604         ])
6605
6606 fi
6607
6608 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6609 LIB_REMOVE_USR_LIB(LDFLAGS)
6610 LIB_REMOVE_USR_LIB(LIBS)
6611 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6612
6613 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6614 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6615 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6616
6617 #################################################
6618 # Display summary of libraries detected
6619
6620 AC_MSG_RESULT([Using libraries:])
6621 AC_MSG_RESULT([    LIBS = $LIBS])
6622 if test x"$with_ads_support" != x"no"; then
6623     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6624 fi
6625 if test x"$with_ldap_support" != x"no"; then
6626     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6627 fi
6628 if test x"$with_dnsupdate_support" != x"no"; then
6629     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6630 fi
6631 if test x"$have_dnssd_support" != x"no"; then
6632     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6633 fi
6634 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6635
6636 #################################################
6637 # final configure stuff
6638
6639 AC_MSG_CHECKING([configure summary])
6640 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6641            AC_MSG_RESULT(yes),
6642            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6643            AC_MSG_WARN([cannot run when cross-compiling]))
6644
6645 dnl Merge in developer cflags from now on
6646 AC_SUBST(DEVELOPER_CFLAGS)
6647 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes"; then
6648     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6649 fi
6650
6651 builddir=`pwd`
6652 AC_SUBST(builddir)
6653
6654 # Stuff the smbd-only libraries at the end of the smbd link
6655 # path (if we have them).
6656 SMBD_LIBS="$samba_dmapi_libs"
6657 AC_SUBST(SMBD_LIBS)
6658
6659 AC_OUTPUT(Makefile library-versions
6660           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6661           lib/netapi/examples/Makefile
6662           pkgconfig/smbclient.pc
6663           pkgconfig/wbclient.pc
6664           pkgconfig/netapi.pc
6665           pkgconfig/smbsharemodes.pc
6666           )
6667
6668 #################################################
6669 # Print very concise instructions on building/use
6670 if test "x$enable_dmalloc" = xyes
6671 then
6672         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6673         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])
6674 fi