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