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