r10064: BUG 3052: adding OpenBSD timespec patch from Steve Williams <steve@celineands...
[tprouty/samba.git] / source3 / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2
3 dnl We must use autotools 2.53 or above
4 AC_PREREQ(2.53)
5 AC_INIT(include/includes.h)
6 AC_CONFIG_HEADER(include/config.h)
7
8 AC_DISABLE_STATIC
9 AC_ENABLE_SHARED
10
11 SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
12 echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
13
14 SAMBA_VERSION_SVN_REVISION=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_SVN_REVISION' | cut -d ' ' -f3-`
15 if test -n "${SAMBA_VERSION_SVN_REVISION}";then
16         echo "BUILD REVISION: ${SAMBA_VERSION_SVN_REVISION}"
17 fi
18
19 #################################################
20 # Directory handling stuff to support both the
21 # legacy SAMBA directories and FHS compliant
22 # ones...
23 AC_PREFIX_DEFAULT(/usr/local/samba)
24
25 lockdir="\${VARDIR}/locks"
26 piddir="\${VARDIR}/locks"
27 mandir="\${prefix}/man"
28 logfilebase="\${VARDIR}"
29 privatedir="\${prefix}/private"
30 libdir="\${prefix}/lib"
31 configdir="\${LIBDIR}"
32 swatdir="\${prefix}/swat"
33
34 AC_ARG_WITH(fhs, 
35 [  --with-fhs              Use FHS-compliant paths (default=no)],
36 [ case "$withval" in
37   yes)
38     lockdir="\${VARDIR}/lib/samba"
39     piddir="\${VARDIR}/run"
40     mandir="\${prefix}/share/man"
41     logfilebase="\${VARDIR}/log/samba"
42     privatedir="\${CONFIGDIR}/private"
43     libdir="\${prefix}/lib/samba"
44     configdir="${sysconfdir}/samba"
45     swatdir="\${DATADIR}/samba/swat"
46     ;;
47   esac])
48
49 #################################################
50 # set private directory location
51 AC_ARG_WITH(privatedir,
52 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
53 [ case "$withval" in
54   yes|no)
55   #
56   # Just in case anybody calls it without argument
57   #
58     AC_MSG_WARN([--with-privatedir called without argument - will use default])
59   ;;
60   * )
61     privatedir="$withval"
62     ;;
63   esac])
64
65 #################################################
66 # set lock directory location
67 AC_ARG_WITH(lockdir,
68 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
69 [ case "$withval" in
70   yes|no)
71   #
72   # Just in case anybody calls it without argument
73   #
74     AC_MSG_WARN([--with-lockdir called without argument - will use default])
75   ;;
76   * )
77     lockdir="$withval"
78     ;;
79   esac])
80
81 #################################################
82 # set pid directory location
83 AC_ARG_WITH(piddir,
84 [  --with-piddir=DIR       Where to put pid files ($ac_default_prefix/var/locks)],
85 [ case "$withval" in
86   yes|no)
87   #
88   # Just in case anybody calls it without argument
89   #
90     AC_MSG_WARN([--with-piddir called without argument - will use default])
91   ;;
92   * )
93     piddir="$withval"
94     ;;
95   esac])
96
97 #################################################
98 # set SWAT directory location
99 AC_ARG_WITH(swatdir,
100 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
101 [ case "$withval" in
102   yes|no)
103   #
104   # Just in case anybody does it
105   #
106     AC_MSG_WARN([--with-swatdir called without argument - will use default])
107   ;;
108   * )
109     swatdir="$withval"
110     ;;
111   esac])
112
113 #################################################
114 # set configuration directory location
115 AC_ARG_WITH(configdir,
116 [  --with-configdir=DIR    Where to put configuration files ($libdir)],
117 [ case "$withval" in
118   yes|no)
119   #
120   # Just in case anybody does it
121   #
122     AC_MSG_WARN([--with-configdir called without argument - will use default])
123   ;;
124   * )
125     configdir="$withval"
126     ;;
127   esac])
128
129 #################################################
130 # set log directory location
131 AC_ARG_WITH(logfilebase,
132 [  --with-logfilebase=DIR  Where to put log files ($VARDIR)],
133 [ case "$withval" in
134   yes|no)
135   #
136   # Just in case anybody does it
137   #
138     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
139   ;;
140   * )
141     logfilebase="$withval"
142     ;;
143   esac])
144
145 #################################################
146 # set lib directory location
147 AC_ARG_WITH(libdir,
148 [  --with-libdir=DIR       Where to put libdir ($libdir)],
149 [ case "$withval" in
150   yes|no)
151   #
152   # Just in case anybody does it
153   #
154     AC_MSG_WARN([--with-libdir without argument - will use default])
155   ;;
156   * )
157     libdir="$withval"
158     ;;
159   esac])
160
161 #################################################
162 # set lib directory location
163 AC_ARG_WITH(mandir,
164 [  --with-mandir=DIR       Where to put man pages ($mandir)],
165 [ case "$withval" in
166   yes|no)
167   #
168   # Just in case anybody does it
169   #
170     AC_MSG_WARN([--with-mandir without argument - will use default])
171   ;;
172   * )
173     mandir="$withval"
174     ;;
175   esac])
176
177 AC_ARG_WITH(cfenc,
178 [  --with-cfenc=HEADERDIR  Use internal CoreFoundation encoding API
179                           for optimization (Mac OS X/Darwin only)],
180 [
181 # May be in source $withval/CoreFoundation/StringEncodings.subproj.
182 # Should have been in framework $withval/CoreFoundation.framework/Headers.
183 for d in \
184     $withval/CoreFoundation/StringEncodings.subproj \
185     $withval/StringEncodings.subproj \
186     $withval/CoreFoundation.framework/Headers \
187     $withval/Headers \
188     $withval
189 do
190     if test -r $d/CFStringEncodingConverter.h; then
191         ln -sfh $d include/CoreFoundation
192     fi
193 done
194 ])
195
196 AC_SUBST(configdir)
197 AC_SUBST(lockdir)
198 AC_SUBST(piddir)
199 AC_SUBST(logfilebase)
200 AC_SUBST(privatedir)
201 AC_SUBST(swatdir)
202 AC_SUBST(bindir)
203 AC_SUBST(sbindir)
204
205 dnl Unique-to-Samba variables we'll be playing with.
206 AC_SUBST(SHELL)
207 AC_SUBST(LDSHFLAGS)
208 AC_SUBST(SONAMEFLAG)
209 AC_SUBST(SHLD)
210 AC_SUBST(HOST_OS)
211 AC_SUBST(PICFLAGS)
212 AC_SUBST(PICSUFFIX)
213 AC_SUBST(libc_cv_fpie)
214 AC_SUBST(PIE_CFLAGS)
215 AC_SUBST(PIE_LDFLAGS)
216 AC_SUBST(SHLIBEXT)
217 AC_SUBST(INSTALLCLIENT)
218 AC_SUBST(INSTALLCLIENTCMD_SH)
219 AC_SUBST(INSTALLCLIENTCMD_A)
220 AC_SUBST(LIBSMBCLIENT_SHARED)
221 AC_SUBST(LIBSMBCLIENT)
222 AC_SUBST(LIBSMBSHAREMODES_SHARED)
223 AC_SUBST(LIBSMBSHAREMODES)
224 AC_SUBST(PRINT_LIBS)
225 AC_SUBST(AUTH_LIBS)
226 AC_SUBST(ACL_LIBS)
227 AC_SUBST(PASSDB_LIBS)
228 AC_SUBST(IDMAP_LIBS)
229 AC_SUBST(KRB5_LIBS)
230 AC_SUBST(LDAP_LIBS)
231 AC_SUBST(SHLIB_PROGS)
232 AC_SUBST(SMBWRAPPER)
233 AC_SUBST(SMBWRAP_OBJS)
234 AC_SUBST(SMBWRAP_INC)
235 AC_SUBST(EXTRA_BIN_PROGS)
236 AC_SUBST(EXTRA_SBIN_PROGS)
237 AC_SUBST(EXTRA_ALL_TARGETS)
238
239 # Set defaults
240 PIE_CFLAGS=""
241 PIE_LDFLAGS=""
242 AC_ARG_ENABLE(pie, [  --enable-pie            Turn on pie support if available (default=yes)])
243
244 if test "x$enable_pie" != xno
245 then
246         AC_CACHE_CHECK(for -fPIE, libc_cv_fpie, [dnl
247                 cat > conftest.c <<EOF
248 int foo;
249 main () { return 0;}
250 EOF
251                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
252                 then
253                         libc_cv_fpie=yes
254                         PIE_CFLAGS="-fPIE"
255                         PIE_LDFLAGS="-pie"
256                 fi
257                 rm -f conftest*])
258 fi
259 if test "x$PIE_CFLAGS" = x
260 then
261         libc_cv_fpie=no
262 fi
263
264 AC_ARG_ENABLE(debug, 
265 [  --enable-debug          Turn on compiler debugging information (default=no)],
266     [if eval "test x$enable_debug = xyes"; then
267         CFLAGS="${CFLAGS} -g"
268     fi])
269
270 AC_SUBST(SOCKWRAP)
271 AC_ARG_ENABLE(socket-wrapper, 
272 [  --enable-socket-wrapper         Turn on socket wrapper library (default=no)],
273     [if eval "test x$enable_socket_wrapper = xyes"; then
274         AC_DEFINE(SOCKET_WRAPPER,1,[Use socket wrapper library])
275         SOCKWRAP="\$(SOCKET_WRAPPER_OBJ)"
276     fi])
277
278 # compile with optimization and without debugging by default, but
279 # allow people to set their own preference.
280 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
281 # if it has no value.  This prevent *very* large debug binaries from occurring
282 # by default.
283 if test "x$CFLAGS" = x; then
284   CFLAGS="-O"
285 fi
286
287 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_"
288
289 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
290     [if eval "test x$enable_developer = xyes"; then
291         developer=yes
292         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
293         # Add -Wdeclaration-after-statement if compiler supports it
294         AC_CACHE_CHECK(
295           [that the C compiler understands -Wdeclaration-after-statement],
296           samba_cv_HAVE_Wdeclaration_after_statement, [
297           AC_TRY_RUN_STRICT([
298             int main(void)
299             {
300                 return 0;
301             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
302             samba_cv_HAVE_Wdeclaration_after_statement=yes,
303             samba_cv_HAVE_Wdeclaration_after_statement=no,
304             samba_cv_HAVE_Wdeclaration_after_statement=cross)
305        ])
306        if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
307             CFLAGS="${CFLAGS} -Wdeclaration-after-statement"
308        fi
309     fi])
310
311 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
312     [if eval "test x$enable_krb5developer = xyes"; then
313         developer=yes
314         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
315     fi])
316
317 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
318
319 if test "x$enable_dmalloc" = xyes
320 then
321         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
322         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
323                   [Define to check invariants around some common functions])
324         LIBS="$LIBS -ldmalloc"  
325 fi
326
327 dnl Checks for programs.
328
329 ##
330 ## for some reason this macro resets the CFLAGS
331 ## so save and restore
332 ##
333 OLD_CFLAGS=${CFLAGS}
334 AC_PROG_CC
335 CFLAGS=${OLD_CFLAGS}
336
337 OLD_CFLAGS=${CFLAGS}
338 AC_PROG_CPP
339 CFLAGS=${OLD_CFLAGS}
340
341 AC_PROG_INSTALL
342 AC_PROG_AWK
343 AC_PATH_PROG(PERL, perl)
344
345 AC_CHECK_TOOL(AR, ar)
346
347 dnl Check if we use GNU ld
348 LD=ld
349 AC_PROG_LD_GNU
350
351 dnl Certain versions of GNU ld the default is not to have the 
352 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
353 dnl warnings when building modules.
354 if test "$ac_cv_prog_gnu_ld" = "yes"; then
355         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
356         AC_MSG_CHECKING(GNU ld release date)
357         changequote(,)dnl
358         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'`
359         changequote([,])dnl
360         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
361         if test -n "$ac_cv_gnu_ld_date"; then
362            if test "$ac_cv_gnu_ld_date" -lt 20030217; then
363               ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
364            fi
365         else
366            AC_MSG_CHECKING(GNU ld release version)
367            changequote(,)dnl
368            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
369            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
370            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
371            changequote([,])dnl
372            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
373            AC_MSG_CHECKING(GNU ld release version major)
374            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
375            AC_MSG_CHECKING(GNU ld release version minor)
376            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
377            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
378              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
379            fi
380         fi
381 fi
382
383 dnl needed before AC_TRY_COMPILE
384 AC_ISC_POSIX
385
386 dnl look for executable suffix
387 AC_EXEEXT
388
389 dnl Check if C compiler understands -c and -o at the same time
390 AC_PROG_CC_C_O
391 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
392       BROKEN_CC=
393 else
394       BROKEN_CC=#
395 fi
396 AC_SUBST(BROKEN_CC)
397
398 dnl Check if the C compiler understands -Werror
399 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
400  AC_TRY_RUN_STRICT([
401   int main(void)
402   {
403         return 0;
404   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
405   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
406 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
407    Werror_FLAGS="-Werror"
408 else 
409 dnl Check if the C compiler understands -w2
410 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
411  AC_TRY_RUN_STRICT([
412   int main(void)
413   {
414         return 0;
415   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
416   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
417 if test x"$samba_cv_HAVE_w2" = x"yes"; then
418    Werror_FLAGS="-w2"
419 fi
420 fi
421
422 dnl Check if the C compiler understands volatile (it should, being ANSI).
423 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
424     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
425         samba_cv_volatile=yes,samba_cv_volatile=no)])
426 if test x"$samba_cv_volatile" = x"yes"; then
427    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
428 fi
429
430 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
431 AC_MSG_CHECKING(uname -s)
432 AC_MSG_RESULT(${UNAME_S})
433
434 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
435 AC_MSG_CHECKING(uname -r)
436 AC_MSG_RESULT(${UNAME_R})
437
438 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
439 AC_MSG_CHECKING(uname -m)
440 AC_MSG_RESULT(${UNAME_M})
441
442 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
443 AC_MSG_CHECKING(uname -p)
444 AC_MSG_RESULT(${UNAME_P})
445
446 AC_CANONICAL_SYSTEM
447
448 dnl Add #include for broken IRIX header files
449   case "$host_os" in
450         *irix6*) AC_ADD_INCLUDE(<standards.h>)
451         ;;
452 esac
453
454 AC_VALIDATE_CACHE_SYSTEM_TYPE
455
456 DYNEXP=
457
458 dnl Add modules that have to be built by default here
459 dnl These have to be built static:
460 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_reg rpc_lsa_ds rpc_wks rpc_svcctl rpc_net rpc_dfs rpc_srv rpc_spoolss rpc_eventlog auth_rhosts auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin printerdb_file"
461
462 dnl These are preferably build shared, and static if dlopen() is not available
463 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"
464
465 if test "x$developer" = xyes; then
466    default_static_modules="$default_static_modules rpc_echo"
467    default_shared_modules="$default_shared_modules charset_weird"
468 fi
469
470 #
471 # Config CPPFLAG settings for strange OS's that must be set
472 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
473 # case statement; its first reference must be unconditional.
474 #
475 case "$host_os" in
476 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
477     *hpux*)
478     
479       AC_PROG_CC_FLAG(Ae)
480       # mmap on HPUX is completely broken...
481       AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
482       if test $ac_cv_prog_cc_Ae = yes; then
483         CPPFLAGS="$CPPFLAGS -Ae"
484       fi
485 #
486 # Defines needed for HPUX support.
487 # HPUX has bigcrypt but (sometimes?) doesn't use it for
488 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
489 #
490       case `uname -r` in
491                         *9*|*10*)
492                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
493                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
494                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
495                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
496                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
497                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
498                                 ;;
499                         *11*)
500                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
501                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
502                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
503                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
504                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
505                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
506                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
507                                 ;;
508       esac
509       ;;
510
511 #
512 # CRAY Unicos has broken const handling
513        *unicos*)
514           AC_MSG_RESULT([disabling const])
515           CPPFLAGS="$CPPFLAGS -Dconst="
516           ;;
517         
518 #
519 # AIX4.x doesn't even admit to having large
520 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
521 #
522     *aix4*)
523           AC_MSG_RESULT([enabling large file support])
524       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
525           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
526       ;;    
527 #
528 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
529 # to the existance of large files..
530 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
531 # recommendations on large file support, however it makes the
532 # compile work using gcc 2.7 and 2.8, whereas using the Sun
533 # recommendation makes the compile fail on gcc2.7. JRA.
534 #
535 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
536 #
537         *solaris*)
538                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
539                 case `uname -r` in
540                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
541                                 AC_MSG_RESULT([no large file support])
542                                 ;;
543                         5.*)
544                         AC_MSG_RESULT([enabling large file support])
545                         if test "$ac_cv_prog_gcc" = yes; then
546                                 ${CC-cc} -v >conftest.c 2>&1
547                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
548                                 rm -fr conftest.c
549                                 case "$ac_cv_gcc_compiler_version_number" in
550                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
551                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
552                                                 LDFLAGS="$LDFLAGS -lthread"
553                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
554                                                 ;;
555                                         *)
556                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
557                                                 LDFLAGS="$LDFLAGS -lthread"
558                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
559                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
560                                                 ;;
561                                 esac
562                         else
563                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
564                                 LDFLAGS="$LDFLAGS -lthread"
565                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
566                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
567                         fi
568                         ;;
569                 esac
570                 ;;
571 #
572 # IRIX uses SYSV printing.  Make sure to set that here
573 #
574         *irix*)
575                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
576                 ;;
577         *freebsd*|*dragonfly*)
578                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
579                 ;;
580 #
581 # VOS may need to have POSIX support and System V compatibility enabled.
582 #
583     *vos*)
584     case "$CPPFLAGS" in
585           *-D_POSIX_C_SOURCE*)
586                 ;;
587           *)
588                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
589                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
590                 ;;
591     esac
592     case "$CPPFLAGS" in
593           *-D_SYSV*|*-D_SVID_SOURCE*)
594                 ;;
595           *)
596                 CPPFLAGS="$CPPFLAGS -D_SYSV"
597                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
598     esac
599     ;;
600 #
601 # Tests needed for SINIX large file support.
602 #
603     *sysv4*)
604       if test $host = mips-sni-sysv4 ; then
605         AC_MSG_CHECKING([for LFS support])
606         old_CPPFLAGS="$CPPFLAGS"
607         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
608         AC_TRY_RUN([
609 #include <unistd.h>
610 main () {
611 #if _LFS64_LARGEFILE == 1
612 exit(0);
613 #else
614 exit(1);
615 #endif
616 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
617         CPPFLAGS="$old_CPPFLAGS"
618         if test x$SINIX_LFS_SUPPORT = xyes ; then
619           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
620                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
621           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
622           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
623           LIBS="`getconf LFS64_LIBS` $LIBS"
624         fi
625       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
626       fi
627     ;;
628
629 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
630 #
631     *linux*)
632         AC_MSG_CHECKING([for LFS support])
633         old_CPPFLAGS="$CPPFLAGS"
634         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
635        AC_TRY_RUN([
636 #include <unistd.h>
637 #include <sys/utsname.h>
638 #include <string.h>
639 #include <stdlib.h>
640 main() {
641 #if _LFS64_LARGEFILE == 1
642        struct utsname uts;
643        char *release;
644        int major, minor;
645
646        /* Ensure this is glibc 2.2 or higher */
647 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
648        int libc_major = __GLIBC__;
649        int libc_minor = __GLIBC_MINOR__;
650
651        if (libc_major < 2)
652               exit(1);
653        if (libc_minor < 2)
654               exit(1);
655 #endif
656
657        /* Ensure this is kernel 2.4 or higher */
658
659        uname(&uts);
660        release = strdup(uts.release);
661        major = atoi(strsep(&release, "."));
662        minor = atoi(strsep(&release, "."));
663
664        if (major > 2 || (major == 2 && minor > 3))
665                exit(0);
666        exit(1);
667 #else
668        exit(1);
669 #endif
670 }
671 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
672         CPPFLAGS="$old_CPPFLAGS"
673         if test x$LINUX_LFS_SUPPORT = xyes ; then
674                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
675                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
676                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
677                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
678         fi
679         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
680         ;;
681
682 #
683 # MacOS X is the *only* system that uses compose character in utf8. This
684 # is so horribly broken....
685 #
686     *darwin*)
687         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
688 # Add Fink directories for various packages, like dlcompat.
689 # Note: iconv does that explicitly below, but other packages
690 # don't.
691         CPPFLAGS="$CPPFLAGS -I/sw/include"
692         LDFLAGS="$LDFLAGS -L/sw/lib"
693
694 # If we have dlsym_prepend_underscore (from Fink's dlcompat),
695 # use that instead of plain dlsym.
696
697         AC_CHECK_LIB(dl,dlopen)
698         AC_CHECK_FUNCS(dlsym_prepend_underscore,[CPPFLAGS="$CPPFLAGS -Ddlsym=dlsym_prepend_underscore"])
699
700 # Add a system specific charset module.
701
702         default_shared_modules="$default_shared_modules charset_macosxfs"
703         ;;
704     *hurd*)
705         AC_MSG_CHECKING([for LFS support])
706         old_CPPFLAGS="$CPPFLAGS"
707         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
708         AC_TRY_RUN([
709 #include <unistd.h>
710 main () {
711 #if _LFS64_LARGEFILE == 1
712 exit(0);
713 #else
714 exit(1);
715 #endif
716 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
717         CPPFLAGS="$old_CPPFLAGS"
718         if test x$GLIBC_LFS_SUPPORT = xyes ; then
719           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
720                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
721           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
722         fi
723       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
724     ;;
725
726 esac
727
728 AC_INLINE
729 AC_HEADER_STDC
730 AC_HEADER_DIRENT
731 AC_HEADER_TIME
732 AC_HEADER_SYS_WAIT
733 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)
734 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h alloca.h)
735 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
736 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h)
737 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
738 AC_CHECK_HEADERS(sys/un.h)
739 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
740 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
741 AC_CHECK_HEADERS(sys/sysmacros.h security/_pam_macros.h dlfcn.h)
742 AC_CHECK_HEADERS(sys/syslog.h syslog.h execinfo.h)
743 AC_CHECK_HEADERS(langinfo.h locale.h)
744
745 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
746 #if HAVE_RPC_RPC_H
747 #include <rpc/rpc.h>
748 #endif
749 ]])
750
751 ## These fail to compile on IRIX so just check for their presence
752 AC_CHECK_HEADERS(sys/mode.h,,,)
753
754 # Look for Darwin headers
755 old_CPPFLAGS="$CPPFLAGS"
756 CPPFLAGS="-Iinclude $CPPFLAGS"
757 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
758 CPPFLAGS="$old_CPPFLAGS"
759
760 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
761 # subdirectory of headers.
762 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
763
764 # check for linux on amd64 since valgrind is not quite there yet
765 case "$host_os" in
766         *linux*)
767                 case "$UNAME_P" in
768                         *x86_64*)
769                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
770                                 ;;
771                 esac
772                 ;;
773 esac
774
775
776 #
777 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
778 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
779 #
780 case "$host_os" in
781     *hpux*)
782                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
783                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
784                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
785                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
786                 fi
787         ;;
788 esac
789 AC_CHECK_HEADERS(shadow.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
790 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h security/pam_appl.h)
791 AC_CHECK_HEADERS(stropts.h poll.h)
792 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
793 AC_CHECK_HEADERS(sys/acl.h sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
794 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
795
796 AC_CHECK_HEADERS(netinet/ip.h,,,[[
797 #include <sys/types.h>
798 #if HAVE_SYS_SOCKET_H
799 #include <sys/socket.h>
800 #endif
801 #include <netinet/in.h>
802 #if HAVE_NETINET_IN_SYSTM_H
803 #include <netinet/in_systm.h>
804 #endif
805 ]])
806
807 AC_CHECK_HEADERS(net/if.h,,,[[
808 #include <sys/types.h>
809 #if HAVE_SYS_SOCKET_H
810 #include <sys/socket.h>
811 #endif
812 ]])
813
814 AC_CHECK_HEADERS(security/pam_modules.h,,,[[
815 #if HAVE_SECURITY_PAM_APPL_H
816 #include <security/pam_appl.h>
817 #endif
818 ]])
819
820 # For experimental utmp support (lastlog on some BSD-like systems)
821 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
822  
823 AC_CHECK_SIZEOF(int,cross)
824 AC_CHECK_SIZEOF(long,cross)
825 AC_CHECK_SIZEOF(short,cross)
826
827 AC_C_CONST
828 AC_C_INLINE
829 AC_C_BIGENDIAN
830 AC_C_CHAR_UNSIGNED
831
832 AC_TYPE_SIGNAL
833 AC_TYPE_UID_T
834 AC_TYPE_MODE_T
835 AC_TYPE_OFF_T
836 AC_TYPE_SIZE_T
837 AC_TYPE_PID_T
838 AC_STRUCT_ST_RDEV
839 AC_DIRENT_D_OFF
840 AC_CHECK_TYPE(ino_t,unsigned)
841 AC_CHECK_TYPE(loff_t,off_t)
842 AC_CHECK_TYPE(offset_t,loff_t)
843 AC_CHECK_TYPE(ssize_t, int)
844 AC_CHECK_TYPE(wchar_t, unsigned short)
845
846 ############################################
847 # for cups support we need libcups, and a handful of header files
848
849 AC_ARG_ENABLE(cups,
850 [  --enable-cups           Turn on CUPS support (default=auto)])
851
852 if test x$enable_cups != xno; then
853         AC_PATH_PROG(CUPS_CONFIG, cups-config)
854
855         if test "x$CUPS_CONFIG" != x; then
856                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
857                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
858                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
859                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
860         elif test x"$enable_cups" = x"yes"; then
861                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
862         fi
863 fi
864
865 ############################################
866 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
867 AC_SEARCH_LIBS(dlopen, [dl])
868 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
869
870 ############################################
871 # check if the compiler can do immediate structures
872 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
873     AC_TRY_COMPILE([
874 #include <stdio.h>],
875 [
876    typedef struct {unsigned x;} FOOBAR;
877    #define X_FOOBAR(x) ((FOOBAR) { x })
878    #define FOO_ONE X_FOOBAR(1)
879    FOOBAR f = FOO_ONE;   
880    static struct {
881         FOOBAR y; 
882         } f2[] = {
883                 {FOO_ONE}
884         };   
885 ],
886         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
887 if test x"$samba_cv_immediate_structures" = x"yes"; then
888    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
889 fi
890
891 ############################################
892 # check if the compiler can do immediate structures
893 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
894     AC_TRY_LINK([
895 #include <stdio.h>],
896 [
897                 if (0) {
898                    this_function_does_not_exist();
899                 } else {
900                   return 1;
901                 }
902
903 ],
904         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
905 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
906    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
907 fi
908
909 ############################################
910 # check for unix domain sockets
911 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
912     AC_TRY_COMPILE([
913 #include <sys/types.h>
914 #include <stdlib.h>
915 #include <stddef.h>
916 #include <sys/socket.h>
917 #include <sys/un.h>],
918 [
919   struct sockaddr_un sunaddr; 
920   sunaddr.sun_family = AF_UNIX;
921 ],
922         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
923 if test x"$samba_cv_unixsocket" = x"yes"; then
924    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
925 fi
926
927
928 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
929     AC_TRY_COMPILE([
930 #include <sys/types.h>
931 #if STDC_HEADERS
932 #include <stdlib.h>
933 #include <stddef.h>
934 #endif
935 #include <sys/socket.h>],[socklen_t i = 0],
936         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
937 if test x"$samba_cv_socklen_t" = x"yes"; then
938    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
939 fi
940
941 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
942     AC_TRY_COMPILE([
943 #include <sys/types.h>
944 #if STDC_HEADERS
945 #include <stdlib.h>
946 #include <stddef.h>
947 #endif
948 #include <signal.h>],[sig_atomic_t i = 0],
949         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
950 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
951    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
952 fi
953
954 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
955     AC_TRY_COMPILE([
956 #include <sys/types.h>
957 #if STDC_HEADERS
958 #include <stdlib.h>
959 #include <stddef.h>
960 #endif
961 #if TIME_WITH_SYS_TIME
962 # include <sys/time.h>
963 # include <time.h>
964 #else
965 # if HAVE_SYS_TIME_H
966 #  include <sys/time.h>
967 # else
968 #  include <time.h>
969 # endif
970 #endif
971 #if HAVE_AIO_H
972 #include <aio.h>
973 #endif
974 ],[struct timespec ts;],
975         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
976 if test x"$samba_cv_struct_timespec" = x"yes"; then
977    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
978 fi
979
980 # stupid headers have the functions but no declaration. grrrr.
981 AC_HAVE_DECL(errno, [#include <errno.h>])
982 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
983 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
984 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
985 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
986 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
987 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
988
989 # and glibc has setresuid under linux but the function does
990 # nothing until kernel 2.1.44! very dumb.
991 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
992     AC_TRY_RUN([#include <errno.h>
993 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
994         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
995 if test x"$samba_cv_have_setresuid" = x"yes"; then
996     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
997 fi
998
999 # Do the same check for setresguid...
1000 #
1001 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1002     AC_TRY_RUN([#include <unistd.h>
1003 #include <errno.h>
1004 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1005         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1006 if test x"$samba_cv_have_setresgid" = x"yes"; then
1007     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1008 fi
1009
1010 AC_FUNC_MEMCMP
1011
1012 ###############################################
1013 # Readline included by default unless explicitly asked not to
1014 test "${with_readline+set}" != "set" && with_readline=yes
1015
1016 # test for where we get readline() from
1017 AC_MSG_CHECKING(whether to use readline)
1018 AC_ARG_WITH(readline,
1019 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
1020 [  case "$with_readline" in
1021   yes)
1022     AC_MSG_RESULT(yes)
1023
1024     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1025     AC_CHECK_HEADERS(readline/history.h)
1026
1027     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1028       for termlib in ncurses curses termcap terminfo termlib tinfo; do
1029        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1030       done
1031       AC_CHECK_LIB(readline, rl_callback_handler_install,
1032        [TERMLIBS="-lreadline $TERMLIBS"
1033        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1034        break], [TERMLIBS=], $TERMLIBS)])
1035     ;;
1036   no)
1037     AC_MSG_RESULT(no)
1038     ;;
1039   *)
1040     AC_MSG_RESULT(yes)
1041
1042     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1043     # alternate readline path
1044     _ldflags=${LDFLAGS}
1045     _cppflags=${CPPFLAGS}
1046
1047     # Add additional search path
1048     LDFLAGS="-L$with_readline/lib $LDFLAGS"
1049     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1050
1051     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1052     AC_CHECK_HEADERS(readline/history.h)
1053
1054     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1055       for termlib in ncurses curses termcap terminfo termlib; do
1056        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1057       done
1058       AC_CHECK_LIB(readline, rl_callback_handler_install,
1059        [TERMLDFLAGS="-L$with_readline/lib"
1060        TERMCPPFLAGS="-I$with_readline/include"
1061        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1062        TERMLIBS="-lreadline $TERMLIBS"
1063        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1064        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1065
1066     LDFLAGS=$_ldflags
1067     ;;
1068   esac],
1069   AC_MSG_RESULT(no)
1070 )
1071 AC_SUBST(TERMLIBS)
1072 AC_SUBST(TERMLDFLAGS)
1073
1074 # The readline API changed slightly from readline3 to readline4, so
1075 # code will generate warnings on one of them unless we have a few
1076 # special cases.
1077 AC_CHECK_LIB(readline, rl_completion_matches,
1078              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
1079                         [Do we have rl_completion_matches?])],
1080              [],
1081              [$TERMLIBS])
1082
1083 # The following test taken from the cvs sources
1084 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1085 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1086 # libsocket.so which has a bad implementation of gethostbyname (it
1087 # only looks in /etc/hosts), so we only look for -lsocket if we need
1088 # it.
1089 AC_CHECK_FUNCS(connect)
1090 if test x"$ac_cv_func_connect" = x"no"; then
1091     case "$LIBS" in
1092     *-lnsl*) ;;
1093     *) AC_CHECK_LIB(nsl_s, printf) ;;
1094     esac
1095     case "$LIBS" in
1096     *-lnsl*) ;;
1097     *) AC_CHECK_LIB(nsl, printf) ;;
1098     esac
1099     case "$LIBS" in
1100     *-lsocket*) ;;
1101     *) AC_CHECK_LIB(socket, connect) ;;
1102     esac
1103     case "$LIBS" in
1104     *-linet*) ;;
1105     *) AC_CHECK_LIB(inet, connect) ;;
1106     esac
1107     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1108     dnl has been cached.
1109     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
1110        test x"$ac_cv_lib_inet_connect" = x"yes"; then
1111         # ac_cv_func_connect=yes
1112         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
1113         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1114     fi
1115 fi
1116
1117 ###############################################
1118 # test for where we get yp_get_default_domain() from
1119 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1120 AC_CHECK_FUNCS(yp_get_default_domain)
1121
1122 # Check if we have execl, if not we need to compile smbrun.
1123 AC_CHECK_FUNCS(execl)
1124 if test x"$ac_cv_func_execl" = x"no"; then
1125     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1126 fi
1127
1128 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
1129 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync memset strlcpy strlcat setpgid)
1130 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1131 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1132 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1133 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1134 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1135 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1136 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1137 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1138 AC_CHECK_FUNCS(syslog vsyslog timegm)
1139 AC_CHECK_FUNCS(setlocale nl_langinfo)
1140 AC_CHECK_FUNCS(nanosleep)
1141 # setbuffer, shmget, shm_open are needed for smbtorture
1142 AC_CHECK_FUNCS(setbuffer shmget shm_open backtrace_symbols)
1143 AC_CHECK_HEADERS(libexc.h)
1144 AC_CHECK_LIB(exc, trace_back_stack)
1145
1146 # syscall() is needed for smbwrapper.
1147 AC_CHECK_FUNCS(syscall)
1148
1149 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1150 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1151 AC_CHECK_FUNCS(__getcwd _getcwd)
1152 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1153 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1154 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1155 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1156 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
1157 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1158 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1159 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1160 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1161 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1162 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1163
1164 #
1165
1166 #
1167 case "$host_os" in
1168     *linux*)
1169        # glibc <= 2.3.2 has a broken getgrouplist
1170        AC_TRY_RUN([
1171 #include <unistd.h>
1172 #include <sys/utsname.h>
1173 main() {
1174        /* glibc up to 2.3 has a broken getgrouplist */
1175 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1176        int libc_major = __GLIBC__;
1177        int libc_minor = __GLIBC_MINOR__;
1178
1179        if (libc_major < 2)
1180               exit(1);
1181        if ((libc_major == 2) && (libc_minor <= 3))
1182               exit(1);
1183 #endif
1184        exit(0);
1185 }
1186 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1187        if test x"$linux_getgrouplist_ok" = x"yes"; then
1188           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1189        fi
1190        ;;
1191     *)
1192        AC_CHECK_FUNCS(getgrouplist)
1193        ;;
1194 esac
1195
1196 #
1197 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1198 #
1199
1200 if test x$ac_cv_func_stat64 = xno ; then
1201   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1202   AC_TRY_LINK([
1203 #if defined(HAVE_UNISTD_H)
1204 #include <unistd.h>
1205 #endif
1206 #include <sys/stat.h>
1207 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1208   AC_MSG_RESULT([$ac_cv_func_stat64])
1209   if test x$ac_cv_func_stat64 = xyes ; then
1210     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1211   fi
1212 fi
1213
1214 if test x$ac_cv_func_lstat64 = xno ; then
1215   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1216   AC_TRY_LINK([
1217 #if defined(HAVE_UNISTD_H)
1218 #include <unistd.h>
1219 #endif
1220 #include <sys/stat.h>
1221 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1222   AC_MSG_RESULT([$ac_cv_func_lstat64])
1223   if test x$ac_cv_func_lstat64 = xyes ; then
1224     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1225   fi
1226 fi
1227
1228 if test x$ac_cv_func_fstat64 = xno ; then
1229   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1230   AC_TRY_LINK([
1231 #if defined(HAVE_UNISTD_H)
1232 #include <unistd.h>
1233 #endif
1234 #include <sys/stat.h>
1235 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1236   AC_MSG_RESULT([$ac_cv_func_fstat64])
1237   if test x$ac_cv_func_fstat64 = xyes ; then
1238     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1239   fi
1240 fi
1241
1242 #################################################
1243 # Check whether struct stat has timestamps with sub-second resolution.
1244 # At least IRIX and Solaris have these.
1245 #
1246 # We check that 
1247 #       all of st_mtim, st_atim and st_ctim exist
1248 #       all of the members are in fact of type struct timespec
1249 #
1250 # There is some conflicting standards weirdness about whether we should use
1251 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1252 # prefer struct timespec.
1253
1254 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1255     [
1256         AC_TRY_COMPILE(
1257             [
1258 #if TIME_WITH_SYS_TIME
1259 # include <sys/time.h>
1260 # include <time.h>
1261 #else
1262 # if HAVE_SYS_TIME_H
1263 #  include <sys/time.h>
1264 # else
1265 #  include <time.h>
1266 # endif
1267 #endif
1268 #ifdef HAVE_SYS_STAT_H
1269 #include <sys/stat.h>
1270 #endif
1271             ],
1272             [
1273                 struct timespec t;
1274                 struct stat s = {0};
1275                 t.tv_sec = s.st_mtim.tv_sec;
1276                 t.tv_nsec = s.st_mtim.tv_nsec;
1277                 t.tv_sec = s.st_ctim.tv_sec;
1278                 t.tv_nsec = s.st_ctim.tv_nsec;
1279                 t.tv_sec = s.st_atim.tv_sec;
1280                 t.tv_nsec = s.st_atim.tv_nsec;
1281             ],
1282             samba_stat_hires=yes, samba_stat_hires=no)
1283     ])
1284
1285 if test x"$samba_stat_hires" = x"yes" ; then
1286     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1287     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1288     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1289     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1290             [whether struct stat has sub-second timestamps])
1291 fi
1292
1293 #####################################
1294 # we might need the resolv library on some systems
1295 AC_CHECK_LIB(resolv, dn_expand)
1296
1297 #
1298 # Check for the functions putprpwnam, set_auth_parameters,
1299 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1300 # Needed for OSF1 and HPUX.
1301 #
1302
1303 AC_LIBTESTFUNC(security, putprpwnam)
1304 AC_LIBTESTFUNC(sec, putprpwnam)
1305
1306 AC_LIBTESTFUNC(security, set_auth_parameters)
1307 AC_LIBTESTFUNC(sec, set_auth_parameters)
1308
1309 # UnixWare 7.x has its getspnam in -lgen
1310 AC_LIBTESTFUNC(gen, getspnam)
1311
1312 AC_LIBTESTFUNC(security, getspnam)
1313 AC_LIBTESTFUNC(sec, getspnam)
1314
1315 AC_LIBTESTFUNC(security, bigcrypt)
1316 AC_LIBTESTFUNC(sec, bigcrypt)
1317
1318 AC_LIBTESTFUNC(security, getprpwnam)
1319 AC_LIBTESTFUNC(sec, getprpwnam)
1320
1321 ############################################
1322 # Check if we have libattr
1323 AC_SEARCH_LIBS(getxattr, [attr])
1324 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1325 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1326 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1327 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1328 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1329 # Check if we have extattr
1330 case "$host_os" in
1331   *freebsd4* | *dragonfly* )
1332     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1333     ;;
1334   *)
1335     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1336     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1337     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1338     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1339     ;;
1340 esac
1341
1342 # Assume non-shared by default and override below
1343 BLDSHARED="false"
1344
1345 # these are the defaults, good for lots of systems
1346 HOST_OS="$host_os"
1347 LDSHFLAGS="-shared"
1348 SONAMEFLAG="#"
1349 SHLD="\${CC} \${CFLAGS}"
1350 PICFLAGS=""
1351 PICSUFFIX="po"
1352 SHLIBEXT="so"
1353
1354 if test "$enable_shared" = "yes"; then
1355   # this bit needs to be modified for each OS that is suported by
1356   # smbwrapper. You need to specify how to create a shared library and
1357   # how to compile C code to produce PIC object files
1358
1359   AC_MSG_CHECKING([ability to build shared libraries])
1360
1361   # and these are for particular systems
1362   case "$host_os" in
1363                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1364                         BLDSHARED="true"
1365                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1366                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined" 
1367                         else
1368                                 LDSHFLAGS="-shared -Wl,-Bsymbolic" 
1369                         fi
1370                         DYNEXP="-Wl,--export-dynamic"
1371                         PICFLAGS="-fPIC"
1372                         SONAMEFLAG="-Wl,-soname="
1373                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1374                         ;;
1375                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1376                         BLDSHARED="true"
1377                         LDSHFLAGS="-G"
1378                         SONAMEFLAG="-h "
1379                         if test "${GCC}" = "yes"; then
1380                                 PICFLAGS="-fPIC"
1381                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1382                                         DYNEXP="-Wl,-E"
1383                                 fi
1384                         else
1385                                 PICFLAGS="-KPIC"
1386                                 ## ${CFLAGS} added for building 64-bit shared 
1387                                 ## libs using Sun's Compiler
1388                                 LDSHFLAGS="-G \${CFLAGS}"
1389                                 PICSUFFIX="po.o"
1390                         fi
1391                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1392                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1393                         ;;
1394                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1395                         BLDSHARED="true"
1396                         LDSHFLAGS="-G"
1397                         SONAMEFLAG="-Wl,-h,"
1398                         PICFLAGS="-KPIC"   # Is this correct for SunOS
1399                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1400                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1401                         ;;
1402                 *netbsd* | *freebsd* | *dragonfly* )  
1403                         BLDSHARED="true"
1404                         LDSHFLAGS="-shared"
1405                         DYNEXP="-Wl,--export-dynamic"
1406                         SONAMEFLAG="-Wl,-soname,"
1407                         PICFLAGS="-fPIC -DPIC"
1408                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1409                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1410                         ;;
1411                 *openbsd*)  BLDSHARED="true"
1412                         LDSHFLAGS="-shared"
1413                         DYNEXP="-Wl,-Bdynamic"
1414                         SONAMEFLAG="-Wl,-soname,"
1415                         PICFLAGS="-fPIC"
1416                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1417                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1418                         ;;
1419                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1420                         case "$host_os" in
1421                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1422                         ;;
1423                         esac
1424                         BLDSHARED="true"
1425                         LDSHFLAGS="-set_version sgi1.0 -shared"
1426                         SONAMEFLAG="-soname "
1427                         SHLD="\${LD}"
1428                         if test "${GCC}" = "yes"; then
1429                                 PICFLAGS="-fPIC"
1430                         else 
1431                                 PICFLAGS="-KPIC"
1432                         fi
1433                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1434                         ;;
1435                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1436                         BLDSHARED="true"
1437                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry,-berok"
1438                         DYNEXP="-Wl,-brtl,-bexpall"
1439                         PICFLAGS="-O2"
1440                         if test "${GCC}" != "yes"; then
1441                                 ## for funky AIX compiler using strncpy()
1442                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1443                         fi
1444
1445                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1446                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1447                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1448                         ;;
1449                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1450                         # Use special PIC flags for the native HP-UX compiler.
1451                         if test $ac_cv_prog_cc_Ae = yes; then
1452                                 BLDSHARED="true"
1453                                 SHLD="cc"
1454                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1455                                 SONAMEFLAG="-Wl,+h "
1456                                 PICFLAGS="+z"
1457                         elif test "${GCC}" = "yes"; then
1458                                 PICFLAGS="-fPIC"
1459                         fi
1460                         if test "$host_cpu" = "ia64"; then
1461                                 SHLIBEXT="so"
1462                                 DYNEXP="-Wl,-E,+b /usr/local/lib/hpux32:/usr/lib/hpux32"
1463                         else
1464                                 SHLIBEXT="sl"
1465                                 DYNEXP="-Wl,-E,+b /usr/local/lib:/usr/lib"
1466                         fi
1467                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1468                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1469                         ;;
1470                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1471                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1472                         ;;
1473                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1474                         BLDSHARED="true"
1475                         LDSHFLAGS="-shared"
1476                         SONAMEFLAG="-Wl,-soname,"
1477                         PICFLAGS="-fPIC"
1478                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1479                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1480                         ;;
1481                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1482                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1483                         ;;
1484                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1485                         BLDSHARED="true"
1486                         LDSHFLAGS="-shared"
1487                         SONAMEFLAG="-Wl,-soname,"
1488                         PICFLAGS="-KPIC"
1489                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1490                         ;;
1491                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1492                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1493                         ;;
1494                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1495                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1496                         ;;
1497                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1498                         case "$host" in
1499                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1500                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1501                                         fi
1502                                         LDSHFLAGS="-G"
1503                                         DYNEXP="-Bexport"
1504                                 ;;
1505                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1506                         esac
1507                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1508                         ;;
1509
1510                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1511                         if [ test "$GCC" != yes ]; then
1512                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1513                         fi
1514                         LDSHFLAGS="-G"
1515                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1516                         ;;
1517                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1518                         BLDSHARED="false"
1519                         LDSHFLAGS=""
1520                         ;;
1521
1522                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1523                         BLDSHARED="true"
1524                         LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1525                         SHLIBEXT="dylib"
1526                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1527                         ;;
1528
1529                 *)
1530                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1531                         ;;
1532   esac
1533   AC_SUBST(DYNEXP)
1534   AC_MSG_RESULT($BLDSHARED)
1535   AC_MSG_CHECKING([linker flags for shared libraries])
1536   AC_MSG_RESULT([$LDSHFLAGS])
1537   AC_MSG_CHECKING([compiler flags for position-independent code])
1538   AC_MSG_RESULT([$PICFLAGS])
1539 fi
1540
1541 #######################################################
1542 # test whether building a shared library actually works
1543 if test $BLDSHARED = true; then
1544 AC_CACHE_CHECK([whether building shared libraries actually works], 
1545                [ac_cv_shlib_works],[
1546    # try building a trivial shared library
1547    ac_cv_shlib_works=no
1548    # The $SHLD and $LDSHFLAGS variables may contain references to other
1549    # variables so they need to be eval'ed.
1550    $CC $CPPFLAGS $CFLAGS $PICFLAGS -c -o \
1551         shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c && \
1552    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1553         shlib.$PICSUFFIX && ac_cv_shlib_works=yes
1554    rm -f "shlib.$SHLIBEXT" shlib.$PICSUFFIX
1555 ])
1556 if test $ac_cv_shlib_works = no; then
1557    BLDSHARED=false
1558 fi
1559 fi
1560
1561 ################
1562
1563 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1564 AC_TRY_RUN([#include <stdio.h>
1565 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1566 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1567 if test x"$samba_cv_have_longlong" = x"yes"; then
1568     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1569 fi
1570
1571 #
1572 # Check if the compiler supports the LL prefix on long long integers.
1573 # AIX needs this.
1574
1575 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1576     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1577         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1578 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1579    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1580 fi
1581
1582   
1583 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1584 AC_TRY_RUN([#include <stdio.h>
1585 #include <sys/stat.h>
1586 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1587 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1588 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1589     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1590 fi
1591
1592 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1593 AC_TRY_RUN([
1594 #if defined(HAVE_UNISTD_H)
1595 #include <unistd.h>
1596 #endif
1597 #include <stdio.h>
1598 #include <sys/stat.h>
1599 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1600 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1601 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1602     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1603 fi
1604
1605 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1606 AC_TRY_RUN([#include <stdio.h>
1607 #include <sys/stat.h>
1608 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1609 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1610 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1611     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1612 fi
1613
1614 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1615 AC_TRY_RUN([
1616 #if defined(HAVE_UNISTD_H)
1617 #include <unistd.h>
1618 #endif
1619 #include <stdio.h>
1620 #include <sys/stat.h>
1621 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1622 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1623 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1624     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1625 fi
1626
1627 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1628 AC_TRY_RUN([
1629 #if defined(HAVE_UNISTD_H)
1630 #include <unistd.h>
1631 #endif
1632 #include <stdio.h>
1633 #include <sys/stat.h>
1634 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1635 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1636 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1637     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1638 fi
1639
1640 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
1641 AC_TRY_COMPILE([
1642 #if defined(HAVE_UNISTD_H)
1643 #include <unistd.h>
1644 #endif
1645 #include <sys/types.h>
1646 #include <dirent.h>],
1647 [DIR64 de;],
1648 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
1649 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1650     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
1651 fi
1652
1653 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1654 AC_TRY_COMPILE([
1655 #if defined(HAVE_UNISTD_H)
1656 #include <unistd.h>
1657 #endif
1658 #include <sys/types.h>
1659 #include <dirent.h>],
1660 [struct dirent64 de;],
1661 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1662 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1663     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1664 fi
1665
1666 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1667 AC_TRY_RUN([
1668 #if defined(HAVE_UNISTD_H)
1669 #include <unistd.h>
1670 #endif
1671 #include <sys/types.h>
1672 main() { dev_t dev; int i = major(dev); return 0; }],
1673 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1674 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1675     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1676 fi
1677
1678 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1679 AC_TRY_RUN([
1680 #if defined(HAVE_UNISTD_H)
1681 #include <unistd.h>
1682 #endif
1683 #include <sys/types.h>
1684 main() { dev_t dev; int i = minor(dev); return 0; }],
1685 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1686 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1687     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1688 fi
1689
1690 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
1691 AC_TRY_RUN([
1692 #if defined(HAVE_UNISTD_H)
1693 #include <unistd.h>
1694 #endif
1695 #include <sys/types.h>
1696 main() { dev_t dev = makedev(1,2); return 0; }],
1697 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
1698 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
1699     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
1700 fi
1701
1702 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1703 AC_TRY_RUN([#include <stdio.h>
1704 main() { char c; c=250; exit((c > 0)?0:1); }],
1705 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1706 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1707     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1708 fi
1709
1710 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1711 AC_TRY_COMPILE([#include <sys/types.h>
1712 #include <sys/socket.h>
1713 #include <netinet/in.h>],
1714 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1715 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1716 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1717     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
1718 fi
1719
1720 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1721 AC_TRY_COMPILE([#include <sys/types.h>
1722 #include <dirent.h>
1723 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1724 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1725 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1726     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1727 fi
1728
1729 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1730 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1731 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1732 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1733     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1734 fi
1735
1736 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1737 AC_TRY_RUN([
1738 #include <sys/time.h>
1739 #include <unistd.h>
1740 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1741            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1742 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1743     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
1744 fi
1745
1746 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
1747 AC_TRY_LINK([#include <stdarg.h>
1748 va_list ap1,ap2;], [va_copy(ap1,ap2);],
1749 samba_cv_HAVE_VA_COPY=yes,
1750 samba_cv_HAVE_VA_COPY=no)])
1751 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1752     AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
1753 else
1754     AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
1755     AC_TRY_LINK([#include <stdarg.h>
1756     va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1757     samba_cv_HAVE___VA_COPY=yes,
1758     samba_cv_HAVE___VA_COPY=no)])
1759     if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
1760         AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
1761     fi
1762 fi
1763
1764 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1765 AC_TRY_RUN([
1766 #include <sys/types.h>
1767 #include <stdarg.h>
1768 void foo(const char *format, ...) { 
1769        va_list ap;
1770        int len;
1771        char buf[5];
1772
1773        va_start(ap, format);
1774        len = vsnprintf(buf, 0, format, ap);
1775        va_end(ap);
1776        if (len != 5) exit(1);
1777
1778        va_start(ap, format);
1779        len = vsnprintf(0, 0, format, ap);
1780        va_end(ap);
1781        if (len != 5) exit(1);
1782
1783        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1784
1785        exit(0);
1786 }
1787 main() { foo("hello"); }
1788 ],
1789 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1790 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1791     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
1792 fi
1793
1794 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1795 AC_TRY_RUN([#include <sys/types.h>
1796 #include <dirent.h>
1797 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1798 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1799 di->d_name[0] == 0) exit(0); exit(1);} ],
1800 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1801 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1802     AC_DEFINE(HAVE_BROKEN_READDIR,1,[Whether readdir() is broken])
1803 fi
1804
1805 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1806 AC_TRY_COMPILE([#include <sys/types.h>
1807 #include <utime.h>],
1808 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1809 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1810 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1811     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
1812 fi
1813
1814 ##############
1815 # Check utmp details, but only if our OS offers utmp.h
1816 if test x"$ac_cv_header_utmp_h" = x"yes"; then
1817 dnl  utmp and utmpx come in many flavours
1818 dnl  We need to check for many of them
1819 dnl  But we don't need to do each and every one, because our code uses
1820 dnl  mostly just the utmp (not utmpx) fields.
1821
1822 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1823
1824 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1825 AC_TRY_COMPILE([#include <sys/types.h>
1826 #include <utmp.h>],
1827 [struct utmp ut;  ut.ut_name[0] = 'a';],
1828 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1829 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1830     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
1831 fi 
1832
1833 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1834 AC_TRY_COMPILE([#include <sys/types.h>
1835 #include <utmp.h>],
1836 [struct utmp ut;  ut.ut_user[0] = 'a';],
1837 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1838 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1839     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
1840 fi 
1841
1842 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1843 AC_TRY_COMPILE([#include <sys/types.h>
1844 #include <utmp.h>],
1845 [struct utmp ut;  ut.ut_id[0] = 'a';],
1846 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1847 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1848     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
1849 fi 
1850
1851 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1852 AC_TRY_COMPILE([#include <sys/types.h>
1853 #include <utmp.h>],
1854 [struct utmp ut;  ut.ut_host[0] = 'a';],
1855 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1856 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1857     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
1858 fi 
1859
1860 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1861 AC_TRY_COMPILE([#include <sys/types.h>
1862 #include <utmp.h>],
1863 [struct utmp ut;  time_t t; ut.ut_time = t;],
1864 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1865 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1866     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
1867 fi 
1868
1869 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1870 AC_TRY_COMPILE([#include <sys/types.h>
1871 #include <utmp.h>],
1872 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1873 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1874 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1875     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
1876 fi 
1877
1878 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1879 AC_TRY_COMPILE([#include <sys/types.h>
1880 #include <utmp.h>],
1881 [struct utmp ut;  ut.ut_type = 0;],
1882 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1883 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1884     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
1885 fi 
1886
1887 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1888 AC_TRY_COMPILE([#include <sys/types.h>
1889 #include <utmp.h>],
1890 [struct utmp ut;  ut.ut_pid = 0;],
1891 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1892 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1893     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
1894 fi 
1895
1896 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1897 AC_TRY_COMPILE([#include <sys/types.h>
1898 #include <utmp.h>],
1899 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1900 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1901 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1902     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
1903 fi 
1904
1905 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1906 AC_TRY_COMPILE([#include <sys/types.h>
1907 #include <utmp.h>],
1908 [struct utmp ut;  ut.ut_addr = 0;],
1909 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1910 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1911     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
1912 fi 
1913
1914 if test x$ac_cv_func_pututline = xyes ; then
1915   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1916   AC_TRY_COMPILE([#include <sys/types.h>
1917 #include <utmp.h>],
1918   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1919   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1920   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1921       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
1922   fi
1923 fi
1924
1925 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1926 AC_TRY_COMPILE([#include <sys/types.h>
1927 #include <utmpx.h>],
1928 [struct utmpx ux;  ux.ut_syslen = 0;],
1929 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1930 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1931     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
1932 fi 
1933
1934 fi
1935 # end utmp details
1936
1937
1938 ICONV_LOCATION=standard
1939 LOOK_DIRS="/usr /usr/local /sw /opt"
1940 AC_ARG_WITH(libiconv,
1941 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
1942 [
1943   if test "$withval" = "no" ; then
1944     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
1945   else
1946      if test "$withval" != "yes" ; then
1947         ICONV_PATH_SPEC=yes
1948         LOOK_DIRS="$withval"
1949      fi
1950   fi
1951 ])
1952
1953 for i in $LOOK_DIRS ; do
1954     save_LIBS=$LIBS
1955     save_LDFLAGS=$LDFLAGS
1956     save_CPPFLAGS=$CPPFLAGS
1957     ICONV_FOUND="no"
1958     unset libext
1959     CPPFLAGS="$CPPFLAGS -I$i/include"
1960 dnl This is here to handle -withval stuff for --with-libiconv
1961 dnl Perhaps we should always add a -L
1962
1963 dnl Check lib and lib32 library variants to cater for IRIX ABI-specific
1964 dnl installation paths. This gets a little tricky since we might have iconv
1965 dnl in both libiconv and in libc. In this case the jm_ICONV test will always
1966 dnl succeed when the header is found. To counter this, make sure the 
1967 dnl library directory is there and check the ABI directory first (which
1968 dnl should be harmless on other systems.
1969 dnl For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
1970     for l in "lib32" "lib" "lib/hpux32"; do
1971         if test -d "$i/$l" ; then
1972                 LDFLAGS="$save_LDFLAGS -L$i/$l"
1973                 LIBS=
1974                 export LDFLAGS LIBS CPPFLAGS
1975 dnl Try to find iconv(3)
1976                 jm_ICONV($i/$l)
1977                 if test x"$ICONV_FOUND" = "xyes" ; then
1978                     libext="$l"
1979                     break;
1980                 fi
1981         fi
1982     done
1983
1984     if test x"$ICONV_FOUND" = "xyes" ; then
1985         LDFLAGS=$save_LDFLAGS
1986         LIB_ADD_DIR(LDFLAGS, "$i/$libext")
1987         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
1988         LIBS="$save_LIBS"
1989         ICONV_LOCATION=$i
1990         export LDFLAGS LIBS CPPFLAGS
1991 dnl Now, check for a working iconv ... we want to do it here because
1992 dnl there might be a working iconv further down the list of LOOK_DIRS
1993
1994         ############
1995         # check for iconv in libc
1996         ic_save_LIBS="$LIBS"
1997         if test x"$ICONV_PATH_SPEC" = "xyes" ; then
1998            LIBS="$LIBS -L$ICONV_LOCATION/$libext"
1999         fi
2000         if test x"$jm_cv_lib_iconv" != x; then
2001            LIBS="$LIBS -l$jm_cv_lib_iconv"
2002         fi
2003 dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
2004         default_dos_charset=no
2005         default_display_charset=no
2006         default_unix_charset=no
2007
2008         # check for default dos charset name
2009         for j in CP850 IBM850 ; do
2010             rjs_CHARSET($j)
2011             if test x"$ICONV_CHARSET" = x"$j"; then
2012                 default_dos_charset="\"$j\""
2013                 break
2014             fi
2015         done
2016         # check for default display charset name
2017         for j in ASCII 646 ; do
2018             rjs_CHARSET($j)
2019             if test x"$ICONV_CHARSET" = x"$j"; then
2020                 default_display_charset="\"$j\""
2021                 break
2022             fi
2023         done
2024         # check for default unix charset name
2025         for j in UTF-8 UTF8 ; do
2026             rjs_CHARSET($j)
2027             if test x"$ICONV_CHARSET" = x"$j"; then
2028                 default_unix_charset="\"$j\""
2029                 break
2030             fi
2031         done
2032         
2033         if test "$default_dos_charset" != "no" -a \
2034                 "$default_dos_charset" != "cross" -a \
2035                 "$default_display_charset" != "no" -a \ 
2036                 "$default_display_charset" != "cross" -a \
2037                 "$default_unix_charset" != "no" -a \
2038                 "$default_unix_charset" != "cross"
2039         then
2040                 samba_cv_HAVE_NATIVE_ICONV=yes
2041         else if test "$default_dos_charset" = "cross" -o \
2042                      "$default_display_charset" = "cross" -o \
2043                      "$default_unix_charset" = "cross"
2044         then
2045                 samba_cv_HAVE_NATIVE_ICONV=cross
2046         else
2047                 samba_cv_HAVE_NATIVE_ICONV=no
2048         fi
2049         fi
2050 dnl ])
2051
2052         LIBS="$ic_save_LIBS"
2053         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
2054            CPPFLAGS=$save_CPPFLAGS
2055            LDFLAGS=$save_LDFLAGS
2056            LIBS=$save_LIBS
2057            if test x"$jm_cv_lib_iconv" != x; then
2058               LIBS="$LIBS -l$jm_cv_lib_iconv"
2059            fi
2060            dnl Add the flags we need to CPPFLAGS and LDFLAGS
2061            CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2062            LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2063            export CPPFLAGS
2064            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2065            AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2066            AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2067            AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2068            break
2069         fi
2070 dnl We didn't find a working iconv, so keep going
2071     fi
2072 dnl We only need to clean these up here for the next pass through the loop
2073     CPPFLAGS=$save_CPPFLAGS
2074     LDFLAGS=$save_LDFLAGS
2075     LIBS=$save_LIBS
2076     export LDFLAGS LIBS CPPFLAGS
2077 done
2078 unset libext
2079
2080
2081 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2082     AC_MSG_WARN([Sufficient support for iconv function was not found. 
2083     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2084    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2085    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2086    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2087 fi
2088
2089
2090 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2091 AC_TRY_RUN([
2092 #include <sys/types.h>
2093 #include <fcntl.h>
2094 #ifndef F_GETLEASE
2095 #define F_GETLEASE      1025
2096 #endif
2097 main() {
2098        int fd = open("/dev/null", O_RDONLY);
2099        return fcntl(fd, F_GETLEASE, 0) == -1;
2100 }
2101 ],
2102 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2103 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2104     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2105 fi
2106
2107 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2108 AC_TRY_RUN([
2109 #include <sys/types.h>
2110 #include <fcntl.h>
2111 #include <signal.h>
2112 #ifndef F_NOTIFY
2113 #define F_NOTIFY 1026
2114 #endif
2115 main() {
2116         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2117 }
2118 ],
2119 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2120 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2121     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2122 fi
2123
2124 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2125 AC_TRY_RUN([
2126 #include <sys/types.h>
2127 #include <fcntl.h>
2128 #include <signal.h>
2129 #include <sys/file.h>
2130 #ifndef LOCK_MAND
2131 #define LOCK_MAND       32
2132 #define LOCK_READ       64
2133 #endif
2134 main() {
2135         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2136 }
2137 ],
2138 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2139 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2140     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2141 fi
2142
2143
2144
2145
2146 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2147 AC_TRY_COMPILE([#include <sys/types.h>
2148 #include <fcntl.h>],
2149 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2150 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2151 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2152     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2153 fi
2154
2155 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
2156 AC_TRY_RUN([#include <sys/types.h>
2157 #include <sys/capability.h>
2158 main() {
2159  cap_t cap;
2160  if ((cap = cap_get_proc()) == NULL)
2161    exit(1);
2162  cap->cap_effective |= CAP_NETWORK_MGT;
2163  cap->cap_inheritable |= CAP_NETWORK_MGT;
2164  cap_set_proc(cap);
2165  exit(0);
2166 }
2167 ],
2168 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
2169 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
2170     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
2171 fi
2172
2173 #
2174 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2175 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2176 #
2177
2178 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2179 AC_TRY_COMPILE([#include <sys/types.h>
2180 #if defined(HAVE_RPC_RPC_H)
2181 #include <rpc/rpc.h>
2182 #endif],
2183 [int16 testvar;],
2184 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2185 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2186     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2187 fi
2188
2189 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2190 AC_TRY_COMPILE([#include <sys/types.h>
2191 #if defined(HAVE_RPC_RPC_H)
2192 #include <rpc/rpc.h>
2193 #endif],
2194 [uint16 testvar;],
2195 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2196 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2197     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2198 fi
2199
2200 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2201 AC_TRY_COMPILE([#include <sys/types.h>
2202 #if defined(HAVE_RPC_RPC_H)
2203 #include <rpc/rpc.h>
2204 #endif],
2205 [int32 testvar;],
2206 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2207 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2208     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2209 fi
2210
2211 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2212 AC_TRY_COMPILE([#include <sys/types.h>
2213 #if defined(HAVE_RPC_RPC_H)
2214 #include <rpc/rpc.h>
2215 #endif],
2216 [uint32 testvar;],
2217 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2218 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2219     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2220 fi
2221
2222 dnl
2223 dnl Some systems (SCO) have a problem including
2224 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2225 dnl as a #define in <prot.h> and as part of an enum
2226 dnl in <rpc/rpc.h>.
2227 dnl
2228
2229 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2230 AC_TRY_COMPILE([#include <sys/types.h>
2231 #ifdef HAVE_SYS_SECURITY_H
2232 #include <sys/security.h>
2233 #include <prot.h>
2234 #endif  /* HAVE_SYS_SECURITY_H */
2235 #if defined(HAVE_RPC_RPC_H)
2236 #include <rpc/rpc.h>
2237 #endif],
2238 [int testvar;],
2239 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2240 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2241     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2242 fi
2243
2244 AC_MSG_CHECKING([for test routines])
2245 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2246            AC_MSG_RESULT(yes),
2247            AC_MSG_ERROR([cant find test code. Aborting config]),
2248            AC_MSG_WARN([cannot run when cross-compiling]))
2249
2250 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2251 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2252            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2253 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2254     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2255 fi
2256
2257 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2258 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2259            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2260            samba_cv_HAVE_WORKING_AF_LOCAL=no,
2261            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2262 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2263 then
2264     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2265 fi
2266
2267 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2268 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2269            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2270 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2271     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2272 fi
2273
2274 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
2275 SAVE_CPPFLAGS="$CPPFLAGS"
2276 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt"
2277 AC_TRY_COMPILE([
2278 #define REPLACE_GETPASS 1
2279 #define NO_PROTO_H 1
2280 #define NO_CONFIG_H 1
2281 #define main dont_declare_main
2282 #include "${srcdir-.}/lib/getsmbpass.c"
2283 #undef main
2284 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
2285 CPPFLAGS="$SAVE_CPPFLAGS"
2286 ])
2287 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
2288         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
2289 fi
2290
2291 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
2292 AC_TRY_RUN([
2293 #include <stdio.h>
2294 #include <sys/types.h>
2295 #include <netinet/in.h>
2296 #ifdef HAVE_ARPA_INET_H
2297 #include <arpa/inet.h>
2298 #endif
2299 main() { struct in_addr ip; ip.s_addr = 0x12345678;
2300 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
2301     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
2302 exit(1);}],
2303            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
2304 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
2305     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
2306 fi
2307
2308 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2309 AC_TRY_RUN([#include <stdlib.h>
2310 #include <sys/types.h>
2311 #include <sys/stat.h>
2312 #include <unistd.h>
2313 main() { 
2314   struct stat st;
2315   char tpl[20]="/tmp/test.XXXXXX"; 
2316   int fd = mkstemp(tpl); 
2317   if (fd == -1) exit(1);
2318   unlink(tpl);
2319   if (fstat(fd, &st) != 0) exit(1);
2320   if ((st.st_mode & 0777) != 0600) exit(1);
2321   exit(0);
2322 }],
2323 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2324 samba_cv_HAVE_SECURE_MKSTEMP=no,
2325 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2326 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2327     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2328 fi
2329
2330 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
2331 AC_TRY_RUN([#include <unistd.h>
2332 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
2333 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
2334 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
2335     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
2336 fi
2337
2338 AC_CACHE_CHECK([for sysconf(_SC_NPROC_ONLN)],samba_cv_SYSCONF_SC_NPROC_ONLN,[
2339 AC_TRY_RUN([#include <unistd.h>
2340 main() { exit(sysconf(_SC_NPROC_ONLN) == -1 ? 1 : 0); }],
2341 samba_cv_SYSCONF_SC_NPROC_ONLN=yes,samba_cv_SYSCONF_SC_NPROC_ONLN=no,samba_cv_SYSCONF_SC_NPROC_ONLN=cross)])
2342 if test x"$samba_cv_SYSCONF_SC_NPROC_ONLN" = x"yes"; then
2343     AC_DEFINE(SYSCONF_SC_NPROC_ONLN,1,[Whether sysconf(_SC_NPROC_ONLN) is available])
2344 fi
2345
2346 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
2347 AC_TRY_RUN([main() { exit(getuid() != 0); }],
2348            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
2349 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
2350     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
2351 else
2352     AC_MSG_WARN(running as non-root will disable some tests)
2353 fi
2354
2355 ##################
2356 # look for a method of finding the list of network interfaces
2357 iface=no;
2358 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
2359 AC_TRY_RUN([
2360 #define HAVE_IFACE_AIX 1
2361 #define AUTOCONF_TEST 1
2362 #include "confdefs.h"
2363 #include "${srcdir-.}/lib/interfaces.c"],
2364            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
2365 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
2366     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
2367 fi
2368
2369 if test $iface = no; then
2370 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
2371 AC_TRY_RUN([
2372 #define HAVE_IFACE_IFCONF 1
2373 #define AUTOCONF_TEST 1
2374 #include "confdefs.h"
2375 #include "${srcdir-.}/lib/interfaces.c"],
2376            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
2377 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
2378     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
2379 fi
2380 fi
2381
2382 if test $iface = no; then
2383 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
2384 AC_TRY_RUN([
2385 #define HAVE_IFACE_IFREQ 1
2386 #define AUTOCONF_TEST 1
2387 #include "confdefs.h"
2388 #include "${srcdir-.}/lib/interfaces.c"],
2389            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
2390 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
2391     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
2392 fi
2393 fi
2394
2395
2396 ################################################
2397 # look for a method of setting the effective uid
2398 seteuid=no;
2399 if test $seteuid = no; then
2400 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2401 AC_TRY_RUN([
2402 #define AUTOCONF_TEST 1
2403 #define USE_SETRESUID 1
2404 #include "confdefs.h"
2405 #include "${srcdir-.}/lib/util_sec.c"],
2406            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2407 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2408     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2409 fi
2410 fi
2411
2412
2413 if test $seteuid = no; then
2414 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2415 AC_TRY_RUN([
2416 #define AUTOCONF_TEST 1
2417 #define USE_SETREUID 1
2418 #include "confdefs.h"
2419 #include "${srcdir-.}/lib/util_sec.c"],
2420            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2421 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2422     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2423 fi
2424 fi
2425
2426 if test $seteuid = no; then
2427 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2428 AC_TRY_RUN([
2429 #define AUTOCONF_TEST 1
2430 #define USE_SETEUID 1
2431 #include "confdefs.h"
2432 #include "${srcdir-.}/lib/util_sec.c"],
2433            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2434 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2435     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2436 fi
2437 fi
2438
2439 if test $seteuid = no; then
2440 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2441 AC_TRY_RUN([
2442 #define AUTOCONF_TEST 1
2443 #define USE_SETUIDX 1
2444 #include "confdefs.h"
2445 #include "${srcdir-.}/lib/util_sec.c"],
2446            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2447 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2448     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2449 fi
2450 fi
2451
2452
2453 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2454 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2455            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2456 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2457     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2458 fi
2459
2460 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2461 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2462            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2463 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2464     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2465 fi
2466
2467 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2468 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2469            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2470 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2471     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2472
2473 else
2474
2475 dnl
2476 dnl Don't check for 64 bit fcntl locking if we know that the
2477 dnl glibc2.1 broken check has succeeded.
2478 dnl 
2479
2480   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2481   AC_TRY_RUN([
2482 #if defined(HAVE_UNISTD_H)
2483 #include <unistd.h>
2484 #endif
2485 #include <stdio.h>
2486 #include <stdlib.h>
2487
2488 #ifdef HAVE_FCNTL_H
2489 #include <fcntl.h>
2490 #endif
2491
2492 #ifdef HAVE_SYS_FCNTL_H
2493 #include <sys/fcntl.h>
2494 #endif
2495 main() { struct flock64 fl64;
2496 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2497 exit(0);
2498 #else
2499 exit(1);
2500 #endif
2501 }],
2502        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2503
2504   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2505       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2506   fi
2507 fi
2508
2509 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2510 AC_TRY_COMPILE([#include <sys/types.h>
2511 #include <sys/stat.h>
2512 #include <unistd.h>],
2513 [struct stat st;  st.st_blocks = 0;],
2514 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2515 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2516     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2517 fi 
2518
2519 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2520 AC_TRY_COMPILE([#include <sys/types.h>
2521 #include <sys/stat.h>
2522 #include <unistd.h>],
2523 [struct stat st;  st.st_blksize = 0;],
2524 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2525 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2526     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2527 fi
2528
2529 case "$host_os" in
2530 *linux*)
2531 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
2532 AC_TRY_COMPILE([
2533 #ifdef HAVE_SYS_VFS_H
2534 #include <sys/vfs.h>
2535 #endif
2536 #ifdef HAVE_SYS_CAPABILITY_H
2537 #include <sys/capability.h>
2538 #endif
2539 ],[int i;],
2540    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
2541 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
2542    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
2543 fi
2544 ;;
2545 esac
2546
2547 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2548 AC_TRY_COMPILE([
2549 #include <sys/types.h>
2550 #include <sys/acl.h>
2551 #if defined(HAVE_RPCSVC_NIS_H)
2552 #include <rpcsvc/nis.h>
2553 #endif],
2554 [int i;],
2555 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2556 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2557         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2558 fi
2559
2560 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2561 AC_TRY_RUN([
2562 #include <stdio.h>
2563 #include <limits.h>
2564 main() {
2565         char *newpath = realpath("/tmp", NULL);
2566         exit ((newpath != NULL) ? 0 : 1);
2567 }
2568 ],
2569 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2570 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2571     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2572 fi
2573
2574 #################################################
2575 # check for smbwrapper support
2576 AC_MSG_CHECKING(whether to use smbwrapper)
2577 AC_ARG_WITH(smbwrapper,
2578 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
2579 [ case "$withval" in
2580   yes)
2581     AC_MSG_RESULT(yes)
2582     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
2583         WRAPPROG="bin/smbsh\$(EXEEXT)"
2584         WRAP="bin/smbwrapper.$SHLIBEXT"
2585         WRAP_OBJS="\$(SMBW_OBJ1) \$(SMBWRAPPER_OBJ1)"
2586         WRAP_INC="-I\$(srcdir)/smbwrapper"
2587
2588 # Conditions under which smbwrapper should not be built.
2589
2590         if test x$PICFLAGS = x; then
2591            echo No support for PIC code - disabling smbwrapper and smbsh
2592            WRAPPROG=""
2593            WRAP=""
2594            WRAP_OBJS=""
2595            WRAP_INC=""
2596         elif test x$ac_cv_func_syscall = xno; then
2597            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
2598            WRAPPROG=""
2599            WRAP=""
2600            WRAP_OBJS=""
2601            WRAP_INC=""
2602         fi
2603         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP"
2604         SMBWRAPPER="$WRAPPROG $WRAP"
2605         SMBWRAP_OBJS="$WRAP_OBJS"
2606         SMBWRAP_INC="$WRAP_INC"
2607     ;;
2608   *)
2609     AC_MSG_RESULT(no)
2610     ;;
2611   esac ],
2612   AC_MSG_RESULT(no)
2613 )
2614
2615 #################################################
2616 # check for AFS clear-text auth support
2617 samba_cv_WITH_AFS=no
2618 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2619 AC_ARG_WITH(afs,
2620 [  --with-afs              Include AFS clear-text auth support (default=no) ],
2621 [ case "$withval" in
2622   yes|auto)
2623     AC_MSG_RESULT($withval)
2624     samba_cv_WITH_AFS=$withval
2625     ;;
2626   *)
2627     AC_MSG_RESULT(no)
2628     ;;
2629   esac ],
2630   AC_MSG_RESULT(no)
2631 )
2632
2633 ####################################################
2634 # check for Linux-specific AFS fake-kaserver support
2635 samba_cv_WITH_FAKE_KASERVER=no
2636 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2637 AC_ARG_WITH(fake-kaserver,
2638 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
2639 [ case "$withval" in
2640   yes|auto)
2641     AC_MSG_RESULT($withval)
2642     samba_cv_WITH_FAKE_KASERVER=$withval
2643     ;;
2644   *)
2645     AC_MSG_RESULT(no)
2646     ;;
2647   esac ],
2648   AC_MSG_RESULT(no)
2649 )
2650
2651 #################################################
2652 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2653 if test x"$samba_cv_WITH_AFS" != x"no" ||
2654    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2655
2656     # see if this box has the afs-headers in /usr/include/afs
2657     AC_MSG_CHECKING(for /usr/include/afs)
2658     if test -d /usr/include/afs; then
2659           CFLAGS="$CFLAGS -I/usr/include/afs"
2660           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
2661           AC_MSG_RESULT(yes)
2662     else
2663       AC_MSG_RESULT(no)
2664     fi
2665    
2666     # check for afs.h
2667     have_afs_headers=no
2668     AC_CHECK_HEADERS(afs.h afs/afs.h)
2669     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2670         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2671            test x"$samba_cv_WITH_AFS" = x"auto"; then
2672                 AC_MSG_WARN([AFS cannot be supported without afs.h])
2673         else
2674                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2675         fi
2676     else
2677         have_afs_headers=yes
2678     fi
2679 fi
2680
2681 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
2682     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2683 fi
2684
2685 #################################################
2686 # check whether to compile AFS/NT ACL mapping module
2687 samba_cv_WITH_VFS_AFSACL=no
2688 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2689 AC_ARG_WITH(vfs-afsacl,
2690 [  --with-vfs-afsacl       Include AFS to NT ACL mapping module (default=no) ],
2691 [ case "$withval" in
2692   yes|auto)
2693     AC_MSG_RESULT($withval)
2694     samba_cv_WITH_VFS_AFSACL=yes
2695     ;;
2696   *)
2697     AC_MSG_RESULT(no)
2698     ;;
2699   esac ],
2700   AC_MSG_RESULT(no)
2701 )
2702
2703 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
2704    default_shared_modules="$default_shared_modules vfs_afsacl"
2705 fi
2706         
2707 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
2708     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2709 fi
2710
2711 #################################################
2712 # check for the DFS clear-text auth system
2713 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2714 AC_ARG_WITH(dfs,
2715 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
2716 [ case "$withval" in
2717   yes)
2718     AC_MSG_RESULT(yes)
2719     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2720     ;;
2721   *)
2722     AC_MSG_RESULT(no)
2723     ;;
2724   esac ],
2725   AC_MSG_RESULT(no)
2726 )
2727
2728 ########################################################
2729 # Compile with LDAP support?
2730
2731 with_ldap_support=auto
2732 AC_MSG_CHECKING([for LDAP support])
2733
2734 AC_ARG_WITH(ldap,
2735 [  --with-ldap             LDAP support (default yes)],
2736 [ case "$withval" in
2737     yes|no)
2738         with_ldap_support=$withval
2739         ;;
2740   esac ])
2741
2742 AC_MSG_RESULT($with_ldap_support)
2743
2744 SMBLDAP=""
2745 AC_SUBST(SMBLDAP)
2746 SMBLDAPUTIL=""
2747 AC_SUBST(SMBLDAPUTIL)
2748 if test x"$with_ldap_support" != x"no"; then
2749
2750   ##################################################################
2751   # first test for ldap.h and lber.h
2752   # (ldap.h is required for this test)
2753   AC_CHECK_HEADERS(ldap.h lber.h)
2754   
2755   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2756         if test x"$with_ldap_support" = x"yes"; then
2757          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2758         else
2759          AC_MSG_WARN(ldap.h is needed for LDAP support)
2760         fi
2761         
2762         with_ldap_support=no
2763   fi
2764 fi
2765
2766 if test x"$with_ldap_support" != x"no"; then
2767   ac_save_LIBS=$LIBS
2768
2769   ##################################################################
2770   # we might need the lber lib on some systems. To avoid link errors
2771   # this test must be before the libldap test
2772   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
2773
2774   ########################################################
2775   # now see if we can find the ldap libs in standard paths
2776   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
2777
2778   AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS)
2779   
2780   ########################################################
2781   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2782   # Check found in pam_ldap 145.
2783   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
2784
2785   LIBS="$LIBS $LDAP_LIBS"
2786   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
2787     AC_TRY_COMPILE([
2788         #include <lber.h>
2789         #include <ldap.h>], 
2790         [ldap_set_rebind_proc(0, 0, 0);], 
2791         [smb_ldap_cv_ldap_set_rebind_proc=3], 
2792         [smb_ldap_cv_ldap_set_rebind_proc=2]
2793     ) 
2794   ])
2795   
2796   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
2797
2798   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS) 
2799   
2800   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes" -a x"$ac_cv_func_ext_ldap_domain2hostlist" = x"yes"; then
2801     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
2802     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
2803     SMBLDAP="lib/smbldap.o"
2804     SMBLDAPUTIL="lib/smbldap_util.o"
2805     with_ldap_support=yes
2806     AC_MSG_CHECKING(whether LDAP support is used)
2807     AC_MSG_RESULT(yes)
2808   else
2809     if test x"$with_ldap_support" = x"yes"; then
2810         AC_MSG_ERROR(libldap is needed for LDAP support)
2811     else
2812         AC_MSG_WARN(libldap is needed for LDAP support)
2813     fi
2814     
2815     LDAP_LIBS=""
2816     with_ldap_support=no
2817   fi
2818   LIBS=$ac_save_LIBS
2819 fi
2820
2821
2822 #################################################
2823 # active directory support
2824
2825 with_ads_support=auto
2826 AC_MSG_CHECKING([for Active Directory and krb5 support])
2827
2828 AC_ARG_WITH(ads,
2829 [  --with-ads              Active Directory support (default auto)],
2830 [ case "$withval" in
2831     yes|no)
2832         with_ads_support="$withval"
2833         ;;
2834   esac ])
2835
2836 AC_MSG_RESULT($with_ads_support)
2837
2838 FOUND_KRB5=no
2839 KRB5_LIBS=""
2840
2841 if test x"$with_ldap_support" != x"yes"; then
2842     if test x"$with_ads_support" = x"yes"; then
2843         AC_MSG_ERROR(Active Directory Support requires LDAP support)
2844     elif test x"$with_ads_support" != x"no"; then
2845         AC_MSG_WARN(Active Directory Support requires LDAP support)
2846     fi
2847     with_ads_support=no
2848 fi
2849
2850 if test x"$with_ads_support" != x"no"; then
2851
2852   # Do no harm to the values of CFLAGS and LIBS while testing for
2853   # Kerberos support.
2854  
2855   if test x$FOUND_KRB5 = x"no"; then
2856     #################################################
2857     # check for location of Kerberos 5 install
2858     AC_MSG_CHECKING(for kerberos 5 install path)
2859     AC_ARG_WITH(krb5,
2860     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
2861     [ case "$withval" in
2862       no)
2863         AC_MSG_RESULT(no krb5-path given)
2864         ;;
2865       yes)
2866         AC_MSG_RESULT(/usr)
2867         FOUND_KRB5=yes
2868         ;;
2869       *)
2870         AC_MSG_RESULT($withval)
2871         KRB5_CFLAGS="-I$withval/include"
2872         KRB5_CPPFLAGS="-I$withval/include"
2873         KRB5_LDFLAGS="-L$withval/lib"
2874         FOUND_KRB5=yes
2875         if test -x "$withval/bin/krb5-config"; then
2876                 KRB5CONFIG=$withval/bin/krb5-config
2877         fi
2878         ;;
2879       esac ],
2880       AC_MSG_RESULT(no krb5-path given)
2881     )
2882   fi
2883
2884   #################################################
2885   # check for krb5-config from recent MIT and Heimdal kerberos 5
2886   AC_PATH_PROG(KRB5CONFIG, krb5-config)
2887   AC_MSG_CHECKING(for working krb5-config)
2888   if test -x "$KRB5CONFIG"; then
2889     ac_save_CFLAGS=$CFLAGS
2890     CFLAGS="";export CFLAGS
2891     ac_save_LDFLAGS=$LDFLAGS
2892     LDFLAGS="";export LDFLAGS
2893     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
2894     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
2895     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`" 
2896     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
2897     CFLAGS=$ac_save_CFLAGS;export CFLAGS
2898     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
2899     FOUND_KRB5=yes
2900     AC_MSG_RESULT(yes)
2901   else
2902     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
2903   fi
2904  
2905   if test x$FOUND_KRB5 = x"no"; then
2906     #################################################
2907     # see if this box has the SuSE location for the heimdal krb implementation
2908     AC_MSG_CHECKING(for /usr/include/heimdal)
2909     if test -d /usr/include/heimdal; then
2910       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
2911           KRB5_CFLAGS="-I/usr/include/heimdal"
2912           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2913           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
2914           AC_MSG_RESULT(yes)
2915       else
2916           KRB5_CFLAGS="-I/usr/include/heimdal"
2917           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2918           AC_MSG_RESULT(yes)
2919       fi
2920     else
2921       AC_MSG_RESULT(no)
2922     fi
2923   fi
2924
2925   if test x$FOUND_KRB5 = x"no"; then
2926     #################################################
2927     # see if this box has the RedHat location for kerberos
2928     AC_MSG_CHECKING(for /usr/kerberos)
2929     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
2930       KRB5_LDFLAGS="-L/usr/kerberos/lib"
2931       KRB5_CFLAGS="-I/usr/kerberos/include"
2932       KRB5_CPPFLAGS="-I/usr/kerberos/include"
2933       AC_MSG_RESULT(yes)
2934     else
2935       AC_MSG_RESULT(no)
2936     fi
2937   fi
2938
2939   ac_save_CFLAGS=$CFLAGS
2940   ac_save_CPPFLAGS=$CPPFLAGS
2941   ac_save_LDFLAGS=$LDFLAGS
2942
2943   CFLAGS="$KRB5_CFLAGS $CFLAGS"
2944   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
2945   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
2946
2947   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
2948
2949   # now check for krb5.h. Some systems have the libraries without the headers!
2950   # note that this check is done here to allow for different kerberos
2951   # include paths
2952   AC_CHECK_HEADERS(krb5.h)
2953
2954   if test x"$ac_cv_header_krb5_h" = x"no"; then
2955
2956     # Give a warning if AD support was not explicitly requested,
2957     # i.e with_ads_support = auto, otherwise die with an error.
2958
2959     if test x"$with_ads_support" = x"yes"; then
2960       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
2961     else
2962       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
2963     fi
2964
2965     # Turn off AD support and restore CFLAGS and LIBS variables
2966
2967     with_ads_support="no"
2968     
2969     CFLAGS=$ac_save_CFLAGS
2970     CPPFLAGS=$ac_save_CPPFLAGS
2971     LDFLAGS=$ac_save_LDFLAGS
2972   fi
2973 fi
2974
2975 # Now we have determined whether we really want ADS support
2976
2977 if test x"$with_ads_support" != x"no"; then
2978   ac_save_LIBS=$LIBS
2979
2980   # now check for gssapi headers.  This is also done here to allow for
2981   # different kerberos include paths
2982   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
2983
2984   ##################################################################
2985   # we might need the k5crypto and com_err libraries on some systems
2986   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
2987   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
2988
2989   # Heimdal checks.
2990   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
2991   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
2992   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
2993
2994   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
2995   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],
2996                                 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2997
2998   ########################################################
2999   # now see if we can find the krb5 libs in standard paths
3000   # or as specified above
3001   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3002   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3003
3004   ########################################################
3005   # now see if we can find the gssapi libs in standard paths
3006   AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],
3007             AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
3008
3009   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3010   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3011   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3012   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3013   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3014   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 
3015   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3016   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 
3017   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3018   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 
3019   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3020   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 
3021   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 
3022   AC_CHECK_FUNC_EXT(krb5_free_ktypes, $KRB5_LIBS)
3023   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3024   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3025   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3026   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3027   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3028   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3029   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3030   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3031
3032   LIBS="$KRB5_LIBS $LIBS"
3033   
3034   AC_CACHE_CHECK([for krb5_encrypt_block type],
3035                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3036     AC_TRY_COMPILE([#include <krb5.h>],
3037       [krb5_encrypt_block block;],
3038       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3039       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3040
3041   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3042     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3043                [Whether the type krb5_encrypt_block exists])
3044   fi
3045
3046   AC_CACHE_CHECK([for addrtype in krb5_address],
3047                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3048     AC_TRY_COMPILE([#include <krb5.h>],
3049       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3050       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3051       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3052
3053   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3054     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3055                [Whether the krb5_address struct has a addrtype property])
3056   fi
3057
3058   AC_CACHE_CHECK([for addr_type in krb5_address],
3059                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3060     AC_TRY_COMPILE([#include <krb5.h>],
3061       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3062       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3063       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3064
3065   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3066     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3067               [Whether the krb5_address struct has a addr_type property])
3068   fi
3069
3070   AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 
3071                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3072                  [AC_TRY_COMPILE([#include <krb5.h>],
3073     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3074     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3075
3076   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3077     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3078               [Whether the krb5_ticket struct has a enc_part2 property])
3079   fi
3080
3081   AC_CACHE_CHECK([for keyblock in krb5_creds],
3082                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3083     AC_TRY_COMPILE([#include <krb5.h>],
3084       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3085       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3086       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3087
3088   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3089     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3090               [Whether the krb5_creds struct has a keyblock property])
3091   fi
3092
3093   AC_CACHE_CHECK([for session in krb5_creds],
3094                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3095     AC_TRY_COMPILE([#include <krb5.h>],
3096       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3097       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3098       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3099
3100   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3101     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3102               [Whether the krb5_creds struct has a session property])
3103   fi
3104
3105   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3106                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3107     AC_TRY_COMPILE([#include <krb5.h>],
3108       [krb5_keyblock key; key.keyvalue.data = NULL;],
3109       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3110       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3111
3112   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3113     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3114               [Whether the krb5_keyblock struct has a keyvalue property])
3115   fi
3116
3117   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3118                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3119     AC_TRY_COMPILE([#include <krb5.h>],
3120       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3121       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3122       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3123   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3124                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3125     AC_TRY_COMPILE([#include <krb5.h>],
3126       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3127       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3128       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3129 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3130 # w.r.t. arcfour and windows, so we must not enable it here
3131   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3132           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3133     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3134               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3135   fi
3136
3137   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3138                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3139     AC_TRY_COMPILE([#include <krb5.h>],
3140       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3141       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3142       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3143
3144   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3145     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3146               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3147   fi
3148
3149   AC_CACHE_CHECK([for KV5M_KEYTAB],
3150                  samba_cv_HAVE_KV5M_KEYTAB,[
3151     AC_TRY_COMPILE([#include <krb5.h>],
3152       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3153       samba_cv_HAVE_KV5M_KEYTAB=yes,
3154       samba_cv_HAVE_KV5M_KEYTAB=no)])
3155
3156   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3157       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3158              [Whether the KV5M_KEYTAB option is available])
3159   fi
3160
3161   AC_CACHE_CHECK([for the krb5_princ_component macro],
3162                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3163     AC_TRY_LINK([#include <krb5.h>],
3164       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3165       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3166       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3167
3168   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3169     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3170                [Whether krb5_princ_component is available])
3171   fi
3172
3173   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3174                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3175     AC_TRY_COMPILE([#include <krb5.h>],
3176       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3177       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3178       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3179
3180   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3181     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3182               [Whether krb5_keytab_entry has key member])
3183   fi
3184
3185   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3186                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3187     AC_TRY_COMPILE([#include <krb5.h>],
3188       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3189       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3190       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3191
3192   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3193     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3194               [Whether krb5_keytab_entry has keyblock member])
3195   fi
3196
3197   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" = x"yes"; then
3198     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3199     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3200     AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
3201     AC_MSG_RESULT(yes)
3202   else
3203     if test x"$with_ads_support" = x"yes"; then
3204         AC_MSG_ERROR(libkrb5 is needed for Active Directory support)
3205     else
3206         AC_MSG_WARN(libkrb5 is needed for Active Directory support)
3207     fi
3208     KRB5_LIBS=""
3209     with_ads_support=no 
3210   fi
3211
3212   AC_CACHE_CHECK([for WRFILE: keytab support],
3213                 samba_cv_HAVE_WRFILE_KEYTAB,[
3214     AC_TRY_RUN([
3215 #include<krb5.h>
3216   main()
3217   {
3218     krb5_context context;
3219     krb5_keytab keytab;
3220
3221     krb5_init_context(&context);
3222     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3223   }],
3224   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3225   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3226
3227   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3228       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3229                [Whether the WRFILE:-keytab is supported])
3230   fi
3231
3232   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3233                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3234     AC_TRY_COMPILE([#include <krb5.h>],
3235     [
3236     krb5_context context;
3237     krb5_principal principal;
3238     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3239     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3240     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3241
3242   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3243     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3244               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3245   fi
3246
3247 LIBS="$ac_save_LIBS"
3248 fi
3249
3250 ########################################################
3251 # Compile experimental passdb backends?
3252 # (pdb_xml, pdb_mysql, pdb_pgsql)
3253 AC_MSG_CHECKING(whether to build experimental passdb libraries)
3254 AC_ARG_WITH(expsam,
3255 [  --with-expsam=<list>    Include experimental passdb libraries (default=no)]
3256 [                          Valid choices include (comma separated list): ]
3257 [                              xml, mysql & pgsql],
3258 [ expsam_pdb_modules=`echo "$withval" | sed 's/,/ /g'`
3259   if test "z$expsam_pdb_modules" = "zyes"; then
3260     expsam_pdb_modules="xml mysql pgsql"
3261   fi
3262   AC_MSG_RESULT($expsam_pdb_modules)
3263   for i in $expsam_pdb_modules
3264   do 
3265     case "$i" in
3266     xml|all|yes)
3267       ## pdb_xml
3268           AM_PATH_XML2([2.0.0],[default_shared_modules="$default_shared_modules pdb_xml"],[AC_MSG_ERROR([Can't find XML libraries while XML support is requested])])
3269       CFLAGS="$CFLAGS $XML_CFLAGS"
3270       ;;
3271     mysql|all|yes)
3272       ## pdb_mysql
3273           AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[AC_MSG_ERROR([Can't find MySQL libraries while MySQL support is requested])])
3274       CFLAGS="$CFLAGS $MYSQL_CFLAGS"
3275       ;;
3276      pgsql|all|yes)
3277       ## pdb_pgsql
3278       AM_PATH_PGSQL([default_shared_modules="$default_shared_modules pdb_pgsql"],[])
3279       CFLAGS="$CFLAGS $PGSQL_CFLAGS"
3280       ;;
3281     no)
3282       ;;
3283     *)
3284       echo "Unknown module name \"$i\"!  Exiting..."
3285       exit 1
3286       ;;
3287     esac
3288   done ],
3289   AC_MSG_RESULT(no)
3290 )
3291
3292 #################################################
3293 # check for automount support
3294 AC_MSG_CHECKING(whether to use automount)
3295 AC_ARG_WITH(automount,
3296 [  --with-automount        Include automount support (default=no)],
3297 [ case "$withval" in
3298   yes)
3299     AC_MSG_RESULT(yes)
3300     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
3301     ;;
3302   *)
3303     AC_MSG_RESULT(no)
3304     ;;
3305   esac ],
3306   AC_MSG_RESULT(no)
3307 )
3308
3309 #################################################
3310 # check for smbmount support
3311 AC_MSG_CHECKING(whether to use smbmount)
3312 AC_ARG_WITH(smbmount,
3313 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
3314 [ case "$withval" in
3315   yes)
3316         case "$host_os" in
3317         *linux*)
3318                 AC_MSG_RESULT(yes)
3319                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
3320                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
3321                 ;;
3322         *)
3323                 AC_MSG_ERROR(not on a linux system!)
3324                 ;;
3325         esac
3326     ;;
3327   *)
3328     AC_MSG_RESULT(no)
3329     ;;
3330   esac ],
3331   AC_MSG_RESULT(no)
3332 )
3333
3334
3335
3336 #################################################
3337 # check for a PAM clear-text auth, accounts, password and session support
3338 with_pam_for_crypt=no
3339 AC_MSG_CHECKING(whether to use PAM)
3340 AC_ARG_WITH(pam,
3341 [  --with-pam              Include PAM support (default=no)],
3342 [ case "$withval" in
3343   yes)
3344     AC_MSG_RESULT(yes)
3345     if test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3346        if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
3347           if test x"$ac_cv_header_security__pam_macros_h" = x"no"; then
3348              AC_MSG_ERROR(--with-pam specified but no PAM headers found)
3349           fi
3350        fi
3351     fi
3352     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
3353     AUTH_LIBS="$AUTH_LIBS -lpam"
3354     with_pam_for_crypt=yes
3355     ;;
3356   *)
3357     AC_MSG_RESULT(no)
3358     ;;
3359   esac ],
3360   AC_MSG_RESULT(no)
3361 )
3362
3363 # we can't build a pam module if we don't have pam.
3364 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
3365
3366 #################################################
3367 # check for pam_smbpass support
3368 AC_MSG_CHECKING(whether to use pam_smbpass)
3369 AC_ARG_WITH(pam_smbpass,
3370 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
3371 [ case "$withval" in
3372   yes)
3373     AC_MSG_RESULT(yes)
3374
3375        # Conditions under which pam_smbpass should not be built.
3376
3377        if test x$PICFLAGS = x; then
3378           AC_MSG_ERROR([No support for PIC code])
3379        elif test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3380           AC_MSG_ERROR([No security/pam_appl.h found])
3381        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
3382           AC_MSG_ERROR([No libpam found])
3383        else
3384           AUTH_LIBS="$AUTH_LIBS -lpam"
3385           SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.$SHLIBEXT"
3386        fi
3387     ;;
3388   *)
3389     AC_MSG_RESULT(no)
3390     ;;
3391   esac ],
3392   AC_MSG_RESULT(no)
3393 )
3394
3395
3396 ###############################################
3397 # test for where we get crypt() from
3398 AC_SEARCH_LIBS(crypt, [crypt],
3399   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
3400   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
3401
3402 ##
3403 ## moved after the check for -lcrypt in order to
3404 ## ensure that the necessary libraries are included
3405 ## check checking for truncated salt.  Wrapped by the
3406 ## $with_pam_for_crypt variable as above   --jerry
3407 ##
3408 if test $with_pam_for_crypt = no; then
3409 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
3410 crypt_LIBS="$LIBS"
3411 LIBS="$AUTH_LIBS $LIBS"
3412 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
3413         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
3414 LIBS="$crypt_LIBS"])
3415 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
3416         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
3417 fi
3418 fi
3419
3420
3421 ########################################################################################
3422 ##
3423 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
3424 ##
3425 ########################################################################################
3426
3427 #################################################
3428 # check for a LDAP password database configuration backwards compatibility
3429 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
3430 AC_ARG_WITH(ldapsam,
3431 [  --with-ldapsam          Include LDAP SAM 2.2 compatible configuration (default=no)],
3432 [ case "$withval" in
3433   yes)
3434     AC_MSG_RESULT(yes)
3435     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatible LDAP SAM configuration])
3436     ;;
3437   *)
3438     AC_MSG_RESULT(no)
3439     ;;
3440   esac ],
3441   AC_MSG_RESULT(no)
3442 )
3443
3444 ########################################################################################
3445 ##
3446 ## END OF TESTS FOR SAM BACKENDS.  
3447 ##
3448 ########################################################################################
3449
3450 #################################################
3451 # check for a NISPLUS_HOME support 
3452 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
3453 AC_ARG_WITH(nisplus-home,
3454 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
3455 [ case "$withval" in
3456   yes)
3457     AC_MSG_RESULT(yes)
3458     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
3459     ;;
3460   *)
3461     AC_MSG_RESULT(no)
3462     ;;
3463   esac ],
3464   AC_MSG_RESULT(no)
3465 )
3466
3467 #################################################
3468 # check for syslog logging
3469 AC_MSG_CHECKING(whether to use syslog logging)
3470 AC_ARG_WITH(syslog,
3471 [  --with-syslog           Include experimental SYSLOG support (default=no)],
3472 [ case "$withval" in
3473   yes)
3474     AC_MSG_RESULT(yes)
3475     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
3476     ;;
3477   *)
3478     AC_MSG_RESULT(no)
3479     ;;
3480   esac ],
3481   AC_MSG_RESULT(no)
3482 )
3483
3484 #################################################
3485 # check for a shared memory profiling support
3486 AC_MSG_CHECKING(whether to use profiling)
3487 AC_ARG_WITH(profiling-data,
3488 [  --with-profiling-data   Include gathering source code profile information (default=no)],
3489 [ case "$withval" in
3490   yes)
3491     AC_MSG_RESULT(yes)
3492     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
3493     ;;
3494   *)
3495     AC_MSG_RESULT(no)
3496     ;;
3497   esac ],
3498   AC_MSG_RESULT(no)
3499 )
3500
3501
3502 #################################################
3503 # check for experimental disk-quotas support
3504
3505 samba_cv_WITH_QUOTAS=auto
3506 samba_cv_TRY_QUOTAS=no
3507 samba_cv_RUN_QUOTA_TESTS=auto
3508 samba_cv_WITH_SYS_QUOTAS=auto
3509 samba_cv_TRY_SYS_QUOTAS=no
3510 samba_cv_SYSQUOTA_FOUND=no;
3511
3512 AC_MSG_CHECKING(whether to try disk-quotas support)
3513 AC_ARG_WITH(quotas,
3514 [  --with-quotas           Include disk-quota support (default=no)],
3515 [ case "$withval" in
3516   yes)
3517     AC_MSG_RESULT(yes)
3518     samba_cv_WITH_QUOTAS=yes
3519     samba_cv_TRY_QUOTAS=yes
3520     samba_cv_RUN_QUOTA_TESTS=yes
3521     #set sys quotas to auto in this case
3522     samba_cv_TRY_SYS_QUOTAS=auto
3523     ;;
3524   auto)
3525     AC_MSG_RESULT(auto)
3526     samba_cv_WITH_QUOTAS=auto
3527     samba_cv_TRY_QUOTAS=auto
3528     samba_cv_RUN_QUOTA_TESTS=auto
3529     #set sys quotas to auto in this case
3530     samba_cv_TRY_SYS_QUOTAS=auto
3531     ;;
3532   no)
3533     AC_MSG_RESULT(no)
3534     samba_cv_WITH_QUOTAS=no
3535     samba_cv_TRY_QUOTAS=no
3536     samba_cv_RUN_QUOTA_TESTS=no
3537     ;;
3538   *)
3539     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3540     ;;
3541   esac ],
3542   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3543 )
3544
3545 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
3546 AC_ARG_WITH(sys-quotas,
3547 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
3548 [ case "$withval" in
3549   yes)
3550     AC_MSG_RESULT(yes)
3551     samba_cv_WITH_SYS_QUOTAS=yes
3552     samba_cv_TRY_SYS_QUOTAS=yes
3553     samba_cv_RUN_QUOTA_TESTS=yes
3554     ;;
3555   auto)
3556     AC_MSG_RESULT(auto)
3557     samba_cv_WITH_SYS_QUOTAS=auto
3558     samba_cv_TRY_SYS_QUOTAS=auto
3559     samba_cv_RUN_QUOTA_TESTS=auto
3560     ;;
3561   no)
3562     AC_MSG_RESULT(no)
3563     samba_cv_WITH_SYS_QUOTAS=no
3564     samba_cv_TRY_SYS_QUOTAS=no
3565     ;;
3566   *)
3567     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3568     ;;
3569   esac ],
3570   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3571 )
3572
3573 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
3574 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
3575   case "$host_os" in
3576         *linux*)
3577             AC_MSG_RESULT(yes)
3578             samba_cv_TRY_SYS_QUOTAS=yes
3579             samba_cv_RUN_QUOTA_TESTS=yes
3580             samba_cv_SYSQUOTA_FOUND=yes
3581             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
3582             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
3583             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
3584             samba_cv_found_xfs_header=yes
3585             ;;
3586         *)
3587             AC_MSG_RESULT(no)
3588             samba_cv_TRY_SYS_QUOTAS=no
3589             ;;
3590   esac
3591 fi
3592
3593 #############################################
3594 # only check for quota stuff if --with-quotas
3595 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
3596
3597 # some broken header files need this
3598 AC_CHECK_HEADER(asm/types.h,[
3599             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
3600             AC_ADD_INCLUDE(<asm/types.h>)
3601             ])
3602
3603 # For quotas on Veritas VxFS filesystems
3604 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
3605
3606 # For sys/quota.h and linux/quota.h
3607 AC_CHECK_HEADERS(sys/quota.h)
3608
3609 if test x"$samba_cv_found_xfs_header" != x"yes"; then
3610 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
3611 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
3612 AC_TRY_COMPILE([
3613 #include "confdefs.h"
3614 #ifdef HAVE_SYS_TYPES_H
3615 #include <sys/types.h>
3616 #endif
3617 #ifdef HAVE_ASM_TYPES_H
3618 #include <asm/types.h>
3619 #endif
3620 #include <sys/quota.h>
3621 ],[int i = Q_XGETQUOTA;],
3622 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
3623 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
3624         samba_cv_found_xfs_header=yes
3625 fi
3626 fi
3627
3628 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
3629 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
3630 AC_TRY_COMPILE([
3631 #include "confdefs.h"
3632 #ifdef HAVE_SYS_QUOTA_H
3633 #include <sys/quota.h>
3634 #endif
3635 ],[
3636 struct dqblk D;
3637 D.dqb_fsoftlimit = 0;],
3638 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
3639 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
3640         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
3641 fi
3642
3643 ##################
3644 # look for a working quota system
3645
3646 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3647 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
3648 AC_TRY_RUN_STRICT([
3649 #define HAVE_QUOTACTL_4A 1
3650 #define AUTOCONF_TEST 1
3651 #include "confdefs.h"
3652 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3653            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
3654 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
3655     samba_cv_SYSQUOTA_FOUND=yes;
3656     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
3657     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
3658 fi
3659 fi
3660
3661 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3662 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
3663 AC_TRY_RUN_STRICT([
3664 #define HAVE_QUOTACTL_4B 1
3665 #define AUTOCONF_TEST 1
3666 #include "confdefs.h"
3667 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3668            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
3669 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
3670     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
3671     samba_cv_SYSQUOTA_FOUND=yes;
3672     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
3673     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
3674 fi
3675 fi
3676
3677 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3678 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
3679 AC_TRY_RUN_STRICT([
3680 #define HAVE_QUOTACTL_3 1
3681 #define AUTOCONF_TEST 1
3682 #include "confdefs.h"
3683 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3684            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
3685 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
3686     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
3687     samba_cv_SYSQUOTA_FOUND=yes;
3688     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
3689     samba_cv_sysquotas_file="lib/sysquotas_3.c"
3690 fi
3691 fi
3692
3693 #################################################
3694 # check for mntent.h and struct mntent
3695 AC_CHECK_HEADERS(mntent.h)
3696 #################################################
3697 # check for setmntent,getmntent,endmntent
3698 AC_CHECK_FUNCS(setmntent getmntent endmntent)
3699
3700 #################################################
3701 # check for devnm.h and struct mntent
3702 AC_CHECK_HEADERS(devnm.h)
3703 #################################################
3704 # check for devnm
3705 AC_CHECK_FUNCS(devnm)
3706
3707 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
3708     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3709         # if --with-sys-quotas=yes then build it 
3710         # you have can use the get/set quota command smb.conf
3711         # options then
3712         samba_cv_SYSQUOTA_FOUND=auto
3713     fi
3714     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
3715         # if --with-sys-quotas=yes then build it 
3716         # you have can use the get/set quota command smb.conf
3717         # options then
3718         samba_cv_TRY_SYS_QUOTAS=auto
3719     fi
3720 fi
3721
3722 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
3723 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
3724 SAVE_CPPFLAGS="$CPPFLAGS"
3725 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch"
3726 AC_TRY_COMPILE([
3727 #include "confdefs.h"
3728 #define NO_PROTO_H 1
3729 #define NO_CONFIG_H 1
3730 #define HAVE_SYS_QUOTAS 1
3731 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
3732 #include "${srcdir-.}/lib/sysquotas.c"
3733 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
3734 CPPFLAGS="$SAVE_CPPFLAGS"
3735 ])
3736 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
3737 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
3738     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
3739         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3740         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
3741         samba_cv_WE_USE_SYS_QUOTAS=yes
3742         AC_MSG_RESULT(yes)
3743     else
3744         AC_MSG_RESULT(no)
3745     fi
3746 fi
3747 fi
3748
3749 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
3750 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
3751 SAVE_CPPFLAGS="$CPPFLAGS"
3752 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch"
3753 AC_TRY_COMPILE([
3754 #include "confdefs.h"
3755 #define NO_PROTO_H 1
3756 #define NO_CONFIG_H 1
3757 #define HAVE_SYS_QUOTAS 1
3758 #define HAVE_XFS_QUOTAS 1
3759 #include "${srcdir-.}/lib/sysquotas_xfs.c"
3760 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
3761 CPPFLAGS="$SAVE_CPPFLAGS"
3762 ])
3763 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
3764     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
3765         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
3766     fi
3767 fi
3768 fi
3769
3770 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
3771 SAVE_CPPFLAGS="$CPPFLAGS"
3772 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/nsswitch"
3773 AC_TRY_COMPILE([
3774 #include "confdefs.h"
3775 #define NO_PROTO_H 1
3776 #define NO_CONFIG_H 1
3777 #include "${srcdir-.}/smbd/quotas.c"
3778 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
3779 CPPFLAGS="$SAVE_CPPFLAGS"
3780 ])
3781 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
3782 AC_MSG_CHECKING(whether to use the old quota support)
3783     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
3784       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
3785         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3786         AC_MSG_RESULT(yes)
3787       else
3788         AC_MSG_RESULT(no)
3789       fi
3790     else
3791       AC_MSG_RESULT(no)
3792     fi
3793 fi
3794
3795 ####################
3796 # End of quota check samba_cv_RUN_QUOTA_TESTS
3797 fi
3798
3799 #################################################
3800 # check for experimental utmp accounting
3801
3802 AC_MSG_CHECKING(whether to support utmp accounting)
3803 WITH_UTMP=yes
3804 AC_ARG_WITH(utmp,
3805 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
3806 [ case "$withval" in
3807   no)
3808                 WITH_UTMP=no
3809                 ;;
3810   *)
3811                 WITH_UTMP=yes
3812                 ;;
3813   esac ],
3814 )
3815
3816 # utmp requires utmp.h
3817 # Note similar check earlier, when checking utmp details.
3818
3819 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
3820         utmp_no_reason=", no utmp.h on $host_os"
3821         WITH_UTMP=no
3822 fi
3823
3824 # Display test results
3825
3826 if test x"$WITH_UTMP" = x"yes"; then
3827         AC_MSG_RESULT(yes)
3828         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
3829 else
3830         AC_MSG_RESULT(no$utmp_no_reason)
3831 fi
3832
3833 #################################################
3834 # should we build libsmbclient?
3835
3836 INSTALLCLIENTCMD_SH=:
3837 INSTALLCLIENTCMD_A=:
3838 INSTALLCLIENT=
3839 LIBSMBCLIENT_SHARED=
3840 LIBSMBCLIENT=
3841 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
3842 AC_ARG_WITH(libsmbclient,
3843 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
3844 [ case "$withval" in
3845   no) 
3846      AC_MSG_RESULT(no)
3847      ;;
3848   *)
3849      if test $BLDSHARED = true; then
3850         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3851         ## build the static version of libsmbclient as well
3852         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3853         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3854         LIBSMBCLIENT=libsmbclient
3855         AC_MSG_RESULT(yes)
3856      else
3857         enable_static=yes
3858         AC_MSG_RESULT(no shared library support -- will supply static library)
3859      fi
3860      if test $enable_static = yes; then
3861         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3862         LIBSMBCLIENT=libsmbclient
3863      fi
3864      INSTALLCLIENT=installclientlib
3865      ;;
3866   esac ],
3867 [
3868 # if unspecified, default is to built it iff possible.
3869   if test $BLDSHARED = true; then
3870      INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3871      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3872      LIBSMBCLIENT=libsmbclient
3873      AC_MSG_RESULT(yes)
3874    else
3875      enable_static=yes
3876      AC_MSG_RESULT(no shared library support -- will supply static library)
3877    fi
3878    if test $enable_static = yes; then
3879      INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3880      LIBSMBCLIENT=libsmbclient
3881   fi]
3882   INSTALLCLIENT=installclientlib
3883 )
3884
3885
3886 INSTALLCLIENTCMD_SH=:
3887 INSTALLCLIENTCMD_A=:
3888 INSTALLCLIENT=
3889 LIBSMBSHAREMODES_SHARED=
3890 LIBSMBSHAREMODES=
3891 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
3892 AC_ARG_WITH(libsmbsharemodes,
3893 [  --with-libsmbsharemodes     Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
3894 [ case "$withval" in
3895   no) 
3896      AC_MSG_RESULT(no)
3897      ;;
3898   *)
3899      if test $BLDSHARED = true; then
3900         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3901         ## build the static version of libsmbsharemodes as well
3902         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3903         LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
3904         LIBSMBSHAREMODES=libsmbsharemodes
3905         AC_MSG_RESULT(yes)
3906      else
3907         enable_static=yes
3908         AC_MSG_RESULT(no shared library support -- will supply static library)
3909      fi
3910      if test $enable_static = yes; then
3911         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3912         LIBSMBSHAREMODES=libsmbsharemodes
3913      fi
3914      INSTALLCLIENT=installclientlib
3915      ;;
3916   esac ],
3917 [
3918 # if unspecified, default is to built it iff possible.
3919   if test $BLDSHARED = true; then
3920      INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3921      LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
3922      LIBSMBSHAREMODES=libsmbsharemodes
3923      AC_MSG_RESULT(yes)
3924    else
3925      enable_static=yes
3926      AC_MSG_RESULT(no shared library support -- will supply static library)
3927    fi
3928    if test $enable_static = yes; then
3929      INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3930      LIBSMBSHAREMODES=libsmbsharemodes
3931   fi]
3932   INSTALLCLIENT=installclientlib
3933 )
3934
3935
3936 #################################################
3937 # these tests are taken from the GNU fileutils package
3938 AC_CHECKING(how to get filesystem space usage)
3939 space=no
3940
3941 # Test for statvfs64.
3942 if test $space = no; then
3943   # SVR4
3944   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
3945   [AC_TRY_RUN([
3946 #if defined(HAVE_UNISTD_H)
3947 #include <unistd.h>
3948 #endif
3949 #include <sys/types.h>
3950 #include <sys/statvfs.h>
3951   main ()
3952   {
3953     struct statvfs64 fsd;
3954     exit (statvfs64 (".", &fsd));
3955   }],
3956   fu_cv_sys_stat_statvfs64=yes,
3957   fu_cv_sys_stat_statvfs64=no,
3958   fu_cv_sys_stat_statvfs64=cross)])
3959   if test $fu_cv_sys_stat_statvfs64 = yes; then
3960     space=yes
3961     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
3962   fi
3963 fi
3964
3965 # Perform only the link test since it seems there are no variants of the
3966 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
3967 # because that got a false positive on SCO OSR5.  Adding the declaration
3968 # of a `struct statvfs' causes this test to fail (as it should) on such
3969 # systems.  That system is reported to work fine with STAT_STATFS4 which
3970 # is what it gets when this test fails.
3971 if test $space = no; then
3972   # SVR4
3973   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
3974                  [AC_TRY_LINK([#include <sys/types.h>
3975 #include <sys/statvfs.h>],
3976                               [struct statvfs fsd; statvfs (0, &fsd);],
3977                               fu_cv_sys_stat_statvfs=yes,
3978                               fu_cv_sys_stat_statvfs=no)])
3979   if test $fu_cv_sys_stat_statvfs = yes; then
3980     space=yes
3981     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
3982   fi
3983 fi
3984
3985 if test $space = no; then
3986   # DEC Alpha running OSF/1
3987   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
3988   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
3989   [AC_TRY_RUN([
3990 #include <sys/param.h>
3991 #include <sys/types.h>
3992 #include <sys/mount.h>
3993   main ()
3994   {
3995     struct statfs fsd;
3996     fsd.f_fsize = 0;
3997     exit (statfs (".", &fsd, sizeof (struct statfs)));
3998   }],
3999   fu_cv_sys_stat_statfs3_osf1=yes,
4000   fu_cv_sys_stat_statfs3_osf1=no,
4001   fu_cv_sys_stat_statfs3_osf1=no)])
4002   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4003   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4004     space=yes
4005     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4006   fi
4007 fi
4008
4009 if test $space = no; then
4010 # AIX
4011   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4012 member (AIX, 4.3BSD)])
4013   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4014   [AC_TRY_RUN([
4015 #ifdef HAVE_SYS_PARAM_H
4016 #include <sys/param.h>
4017 #endif
4018 #ifdef HAVE_SYS_MOUNT_H
4019 #include <sys/mount.h>
4020 #endif
4021 #ifdef HAVE_SYS_VFS_H
4022 #include <sys/vfs.h>
4023 #endif
4024   main ()
4025   {
4026   struct statfs fsd;
4027   fsd.f_bsize = 0;
4028   exit (statfs (".", &fsd));
4029   }],
4030   fu_cv_sys_stat_statfs2_bsize=yes,
4031   fu_cv_sys_stat_statfs2_bsize=no,
4032   fu_cv_sys_stat_statfs2_bsize=no)])
4033   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4034   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4035     space=yes
4036     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4037   fi
4038 fi
4039
4040 if test $space = no; then
4041 # SVR3
4042   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4043   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4044   [AC_TRY_RUN([#include <sys/types.h>
4045 #include <sys/statfs.h>
4046   main ()
4047   {
4048   struct statfs fsd;
4049   exit (statfs (".", &fsd, sizeof fsd, 0));
4050   }],
4051     fu_cv_sys_stat_statfs4=yes,
4052     fu_cv_sys_stat_statfs4=no,
4053     fu_cv_sys_stat_statfs4=no)])
4054   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4055   if test $fu_cv_sys_stat_statfs4 = yes; then
4056     space=yes
4057     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4058   fi
4059 fi
4060
4061 if test $space = no; then
4062 # 4.4BSD and NetBSD
4063   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4064 member (4.4BSD and NetBSD)])
4065   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4066   [AC_TRY_RUN([#include <sys/types.h>
4067 #ifdef HAVE_SYS_PARAM_H
4068 #include <sys/param.h>
4069 #endif
4070 #ifdef HAVE_SYS_MOUNT_H
4071 #include <sys/mount.h>
4072 #endif
4073   main ()
4074   {
4075   struct statfs fsd;
4076   fsd.f_fsize = 0;
4077   exit (statfs (".", &fsd));
4078   }],
4079   fu_cv_sys_stat_statfs2_fsize=yes,
4080   fu_cv_sys_stat_statfs2_fsize=no,
4081   fu_cv_sys_stat_statfs2_fsize=no)])
4082   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4083   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4084     space=yes
4085         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4086   fi
4087 fi
4088
4089 if test $space = no; then
4090   # Ultrix
4091   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4092   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4093   [AC_TRY_RUN([#include <sys/types.h>
4094 #ifdef HAVE_SYS_PARAM_H
4095 #include <sys/param.h>
4096 #endif
4097 #ifdef HAVE_SYS_MOUNT_H
4098 #include <sys/mount.h>
4099 #endif
4100 #ifdef HAVE_SYS_FS_TYPES_H
4101 #include <sys/fs_types.h>
4102 #endif
4103   main ()
4104   {
4105   struct fs_data fsd;
4106   /* Ultrix's statfs returns 1 for success,
4107      0 for not mounted, -1 for failure.  */
4108   exit (statfs (".", &fsd) != 1);
4109   }],
4110   fu_cv_sys_stat_fs_data=yes,
4111   fu_cv_sys_stat_fs_data=no,
4112   fu_cv_sys_stat_fs_data=no)])
4113   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
4114   if test $fu_cv_sys_stat_fs_data = yes; then
4115     space=yes
4116     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
4117   fi
4118 fi
4119
4120 #
4121 # As a gating factor for large file support, in order to
4122 # use <4GB files we must have the following minimal support
4123 # available.
4124 # long long, and a 64 bit off_t or off64_t.
4125 # If we don't have all of these then disable large
4126 # file support.
4127 #
4128 AC_MSG_CHECKING([if large file support can be enabled])
4129 AC_TRY_COMPILE([
4130 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
4131 #include <sys/types.h>
4132 #else
4133 __COMPILE_ERROR_
4134 #endif
4135 ],
4136 [int i],
4137 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
4138 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
4139         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
4140 fi
4141 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
4142
4143 AC_ARG_WITH(spinlocks, 
4144 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
4145 if test "x$with_spinlocks" = "xyes"; then
4146     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
4147
4148     case "$host_cpu" in
4149         sparc)
4150             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
4151             ;;
4152
4153         i386|i486|i586|i686)
4154             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
4155             ;;
4156
4157         mips)
4158             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
4159             ;;
4160
4161         powerpc)
4162             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
4163             ;;
4164     esac
4165 fi
4166
4167 #################################################
4168 # check for ACL support
4169
4170 AC_MSG_CHECKING(whether to support ACLs)
4171 AC_ARG_WITH(acl-support,
4172 [  --with-acl-support      Include ACL support (default=no)],
4173 [ case "$withval" in
4174   yes)
4175
4176         case "$host_os" in
4177         *sysv5*)
4178                 AC_MSG_RESULT(Using UnixWare ACLs)
4179                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
4180                 ;;
4181         *solaris*)
4182                 AC_MSG_RESULT(Using solaris ACLs)
4183                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
4184                 ;;
4185         *hpux*)
4186                 AC_MSG_RESULT(Using HPUX ACLs)
4187                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
4188                 ;;
4189         *irix*)
4190                 AC_MSG_RESULT(Using IRIX ACLs)
4191                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
4192                 ;;
4193         *aix*)
4194                 AC_MSG_RESULT(Using AIX ACLs)
4195                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
4196                 ;;
4197         *osf*)
4198                 AC_MSG_RESULT(Using Tru64 ACLs)
4199                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
4200                 ACL_LIBS="$ACL_LIBS -lpacl"
4201                 ;;
4202         *freebsd[[5-9]]*)
4203                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
4204                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
4205                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4206                 ;;
4207         *linux*)
4208                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
4209                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
4210                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
4211                 acl_LIBS=$LIBS
4212                 LIBS="$LIBS -lacl"
4213                 AC_TRY_LINK([#include <sys/types.h>
4214 #include <sys/acl.h>],
4215 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
4216 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
4217                 LIBS=$acl_LIBS])
4218                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4219                                 AC_MSG_RESULT(Using posix ACLs)
4220                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
4221                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
4222                                 acl_LIBS=$LIBS
4223                                 LIBS="$LIBS -lacl"
4224                                 AC_TRY_LINK([#include <sys/types.h>
4225 #include <sys/acl.h>],
4226 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
4227 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
4228                                 LIBS=$acl_LIBS])
4229                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
4230                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4231                                 fi
4232                         fi
4233             ;;
4234          *)
4235                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
4236                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
4237                 acl_LIBS=$LIBS
4238                 LIBS="$LIBS -lacl"
4239                 AC_TRY_LINK([#include <sys/types.h>
4240 #include <sys/acl.h>],
4241 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
4242 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
4243                 LIBS=$acl_LIBS])
4244                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4245                                 AC_MSG_RESULT(Using posix ACLs)
4246                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
4247                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
4248                                 acl_LIBS=$LIBS
4249                                 LIBS="$LIBS -lacl"
4250                                 AC_TRY_LINK([#include <sys/types.h>
4251 #include <sys/acl.h>],
4252 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
4253 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
4254                                 LIBS=$acl_LIBS])
4255                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
4256                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4257                                 fi
4258                         fi
4259             ;;
4260         esac
4261         ;;
4262   *)
4263     AC_MSG_RESULT(no)
4264     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
4265     ;;
4266   esac ],
4267   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
4268   AC_MSG_RESULT(no)
4269 )
4270
4271 #################################################
4272 # check for AIO support
4273
4274 AC_MSG_CHECKING(whether to support asynchronous io)
4275 AC_ARG_WITH(aio-support,
4276 [  --with-aio-support      Include asynchronous io support (default=no)],
4277 [ case "$withval" in
4278   yes)
4279
4280         AC_MSG_RESULT(yes)
4281         case "$host_os" in
4282         *)
4283                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$ACL_LIBS -lrt"])
4284                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
4285                 aio_LIBS=$LIBS
4286                 LIBS="$LIBS -lrt"
4287                 AC_TRY_LINK([#include <sys/types.h>
4288 #include <aio.h>],
4289 [ struct aiocb a; return aio_read(&a);],
4290 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
4291                 LIBS=$aio_LIBS])
4292                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
4293                 aio_LIBS=$LIBS
4294                 LIBS="$LIBS -lrt"
4295                 AC_TRY_LINK([#include <sys/types.h>
4296 #include <aio.h>],
4297 [ struct aiocb64 a; return aio_read64(&a);],
4298 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
4299                 LIBS=$aio_LIBS])
4300                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
4301                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
4302                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
4303                         LIBS="$LIBS -lrt"
4304                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
4305                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
4306                         LIBS="$LIBS -lrt"
4307                 fi
4308
4309                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
4310                         AC_MSG_CHECKING(for aio_read)
4311                         AC_LINK_IFELSE([#include <aio.h>
4312 int main() { struct aiocb a; return aio_read(&a); }],
4313 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
4314 [AC_MSG_RESULT(no)])
4315
4316                         AC_MSG_CHECKING(for aio_write)
4317                         AC_LINK_IFELSE([#include <aio.h>
4318 int main() { struct aiocb a; return aio_write(&a); }],
4319 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
4320 [AC_MSG_RESULT(no)])
4321
4322                         AC_MSG_CHECKING(for aio_fsync)
4323                         AC_LINK_IFELSE([#include <aio.h>
4324 int main() { struct aiocb a; return aio_fsync(1, &a); }],
4325 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
4326 [AC_MSG_RESULT(no)])
4327
4328                         AC_MSG_CHECKING(for aio_return)
4329                         AC_LINK_IFELSE([#include <aio.h>
4330 int main() { struct aiocb a; return aio_return(&a); }],
4331 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
4332 [AC_MSG_RESULT(no)])
4333
4334                         AC_MSG_CHECKING(for aio_error)
4335                         AC_LINK_IFELSE([#include <aio.h>
4336 int main() { struct aiocb a; return aio_error(&a); }],
4337 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
4338 [AC_MSG_RESULT(no)])
4339
4340                         AC_MSG_CHECKING(for aio_cancel)
4341                         AC_LINK_IFELSE([#include <aio.h>
4342 int main() { struct aiocb a; return aio_cancel(1, &a); }],
4343 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
4344 [AC_MSG_RESULT(no)])
4345
4346                         AC_MSG_CHECKING(for aio_suspend)
4347                         AC_LINK_IFELSE([#include <aio.h>
4348 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
4349 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
4350 [AC_MSG_RESULT(no)])
4351                 fi
4352
4353                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
4354                         AC_MSG_CHECKING(for aio_read64)
4355                         AC_LINK_IFELSE([#include <aio.h>
4356 int main() { struct aiocb a; return aio_read64(&a); }],
4357 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
4358 [AC_MSG_RESULT(no)])
4359
4360                         AC_MSG_CHECKING(for aio_write64)
4361                         AC_LINK_IFELSE([#include <aio.h>
4362 int main() { struct aiocb a; return aio_write64(&a); }],
4363 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
4364 [AC_MSG_RESULT(no)])
4365
4366                         AC_MSG_CHECKING(for aio_fsync64)
4367                         AC_LINK_IFELSE([#include <aio.h>
4368 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
4369 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
4370 [AC_MSG_RESULT(no)])
4371
4372                         AC_MSG_CHECKING(for aio_return64)
4373                         AC_LINK_IFELSE([#include <aio.h>
4374 int main() { struct aiocb a; return aio_return64(&a); }],
4375 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
4376 [AC_MSG_RESULT(no)])
4377
4378                         AC_MSG_CHECKING(for aio_error64)
4379                         AC_LINK_IFELSE([#include <aio.h>
4380 int main() { struct aiocb a; return aio_error64(&a); }],
4381 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
4382 [AC_MSG_RESULT(no)])
4383
4384                         AC_MSG_CHECKING(for aio_cancel64)
4385                         AC_LINK_IFELSE([#include <aio.h>
4386 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
4387 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
4388 [AC_MSG_RESULT(no)])
4389
4390                         AC_MSG_CHECKING(for aio_suspend64)
4391                         AC_LINK_IFELSE([#include <aio.h>
4392 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
4393 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
4394 [AC_MSG_RESULT(no)])
4395                 fi
4396             ;;
4397         esac
4398         ;;
4399   *)
4400     AC_MSG_RESULT(no)
4401     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
4402     ;;
4403   esac ],
4404   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
4405   AC_MSG_RESULT(no)
4406 )
4407
4408 #################################################
4409 # check for sendfile support
4410
4411 with_sendfile_support=yes
4412 AC_MSG_CHECKING(whether to check to support sendfile)
4413 AC_ARG_WITH(sendfile-support,
4414 [  --with-sendfile-support Check for sendfile support (default=yes)],
4415 [ case "$withval" in
4416   yes)
4417
4418         AC_MSG_RESULT(yes);
4419
4420         case "$host_os" in
4421         *linux*)
4422                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
4423                 AC_TRY_LINK([#include <sys/sendfile.h>],
4424 [\
4425 int tofd, fromfd;
4426 off64_t offset;
4427 size_t total;
4428 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
4429 ],
4430 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
4431
4432                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
4433                 AC_TRY_LINK([#include <sys/sendfile.h>],
4434 [\
4435 int tofd, fromfd;
4436 off_t offset;
4437 size_t total;
4438 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
4439 ],
4440 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4441
4442 # Try and cope with broken Linux sendfile....
4443                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
4444                 AC_TRY_LINK([\
4445 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
4446 #undef _FILE_OFFSET_BITS
4447 #endif
4448 #include <sys/sendfile.h>],
4449 [\
4450 int tofd, fromfd;
4451 off_t offset;
4452 size_t total;
4453 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
4454 ],
4455 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
4456
4457         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
4458                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
4459                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
4460                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
4461         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4462                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4463                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
4464                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
4465         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
4466                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
4467                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
4468         else
4469                 AC_MSG_RESULT(no);
4470         fi
4471
4472         ;;
4473         *freebsd* | *dragonfly* )
4474                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
4475                 AC_TRY_LINK([\
4476 #include <sys/types.h>
4477 #include <unistd.h>
4478 #include <sys/socket.h>
4479 #include <sys/uio.h>],
4480 [\
4481         int fromfd, tofd, ret, total=0;
4482         off_t offset, nwritten;
4483         struct sf_hdtr hdr;
4484         struct iovec hdtrl;
4485         hdr.headers = &hdtrl;
4486         hdr.hdr_cnt = 1;
4487         hdr.trailers = NULL;
4488         hdr.trl_cnt = 0;
4489         hdtrl.iov_base = NULL;
4490         hdtrl.iov_len = 0;
4491         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
4492 ],
4493 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4494
4495         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4496                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
4497                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
4498                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4499         else
4500                 AC_MSG_RESULT(no);
4501         fi
4502         ;;
4503
4504         *hpux*)
4505                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
4506                 AC_TRY_LINK([\
4507 #include <sys/socket.h>
4508 #include <sys/uio.h>],
4509 [\
4510         int fromfd, tofd;
4511         size_t total=0;
4512         struct iovec hdtrl[2];
4513         ssize_t nwritten;
4514         off64_t offset;
4515
4516         hdtrl[0].iov_base = 0;
4517         hdtrl[0].iov_len = 0;
4518
4519         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
4520 ],
4521 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
4522         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
4523                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
4524                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4525                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4526         else
4527                 AC_MSG_RESULT(no);
4528         fi
4529
4530                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
4531                 AC_TRY_LINK([\
4532 #include <sys/socket.h>
4533 #include <sys/uio.h>],
4534 [\
4535         int fromfd, tofd;
4536         size_t total=0;
4537         struct iovec hdtrl[2];
4538         ssize_t nwritten;
4539         off_t offset;
4540
4541         hdtrl[0].iov_base = 0;
4542         hdtrl[0].iov_len = 0;
4543
4544         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
4545 ],
4546 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4547         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4548                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4549                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4550                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4551         else
4552                 AC_MSG_RESULT(no);
4553         fi
4554         ;;
4555
4556         *solaris*)
4557                 AC_CHECK_LIB(sendfile,sendfilev)
4558                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
4559                 AC_TRY_LINK([\
4560 #include <sys/sendfile.h>],
4561 [\
4562         int sfvcnt;
4563         size_t xferred;
4564         struct sendfilevec vec[2];
4565         ssize_t nwritten;
4566         int tofd;
4567
4568         sfvcnt = 2;
4569
4570         vec[0].sfv_fd = SFV_FD_SELF;
4571         vec[0].sfv_flag = 0;
4572         vec[0].sfv_off = 0;
4573         vec[0].sfv_len = 0;
4574
4575         vec[1].sfv_fd = 0;
4576         vec[1].sfv_flag = 0;
4577         vec[1].sfv_off = 0;
4578         vec[1].sfv_len = 0;
4579         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
4580 ],
4581 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
4582
4583         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
4584                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
4585                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
4586                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4587         else
4588                 AC_MSG_RESULT(no);
4589         fi
4590
4591                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
4592                 AC_TRY_LINK([\
4593 #include <sys/sendfile.h>],
4594 [\
4595         int sfvcnt;
4596         size_t xferred;
4597         struct sendfilevec vec[2];
4598         ssize_t nwritten;
4599         int tofd;
4600
4601         sfvcnt = 2;
4602
4603         vec[0].sfv_fd = SFV_FD_SELF;
4604         vec[0].sfv_flag = 0;
4605         vec[0].sfv_off = 0;
4606         vec[0].sfv_len = 0;
4607
4608         vec[1].sfv_fd = 0;
4609         vec[1].sfv_flag = 0;
4610         vec[1].sfv_off = 0;
4611         vec[1].sfv_len = 0;
4612         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
4613 ],
4614 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
4615
4616         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
4617                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
4618                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
4619                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
4620         else
4621                 AC_MSG_RESULT(no);
4622         fi
4623         ;;
4624         *aix*)
4625                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
4626                 AC_TRY_LINK([\
4627 #include <sys/socket.h>],
4628 [\
4629         int fromfd, tofd;
4630         size_t total=0;
4631         struct sf_parms hdtrl;
4632         ssize_t nwritten;
4633         off64_t offset;
4634
4635         hdtrl.header_data = 0;
4636         hdtrl.header_length = 0;
4637         hdtrl.file_descriptor = fromfd;
4638         hdtrl.file_offset = 0;
4639         hdtrl.file_bytes = 0;
4640         hdtrl.trailer_data = 0;
4641         hdtrl.trailer_length = 0;
4642
4643         nwritten = send_file(&tofd, &hdtrl, 0);
4644 ],
4645 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4646         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4647                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4648                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
4649                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
4650         else
4651                 AC_MSG_RESULT(no);
4652         fi
4653         ;;
4654         *)
4655         ;;
4656         esac
4657         ;;
4658   *)
4659     AC_MSG_RESULT(no)
4660     ;;
4661   esac ],
4662   AC_MSG_RESULT(yes)
4663 )
4664
4665
4666 #################################################
4667 # Check whether winbind is supported on this platform.  If so we need to
4668 # build and install client programs, sbin programs and shared libraries
4669
4670 AC_MSG_CHECKING(whether to build winbind)
4671
4672 # Initially, the value of $host_os decides whether winbind is supported
4673
4674 HAVE_WINBIND=yes
4675
4676 # Define the winbind shared library name and any specific linker flags
4677 # it needs to be built with.
4678
4679 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
4680 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
4681 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
4682
4683 case "$host_os" in
4684         *linux*)
4685                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
4686                 ;;
4687         *freebsd[[5-9]]*)
4688                 # FreeBSD winbind client is implemented as a wrapper around
4689                 # the Linux version.
4690                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
4691                     nsswitch/winbind_nss_linux.o"
4692                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
4693                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
4694                 ;;
4695         *irix*)
4696                 # IRIX has differently named shared libraries
4697                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
4698                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
4699                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
4700                 ;;
4701         *solaris*)
4702                 # Solaris winbind client is implemented as a wrapper around
4703                 # the Linux version.
4704                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
4705                     nsswitch/winbind_nss_linux.o"
4706                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
4707                 ;;
4708         *hpux11*)
4709                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
4710                 ;;
4711         *aix*)
4712                 # AIX has even differently named shared libraries.  No
4713                 # WINS support has been implemented yet.
4714                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
4715                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
4716                 WINBIND_NSS="nsswitch/WINBIND"
4717                 WINBIND_WINS_NSS=""
4718                 ;;
4719         *)
4720                 HAVE_WINBIND=no
4721                 winbind_no_reason=", unsupported on $host_os"
4722                 ;;
4723 esac
4724
4725 AC_SUBST(WINBIND_NSS)
4726 AC_SUBST(WINBIND_WINS_NSS)
4727 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
4728 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
4729 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
4730
4731 # Check the setting of --with-winbind
4732
4733 AC_ARG_WITH(winbind,
4734 [  --with-winbind          Build winbind (default, if supported by OS)],
4735
4736   case "$withval" in
4737         yes)
4738                 HAVE_WINBIND=yes
4739                 ;;
4740         no)
4741                 HAVE_WINBIND=no
4742                 winbind_reason=""
4743                 ;;
4744   esac ],
4745 )
4746
4747 # We need unix domain sockets for winbind
4748
4749 if test x"$HAVE_WINBIND" = x"yes"; then
4750         if test x"$samba_cv_unixsocket" = x"no"; then
4751                 winbind_no_reason=", no unix domain socket support on $host_os"
4752                 HAVE_WINBIND=no
4753         fi
4754 fi
4755
4756 # Display test results
4757
4758 if test x"$HAVE_WINBIND" = x"yes"; then
4759         AC_MSG_RESULT(yes)
4760         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
4761
4762         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
4763         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
4764         if test $BLDSHARED = true; then
4765                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
4766
4767                 if test x"$with_pam" = x"yes"; then
4768                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.$SHLIBEXT"
4769                 fi
4770         fi
4771 else
4772         AC_MSG_RESULT(no$winbind_no_reason)
4773 fi
4774
4775 # Solaris 10 does have new member in nss_XbyY_key
4776 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
4777                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
4778                 [#include <nss_dbdefs.h>])
4779
4780 # Solaris has some extra fields in struct passwd that need to be
4781 # initialised otherwise nscd crashes.  
4782  
4783 AC_CHECK_MEMBER(struct passwd.pw_comment,
4784                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
4785                 [#include <pwd.h>])
4786
4787 AC_CHECK_MEMBER(struct passwd.pw_age,
4788                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
4789                 [#include <pwd.h>])
4790
4791 # AIX 4.3.x and 5.1 do not have as many members in
4792 # struct secmethod_table as AIX 5.2
4793 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
4794        [#include <usersec.h>])
4795 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
4796        [#include <usersec.h>])
4797
4798
4799 #################################################
4800 # Check to see if we should use the included popt 
4801
4802 AC_ARG_WITH(included-popt,
4803 [  --with-included-popt    use bundled popt library, not from system],
4804
4805   case "$withval" in
4806         yes)
4807                 INCLUDED_POPT=yes
4808                 ;;
4809         no)
4810                 INCLUDED_POPT=no
4811                 ;;
4812   esac ],
4813 )
4814 if test x"$INCLUDED_POPT" != x"yes"; then
4815     AC_CHECK_LIB(popt, poptGetContext,
4816                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
4817 fi
4818
4819 AC_MSG_CHECKING(whether to use included popt)
4820 if test x"$INCLUDED_POPT" = x"yes"; then
4821     AC_MSG_RESULT(yes)
4822     BUILD_POPT='$(POPT_OBJS)'
4823         POPTLIBS='$(POPT_OBJS)'
4824     FLAGS1="-I$srcdir/popt"
4825 else
4826     AC_MSG_RESULT(no)
4827         BUILD_POPT=""
4828     POPTLIBS="-lpopt"
4829 fi
4830 AC_SUBST(BUILD_POPT)
4831 AC_SUBST(POPTLIBS)
4832 AC_SUBST(FLAGS1)
4833
4834 #################################################
4835 # Check if the user wants Python
4836
4837 # At the moment, you can use this to set which Python binary to link
4838 # against.  (Libraries built for Python2.2 can't be used by 2.1,
4839 # though they can coexist in different directories.)  In the future
4840 # this might make the Python stuff be built by default.
4841
4842 # Defaulting python breaks the clean target if python isn't installed
4843
4844 PYTHON=
4845
4846 AC_ARG_WITH(python,
4847 [  --with-python=PYTHONNAME  build Python libraries],
4848 [ case "${withval-python}" in
4849   yes)
4850         PYTHON=python
4851         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
4852         ;;
4853   no)
4854         PYTHON=
4855         ;;
4856   *)
4857         PYTHON=${withval-python}
4858         ;;
4859   esac ])
4860 AC_SUBST(PYTHON)
4861
4862 for i in `echo $default_static_modules | sed -e's/,/ /g'`
4863 do
4864         eval MODULE_DEFAULT_$i=STATIC
4865 done
4866
4867 for i in `echo $default_shared_modules | sed -e's/,/ /g'`
4868 do
4869         dnl Fall back to static if we cannot build shared libraries
4870         eval MODULE_DEFAULT_$i=STATIC
4871
4872         if test $BLDSHARED = true; then
4873                 eval MODULE_DEFAULT_$i=SHARED
4874         fi
4875 done
4876
4877 dnl Always built these modules static
4878 MODULE_pdb_guest=STATIC
4879 MODULE_rpc_spoolss=STATIC
4880 MODULE_rpc_srv=STATIC
4881 MODULE_idmap_tdb=STATIC
4882
4883 AC_ARG_WITH(static-modules,
4884 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
4885 [ if test $withval; then
4886         for i in `echo $withval | sed -e's/,/ /g'`
4887         do
4888                 eval MODULE_$i=STATIC
4889         done
4890 fi ])
4891
4892 AC_ARG_WITH(shared-modules,
4893 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
4894 [ if test $withval; then
4895         for i in `echo $withval | sed -e's/,/ /g'`
4896         do
4897                         eval MODULE_$i=SHARED
4898         done
4899 fi ])
4900
4901 ###########################################################################
4902 ## contributed pdb_modules
4903
4904 SMB_MODULE(pdb_xml, passdb/pdb_xml.o, "bin/xml.$SHLIBEXT", PDB,
4905                   [ PASSDB_LIBS="$PASSDB_LIBS $XML_LIBS" ] )
4906 SMB_MODULE(pdb_mysql, passdb/pdb_mysql.o, "bin/mysql.$SHLIBEXT", PDB, 
4907                    [ PASSDB_LIBS="$PASSDB_LIBS $MYSQL_LIBS" ]   )
4908 SMB_MODULE(pdb_pgsql, passdb/pdb_pgsql.o, "bin/pgsql.$SHLIBEXT", PDB, 
4909                    [ PASSDB_LIBS="$PASSDB_LIBS $PGSQL_LIBS" ]   )
4910
4911 ## end of contributed pdb_modules
4912 ###########################################################################
4913
4914 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB, 
4915                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
4916 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
4917 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
4918 SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
4919 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
4920
4921 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
4922 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
4923 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
4924 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
4925 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
4926 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
4927 SMB_MODULE(rpc_dfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
4928 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
4929 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
4930 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
4931 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
4932 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
4933 SMB_SUBSYSTEM(RPC,smbd/server.o)
4934
4935 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/idmap_ldap.$SHLIBEXT", IDMAP)
4936 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/idmap_tdb.$SHLIBEXT", IDMAP)
4937 SMB_MODULE(idmap_rid, sam/idmap_rid.o, "bin/idmap_rid.$SHLIBEXT", IDMAP)
4938 SMB_MODULE(idmap_ad, sam/idmap_ad.o, "bin/idmap_ad.$SHLIBEXT", IDMAP)
4939 SMB_SUBSYSTEM(IDMAP,sam/idmap.o)
4940
4941 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
4942 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
4943 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
4944 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
4945 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
4946
4947 SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
4948 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
4949 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
4950 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
4951 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
4952 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
4953 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
4954 SMB_SUBSYSTEM(AUTH,auth/auth.o)
4955
4956 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
4957 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
4958 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
4959 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
4960 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
4961 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
4962 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
4963 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
4964 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
4965 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
4966 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
4967 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
4968 SMB_MODULE(vfs_catia, \$(VFS_AFSACL_OBJ), "bin/catia.$SHLIBEXT", VFS)
4969 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
4970
4971 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
4972
4973 #################################################
4974 # do extra things if we are running insure
4975
4976 if test "${ac_cv_prog_CC}" = "insure"; then
4977         CPPFLAGS="$CPPFLAGS -D__INSURE__"
4978 fi
4979
4980 #################################################
4981 # Display summary of libraries detected
4982
4983 AC_MSG_RESULT([Using libraries:])
4984 AC_MSG_RESULT([    LIBS = $LIBS])
4985 if test x"$with_ads_support" != x"no"; then
4986    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
4987 fi
4988 if test x"$with_ldap_support" != x"no"; then
4989    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
4990 fi
4991 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
4992
4993 #################################################
4994 # final configure stuff
4995
4996 AC_MSG_CHECKING([configure summary])
4997 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
4998            AC_MSG_RESULT(yes),
4999            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
5000            AC_MSG_WARN([cannot run when cross-compiling]))
5001
5002 builddir=`pwd`
5003 AC_SUBST(builddir)
5004
5005 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
5006 LIB_REMOVE_USR_LIB(LDFLAGS)
5007 LIB_REMOVE_USR_LIB(LIBS)
5008
5009 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
5010 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
5011 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
5012
5013 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh)
5014
5015 #################################################
5016 # Print very concise instructions on building/use
5017 if test "x$enable_dmalloc" = xyes
5018 then
5019         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
5020         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])
5021 fi