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