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