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