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