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