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