Back out --with-good-getgrouplist patch
[Samba/gebeck_regimport.git] / source3 / configure.in
bloba2e04b5d480a7dae30cf8dbfdc758bdd9b5cc9be
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 #################################################
12 # Directory handling stuff to support both the
13 # legacy SAMBA directories and FHS compliant
14 # ones...
15 AC_PREFIX_DEFAULT(/usr/local/samba)
17 AC_ARG_WITH(fhs, 
18 [  --with-fhs              Use FHS-compliant paths (default=no)],
19     configdir="${sysconfdir}/samba"
20     lockdir="\${VARDIR}/cache/samba"
21     piddir="\${VARDIR}/run/samba"
22     logfilebase="\${VARDIR}/log/samba"
23     privatedir="\${CONFIGDIR}/private"
24     libdir="\${prefix}/lib/samba"
25     swatdir="\${DATADIR}/samba/swat",
26     configdir="\${LIBDIR}"
27     logfilebase="\${VARDIR}"
28     lockdir="\${VARDIR}/locks"
29     piddir="\${VARDIR}/locks"
30     privatedir="\${prefix}/private"
31     swatdir="\${prefix}/swat")
33 #################################################
34 # set private directory location
35 AC_ARG_WITH(privatedir,
36 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
37 [ case "$withval" in
38   yes|no)
39   #
40   # Just in case anybody calls it without argument
41   #
42     AC_MSG_WARN([--with-privatedir called without argument - will use default])
43   ;;
44   * )
45     privatedir="$withval"
46     ;;
47   esac])
49 #################################################
50 # set lock directory location
51 AC_ARG_WITH(lockdir,
52 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
53 [ case "$withval" in
54   yes|no)
55   #
56   # Just in case anybody calls it without argument
57   #
58     AC_MSG_WARN([--with-lockdir called without argument - will use default])
59   ;;
60   * )
61     lockdir="$withval"
62     ;;
63   esac])
65 #################################################
66 # set pid directory location
67 AC_ARG_WITH(piddir,
68 [  --with-piddir=DIR       Where to put pid 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-piddir called without argument - will use default])
75   ;;
76   * )
77     piddir="$withval"
78     ;;
79   esac])
81 #################################################
82 # set SWAT directory location
83 AC_ARG_WITH(swatdir,
84 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
85 [ case "$withval" in
86   yes|no)
87   #
88   # Just in case anybody does it
89   #
90     AC_MSG_WARN([--with-swatdir called without argument - will use default])
91   ;;
92   * )
93     swatdir="$withval"
94     ;;
95   esac])
97 #################################################
98 # set configuration directory location
99 AC_ARG_WITH(configdir,
100 [  --with-configdir=DIR    Where to put configuration files (\$libdir)],
101 [ case "$withval" in
102   yes|no)
103   #
104   # Just in case anybody does it
105   #
106     AC_MSG_WARN([--with-configdir called without argument - will use default])
107   ;;
108   * )
109     configdir="$withval"
110     ;;
111   esac])
113 #################################################
114 # set log directory location
115 AC_ARG_WITH(logfilebase,
116 [  --with-logfilebase=DIR  Where to put log files (\$(VARDIR))],
117 [ case "$withval" in
118   yes|no)
119   #
120   # Just in case anybody does it
121   #
122     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
123   ;;
124   * )
125     logfilebase="$withval"
126     ;;
127   esac])
129 AC_SUBST(configdir)
130 AC_SUBST(lockdir)
131 AC_SUBST(piddir)
132 AC_SUBST(logfilebase)
133 AC_SUBST(privatedir)
134 AC_SUBST(swatdir)
135 AC_SUBST(bindir)
136 AC_SUBST(sbindir)
138 dnl Unique-to-Samba variables we'll be playing with.
139 AC_SUBST(SHELL)
140 AC_SUBST(LDSHFLAGS)
141 AC_SUBST(SONAMEFLAG)
142 AC_SUBST(SHLD)
143 AC_SUBST(HOST_OS)
144 AC_SUBST(PICFLAG)
145 AC_SUBST(PICSUFFIX)
146 AC_SUBST(POBAD_CC)
147 AC_SUBST(SHLIBEXT)
148 AC_SUBST(INSTALLCLIENT)
149 AC_SUBST(INSTALLCLIENTCMD_SH)
150 AC_SUBST(INSTALLCLIENTCMD_A)
151 AC_SUBST(LIBSMBCLIENT_SHARED)
152 AC_SUBST(LIBSMBCLIENT)
153 AC_SUBST(PRINT_LIBS)
154 AC_SUBST(AUTH_LIBS)
155 AC_SUBST(ACL_LIBS)
156 AC_SUBST(PASSDB_LIBS)
157 AC_SUBST(IDMAP_LIBS)
158 AC_SUBST(KRB5_LIBS)
159 AC_SUBST(LDAP_LIBS)
160 AC_SUBST(SHLIB_PROGS)
161 AC_SUBST(SMBWRAPPER)
162 AC_SUBST(EXTRA_BIN_PROGS)
163 AC_SUBST(EXTRA_SBIN_PROGS)
164 AC_SUBST(EXTRA_ALL_TARGETS)
166 AC_ARG_ENABLE(debug, 
167 [  --enable-debug          Turn on compiler debugging information (default=no)],
168     [if eval "test x$enable_debug = xyes"; then
169         CFLAGS="${CFLAGS} -g"
170     fi])
172 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
173     [if eval "test x$enable_developer = xyes"; then
174         developer=yes
175         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
176     fi])
178 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
179     [if eval "test x$enable_krb5developer = xyes"; then
180         developer=yes
181         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
182     fi])
184 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
186 if test "x$enable_dmalloc" = xyes
187 then
188         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
189         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
190                   [Define to check invariants around some common functions])
191         LIBS="$LIBS -ldmalloc"  
194 dnl Checks for programs.
195 AC_PROG_CC
196 AC_PROG_INSTALL
197 AC_PROG_AWK
198 AC_PATH_PROG(PERL, perl)
200 # compile with optimization and without debugging by default, but
201 # allow people to set their own preference.
202 if test "x$CFLAGS" = x
203 then
204   CFLAGS="-O ${CFLAGS}"
207 dnl Check if we use GNU ld
208 LD=ld
209 AC_PROG_LD_GNU
211 dnl needed before AC_TRY_COMPILE
212 AC_ISC_POSIX
214 dnl look for executable suffix
215 AC_EXEEXT
217 dnl Check if C compiler understands -c and -o at the same time
218 AC_PROG_CC_C_O
219 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
220       BROKEN_CC=
221 else
222       BROKEN_CC=#
224 AC_SUBST(BROKEN_CC)
226 dnl Check if the C compiler understands -Werror
227 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
228  AC_TRY_RUN_STRICT([
229   int main(void)
230   {
231         return 0;
232   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
233   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
234 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
235    Werror_FLAGS="-Werror"
236 else 
237 dnl Check if the C compiler understands -w2
238 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
239  AC_TRY_RUN_STRICT([
240   int main(void)
241   {
242         return 0;
243   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
244   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
245 if test x"$samba_cv_HAVE_w2" = x"yes"; then
246    Werror_FLAGS="-w2"
250 dnl Check if the C compiler understands volatile (it should, being ANSI).
251 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
252     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
253         samba_cv_volatile=yes,samba_cv_volatile=no)])
254 if test x"$samba_cv_volatile" = x"yes"; then
255    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
258 UNAME_S=`uname -s`
259 AC_MSG_CHECKING(uname -s)
260 AC_MSG_RESULT(${UNAME_S})
262 UNAME_R=`uname -r`
263 AC_MSG_CHECKING(uname -r)
264 AC_MSG_RESULT(${UNAME_R})
266 UNAME_M=`uname -m`
267 AC_MSG_CHECKING(uname -m)
268 AC_MSG_RESULT(${UNAME_M})
270 UNAME_P=`uname -p`
271 AC_MSG_CHECKING(uname -p)
272 AC_MSG_RESULT(${UNAME_P})
274 AC_CANONICAL_SYSTEM
276 dnl Add #include for broken IRIX header files
277   case "$host_os" in
278         *irix6*) AC_ADD_INCLUDE(<standards.h>)
279         ;;
280 esac
282 AC_VALIDATE_CACHE_SYSTEM_TYPE
284 DYNEXP=
286 dnl Add modules that have to be built by default here
287 dnl These have to be built static:
288 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_reg rpc_lsa_ds rpc_wks rpc_net rpc_dfs rpc_srv rpc_spoolss auth_rhosts auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin"
290 dnl These are preferably build shared, and static if dlopen() is not available
291 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap charset_CP850 charset_CP437"
293 if test "x$developer" = xyes; then
294    default_static_modules="$default_static_modules rpc_echo"
295    default_shared_modules="$default_shared_modules charset_weird"
299 # Config CPPFLAG settings for strange OS's that must be set
300 # before other tests.
302 case "$host_os" in
303 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
304     *hpux*)
305     
306       AC_PROG_CC_FLAG(Ae)
307       # mmap on HPUX is completely broken...
308       AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
309       if test $ac_cv_prog_cc_Ae = yes; then
310         CPPFLAGS="$CPPFLAGS -Ae"
311       fi
313 # Defines needed for HPUX support.
314 # HPUX has bigcrypt but (sometimes?) doesn't use it for
315 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
317       case `uname -r` in
318                         *9*|*10*)
319                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
320                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
321                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
322                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
323                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
324                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
325                                 ;;
326                         *11*)
327                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
328                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
329                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
330                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
331                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
332                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
333                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
334                                 ;;
335       esac
336       DYNEXP="-Wl,-E"
337       ;;
340 # CRAY Unicos has broken const handling
341        *unicos*)
342           AC_MSG_RESULT([disabling const])
343           CPPFLAGS="$CPPFLAGS -Dconst="
344           ;;
345         
347 # AIX4.x doesn't even admit to having large
348 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
350     *aix4*)
351           AC_MSG_RESULT([enabling large file support])
352       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
353           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
354       ;;    
356 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
357 # to the existance of large files..
358 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
359 # recommendations on large file support, however it makes the
360 # compile work using gcc 2.7 and 2.8, whereas using the Sun
361 # recommendation makes the compile fail on gcc2.7. JRA.
363 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
365         *solaris*)
366                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
367                 case `uname -r` in
368                         5.0*|5.1*|5.2*|5.3*|5.5*)
369                                 AC_MSG_RESULT([no large file support])
370                                 ;;
371                         5.*)
372                         AC_MSG_RESULT([enabling large file support])
373                         if test "$ac_cv_prog_gcc" = yes; then
374                                 ${CC-cc} -v >conftest.c 2>&1
375                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
376                                 rm -fr conftest.c
377                                 case "$ac_cv_gcc_compiler_version_number" in
378                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
379                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
380                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
381                                                 ;;
382                                         *)
383                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
384                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
385                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
386                                                 ;;
387                                 esac
388                         else
389                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
390                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
391                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
392                         fi
393                         ;;
394                 esac
395                 ;;
397 # IRIX uses SYSV printing.  Make sure to set that here
399         *irix*)
400                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
401                 ;;
402         *freebsd*)
403                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
404                 ;;
407 # VOS may need to have POSIX support and System V compatibility enabled.
409     *vos*)
410     case "$CPPFLAGS" in
411           *-D_POSIX_C_SOURCE*)
412                 ;;
413           *)
414                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=199506L"
415                 AC_DEFINE(_POSIX_C_SOURCE, 199506L, [Whether to enable POSIX support])
416                 ;;
417     esac
418     case "$CPPFLAGS" in
419           *-D_SYSV*|*-D_SVID_SOURCE*)
420                 ;;
421           *)
422                 CPPFLAGS="$CPPFLAGS -D_SYSV"
423                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
424    esac
425     ;;
427 # Tests needed for SINIX large file support.
429     *sysv4*)
430       if test $host = mips-sni-sysv4 ; then
431         AC_MSG_CHECKING([for LFS support])
432         old_CPPFLAGS="$CPPFLAGS"
433         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
434         AC_TRY_RUN([
435 #include <unistd.h>
436 main () {
437 #if _LFS64_LARGEFILE == 1
438 exit(0);
439 #else
440 exit(1);
441 #endif
442 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
443         CPPFLAGS="$old_CPPFLAGS"
444         if test x$SINIX_LFS_SUPPORT = xyes ; then
445           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
446                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
447           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
448           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
449           LIBS="`getconf LFS64_LIBS` $LIBS"
450         fi
451       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
452       fi
453     ;;
455 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
457     *linux*)
458         AC_MSG_CHECKING([for LFS support])
459         old_CPPFLAGS="$CPPFLAGS"
460         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
461        AC_TRY_RUN([
462 #include <unistd.h>
463 #include <sys/utsname.h>
464 main() {
465 #if _LFS64_LARGEFILE == 1
466        struct utsname uts;
467        char *release;
468        int major, minor;
470        /* Ensure this is glibc 2.2 or higher */
471 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
472        int libc_major = __GLIBC__;
473        int libc_minor = __GLIBC_MINOR__;
475        if (libc_major < 2)
476               exit(1);
477        if (libc_minor < 2)
478               exit(1);
479 #endif
481        /* Ensure this is kernel 2.4 or higher */
483        uname(&uts);
484        release = uts.release;
485        major = atoi(strsep(&release, "."));
486        minor = atoi(strsep(&release, "."));
488        if (major > 2 || (major == 2 && minor > 3))
489                exit(0);
490        exit(1);
491 #else
492        exit(1);
493 #endif
495 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
496         CPPFLAGS="$old_CPPFLAGS"
497         if test x$LINUX_LFS_SUPPORT = xyes ; then
498           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
499                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
500           AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
501           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
502         fi
503        AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
504                 ;;
506     *hurd*)
507         AC_MSG_CHECKING([for LFS support])
508         old_CPPFLAGS="$CPPFLAGS"
509         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
510         AC_TRY_RUN([
511 #include <unistd.h>
512 main () {
513 #if _LFS64_LARGEFILE == 1
514 exit(0);
515 #else
516 exit(1);
517 #endif
518 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
519         CPPFLAGS="$old_CPPFLAGS"
520         if test x$GLIBC_LFS_SUPPORT = xyes ; then
521           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
522                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
523           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
524         fi
525       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
526     ;;
528 esac
530 AC_INLINE
531 AC_HEADER_STDC
532 AC_HEADER_DIRENT
533 AC_HEADER_TIME
534 AC_HEADER_SYS_WAIT
535 AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
536 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h)
537 AC_CHECK_HEADERS(compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
538 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h)
539 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
540 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
541 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
542 AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h dlfcn.h)
543 AC_CHECK_HEADERS(sys/syslog.h syslog.h execinfo.h)
544 AC_CHECK_HEADERS(langinfo.h locale.h)
546 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
547 # subdirectory of headers.
548 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
551 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
552 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
554 case "$host_os" in
555     *hpux*)
556                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
557                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
558                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
559                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
560                 fi
561         ;;
562 esac
563 AC_CHECK_HEADERS(shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
564 AC_CHECK_HEADERS(nss.h nss_common.h ns_api.h sys/security.h security/pam_appl.h security/pam_modules.h)
565 AC_CHECK_HEADERS(stropts.h poll.h)
566 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
567 AC_CHECK_HEADERS(sys/acl.h sys/attributes.h attr/xattr.h sys/cdefs.h glob.h)
569 # For experimental utmp support (lastlog on some BSD-like systems)
570 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
572 AC_CHECK_SIZEOF(int,cross)
573 AC_CHECK_SIZEOF(long,cross)
574 AC_CHECK_SIZEOF(short,cross)
576 AC_C_CONST
577 AC_C_INLINE
578 AC_C_BIGENDIAN
579 AC_C_CHAR_UNSIGNED
581 AC_TYPE_SIGNAL
582 AC_TYPE_UID_T
583 AC_TYPE_MODE_T
584 AC_TYPE_OFF_T
585 AC_TYPE_SIZE_T
586 AC_TYPE_PID_T
587 AC_STRUCT_ST_RDEV
588 AC_DIRENT_D_OFF
589 AC_CHECK_TYPE(ino_t,unsigned)
590 AC_CHECK_TYPE(loff_t,off_t)
591 AC_CHECK_TYPE(offset_t,loff_t)
592 AC_CHECK_TYPE(ssize_t, int)
593 AC_CHECK_TYPE(wchar_t, unsigned short)
595 ############################################
596 # for cups support we need libcups, and a handful of header files
598 AC_ARG_ENABLE(cups,
599 [  --enable-cups           Turn on CUPS support (default=auto)])
601 if test x$enable_cups != xno; then
602         AC_PATH_PROG(CUPS_CONFIG, cups-config)
604         if test "x$CUPS_CONFIG" != x; then
605                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
606                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
607                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
608                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
609         fi
612 ############################################
613 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
614 AC_SEARCH_LIBS(dlopen, [dl])
615 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
617 ############################################
618 # check if the compiler can do immediate structures
619 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
620     AC_TRY_COMPILE([
621 #include <stdio.h>],
623    typedef struct {unsigned x;} FOOBAR;
624    #define X_FOOBAR(x) ((FOOBAR) { x })
625    #define FOO_ONE X_FOOBAR(1)
626    FOOBAR f = FOO_ONE;   
627    static struct {
628         FOOBAR y; 
629         } f2[] = {
630                 {FOO_ONE}
631         };   
633         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
634 if test x"$samba_cv_immediate_structures" = x"yes"; then
635    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
638 ############################################
639 # check if the compiler can do immediate structures
640 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
641     AC_TRY_LINK([
642 #include <stdio.h>],
644                 if (0) {
645                    this_function_does_not_exist();
646                 } else {
647                   return 1;
648                 }
651         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
652 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
653    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
656 ############################################
657 # check for unix domain sockets
658 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
659     AC_TRY_COMPILE([
660 #include <sys/types.h>
661 #include <stdlib.h>
662 #include <stddef.h>
663 #include <sys/socket.h>
664 #include <sys/un.h>],
666   struct sockaddr_un sunaddr; 
667   sunaddr.sun_family = AF_UNIX;
669         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
670 if test x"$samba_cv_unixsocket" = x"yes"; then
671    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
675 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
676     AC_TRY_COMPILE([
677 #include <sys/types.h>
678 #if STDC_HEADERS
679 #include <stdlib.h>
680 #include <stddef.h>
681 #endif
682 #include <sys/socket.h>],[socklen_t i = 0],
683         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
684 if test x"$samba_cv_socklen_t" = x"yes"; then
685    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
688 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
689     AC_TRY_COMPILE([
690 #include <sys/types.h>
691 #if STDC_HEADERS
692 #include <stdlib.h>
693 #include <stddef.h>
694 #endif
695 #include <signal.h>],[sig_atomic_t i = 0],
696         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
697 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
698    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
701 # stupid headers have the functions but no declaration. grrrr.
702 AC_HAVE_DECL(errno, [#include <errno.h>])
703 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
704 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
705 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
706 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
707 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
708 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
710 # and glibc has setresuid under linux but the function does
711 # nothing until kernel 2.1.44! very dumb.
712 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
713     AC_TRY_RUN([#include <errno.h>
714 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
715         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
716 if test x"$samba_cv_have_setresuid" = x"yes"; then
717     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
720 # Do the same check for setresguid...
722 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
723     AC_TRY_RUN([#include <unistd.h>
724 #include <errno.h>
725 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
726         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
727 if test x"$samba_cv_have_setresgid" = x"yes"; then
728     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
731 AC_FUNC_MEMCMP
733 ###############################################
734 # Readline included by default unless explicitly asked not to
735 test "${with_readline+set}" != "set" && with_readline=yes
737 # test for where we get readline() from
738 AC_MSG_CHECKING(whether to use readline)
739 AC_ARG_WITH(readline,
740 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
741 [  case "$with_readline" in
742   yes)
743     AC_MSG_RESULT(yes)
745     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
746     AC_CHECK_HEADERS(readline/history.h)
748     AC_CHECK_HEADERS(readline.h readline/readline.h,[
749       for termlib in ncurses curses termcap terminfo termlib tinfo; do
750        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
751       done
752       AC_CHECK_LIB(readline, rl_callback_handler_install,
753        [TERMLIBS="-lreadline $TERMLIBS"
754        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
755        break], [TERMLIBS=], $TERMLIBS)])
756     ;;
757   no)
758     AC_MSG_RESULT(no)
759     ;;
760   *)
761     AC_MSG_RESULT(yes)
763     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
764     # alternate readline path
765     _ldflags=${LDFLAGS}
766     _cppflags=${CPPFLAGS}
768     # Add additional search path
769     LDFLAGS="-L$with_readline/lib $LDFLAGS"
770     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
772     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
773     AC_CHECK_HEADERS(readline/history.h)
775     AC_CHECK_HEADERS(readline.h readline/readline.h,[
776       for termlib in ncurses curses termcap terminfo termlib; do
777        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
778       done
779       AC_CHECK_LIB(readline, rl_callback_handler_install,
780        [TERMLDFLAGS="-L$with_readline/lib"
781        TERMCPPFLAGS="-I$with_readline/include"
782        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
783        TERMLIBS="-lreadline $TERMLIBS"
784        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
785        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
787     LDFLAGS=$_ldflags
788     ;;
789   esac],
790   AC_MSG_RESULT(no)
792 AC_SUBST(TERMLIBS)
793 AC_SUBST(TERMLDFLAGS)
795 # The readline API changed slightly from readline3 to readline4, so
796 # code will generate warnings on one of them unless we have a few
797 # special cases.
798 AC_CHECK_LIB(readline, rl_completion_matches,
799              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
800                         [Do we have rl_completion_matches?])],
801              [],
802              [$TERMLIBS])
804 # The following test taken from the cvs sources
805 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
806 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
807 # libsocket.so which has a bad implementation of gethostbyname (it
808 # only looks in /etc/hosts), so we only look for -lsocket if we need
809 # it.
810 AC_CHECK_FUNCS(connect)
811 if test x"$ac_cv_func_connect" = x"no"; then
812     case "$LIBS" in
813     *-lnsl*) ;;
814     *) AC_CHECK_LIB(nsl_s, printf) ;;
815     esac
816     case "$LIBS" in
817     *-lnsl*) ;;
818     *) AC_CHECK_LIB(nsl, printf) ;;
819     esac
820     case "$LIBS" in
821     *-lsocket*) ;;
822     *) AC_CHECK_LIB(socket, connect) ;;
823     esac
824     case "$LIBS" in
825     *-linet*) ;;
826     *) AC_CHECK_LIB(inet, connect) ;;
827     esac
828     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
829     dnl has been cached.
830     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
831        test x"$ac_cv_lib_inet_connect" = x"yes"; then
832         # ac_cv_func_connect=yes
833         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
834         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
835     fi
838 ###############################################
839 # test for where we get yp_get_default_domain() from
840 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
841 AC_CHECK_FUNCS(yp_get_default_domain)
843 # Check if we have execl, if not we need to compile smbrun.
844 AC_CHECK_FUNCS(execl)
845 if test x"$ac_cv_func_execl" = x"no"; then
846     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
849 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
850 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid)
851 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
852 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
853 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
854 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
855 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
856 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
857 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
858 AC_CHECK_FUNCS(syslog vsyslog timegm)
859 AC_CHECK_FUNCS(setlocale nl_langinfo)
860 # setbuffer, shmget, shm_open are needed for smbtorture
861 AC_CHECK_FUNCS(setbuffer shmget shm_open backtrace_symbols)
863 # syscall() is needed for smbwrapper.
864 AC_CHECK_FUNCS(syscall)
866 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
867 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
868 AC_CHECK_FUNCS(__getcwd _getcwd)
869 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
870 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
871 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
872 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
873 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
874 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
875 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
876 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
877 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
878 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
879 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
884 case "$host_os" in
885     *linux*)
886        # glibc <= 2.3.2 has a broken getgrouplist
887        AC_TRY_RUN([
888 #include <unistd.h>
889 #include <sys/utsname.h>
890 main() {
891        /* glibc up to 2.3 has a broken getgrouplist */
892 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
893        int libc_major = __GLIBC__;
894        int libc_minor = __GLIBC_MINOR__;
896        if (libc_major < 2)
897               exit(1);
898        if ((libc_major == 2) && (libc_minor <= 3))
899               exit(1);
900 #endif
901        exit(0);
903 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
904        if test x"$linux_getgrouplist_ok" = x"yes"; then
905           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
906        fi
907        ;;
908     *)
909        AC_CHECK_FUNCS(getgrouplist)
910        ;;
911 esac
914 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
917 if test x$ac_cv_func_stat64 = xno ; then
918   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
919   AC_TRY_LINK([
920 #if defined(HAVE_UNISTD_H)
921 #include <unistd.h>
922 #endif
923 #include <sys/stat.h>
924 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
925   AC_MSG_RESULT([$ac_cv_func_stat64])
926   if test x$ac_cv_func_stat64 = xyes ; then
927     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
928   fi
931 if test x$ac_cv_func_lstat64 = xno ; then
932   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
933   AC_TRY_LINK([
934 #if defined(HAVE_UNISTD_H)
935 #include <unistd.h>
936 #endif
937 #include <sys/stat.h>
938 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
939   AC_MSG_RESULT([$ac_cv_func_lstat64])
940   if test x$ac_cv_func_lstat64 = xyes ; then
941     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
942   fi
945 if test x$ac_cv_func_fstat64 = xno ; then
946   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
947   AC_TRY_LINK([
948 #if defined(HAVE_UNISTD_H)
949 #include <unistd.h>
950 #endif
951 #include <sys/stat.h>
952 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
953   AC_MSG_RESULT([$ac_cv_func_fstat64])
954   if test x$ac_cv_func_fstat64 = xyes ; then
955     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
956   fi
959 #####################################
960 # we might need the resolv library on some systems
961 AC_CHECK_LIB(resolv, dn_expand)
964 # Check for the functions putprpwnam, set_auth_parameters,
965 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
966 # Needed for OSF1 and HPUX.
969 AC_LIBTESTFUNC(security, putprpwnam)
970 AC_LIBTESTFUNC(sec, putprpwnam)
972 AC_LIBTESTFUNC(security, set_auth_parameters)
973 AC_LIBTESTFUNC(sec, set_auth_parameters)
975 # UnixWare 7.x has its getspnam in -lgen
976 AC_LIBTESTFUNC(gen, getspnam)
978 AC_LIBTESTFUNC(security, getspnam)
979 AC_LIBTESTFUNC(sec, getspnam)
981 AC_LIBTESTFUNC(security, bigcrypt)
982 AC_LIBTESTFUNC(sec, bigcrypt)
984 AC_LIBTESTFUNC(security, getprpwnam)
985 AC_LIBTESTFUNC(sec, getprpwnam)
987 ############################################
988 # Check if we have libattr
989 AC_SEARCH_LIBS(getxattr, [attr])
990 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
991 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
992 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
993 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
994 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
996 # Assume non-shared by default and override below
997 BLDSHARED="false"
999 # these are the defaults, good for lots of systems
1000 HOST_OS="$host_os"
1001 LDSHFLAGS="-shared"
1002 SONAMEFLAG="#"
1003 SHLD="\${CC} \${CFLAGS}"
1004 PICFLAG=""
1005 PICSUFFIX="po"
1006 POBAD_CC="#"
1007 SHLIBEXT="so"
1009 if test "$enable_shared" = "yes"; then
1010   # this bit needs to be modified for each OS that is suported by
1011   # smbwrapper. You need to specify how to created a shared library and
1012   # how to compile C code to produce PIC object files
1014   AC_MSG_CHECKING([ability to build shared libraries])
1016   # and these are for particular systems
1017   case "$host_os" in
1018                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1019                         BLDSHARED="true"
1020                         LDSHFLAGS="-shared" 
1021                         DYNEXP="-Wl,--export-dynamic"
1022                         PICFLAG="-fPIC"
1023                         SONAMEFLAG="-Wl,-soname="
1024                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1025                         ;;
1026                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1027                         BLDSHARED="true"
1028                         LDSHFLAGS="-G"
1029                         SONAMEFLAG="-h "
1030                         if test "${GCC}" = "yes"; then
1031                                 PICFLAG="-fPIC"
1032                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1033                                         DYNEXP="-Wl,-E"
1034                                 fi
1035                         else
1036                                 PICFLAG="-KPIC"
1037                                 ## ${CFLAGS} added for building 64-bit shared 
1038                                 ## libs using Sun's Compiler
1039                                 LDSHFLAGS="-G \${CFLAGS}"
1040                                 POBAD_CC=""
1041                                 PICSUFFIX="po.o"
1042                         fi
1043                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1044                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1045                         ;;
1046                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1047                         BLDSHARED="true"
1048                         LDSHFLAGS="-G"
1049                         SONAMEFLAG="-Wl,-h,"
1050                         PICFLAG="-KPIC"   # Is this correct for SunOS
1051                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1052                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1053                         ;;
1054                 *netbsd* | *freebsd*)  BLDSHARED="true"
1055                         LDSHFLAGS="-shared"
1056                         DYNEXP="-Wl,--export-dynamic"
1057                         SONAMEFLAG="-Wl,-soname,"
1058                         PICFLAG="-fPIC -DPIC"
1059                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1060                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1061                         ;;
1062                 *openbsd*)  BLDSHARED="true"
1063                         LDSHFLAGS="-shared"
1064                         DYNEXP="-Wl,-Bdynamic"
1065                         SONAMEFLAG="-Wl,-soname,"
1066                         PICFLAG="-fPIC"
1067                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1068                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1069                         ;;
1070                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1071                         case "$host_os" in
1072                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1073                         ;;
1074                         esac
1075                         BLDSHARED="true"
1076                         LDSHFLAGS="-set_version sgi1.0 -shared"
1077                         SONAMEFLAG="-soname "
1078                         SHLD="\${LD}"
1079                         if test "${GCC}" = "yes"; then
1080                                 PICFLAG="-fPIC"
1081                         else 
1082                                 PICFLAG="-KPIC"
1083                         fi
1084                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1085                         ;;
1086                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1087                         BLDSHARED="true"
1088                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry,-berok"
1089                         DYNEXP="-Wl,-brtl,-bexpall"
1090                         PICFLAG="-O2"
1091                         if test "${GCC}" != "yes"; then
1092                                 ## for funky AIX compiler using strncpy()
1093                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1094                         fi
1096                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1097                         ;;
1098                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1099                         SHLIBEXT="sl"
1100                         # Use special PIC flags for the native HP-UX compiler.
1101                         if test $ac_cv_prog_cc_Ae = yes; then
1102                                 BLDSHARED="true"
1103                                 SHLD="/usr/bin/ld"
1104                                 LDSHFLAGS="-B symbolic -b -z"
1105                                 SONAMEFLAG="+h "
1106                                 PICFLAG="+z"
1107                         elif test "${GCC}" = "yes"; then
1108                                 PICFLAG="-fPIC"
1109                         fi
1110                         DYNEXP="-Wl,-E"
1111                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1112                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1113                         ;;
1114                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1115                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1116                         ;;
1117                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1118                         BLDSHARED="true"
1119                         LDSHFLAGS="-shared"
1120                         SONAMEFLAG="-Wl,-soname,"
1121                         PICFLAG="-fPIC"
1122                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1123                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1124                         ;;
1125                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1126                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1127                         ;;
1128                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1129                         BLDSHARED="true"
1130                         LDSHFLAGS="-shared"
1131                         SONAMEFLAG="-Wl,-soname,"
1132                         PICFLAG="-KPIC"
1133                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1134                         ;;
1135                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1136                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1137                         ;;
1138                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1139                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1140                         ;;
1141                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1142                         case "$host" in
1143                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1144                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1145                                         fi
1146                                         LDSHFLAGS="-G"
1147                                         DYNEXP="-Bexport"
1148                                 ;;
1149                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1150                         esac
1151                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1152                         ;;
1154                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1155                         if [ test "$GCC" != yes ]; then
1156                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1157                         fi
1158                         LDSHFLAGS="-G"
1159                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1160                         ;;
1161                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1162                         BLDSHARED="false"
1163                         LDSHFLAGS=""
1164                         ;;
1165                 *)
1166                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1167                         ;;
1168   esac
1169   AC_SUBST(DYNEXP)
1170   AC_MSG_RESULT($BLDSHARED)
1171   AC_MSG_CHECKING([linker flags for shared libraries])
1172   AC_MSG_RESULT([$LDSHFLAGS])
1173   AC_MSG_CHECKING([compiler flags for position-independent code])
1174   AC_MSG_RESULT([$PICFLAGS])
1177 #######################################################
1178 # test whether building a shared library actually works
1179 if test $BLDSHARED = true; then
1180 AC_CACHE_CHECK([whether building shared libraries actually works], 
1181                [ac_cv_shlib_works],[
1182    ac_cv_shlib_works=no
1183    # try building a trivial shared library
1184    if test "$PICSUFFIX" = "po"; then
1185      $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.po ${srcdir-.}/tests/shlib.c &&
1186        $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" shlib.po &&
1187        ac_cv_shlib_works=yes
1188    else
1189      $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c &&
1190        mv shlib.$PICSUFFIX shlib.po &&
1191        $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" shlib.po &&
1192        ac_cv_shlib_works=yes
1193    fi
1194    rm -f "shlib.$SHLIBEXT" shlib.po
1196 if test $ac_cv_shlib_works = no; then
1197    BLDSHARED=false
1201 ################
1203 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1204 AC_TRY_RUN([#include <stdio.h>
1205 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1206 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1207 if test x"$samba_cv_have_longlong" = x"yes"; then
1208     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1212 # Check if the compiler supports the LL prefix on long long integers.
1213 # AIX needs this.
1215 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1216     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1217         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1218 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1219    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1222   
1223 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1224 AC_TRY_RUN([#include <stdio.h>
1225 #include <sys/stat.h>
1226 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1227 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1228 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1229     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1232 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1233 AC_TRY_RUN([
1234 #if defined(HAVE_UNISTD_H)
1235 #include <unistd.h>
1236 #endif
1237 #include <stdio.h>
1238 #include <sys/stat.h>
1239 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1240 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1241 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1242     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1245 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1246 AC_TRY_RUN([#include <stdio.h>
1247 #include <sys/stat.h>
1248 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1249 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1250 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1251     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1254 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1255 AC_TRY_RUN([
1256 #if defined(HAVE_UNISTD_H)
1257 #include <unistd.h>
1258 #endif
1259 #include <stdio.h>
1260 #include <sys/stat.h>
1261 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1262 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1263 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1264     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1267 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1268 AC_TRY_RUN([
1269 #if defined(HAVE_UNISTD_H)
1270 #include <unistd.h>
1271 #endif
1272 #include <stdio.h>
1273 #include <sys/stat.h>
1274 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1275 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1276 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1277     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1280 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1281 AC_TRY_COMPILE([
1282 #if defined(HAVE_UNISTD_H)
1283 #include <unistd.h>
1284 #endif
1285 #include <sys/types.h>
1286 #include <dirent.h>],
1287 [struct dirent64 de;],
1288 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1289 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1290     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1293 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1294 AC_TRY_RUN([
1295 #if defined(HAVE_UNISTD_H)
1296 #include <unistd.h>
1297 #endif
1298 #include <sys/types.h>
1299 main() { dev_t dev; int i = major(dev); return 0; }],
1300 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1301 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1302     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1305 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1306 AC_TRY_RUN([
1307 #if defined(HAVE_UNISTD_H)
1308 #include <unistd.h>
1309 #endif
1310 #include <sys/types.h>
1311 main() { dev_t dev; int i = minor(dev); return 0; }],
1312 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1313 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1314     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1317 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1318 AC_TRY_RUN([#include <stdio.h>
1319 main() { char c; c=250; exit((c > 0)?0:1); }],
1320 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1321 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1322     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1325 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1326 AC_TRY_COMPILE([#include <sys/types.h>
1327 #include <sys/socket.h>
1328 #include <netinet/in.h>],
1329 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1330 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1331 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1332     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
1335 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1336 AC_TRY_COMPILE([#include <sys/types.h>
1337 #include <dirent.h>
1338 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1339 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1340 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1341     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1344 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1345 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1346 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1347 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1348     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1351 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1352 AC_TRY_RUN([
1353 #include <sys/time.h>
1354 #include <unistd.h>
1355 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1356            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1357 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1358     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
1361 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE_VA_COPY,[
1362 AC_TRY_LINK([#include <stdarg.h>
1363 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1364 samba_cv_HAVE_VA_COPY=yes,samba_cv_HAVE_VA_COPY=no)])
1365 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1366     AC_DEFINE(HAVE_VA_COPY,1,[Whether __va_copy() is available])
1369 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1370 AC_TRY_RUN([
1371 #include <sys/types.h>
1372 #include <stdarg.h>
1373 void foo(const char *format, ...) { 
1374        va_list ap;
1375        int len;
1376        char buf[5];
1378        va_start(ap, format);
1379        len = vsnprintf(buf, 0, format, ap);
1380        va_end(ap);
1381        if (len != 5) exit(1);
1383        va_start(ap, format);
1384        len = vsnprintf(0, 0, format, ap);
1385        va_end(ap);
1386        if (len != 5) exit(1);
1388        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1390        exit(0);
1392 main() { foo("hello"); }
1394 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1395 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1396     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
1399 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1400 AC_TRY_RUN([#include <sys/types.h>
1401 #include <dirent.h>
1402 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1403 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1404 di->d_name[0] == 0) exit(0); exit(1);} ],
1405 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1406 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1407     AC_DEFINE(HAVE_BROKEN_READDIR,1,[Whether readdir() is broken])
1410 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1411 AC_TRY_COMPILE([#include <sys/types.h>
1412 #include <utime.h>],
1413 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1414 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1415 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1416     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
1419 ##############
1420 # Check utmp details, but only if our OS offers utmp.h
1421 if test x"$ac_cv_header_utmp_h" = x"yes"; then
1422 dnl  utmp and utmpx come in many flavours
1423 dnl  We need to check for many of them
1424 dnl  But we don't need to do each and every one, because our code uses
1425 dnl  mostly just the utmp (not utmpx) fields.
1427 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1429 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1430 AC_TRY_COMPILE([#include <sys/types.h>
1431 #include <utmp.h>],
1432 [struct utmp ut;  ut.ut_name[0] = 'a';],
1433 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1434 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1435     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
1436 fi 
1438 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1439 AC_TRY_COMPILE([#include <sys/types.h>
1440 #include <utmp.h>],
1441 [struct utmp ut;  ut.ut_user[0] = 'a';],
1442 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1443 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1444     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
1445 fi 
1447 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1448 AC_TRY_COMPILE([#include <sys/types.h>
1449 #include <utmp.h>],
1450 [struct utmp ut;  ut.ut_id[0] = 'a';],
1451 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1452 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1453     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
1454 fi 
1456 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1457 AC_TRY_COMPILE([#include <sys/types.h>
1458 #include <utmp.h>],
1459 [struct utmp ut;  ut.ut_host[0] = 'a';],
1460 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1461 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1462     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
1463 fi 
1465 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1466 AC_TRY_COMPILE([#include <sys/types.h>
1467 #include <utmp.h>],
1468 [struct utmp ut;  time_t t; ut.ut_time = t;],
1469 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1470 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1471     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
1472 fi 
1474 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1475 AC_TRY_COMPILE([#include <sys/types.h>
1476 #include <utmp.h>],
1477 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1478 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1479 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1480     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
1481 fi 
1483 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1484 AC_TRY_COMPILE([#include <sys/types.h>
1485 #include <utmp.h>],
1486 [struct utmp ut;  ut.ut_type = 0;],
1487 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1488 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1489     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
1490 fi 
1492 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1493 AC_TRY_COMPILE([#include <sys/types.h>
1494 #include <utmp.h>],
1495 [struct utmp ut;  ut.ut_pid = 0;],
1496 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1497 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1498     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
1499 fi 
1501 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1502 AC_TRY_COMPILE([#include <sys/types.h>
1503 #include <utmp.h>],
1504 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1505 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1506 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1507     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
1508 fi 
1510 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1511 AC_TRY_COMPILE([#include <sys/types.h>
1512 #include <utmp.h>],
1513 [struct utmp ut;  ut.ut_addr = 0;],
1514 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1515 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1516     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
1517 fi 
1519 if test x$ac_cv_func_pututline = xyes ; then
1520   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1521   AC_TRY_COMPILE([#include <sys/types.h>
1522 #include <utmp.h>],
1523   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1524   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1525   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1526       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
1527   fi
1530 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1531 AC_TRY_COMPILE([#include <sys/types.h>
1532 #include <utmpx.h>],
1533 [struct utmpx ux;  ux.ut_syslen = 0;],
1534 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1535 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1536     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
1537 fi 
1540 # end utmp details
1543 ICONV_LOCATION=standard
1544 LOOK_DIRS="/usr /usr/local /sw"
1545 AC_ARG_WITH(libiconv,
1546 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
1548   if test "$withval" = "no" ; then
1549     AC_MSG_ERROR(I won't take no for an answer)
1550   else
1551      if test "$withval" != "yes" ; then
1552         ICONV_PATH_SPEC=yes
1553         LOOK_DIRS="$withval"
1554      fi
1555   fi
1558 ICONV_FOUND="no"
1559 for i in $LOOK_DIRS ; do
1560     save_LIBS=$LIBS
1561     save_LDFLAGS=$LDFLAGS
1562     save_CPPFLAGS=$CPPFLAGS
1563     CPPFLAGS="$CPPFLAGS -I$i/include"
1564 dnl This is here to handle -withval stuff for --with-libiconv
1565     if test x"$ICONV_PATH_SPEC" = "xyes" ; then
1566        LDFLAGS="-L$i/lib"
1567     fi
1568     LIBS=
1569     export LDFLAGS LIBS CPPFLAGS
1570 dnl Try to find iconv(3)
1571     jm_ICONV($i)
1573     if test "$ICONV_FOUND" = yes; then
1574         LIB_ADD_DIR(LDFLAGS, "$i/lib")
1575         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
1576         LIBS="$save_LIBS $LIBS"
1577         ICONV_LOCATION=$i
1578         export LDFLAGS LIBS CPPFLAGS
1579 dnl Now, check for a working iconv ... we want to do it here because
1580 dnl there might be a working iconv further down the list of LOOK_DIRS
1582         ############
1583         # check for iconv in libc
1584         ic_save_LIBS="$LIBS"
1585         if test x"$ICONV_PATH_SPEC" = "xyes" ; then
1586            LIBS="$LIBS -L$ICONV_LOCATION/lib"
1587         fi
1588 dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
1589         default_dos_charset=no
1590         default_display_charset=no
1591         default_unix_charset=no
1592         echo
1594         # check for default dos charset name
1595         for j in CP850 IBM850 ; do
1596             rjs_CHARSET($j)
1597             if test x"$ICONV_CHARSET" = x"$j"; then
1598                 default_dos_charset="\"$j\""
1599                 break
1600             fi
1601         done
1602         # check for default display charset name
1603         for j in ASCII 646 ; do
1604             rjs_CHARSET($j)
1605             if test x"$ICONV_CHARSET" = x"$j"; then
1606                 default_display_charset="\"$j\""
1607                 break
1608             fi
1609         done
1610         # check for default unix charset name
1611         for j in UTF-8 UTF8 ; do
1612             rjs_CHARSET($j)
1613             if test x"$ICONV_CHARSET" = x"$j"; then
1614                 default_unix_charset="\"$j\""
1615                 break
1616             fi
1617         done
1618         
1619         if test "$default_dos_charset" != "no" -a \
1620                 "$default_dos_charset" != "cross" -a \
1621                 "$default_display_charset" != "no" -a \ 
1622                 "$default_display_charset" != "cross" -a \
1623                 "$default_unix_charset" != "no" -a \
1624                 "$default_unix_charset" != "cross"
1625         then
1626                 samba_cv_HAVE_NATIVE_ICONV=yes
1627         else if test "$default_dos_charset" = "cross" -o \
1628                      "$default_display_charset" = "cross" -o \
1629                      "$default_unix_charset" = "cross"
1630         then
1631                 samba_cv_HAVE_NATIVE_ICONV=cross
1632         else
1633                 samba_cv_HAVE_NATIVE_ICONV=no
1634         fi
1635         fi
1636 dnl ])
1638         LIBS="$ic_save_LIBS"
1639         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
1640                 CPPFLAGS=$save_CPPFLAGS
1641                 CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
1642                 export CPPFLAGS
1643            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
1644            AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
1645            AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
1646            AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
1647            break
1648         fi
1649 dnl We didn't find a working iconv, so keep going
1650     fi
1651 dnl We only need to clean these up here for the next pass through the loop
1652     CPPFLAGS=$save_CPPFLAGS
1653     LDFLAGS=$save_LDFLAGS
1654     LIBS=$save_LIBS
1655     export LDFLAGS LIBS CPPFLAGS
1656 done
1659 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
1660     AC_MSG_WARN([Sufficient support for iconv function was not found. 
1661     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
1662    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"CP850",[Default dos charset name])
1663    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
1664    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
1668 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1669 AC_TRY_RUN([
1670 #include <sys/types.h>
1671 #include <fcntl.h>
1672 #ifndef F_GETLEASE
1673 #define F_GETLEASE      1025
1674 #endif
1675 main() {
1676        int fd = open("/dev/null", O_RDONLY);
1677        return fcntl(fd, F_GETLEASE, 0) == -1;
1680 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1681 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1682     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
1685 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1686 AC_TRY_RUN([
1687 #include <sys/types.h>
1688 #include <fcntl.h>
1689 #include <signal.h>
1690 #ifndef F_NOTIFY
1691 #define F_NOTIFY 1026
1692 #endif
1693 main() {
1694         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1697 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1698 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
1699     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
1702 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1703 AC_TRY_RUN([
1704 #include <sys/types.h>
1705 #include <fcntl.h>
1706 #include <signal.h>
1707 #include <sys/file.h>
1708 #ifndef LOCK_MAND
1709 #define LOCK_MAND       32
1710 #define LOCK_READ       64
1711 #endif
1712 main() {
1713         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1716 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1717 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1718     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
1724 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1725 AC_TRY_COMPILE([#include <sys/types.h>
1726 #include <fcntl.h>],
1727 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1728 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1729 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1730     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
1733 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1734 AC_TRY_RUN([#include <sys/types.h>
1735 #include <sys/capability.h>
1736 main() {
1737  cap_t cap;
1738  if ((cap = cap_get_proc()) == NULL)
1739    exit(1);
1740  cap->cap_effective |= CAP_NETWORK_MGT;
1741  cap->cap_inheritable |= CAP_NETWORK_MGT;
1742  cap_set_proc(cap);
1743  exit(0);
1746 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1747 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1748     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
1752 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1753 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1756 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1757 AC_TRY_COMPILE([#include <sys/types.h>
1758 #if defined(HAVE_RPC_RPC_H)
1759 #include <rpc/rpc.h>
1760 #endif],
1761 [int16 testvar;],
1762 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1763 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1764     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
1767 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1768 AC_TRY_COMPILE([#include <sys/types.h>
1769 #if defined(HAVE_RPC_RPC_H)
1770 #include <rpc/rpc.h>
1771 #endif],
1772 [uint16 testvar;],
1773 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1774 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1775     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
1778 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1779 AC_TRY_COMPILE([#include <sys/types.h>
1780 #if defined(HAVE_RPC_RPC_H)
1781 #include <rpc/rpc.h>
1782 #endif],
1783 [int32 testvar;],
1784 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1785 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1786     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
1789 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1790 AC_TRY_COMPILE([#include <sys/types.h>
1791 #if defined(HAVE_RPC_RPC_H)
1792 #include <rpc/rpc.h>
1793 #endif],
1794 [uint32 testvar;],
1795 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1796 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1797     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
1801 dnl Some systems (SCO) have a problem including
1802 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1803 dnl as a #define in <prot.h> and as part of an enum
1804 dnl in <rpc/rpc.h>.
1807 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1808 AC_TRY_COMPILE([#include <sys/types.h>
1809 #ifdef HAVE_SYS_SECURITY_H
1810 #include <sys/security.h>
1811 #include <prot.h>
1812 #endif  /* HAVE_SYS_SECURITY_H */
1813 #if defined(HAVE_RPC_RPC_H)
1814 #include <rpc/rpc.h>
1815 #endif],
1816 [int testvar;],
1817 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1818 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1819     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
1822 AC_MSG_CHECKING([for test routines])
1823 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1824            AC_MSG_RESULT(yes),
1825            AC_MSG_ERROR([cant find test code. Aborting config]),
1826            AC_MSG_WARN([cannot run when cross-compiling]))
1828 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1829 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1830            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1831 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1832     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
1835 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
1836 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
1837            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
1838            samba_cv_HAVE_WORKING_AF_LOCAL=no,
1839            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
1840 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
1841 then
1842     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
1845 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1846 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1847            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1848 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1849     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
1852 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1853 SAVE_CPPFLAGS="$CPPFLAGS"
1854 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper"
1855 AC_TRY_COMPILE([
1856 #define REPLACE_GETPASS 1
1857 #define NO_PROTO_H 1
1858 #define NO_CONFIG_H 1
1859 #define main dont_declare_main
1860 #include "${srcdir-.}/lib/getsmbpass.c"
1861 #undef main
1862 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1863 CPPFLAGS="$SAVE_CPPFLAGS"
1865 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
1866         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
1869 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
1870 AC_TRY_RUN([
1871 #include <stdio.h>
1872 #include <sys/types.h>
1873 #include <netinet/in.h>
1874 #ifdef HAVE_ARPA_INET_H
1875 #include <arpa/inet.h>
1876 #endif
1877 main() { struct in_addr ip; ip.s_addr = 0x12345678;
1878 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
1879     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
1880 exit(1);}],
1881            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
1882 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
1883     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
1886 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
1887 AC_TRY_RUN([#include <stdlib.h>
1888 #include <sys/types.h>
1889 #include <sys/stat.h>
1890 #include <unistd.h>
1891 main() { 
1892   struct stat st;
1893   char tpl[20]="/tmp/test.XXXXXX"; 
1894   int fd = mkstemp(tpl); 
1895   if (fd == -1) exit(1);
1896   unlink(tpl);
1897   if (fstat(fd, &st) != 0) exit(1);
1898   if ((st.st_mode & 0777) != 0600) exit(1);
1899   exit(0);
1901 samba_cv_HAVE_SECURE_MKSTEMP=yes,
1902 samba_cv_HAVE_SECURE_MKSTEMP=no,
1903 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
1904 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
1905     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
1908 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
1909 AC_TRY_RUN([#include <unistd.h>
1910 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
1911 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
1912 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
1913     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
1916 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
1917 AC_TRY_RUN([main() { exit(getuid() != 0); }],
1918            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
1919 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
1920     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
1921 else
1922     AC_MSG_WARN(running as non-root will disable some tests)
1925 ##################
1926 # look for a method of finding the list of network interfaces
1927 iface=no;
1928 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
1929 AC_TRY_RUN([
1930 #define HAVE_IFACE_AIX 1
1931 #define AUTOCONF_TEST 1
1932 #include "confdefs.h"
1933 #include "${srcdir-.}/lib/interfaces.c"],
1934            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
1935 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
1936     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
1939 if test $iface = no; then
1940 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
1941 AC_TRY_RUN([
1942 #define HAVE_IFACE_IFCONF 1
1943 #define AUTOCONF_TEST 1
1944 #include "confdefs.h"
1945 #include "${srcdir-.}/lib/interfaces.c"],
1946            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
1947 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
1948     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
1952 if test $iface = no; then
1953 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
1954 AC_TRY_RUN([
1955 #define HAVE_IFACE_IFREQ 1
1956 #define AUTOCONF_TEST 1
1957 #include "confdefs.h"
1958 #include "${srcdir-.}/lib/interfaces.c"],
1959            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
1960 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
1961     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
1966 ################################################
1967 # look for a method of setting the effective uid
1968 seteuid=no;
1969 if test $seteuid = no; then
1970 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
1971 AC_TRY_RUN([
1972 #define AUTOCONF_TEST 1
1973 #define USE_SETRESUID 1
1974 #include "confdefs.h"
1975 #include "${srcdir-.}/lib/util_sec.c"],
1976            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
1977 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
1978     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
1983 if test $seteuid = no; then
1984 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
1985 AC_TRY_RUN([
1986 #define AUTOCONF_TEST 1
1987 #define USE_SETREUID 1
1988 #include "confdefs.h"
1989 #include "${srcdir-.}/lib/util_sec.c"],
1990            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
1991 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
1992     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
1996 if test $seteuid = no; then
1997 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
1998 AC_TRY_RUN([
1999 #define AUTOCONF_TEST 1
2000 #define USE_SETEUID 1
2001 #include "confdefs.h"
2002 #include "${srcdir-.}/lib/util_sec.c"],
2003            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2004 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2005     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2009 if test $seteuid = no; then
2010 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2011 AC_TRY_RUN([
2012 #define AUTOCONF_TEST 1
2013 #define USE_SETUIDX 1
2014 #include "confdefs.h"
2015 #include "${srcdir-.}/lib/util_sec.c"],
2016            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2017 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2018     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2023 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2024 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2025            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2026 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2027     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2030 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
2031 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
2032            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
2033 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
2034     AC_DEFINE(FTRUNCATE_NEEDS_ROOT,1,[Whether ftruncate() needs root])
2037 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2038 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2039            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2040 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2041     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2044 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2045 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2046            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2047 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2048     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2050 else
2053 dnl Don't check for 64 bit fcntl locking if we know that the
2054 dnl glibc2.1 broken check has succeeded.
2055 dnl 
2057   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2058   AC_TRY_RUN([
2059 #if defined(HAVE_UNISTD_H)
2060 #include <unistd.h>
2061 #endif
2062 #include <stdio.h>
2063 #include <stdlib.h>
2065 #ifdef HAVE_FCNTL_H
2066 #include <fcntl.h>
2067 #endif
2069 #ifdef HAVE_SYS_FCNTL_H
2070 #include <sys/fcntl.h>
2071 #endif
2072 main() { struct flock64 fl64;
2073 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2074 exit(0);
2075 #else
2076 exit(1);
2077 #endif
2079        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2081   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2082       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2083   fi
2086 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2087 AC_TRY_COMPILE([#include <sys/types.h>
2088 #include <sys/stat.h>
2089 #include <unistd.h>],
2090 [struct stat st;  st.st_blocks = 0;],
2091 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2092 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2093     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2094 fi 
2096 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2097 AC_TRY_COMPILE([#include <sys/types.h>
2098 #include <sys/stat.h>
2099 #include <unistd.h>],
2100 [struct stat st;  st.st_blksize = 0;],
2101 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2102 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2103     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2106 case "$host_os" in
2107 *linux*)
2108 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
2109 AC_TRY_COMPILE([
2110 #ifdef HAVE_SYS_VFS_H
2111 #include <sys/vfs.h>
2112 #endif
2113 #ifdef HAVE_SYS_CAPABILITY_H
2114 #include <sys/capability.h>
2115 #endif
2116 ],[int i;],
2117    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
2118 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
2119    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
2122 esac
2124 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2125 AC_TRY_COMPILE([#include <sys/acl.h>
2126 #if defined(HAVE_RPCSVC_NIS_H)
2127 #include <rpcsvc/nis.h>
2128 #endif],
2129 [int i;],
2130 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2131 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2132         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2136 #################################################
2137 # check for smbwrapper support
2138 AC_MSG_CHECKING(whether to use smbwrapper)
2139 AC_ARG_WITH(smbwrapper,
2140 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
2141 [ case "$withval" in
2142   yes)
2143     AC_MSG_RESULT(yes)
2144     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
2145         WRAPPROG="bin/smbsh\$(EXEEXT)"
2146         WRAP="bin/smbwrapper.$SHLIBEXT"
2148 # Conditions under which smbwrapper should not be built.
2150         if test x$PICFLAG = x; then
2151            echo No support for PIC code - disabling smbwrapper and smbsh
2152            WRAPPROG=""
2153            WRAP=""
2154         elif test x$ac_cv_func_syscall = xno; then
2155            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
2156            WRAPPROG=""
2157            WRAP=""
2158         fi
2159         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP"
2160         SMBWRAPPER="$WRAPPROG $WRAP"
2161     ;;
2162   *)
2163     AC_MSG_RESULT(no)
2164     ;;
2165   esac ],
2166   AC_MSG_RESULT(no)
2169 #################################################
2170 # check for AFS clear-text auth support
2171 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2172 AC_ARG_WITH(afs,
2173 [  --with-afs              Include AFS clear-text auth support (default=no) ],
2174 [ case "$withval" in
2175   yes)
2176     AC_MSG_RESULT(yes)
2177     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2178     ;;
2179   *)
2180     AC_MSG_RESULT(no)
2181     ;;
2182   esac ],
2183   AC_MSG_RESULT(no)
2186 ####################################################
2187 # check for Linux-specific AFS fake-kaserver support
2188 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2189 AC_ARG_WITH(fake-kaserver,
2190 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
2191 [ case "$withval" in
2192   yes)
2193     AC_MSG_RESULT(yes)
2194     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2195     ;;
2196   *)
2197     AC_MSG_RESULT(no)
2198     ;;
2199   esac ],
2200   AC_MSG_RESULT(no)
2203 #################################################
2204 # check for the DFS clear-text auth system
2205 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2206 AC_ARG_WITH(dfs,
2207 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
2208 [ case "$withval" in
2209   yes)
2210     AC_MSG_RESULT(yes)
2211     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2212     ;;
2213   *)
2214     AC_MSG_RESULT(no)
2215     ;;
2216   esac ],
2217   AC_MSG_RESULT(no)
2220 ########################################################
2221 # Compile with LDAP support?
2223 with_ldap_support=auto
2224 AC_MSG_CHECKING([for LDAP support])
2226 AC_ARG_WITH(ldap,
2227 [  --with-ldap             LDAP support (default yes)],
2228 [ case "$withval" in
2229     yes|no)
2230         with_ldap_support=$withval
2231         ;;
2232   esac ])
2234 AC_MSG_RESULT($with_ldap_support)
2236 SMBLDAP=""
2237 AC_SUBST(SMBLDAP)
2238 if test x"$with_ldap_support" != x"no"; then
2240   ##################################################################
2241   # first test for ldap.h and lber.h
2242   # (ldap.h is required for this test)
2243   AC_CHECK_HEADERS(ldap.h lber.h)
2244   
2245   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2246         if test x"$with_ldap_support" = x"yes"; then
2247          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2248         else
2249          AC_MSG_WARN(ldap.h is needed for LDAP support)
2250         fi
2251         
2252         with_ldap_support=no
2253   fi
2256 if test x"$with_ldap_support" != x"no"; then
2257   ac_save_LIBS=$LIBS
2259   ##################################################################
2260   # we might need the lber lib on some systems. To avoid link errors
2261   # this test must be before the libldap test
2262   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
2264   ########################################################
2265   # now see if we can find the ldap libs in standard paths
2266   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
2268   AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS)
2269   
2270   ########################################################
2271   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2272   # Check found in pam_ldap 145.
2273   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
2275   LIBS="$LIBS $LDAP_LIBS"
2276   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
2277     AC_TRY_COMPILE([
2278         #include <lber.h>
2279         #include <ldap.h>], 
2280         [ldap_set_rebind_proc(0, 0, 0);], 
2281         [smb_ldap_cv_ldap_set_rebind_proc=3], 
2282         [smb_ldap_cv_ldap_set_rebind_proc=2]
2283     ) 
2284   ])
2285   
2286   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
2288   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS) 
2289   
2290   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes" -a x"$ac_cv_func_ext_ldap_domain2hostlist" = x"yes"; then
2291     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
2292     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
2293     SMBLDAP="lib/smbldap.o"
2294     with_ldap_support=yes
2295     AC_MSG_CHECKING(whether LDAP support is used)
2296     AC_MSG_RESULT(yes)
2297   else
2298     if test x"$with_ldap_support" = x"yes"; then
2299         AC_MSG_ERROR(libldap is needed for LDAP support)
2300     else
2301         AC_MSG_WARN(libldap is needed for LDAP support)
2302     fi
2303     
2304     LDAP_LIBS=""
2305     with_ldap_support=no
2306   fi
2307   LIBS=$ac_save_LIBS
2311 #################################################
2312 # active directory support
2314 with_ads_support=auto
2315 AC_MSG_CHECKING([for Active Directory and krb5 support])
2317 AC_ARG_WITH(ads,
2318 [  --with-ads              Active Directory support (default auto)],
2319 [ case "$withval" in
2320     yes|no)
2321         with_ads_support="$withval"
2322         ;;
2323   esac ])
2325 AC_MSG_RESULT($with_ads_support)
2327 FOUND_KRB5=no
2328 KRB5_LIBS=""
2330 if test x"$with_ldap_support" != x"yes"; then
2331     if test x"$with_ads_support" = x"yes"; then
2332         AC_MSG_ERROR(Active Directory Support requires LDAP support)
2333     elif test x"$with_ads_support" != x"no"; then
2334         AC_MSG_WARN(Active Directory Support requires LDAP support)
2335     fi
2336     with_ads_support=no
2339 if test x"$with_ads_support" != x"no"; then
2341   # Do no harm to the values of CFLAGS and LIBS while testing for
2342   # Kerberos support.
2344   #################################################
2345   # check for krb5-config from recent MIT and Heimdal kerberos 5
2346   AC_PATH_PROG(KRB5_CONFIG, krb5-config)
2347   AC_MSG_CHECKING(for working krb5-config)
2348   if test -x "$KRB5_CONFIG"; then
2349     ac_save_CFLAGS=$CFLAGS
2350     CFLAGS="";export CFLAGS
2351     ac_save_LDFLAGS=$LDFLAGS
2352     LDFLAGS="";export LDFLAGS
2353     KRB5_LIBS="`$KRB5_CONFIG --libs gssapi`"
2354     KRB5_CFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`" 
2355     KRB5_CPPFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"
2356     CFLAGS=$ac_save_CFLAGS;export CFLAGS
2357     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
2358     FOUND_KRB5=yes
2359     AC_MSG_RESULT(yes)
2360   else
2361     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
2362   fi
2363   
2364   if test x$FOUND_KRB5 = x"no"; then
2365     #################################################
2366     # check for location of Kerberos 5 install
2367     AC_MSG_CHECKING(for kerberos 5 install path)
2368     AC_ARG_WITH(krb5,
2369     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
2370     [ case "$withval" in
2371       no)
2372         AC_MSG_RESULT(no krb5-path given)
2373         ;;
2374       yes)
2375         AC_MSG_RESULT(/usr)
2376         FOUND_KRB5=yes
2377         ;;
2378       *)
2379         AC_MSG_RESULT($withval)
2380         KRB5_CFLAGS="-I$withval/include"
2381         KRB5_CPPFLAGS="-I$withval/include"
2382         KRB5_LDFLAGS="-L$withval/lib"
2383         FOUND_KRB5=yes
2384         ;;
2385       esac ],
2386       AC_MSG_RESULT(no krb5-path given)
2387     )
2388   fi
2390   if test x$FOUND_KRB5 = x"no"; then
2391     #################################################
2392     # see if this box has the SuSE location for the heimdal krb implementation
2393     AC_MSG_CHECKING(for /usr/include/heimdal)
2394     if test -d /usr/include/heimdal; then
2395       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
2396           KRB5_CFLAGS="-I/usr/include/heimdal"
2397           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2398           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
2399           AC_MSG_RESULT(yes)
2400       else
2401           KRB5_CFLAGS="-I/usr/include/heimdal"
2402           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2403           AC_MSG_RESULT(yes)
2404       fi
2405     else
2406       AC_MSG_RESULT(no)
2407     fi
2408   fi
2410   if test x$FOUND_KRB5 = x"no"; then
2411     #################################################
2412     # see if this box has the RedHat location for kerberos
2413     AC_MSG_CHECKING(for /usr/kerberos)
2414     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
2415       KRB5_LDFLAGS="-L/usr/kerberos/lib"
2416       KRB5_CFLAGS="-I/usr/kerberos/include"
2417       KRB5_CPPFLAGS="-I/usr/kerberos/include"
2418       AC_MSG_RESULT(yes)
2419     else
2420       AC_MSG_RESULT(no)
2421     fi
2422   fi
2424   ac_save_CFLAGS=$CFLAGS
2425   ac_save_CPPFLAGS=$CPPFLAGS
2426   ac_save_LDFLAGS=$LDFLAGS
2428   CFLAGS="$CFLAGS $KRB5_CFLAGS"
2429   CPPFLAGS="$CPPFLAGS $KRB5_CPPFLAGS"
2430   LDFLAGS="$LDFLAGS $KRB5_LDFLAGS"
2432   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
2434   # now check for krb5.h. Some systems have the libraries without the headers!
2435   # note that this check is done here to allow for different kerberos
2436   # include paths
2437   AC_CHECK_HEADERS(krb5.h)
2439   if test x"$ac_cv_header_krb5_h" = x"no"; then
2441     # Give a warning if AD support was not explicitly requested,
2442     # i.e with_ads_support = auto, otherwise die with an error.
2444     if test x"$with_ads_support" = x"yes"; then
2445       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
2446     else
2447       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
2448     fi
2450     # Turn off AD support and restore CFLAGS and LIBS variables
2452     with_ads_support="no"
2453     
2454     CFLAGS=$ac_save_CFLAGS
2455     CPPFLAGS=$ac_save_CPPFLAGS
2456     LDFLAGS=$ac_save_LDFLAGS
2457   fi
2460 # Now we have determined whether we really want ADS support
2462 if test x"$with_ads_support" != x"no"; then
2463   ac_save_LIBS=$LIBS
2465   # now check for gssapi headers.  This is also done here to allow for
2466   # different kerberos include paths
2467   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
2469   ##################################################################
2470   # we might need the k5crypto and com_err libraries on some systems
2471   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
2472   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
2474   # Heimdal checks.
2475   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
2476   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
2477   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
2479   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
2480   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],
2481                                 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2483   ########################################################
2484   # now see if we can find the krb5 libs in standard paths
2485   # or as specified above
2486   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
2488   ########################################################
2489   # now see if we can find the gssapi libs in standard paths
2490   AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],
2491             AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2493   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
2494   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
2495   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
2496   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
2497   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
2498   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 
2499   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
2500   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 
2501   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
2502   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 
2503   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
2504   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 
2505   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 
2506   AC_CHECK_FUNC_EXT(krb5_free_ktypes, $KRB5_LIBS)
2507   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
2509   LIBS="$LIBS $KRB5_LIBS"
2510   
2511   AC_CACHE_CHECK([for addrtype in krb5_address],
2512                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
2513     AC_TRY_COMPILE([#include <krb5.h>],
2514       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
2515       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
2516       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
2518   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
2519     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
2520                [Whether the krb5_address struct has a addrtype property])
2521   fi
2523   AC_CACHE_CHECK([for addr_type in krb5_address],
2524                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
2525     AC_TRY_COMPILE([#include <krb5.h>],
2526       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
2527       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
2528       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
2530   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
2531     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
2532               [Whether the krb5_address struct has a addr_type property])
2533   fi
2535   AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 
2536                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
2537                  [AC_TRY_COMPILE([#include <krb5.h>],
2538     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
2539     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
2541   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
2542     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
2543               [Whether the krb5_ticket struct has a enc_part2 property])
2544   fi
2546   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
2547                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
2548     AC_TRY_COMPILE([#include <krb5.h>],
2549       [krb5_keyblock key; key.keyvalue.data = NULL;],
2550       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
2551       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
2553   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
2554     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
2555               [Whether the krb5_keyblock struct has a keyvalue property])
2556   fi
2558   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
2559                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
2560     AC_TRY_COMPILE([#include <krb5.h>],
2561       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
2562       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
2563       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
2564   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
2565                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
2566     AC_TRY_COMPILE([#include <krb5.h>],
2567       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
2568       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
2569       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
2570 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
2571 # w.r.t. arcfour and windows, so we must not enable it here
2572   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
2573           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
2574     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
2575               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
2576   fi
2578   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
2579                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
2580     AC_TRY_COMPILE([#include <krb5.h>],
2581       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
2582       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
2583       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
2585   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
2586     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
2587               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
2588   fi
2590   AC_CACHE_CHECK([for the krb5_princ_component macro],
2591                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
2592     AC_TRY_LINK([#include <krb5.h>],
2593       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
2594       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
2595       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
2597   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
2598     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
2599                [Whether krb5_princ_component is available])
2600   fi
2602   AC_CACHE_CHECK([for memory keytab support],
2603                  samba_cv_HAVE_MEMORY_KEYTAB,[
2604     AC_TRY_RUN([
2605 #include<krb5.h>
2606   main()
2607   {
2608     krb5_context context;
2609     krb5_keytab keytab;
2610     
2611     krb5_init_context(&context);
2612     if (krb5_kt_resolve(context, "MEMORY:", &keytab))
2613       exit(0);
2614     exit(1);
2615   }], 
2616   samba_cv_HAVE_MEMORY_KEYTAB=no,
2617   samba_cv_HAVE_MEMORY_KEYTAB=yes)])
2619   if test x"$samba_cv_HAVE_MEMORY_KEYTAB" = x"yes"; then
2620       AC_DEFINE(HAVE_MEMORY_KEYTAB,1,
2621                [Whether in-memory keytabs are supported])
2622   fi
2625   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" = x"yes"; then
2626     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
2627     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
2628     AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
2629     AC_MSG_RESULT(yes)
2630   else
2631     if test x"$with_ads_support" = x"yes"; then
2632         AC_MSG_ERROR(libkrb5 is needed for Active Directory support)
2633     else
2634         AC_MSG_WARN(libkrb5 is needed for Active Directory support)
2635     fi
2636     KRB5_LIBS=""
2637     with_ads_support=no 
2638   fi
2639   LIBS="$ac_save_LIBS"
2642 ########################################################
2643 # Compile experimental passdb backends?
2644 # (pdb_xml, pdb_mysql)
2645 AC_MSG_CHECKING(whether to build experimental passdb libraries)
2646 AC_ARG_WITH(expsam,
2647 [  --with-expsam=<list>    Include experimental passdb libraries (default=no)]
2648 [                          Valid choices include (comma separated list): ]
2649 [                              xml & mysql],
2650 [ expsam_pdb_modules=`echo "$withval" | sed 's/,/ /g'`
2651   if test "z$expsam_pdb_modules" = "zyes"; then
2652     expsam_pdb_modules="xml mysql"
2653   fi
2654   AC_MSG_RESULT($expsam_pdb_modules)
2655   for i in $expsam_pdb_modules
2656   do 
2657     case "$i" in
2658     xml)
2659       ## pdb_xml
2660       AM_PATH_XML2([2.0.0],[default_shared_modules="$default_shared_modules pdb_xml"],[])
2661       CFLAGS="$CFLAGS $XML_CFLAGS"
2662       ;;
2663     mysql)
2664       ## pdb_mysql
2665       AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[])
2666       CFLAGS="$CFLAGS $MYSQL_CFLAGS"
2667       ;;
2668     no)
2669       ;;
2670     *)
2671       echo "Unknown module name \"$i\"!  Exiting..."
2672       exit 1
2673       ;;
2674     esac
2675   done ],
2676   AC_MSG_RESULT(no)
2679 #################################################
2680 # check for automount support
2681 AC_MSG_CHECKING(whether to use automount)
2682 AC_ARG_WITH(automount,
2683 [  --with-automount        Include automount support (default=no)],
2684 [ case "$withval" in
2685   yes)
2686     AC_MSG_RESULT(yes)
2687     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
2688     ;;
2689   *)
2690     AC_MSG_RESULT(no)
2691     ;;
2692   esac ],
2693   AC_MSG_RESULT(no)
2696 #################################################
2697 # check for smbmount support
2698 AC_MSG_CHECKING(whether to use smbmount)
2699 AC_ARG_WITH(smbmount,
2700 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
2701 [ case "$withval" in
2702   yes)
2703         case "$host_os" in
2704         *linux*)
2705                 AC_MSG_RESULT(yes)
2706                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
2707                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
2708                 ;;
2709         *)
2710                 AC_MSG_ERROR(not on a linux system!)
2711                 ;;
2712         esac
2713     ;;
2714   *)
2715     AC_MSG_RESULT(no)
2716     ;;
2717   esac ],
2718   AC_MSG_RESULT(no)
2722 #################################################
2723 # check for a PAM clear-text auth, accounts, password and session support
2724 with_pam_for_crypt=no
2725 AC_MSG_CHECKING(whether to use PAM)
2726 AC_ARG_WITH(pam,
2727 [  --with-pam              Include PAM support (default=no)],
2728 [ case "$withval" in
2729   yes)
2730     AC_MSG_RESULT(yes)
2731     if test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
2732        if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
2733           if test x"$ac_cv_header_security__pam_macros_h" = x"no"; then
2734              AC_MSG_ERROR(--with-pam specified but no PAM headers found)
2735           fi
2736        fi
2737     fi
2738     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
2739     AUTH_LIBS="$AUTH_LIBS -lpam"
2740     with_pam_for_crypt=yes
2741     ;;
2742   *)
2743     AC_MSG_RESULT(no)
2744     ;;
2745   esac ],
2746   AC_MSG_RESULT(no)
2749 # we can't build a pam module if we don't have pam.
2750 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
2752 #################################################
2753 # check for pam_smbpass support
2754 AC_MSG_CHECKING(whether to use pam_smbpass)
2755 AC_ARG_WITH(pam_smbpass,
2756 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
2757 [ case "$withval" in
2758   yes)
2759     AC_MSG_RESULT(yes)
2761        # Conditions under which pam_smbpass should not be built.
2763        if test x$PICFLAG = x; then
2764           AC_MSG_ERROR([No support for PIC code])
2765        elif test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
2766           AC_MSG_ERROR([No security/pam_appl.h found])
2767        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
2768           AC_MSG_ERROR([No libpam found])
2769        else
2770           AUTH_LIBS="$AUTH_LIBS -lpam"
2771           SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.$SHLIBEXT"
2772        fi
2773     ;;
2774   *)
2775     AC_MSG_RESULT(no)
2776     ;;
2777   esac ],
2778   AC_MSG_RESULT(no)
2782 ###############################################
2783 # test for where we get crypt() from
2784 AC_SEARCH_LIBS(crypt, [crypt],
2785   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
2786   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
2789 ## moved after the check for -lcrypt in order to
2790 ## ensure that the necessary libraries are included
2791 ## check checking for truncated salt.  Wrapped by the
2792 ## $with_pam_for_crypt variable as above   --jerry
2794 if test $with_pam_for_crypt = no; then
2795 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
2796 crypt_LIBS="$LIBS"
2797 LIBS="$AUTH_LIBS $LIBS"
2798 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
2799         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
2800 LIBS="$crypt_LIBS"])
2801 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
2802         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
2806 ########################################################################################
2808 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
2810 ########################################################################################
2812 #################################################
2813 # check for a LDAP password database configuration backwards compatibility
2814 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
2815 AC_ARG_WITH(ldapsam,
2816 [  --with-ldapsam          Include LDAP SAM 2.2 compatible configuration (default=no)],
2817 [ case "$withval" in
2818   yes)
2819     AC_MSG_RESULT(yes)
2820     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatible LDAP SAM configuration])
2821     ;;
2822   *)
2823     AC_MSG_RESULT(no)
2824     ;;
2825   esac ],
2826   AC_MSG_RESULT(no)
2829 ########################################################################################
2831 ## END OF TESTS FOR SAM BACKENDS.  
2833 ########################################################################################
2835 #################################################
2836 # check for a NISPLUS_HOME support 
2837 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
2838 AC_ARG_WITH(nisplus-home,
2839 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
2840 [ case "$withval" in
2841   yes)
2842     AC_MSG_RESULT(yes)
2843     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
2844     ;;
2845   *)
2846     AC_MSG_RESULT(no)
2847     ;;
2848   esac ],
2849   AC_MSG_RESULT(no)
2852 #################################################
2853 # check for syslog logging
2854 AC_MSG_CHECKING(whether to use syslog logging)
2855 AC_ARG_WITH(syslog,
2856 [  --with-syslog           Include experimental SYSLOG support (default=no)],
2857 [ case "$withval" in
2858   yes)
2859     AC_MSG_RESULT(yes)
2860     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
2861     ;;
2862   *)
2863     AC_MSG_RESULT(no)
2864     ;;
2865   esac ],
2866   AC_MSG_RESULT(no)
2869 #################################################
2870 # check for a shared memory profiling support
2871 AC_MSG_CHECKING(whether to use profiling)
2872 AC_ARG_WITH(profiling-data,
2873 [  --with-profiling-data   Include gathering source code profile information (default=no)],
2874 [ case "$withval" in
2875   yes)
2876     AC_MSG_RESULT(yes)
2877     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
2878     ;;
2879   *)
2880     AC_MSG_RESULT(no)
2881     ;;
2882   esac ],
2883   AC_MSG_RESULT(no)
2887 #################################################
2888 # check for experimental disk-quotas support
2890 samba_cv_WITH_QUOTAS=auto
2891 samba_cv_TRY_QUOTAS=no
2892 samba_cv_RUN_QUOTA_TESTS=auto
2893 samba_cv_WITH_SYS_QUOTAS=auto
2894 samba_cv_TRY_SYS_QUOTAS=no
2896 AC_MSG_CHECKING(whether to try disk-quotas support)
2897 AC_ARG_WITH(quotas,
2898 [  --with-quotas           Include disk-quota support (default=no)],
2899 [ case "$withval" in
2900   yes)
2901     AC_MSG_RESULT(yes)
2902     samba_cv_WITH_QUOTAS=yes
2903     samba_cv_TRY_QUOTAS=yes
2904     samba_cv_RUN_QUOTA_TESTS=yes
2905     #set sys quotas to auto in this case
2906     samba_cv_TRY_SYS_QUOTAS=auto
2907     ;;
2908   auto)
2909     AC_MSG_RESULT(auto)
2910     samba_cv_WITH_QUOTAS=auto
2911     samba_cv_TRY_QUOTAS=auto
2912     samba_cv_RUN_QUOTA_TESTS=auto
2913     #set sys quotas to auto in this case
2914     samba_cv_TRY_SYS_QUOTAS=auto
2915     ;;
2916   no)
2917     AC_MSG_RESULT(no)
2918     samba_cv_WITH_QUOTAS=no
2919     samba_cv_TRY_QUOTAS=no
2920     samba_cv_RUN_QUOTA_TESTS=no
2921     ;;
2922   *)
2923     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
2924     ;;
2925   esac ],
2926   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
2929 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
2930 AC_ARG_WITH(sys-quotas,
2931 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
2932 [ case "$withval" in
2933   yes)
2934     AC_MSG_RESULT(yes)
2935     samba_cv_WITH_SYS_QUOTAS=yes
2936     samba_cv_TRY_SYS_QUOTAS=yes
2937     samba_cv_RUN_QUOTA_TESTS=yes
2938     ;;
2939   auto)
2940     AC_MSG_RESULT(auto)
2941     samba_cv_WITH_SYS_QUOTAS=auto
2942     samba_cv_TRY_SYS_QUOTAS=auto
2943     samba_cv_RUN_QUOTA_TESTS=auto
2944     ;;
2945   no)
2946     AC_MSG_RESULT(no)
2947     samba_cv_WITH_SYS_QUOTAS=no
2948     samba_cv_TRY_SYS_QUOTAS=no
2949     ;;
2950   *)
2951     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
2952     ;;
2953   esac ],
2954   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
2957 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
2958 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
2959   case "$host_os" in
2960         *linux*)
2961             AC_MSG_RESULT(yes)
2962             samba_cv_TRY_SYS_QUOTAS=yes
2963             samba_cv_RUN_QUOTA_TESTS=yes
2964             ;;
2965         *)
2966             AC_MSG_RESULT(no)
2967             samba_cv_TRY_SYS_QUOTAS=no
2968             ;;
2969   esac
2972 #############################################
2973 # only check for quota stuff if --with-quotas
2974 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
2976 # For quotas on Veritas VxFS filesystems
2977 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
2979 # For sys/quota.h and linux/quota.h
2980 AC_CHECK_HEADERS(sys/quota.h)
2981 AC_CHECK_HEADERS(asm/types.h linux/quota.h)
2983 # For quotas on Linux XFS filesystems
2984 AC_CHECK_HEADERS(linux/xqm.h linux/xfs_fs.h)
2985 AC_CHECK_HEADERS(xfs/libxfs.h xfs/xqm.h xfs/xfs_fs.h)
2986 # For linux > 2.5.56 
2987 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
2989 # if we have struct if_dqblk in <linux/quota.h> we should use it
2990 AC_CACHE_CHECK([for struct if_dqblk in <linux/quota.h>],samba_cv_HAVE_STRUCT_IF_DQBLK, [
2991 AC_TRY_COMPILE([
2992 #include "confdefs.h"
2993 #ifdef HAVE_SYS_TYPES_H
2994 #include <sys/types.h>
2995 #endif
2996 #ifdef HAVE_ASM_TYPES_H
2997 #include <asm/types.h>
2998 #endif
2999 #include <linux/quota.h>
3000 ],[struct if_dqblk D;],
3001 samba_cv_HAVE_STRUCT_IF_DQBLK=yes,samba_cv_HAVE_STRUCT_IF_DQBLK=no)])
3002 if test "$samba_cv_HAVE_STRUCT_IF_DQBLK"x = "yes"x; then
3003         AC_DEFINE(HAVE_STRUCT_IF_DQBLK,1,[struct if_dqblk])
3006 # if we have struct mem_dqblk in <linux/quota.h> we should use it
3007 AC_CACHE_CHECK([for struct mem_dqblk in <linux/quota.h>],samba_cv_HAVE_STRUCT_MEM_DQBLK, [
3008 AC_TRY_COMPILE([
3009 #include "confdefs.h"
3010 #ifdef HAVE_SYS_TYPES_H
3011 #include <sys/types.h>
3012 #endif
3013 #ifdef HAVE_ASM_TYPES_H
3014 #include <asm/types.h>
3015 #endif
3016 #include <linux/quota.h>
3017 ],[struct mem_dqblk D;],
3018 samba_cv_HAVE_STRUCT_MEM_DQBLK=yes,samba_cv_HAVE_STRUCT_MEM_DQBLK=no)])
3019 if test "$samba_cv_HAVE_STRUCT_MEM_DQBLK"x = "yes"x; then
3020         AC_DEFINE(HAVE_STRUCT_MEM_DQBLK,1,[struct mem_dqblk])
3023 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
3024 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
3025 AC_TRY_COMPILE([
3026 #include "confdefs.h"
3027 #ifdef HAVE_SYS_QUOTA_H
3028 #include <sys/quota.h>
3029 #endif
3031 struct dqblk D;
3032 D.dqb_fsoftlimit = 0;],
3033 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
3034 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
3035         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
3038 ##################
3039 # look for a working quota system
3040 samba_cv_SYSQUOTA_FOUND=no;
3042 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3043 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
3044 AC_TRY_RUN_STRICT([
3045 #define HAVE_QUOTACTL_4A 1
3046 #define AUTOCONF_TEST 1
3047 #include "confdefs.h"
3048 #include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3049            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
3050 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
3051     samba_cv_SYSQUOTA_FOUND=yes;AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
3055 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3056 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
3057 AC_TRY_RUN_STRICT([
3058 #define HAVE_QUOTACTL_4B 1
3059 #define AUTOCONF_TEST 1
3060 #include "confdefs.h"
3061 #include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3062            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
3063 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
3064     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
3065 #    samba_cv_SYSQUOTA_FOUND=yes;AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
3069 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3070 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
3071 AC_TRY_RUN_STRICT([
3072 #define HAVE_QUOTACTL_3 1
3073 #define AUTOCONF_TEST 1
3074 #include "confdefs.h"
3075 #include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3076            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
3077 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
3078     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
3079 #    samba_cv_SYSQUOTA_FOUND=yes;AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
3083 #################################################
3084 # check for mntent.h and struct mntent
3085 AC_CHECK_HEADERS(mntent.h)
3086 #################################################
3087 # check for setmntent,getmntent,endmntent
3088 AC_CHECK_FUNCS(setmntent getmntent endmntent)
3090 #################################################
3091 # check for devnm.h and struct mntent
3092 AC_CHECK_HEADERS(devnm.h)
3093 #################################################
3094 # check for devnm
3095 AC_CHECK_FUNCS(devnm)
3097 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
3098     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3099         # if --with-sys-quotas=yes then build it 
3100         # you have can use the get/set quota command smb.conf
3101         # options then
3102         samba_cv_SYSQUOTA_FOUND=auto
3103     fi
3104     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
3105         # if --with-sys-quotas=yes then build it 
3106         # you have can use the get/set quota command smb.conf
3107         # options then
3108         samba_cv_TRY_SYS_QUOTAS=auto
3109     fi
3112 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
3113 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
3114 SAVE_CPPFLAGS="$CPPFLAGS"
3115 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3116 AC_TRY_COMPILE([
3117 #include "confdefs.h"
3118 #define NO_PROTO_H 1
3119 #define NO_CONFIG_H 1
3120 #define HAVE_SYS_QUOTAS 1
3121 #include "${srcdir-.}/lib/sysquotas.c"
3122 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
3123 CPPFLAGS="$SAVE_CPPFLAGS"
3125 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
3126 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
3127     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
3128         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3129         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
3130         samba_cv_WE_USE_SYS_QUOTAS=yes
3131         AC_MSG_RESULT(yes)
3132     else
3133         AC_MSG_RESULT(no)
3134     fi
3138 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
3139 SAVE_CPPFLAGS="$CPPFLAGS"
3140 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3141 AC_TRY_COMPILE([
3142 #include "confdefs.h"
3143 #define NO_PROTO_H 1
3144 #define NO_CONFIG_H 1
3145 #include "${srcdir-.}/smbd/quotas.c"
3146 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
3147 CPPFLAGS="$SAVE_CPPFLAGS"
3149 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
3150 AC_MSG_CHECKING(whether to use the old quota support)
3151     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
3152       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
3153         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3154         AC_MSG_RESULT(yes)
3155       else
3156         AC_MSG_RESULT(no)
3157       fi
3158     else
3159       AC_MSG_RESULT(no)
3160     fi
3163 ####################
3164 # End of quota check samba_cv_RUN_QUOTA_TESTS
3167 #################################################
3168 # check for experimental utmp accounting
3170 AC_MSG_CHECKING(whether to support utmp accounting)
3171 WITH_UTMP=yes
3172 AC_ARG_WITH(utmp,
3173 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
3174 [ case "$withval" in
3175   no)
3176                 WITH_UTMP=no
3177                 ;;
3178   *)
3179                 WITH_UTMP=yes
3180                 ;;
3181   esac ],
3184 # utmp requires utmp.h
3185 # Note similar check earlier, when checking utmp details.
3187 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
3188         utmp_no_reason=", no utmp.h on $host_os"
3189         WITH_UTMP=no
3192 # Display test results
3194 if test x"$WITH_UTMP" = x"yes"; then
3195         AC_MSG_RESULT(yes)
3196         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
3197 else
3198         AC_MSG_RESULT(no$utmp_no_reason)
3201 #################################################
3202 # choose native language(s) of man pages
3203 AC_MSG_CHECKING(chosen man pages' language(s))
3204 AC_ARG_WITH(manpages-langs,
3205 [  --with-manpages-langs={en,ja,pl}  Choose man pages' language(s). (en)],
3206 [ case "$withval" in
3207   yes|no)
3208     AC_MSG_WARN(--with-manpages-langs called without argument - will use default)
3209     manlangs="en"
3210   ;;
3211   *)
3212     manlangs="$withval"
3213   ;;
3214   esac
3216   AC_MSG_RESULT($manlangs)
3217   manlangs=`echo $manlangs | sed "s/,/ /g"`   # replacing commas with spaces to produce a list
3218   AC_SUBST(manlangs)],
3220   [manlangs="en"
3221   AC_MSG_RESULT($manlangs)
3222   AC_SUBST(manlangs)]
3225 #################################################
3226 # should we build libsmbclient?
3228 INSTALLCLIENTCMD_SH=:
3229 INSTALLCLIENTCMD_A=:
3230 INSTALLCLIENT=
3231 LIBSMBCLIENT_SHARED=
3232 LIBSMBCLIENT=
3233 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
3234 AC_ARG_WITH(libsmbclient,
3235 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
3236 [ case "$withval" in
3237   no) 
3238      AC_MSG_RESULT(no)
3239      ;;
3240   *)
3241      if test $BLDSHARED = true; then
3242         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3243         ## build the static version of libsmbclient as well
3244         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3245         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3246         LIBSMBCLIENT=libsmbclient
3247         AC_MSG_RESULT(yes)
3248      else
3249         enable_static=yes
3250         AC_MSG_RESULT(no shared library support -- will supply static library)
3251      fi
3252      if test $enable_static = yes; then
3253         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3254         LIBSMBCLIENT=libsmbclient
3255      fi
3256      INSTALLCLIENT=installclientlib
3257      ;;
3258   esac ],
3260 # if unspecified, default is to built it iff possible.
3261   if test $BLDSHARED = true; then
3262      INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3263      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3264      LIBSMBCLIENT=libsmbclient
3265      AC_MSG_RESULT(yes)
3266    else
3267      enable_static=yes
3268      AC_MSG_RESULT(no shared library support -- will supply static library)
3269    fi
3270    if test $enable_static = yes; then
3271      INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3272      LIBSMBCLIENT=libsmbclient
3273   fi]
3274   INSTALLCLIENT=installclientlib
3278 #################################################
3279 # these tests are taken from the GNU fileutils package
3280 AC_CHECKING(how to get filesystem space usage)
3281 space=no
3283 # Test for statvfs64.
3284 if test $space = no; then
3285   # SVR4
3286   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
3287   [AC_TRY_RUN([
3288 #if defined(HAVE_UNISTD_H)
3289 #include <unistd.h>
3290 #endif
3291 #include <sys/types.h>
3292 #include <sys/statvfs.h>
3293   main ()
3294   {
3295     struct statvfs64 fsd;
3296     exit (statvfs64 (".", &fsd));
3297   }],
3298   fu_cv_sys_stat_statvfs64=yes,
3299   fu_cv_sys_stat_statvfs64=no,
3300   fu_cv_sys_stat_statvfs64=cross)])
3301   if test $fu_cv_sys_stat_statvfs64 = yes; then
3302     space=yes
3303     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
3304   fi
3307 # Perform only the link test since it seems there are no variants of the
3308 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
3309 # because that got a false positive on SCO OSR5.  Adding the declaration
3310 # of a `struct statvfs' causes this test to fail (as it should) on such
3311 # systems.  That system is reported to work fine with STAT_STATFS4 which
3312 # is what it gets when this test fails.
3313 if test $space = no; then
3314   # SVR4
3315   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
3316                  [AC_TRY_LINK([#include <sys/types.h>
3317 #include <sys/statvfs.h>],
3318                               [struct statvfs fsd; statvfs (0, &fsd);],
3319                               fu_cv_sys_stat_statvfs=yes,
3320                               fu_cv_sys_stat_statvfs=no)])
3321   if test $fu_cv_sys_stat_statvfs = yes; then
3322     space=yes
3323     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
3324   fi
3327 if test $space = no; then
3328   # DEC Alpha running OSF/1
3329   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
3330   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
3331   [AC_TRY_RUN([
3332 #include <sys/param.h>
3333 #include <sys/types.h>
3334 #include <sys/mount.h>
3335   main ()
3336   {
3337     struct statfs fsd;
3338     fsd.f_fsize = 0;
3339     exit (statfs (".", &fsd, sizeof (struct statfs)));
3340   }],
3341   fu_cv_sys_stat_statfs3_osf1=yes,
3342   fu_cv_sys_stat_statfs3_osf1=no,
3343   fu_cv_sys_stat_statfs3_osf1=no)])
3344   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
3345   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
3346     space=yes
3347     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
3348   fi
3351 if test $space = no; then
3352 # AIX
3353   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
3354 member (AIX, 4.3BSD)])
3355   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
3356   [AC_TRY_RUN([
3357 #ifdef HAVE_SYS_PARAM_H
3358 #include <sys/param.h>
3359 #endif
3360 #ifdef HAVE_SYS_MOUNT_H
3361 #include <sys/mount.h>
3362 #endif
3363 #ifdef HAVE_SYS_VFS_H
3364 #include <sys/vfs.h>
3365 #endif
3366   main ()
3367   {
3368   struct statfs fsd;
3369   fsd.f_bsize = 0;
3370   exit (statfs (".", &fsd));
3371   }],
3372   fu_cv_sys_stat_statfs2_bsize=yes,
3373   fu_cv_sys_stat_statfs2_bsize=no,
3374   fu_cv_sys_stat_statfs2_bsize=no)])
3375   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
3376   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
3377     space=yes
3378     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
3379   fi
3382 if test $space = no; then
3383 # SVR3
3384   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
3385   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
3386   [AC_TRY_RUN([#include <sys/types.h>
3387 #include <sys/statfs.h>
3388   main ()
3389   {
3390   struct statfs fsd;
3391   exit (statfs (".", &fsd, sizeof fsd, 0));
3392   }],
3393     fu_cv_sys_stat_statfs4=yes,
3394     fu_cv_sys_stat_statfs4=no,
3395     fu_cv_sys_stat_statfs4=no)])
3396   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
3397   if test $fu_cv_sys_stat_statfs4 = yes; then
3398     space=yes
3399     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
3400   fi
3403 if test $space = no; then
3404 # 4.4BSD and NetBSD
3405   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
3406 member (4.4BSD and NetBSD)])
3407   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
3408   [AC_TRY_RUN([#include <sys/types.h>
3409 #ifdef HAVE_SYS_PARAM_H
3410 #include <sys/param.h>
3411 #endif
3412 #ifdef HAVE_SYS_MOUNT_H
3413 #include <sys/mount.h>
3414 #endif
3415   main ()
3416   {
3417   struct statfs fsd;
3418   fsd.f_fsize = 0;
3419   exit (statfs (".", &fsd));
3420   }],
3421   fu_cv_sys_stat_statfs2_fsize=yes,
3422   fu_cv_sys_stat_statfs2_fsize=no,
3423   fu_cv_sys_stat_statfs2_fsize=no)])
3424   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
3425   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
3426     space=yes
3427         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
3428   fi
3431 if test $space = no; then
3432   # Ultrix
3433   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
3434   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
3435   [AC_TRY_RUN([#include <sys/types.h>
3436 #ifdef HAVE_SYS_PARAM_H
3437 #include <sys/param.h>
3438 #endif
3439 #ifdef HAVE_SYS_MOUNT_H
3440 #include <sys/mount.h>
3441 #endif
3442 #ifdef HAVE_SYS_FS_TYPES_H
3443 #include <sys/fs_types.h>
3444 #endif
3445   main ()
3446   {
3447   struct fs_data fsd;
3448   /* Ultrix's statfs returns 1 for success,
3449      0 for not mounted, -1 for failure.  */
3450   exit (statfs (".", &fsd) != 1);
3451   }],
3452   fu_cv_sys_stat_fs_data=yes,
3453   fu_cv_sys_stat_fs_data=no,
3454   fu_cv_sys_stat_fs_data=no)])
3455   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
3456   if test $fu_cv_sys_stat_fs_data = yes; then
3457     space=yes
3458     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
3459   fi
3463 # As a gating factor for large file support, in order to
3464 # use <4GB files we must have the following minimal support
3465 # available.
3466 # long long, and a 64 bit off_t or off64_t.
3467 # If we don't have all of these then disable large
3468 # file support.
3470 AC_MSG_CHECKING([if large file support can be enabled])
3471 AC_TRY_COMPILE([
3472 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
3473 #include <sys/types.h>
3474 #else
3475 __COMPILE_ERROR_
3476 #endif
3478 [int i],
3479 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
3480 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
3481         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
3483 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
3485 AC_ARG_WITH(spinlocks, 
3486 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
3487 if test "x$with_spinlocks" = "xyes"; then
3488     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
3490     case "$host_cpu" in
3491         sparc)
3492             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
3493             ;;
3495         i386|i486|i586|i686)
3496             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
3497             ;;
3499         mips)
3500             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
3501             ;;
3503         powerpc)
3504             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
3505             ;;
3506     esac
3509 #################################################
3510 # check for ACL support
3512 AC_MSG_CHECKING(whether to support ACLs)
3513 AC_ARG_WITH(acl-support,
3514 [  --with-acl-support      Include ACL support (default=no)],
3515 [ case "$withval" in
3516   yes)
3518         case "$host_os" in
3519         *sysv5*)
3520                 AC_MSG_RESULT(Using UnixWare ACLs)
3521                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
3522                 ;;
3523         *solaris*)
3524                 AC_MSG_RESULT(Using solaris ACLs)
3525                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
3526                 ;;
3527         *hpux*)
3528                 AC_MSG_RESULT(Using HPUX ACLs)
3529                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
3530                 ;;
3531         *irix*)
3532                 AC_MSG_RESULT(Using IRIX ACLs)
3533                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
3534                 ;;
3535         *aix*)
3536                 AC_MSG_RESULT(Using AIX ACLs)
3537                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
3538                 ;;
3539         *osf*)
3540                 AC_MSG_RESULT(Using Tru64 ACLs)
3541                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
3542                 ACL_LIBS="$ACL_LIBS -lpacl"
3543                 ;;
3544         *freebsd5*)
3545                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
3546                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
3547                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3548                 ;;
3549         *linux*)
3550                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
3551                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
3552                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3553                 acl_LIBS=$LIBS
3554                 LIBS="$LIBS -lacl"
3555                 AC_TRY_LINK([#include <sys/types.h>
3556 #include <sys/acl.h>],
3557 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3558 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3559                 LIBS=$acl_LIBS])
3560                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3561                                 AC_MSG_RESULT(Using posix ACLs)
3562                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3563                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3564                                 acl_LIBS=$LIBS
3565                                 LIBS="$LIBS -lacl"
3566                                 AC_TRY_LINK([#include <sys/types.h>
3567 #include <sys/acl.h>],
3568 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3569 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3570                                 LIBS=$acl_LIBS])
3571                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3572                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3573                                 fi
3574                         fi
3575             ;;
3576          *)
3577                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
3578                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3579                 acl_LIBS=$LIBS
3580                 LIBS="$LIBS -lacl"
3581                 AC_TRY_LINK([#include <sys/types.h>
3582 #include <sys/acl.h>],
3583 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3584 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3585                 LIBS=$acl_LIBS])
3586                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3587                                 AC_MSG_RESULT(Using posix ACLs)
3588                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3589                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3590                                 acl_LIBS=$LIBS
3591                                 LIBS="$LIBS -lacl"
3592                                 AC_TRY_LINK([#include <sys/types.h>
3593 #include <sys/acl.h>],
3594 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3595 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3596                                 LIBS=$acl_LIBS])
3597                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3598                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3599                                 fi
3600                         fi
3601             ;;
3602         esac
3603         ;;
3604   *)
3605     AC_MSG_RESULT(no)
3606     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
3607     ;;
3608   esac ],
3609   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
3610   AC_MSG_RESULT(no)
3613 #################################################
3614 # check for sendfile support
3616 with_sendfile_support=yes
3617 AC_MSG_CHECKING(whether to check to support sendfile)
3618 AC_ARG_WITH(sendfile-support,
3619 [  --with-sendfile-support Check for sendfile support (default=yes)],
3620 [ case "$withval" in
3621   yes)
3623         AC_MSG_RESULT(yes);
3625         case "$host_os" in
3626         *linux*)
3627                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
3628                 AC_TRY_LINK([#include <sys/sendfile.h>],
3630 int tofd, fromfd;
3631 off64_t offset;
3632 size_t total;
3633 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
3635 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
3637                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
3638                 AC_TRY_LINK([#include <sys/sendfile.h>],
3640 int tofd, fromfd;
3641 off_t offset;
3642 size_t total;
3643 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
3645 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3647 # Try and cope with broken Linux sendfile....
3648                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
3649                 AC_TRY_LINK([\
3650 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
3651 #undef _FILE_OFFSET_BITS
3652 #endif
3653 #include <sys/sendfile.h>],
3655 int tofd, fromfd;
3656 off_t offset;
3657 size_t total;
3658 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
3660 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
3662         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3663                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
3664                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3665                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3666         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3667                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
3668                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3669                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3670         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
3671                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
3672                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
3673         else
3674                 AC_MSG_RESULT(no);
3675         fi
3677         ;;
3678         *freebsd*)
3679                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
3680                 AC_TRY_LINK([\
3681 #include <sys/types.h>
3682 #include <unistd.h>
3683 #include <sys/socket.h>
3684 #include <sys/uio.h>],
3686         int fromfd, tofd, ret, total=0;
3687         off_t offset, nwritten;
3688         struct sf_hdtr hdr;
3689         struct iovec hdtrl;
3690         hdr.headers = &hdtrl;
3691         hdr.hdr_cnt = 1;
3692         hdr.trailers = NULL;
3693         hdr.trl_cnt = 0;
3694         hdtrl.iov_base = NULL;
3695         hdtrl.iov_len = 0;
3696         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
3698 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3700         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3701                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
3702                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
3703                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3704         else
3705                 AC_MSG_RESULT(no);
3706         fi
3707         ;;
3709         *hpux*)
3710                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
3711                 AC_TRY_LINK([\
3712 #include <sys/socket.h>
3713 #include <sys/uio.h>],
3715         int fromfd, tofd;
3716         size_t total=0;
3717         struct iovec hdtrl[2];
3718         ssize_t nwritten;
3719         off64_t offset;
3721         hdtrl[0].iov_base = 0;
3722         hdtrl[0].iov_len = 0;
3724         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
3726 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
3727         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3728                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
3729                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
3730                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3731         else
3732                 AC_MSG_RESULT(no);
3733         fi
3735                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
3736                 AC_TRY_LINK([\
3737 #include <sys/socket.h>
3738 #include <sys/uio.h>],
3740         int fromfd, tofd;
3741         size_t total=0;
3742         struct iovec hdtrl[2];
3743         ssize_t nwritten;
3744         off_t offset;
3746         hdtrl[0].iov_base = 0;
3747         hdtrl[0].iov_len = 0;
3749         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
3751 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3752         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3753                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
3754                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
3755                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3756         else
3757                 AC_MSG_RESULT(no);
3758         fi
3759         ;;
3761         *solaris*)
3762                 AC_CHECK_LIB(sendfile,sendfilev)
3763                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
3764                 AC_TRY_LINK([\
3765 #include <sys/sendfile.h>],
3767         int sfvcnt;
3768         size_t xferred;
3769         struct sendfilevec vec[2];
3770         ssize_t nwritten;
3771         int tofd;
3773         sfvcnt = 2;
3775         vec[0].sfv_fd = SFV_FD_SELF;
3776         vec[0].sfv_flag = 0;
3777         vec[0].sfv_off = 0;
3778         vec[0].sfv_len = 0;
3780         vec[1].sfv_fd = 0;
3781         vec[1].sfv_flag = 0;
3782         vec[1].sfv_off = 0;
3783         vec[1].sfv_len = 0;
3784         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
3786 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
3788         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
3789                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
3790                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
3791                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3792         else
3793                 AC_MSG_RESULT(no);
3794         fi
3796                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
3797                 AC_TRY_LINK([\
3798 #include <sys/sendfile.h>],
3800         int sfvcnt;
3801         size_t xferred;
3802         struct sendfilevec vec[2];
3803         ssize_t nwritten;
3804         int tofd;
3806         sfvcnt = 2;
3808         vec[0].sfv_fd = SFV_FD_SELF;
3809         vec[0].sfv_flag = 0;
3810         vec[0].sfv_off = 0;
3811         vec[0].sfv_len = 0;
3813         vec[1].sfv_fd = 0;
3814         vec[1].sfv_flag = 0;
3815         vec[1].sfv_off = 0;
3816         vec[1].sfv_len = 0;
3817         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
3819 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
3821         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
3822                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
3823                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
3824                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
3825         else
3826                 AC_MSG_RESULT(no);
3827         fi
3828         ;;
3830         *)
3831         ;;
3832         esac
3833         ;;
3834   *)
3835     AC_MSG_RESULT(no)
3836     ;;
3837   esac ],
3838   AC_MSG_RESULT(yes)
3842 #################################################
3843 # Check whether winbind is supported on this platform.  If so we need to
3844 # build and install client programs, sbin programs and shared libraries
3846 AC_MSG_CHECKING(whether to build winbind)
3848 # Initially, the value of $host_os decides whether winbind is supported
3850 HAVE_WINBIND=yes
3852 # Define the winbind shared library name and any specific linker flags
3853 # it needs to be built with.
3855 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
3856 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
3857 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
3859 case "$host_os" in
3860         *linux*|*freebsd*)
3861                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
3862                 ;;
3863         *irix*)
3864                 # IRIX has differently named shared libraries
3865                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
3866                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
3867                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
3868                 ;;
3869         *solaris*)
3870                 # Solaris winbind client is implemented as a wrapper around
3871                 # the Linux version.
3872                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
3873                     nsswitch/winbind_nss_linux.o"
3874                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
3875                 ;;
3876         *hpux11*)
3877                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
3878                 ;;
3879         *aix*)
3880                 # AIX has even differently named shared libraries.  No
3881                 # WINS support has been implemented yet.
3882                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
3883                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
3884                 WINBIND_NSS="nsswitch/WINBIND"
3885                 WINBIND_WINS_NSS=""
3886                 ;;
3887         *)
3888                 HAVE_WINBIND=no
3889                 winbind_no_reason=", unsupported on $host_os"
3890                 ;;
3891 esac
3893 AC_SUBST(WINBIND_NSS)
3894 AC_SUBST(WINBIND_WINS_NSS)
3895 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
3896 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
3897 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
3899 # Check the setting of --with-winbindd
3901 AC_ARG_WITH(winbind,
3902 [  --with-winbind          Build winbind (default, if supported by OS)],
3904   case "$withval" in
3905         yes)
3906                 HAVE_WINBIND=yes
3907                 ;;
3908         no)
3909                 HAVE_WINBIND=no
3910                 winbind_reason=""
3911                 ;;
3912   esac ],
3915 # We need unix domain sockets for winbind
3917 if test x"$HAVE_WINBIND" = x"yes"; then
3918         if test x"$samba_cv_unixsocket" = x"no"; then
3919                 winbind_no_reason=", no unix domain socket support on $host_os"
3920                 HAVE_WINBIND=no
3921         fi
3924 # Display test results
3926 if test x"$HAVE_WINBIND" = x"yes"; then
3927         AC_MSG_RESULT(yes)
3928         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
3930         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
3931         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
3932         if test x"$BLDSHARED" = x"true"; then
3933                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
3935                 if test x"$with_pam" = x"yes"; then
3936                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.$SHLIBEXT"
3937                 fi
3938         fi
3939 else
3940         AC_MSG_RESULT(no$winbind_no_reason)
3943 # Solaris has some extra fields in struct passwd that need to be
3944 # initialised otherwise nscd crashes.  
3946 AC_CHECK_MEMBER(struct passwd.pw_comment,
3947                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
3948                 [#include <pwd.h>])
3950 AC_CHECK_MEMBER(struct passwd.pw_age,
3951                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
3952                 [#include <pwd.h>])
3954 #################################################
3955 # Check to see if we should use the included popt 
3957 AC_ARG_WITH(included-popt,
3958 [  --with-included-popt    use bundled popt library, not from system],
3960   case "$withval" in
3961         yes)
3962                 INCLUDED_POPT=yes
3963                 ;;
3964         no)
3965                 INCLUDED_POPT=no
3966                 ;;
3967   esac ],
3969 if test x"$INCLUDED_POPT" != x"yes"; then
3970     AC_CHECK_LIB(popt, poptGetContext,
3971                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
3974 AC_MSG_CHECKING(whether to use included popt)
3975 if test x"$INCLUDED_POPT" = x"yes"; then
3976     AC_MSG_RESULT(yes)
3977     BUILD_POPT='$(POPT_OBJS)'
3978         POPTLIBS='$(POPT_OBJS)'
3979     FLAGS1="-I$srcdir/popt"
3980 else
3981     AC_MSG_RESULT(no)
3982         BUILD_POPT=""
3983     POPTLIBS="-lpopt"
3985 AC_SUBST(BUILD_POPT)
3986 AC_SUBST(POPTLIBS)
3987 AC_SUBST(FLAGS1)
3989 #################################################
3990 # Check if the user wants Python
3992 # At the moment, you can use this to set which Python binary to link
3993 # against.  (Libraries built for Python2.2 can't be used by 2.1,
3994 # though they can coexist in different directories.)  In the future
3995 # this might make the Python stuff be built by default.
3997 # Defaulting python breaks the clean target if python isn't installed
3999 PYTHON=
4001 AC_ARG_WITH(python,
4002 [  --with-python=PYTHONNAME  build Python libraries],
4003 [ case "${withval-python}" in
4004   yes)
4005         PYTHON=python
4006         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
4007         ;;
4008   no)
4009         PYTHON=
4010         ;;
4011   *)
4012         PYTHON=${withval-python}
4013         ;;
4014   esac ])
4015 AC_SUBST(PYTHON)
4017 for i in `echo $default_static_modules | sed -e's/,/ /g'`
4019         eval MODULE_DEFAULT_$i=STATIC
4020 done
4022 for i in `echo $default_shared_modules | sed -e's/,/ /g'`
4024         dnl Fall back to static if dlopen() is not available
4025         eval MODULE_DEFAULT_$i=STATIC
4027         if test x"$ac_cv_func_dlopen" = xyes; then
4028                 eval MODULE_DEFAULT_$i=SHARED
4029         fi
4030 done
4032 dnl Always built these modules static
4033 MODULE_pdb_guest=STATIC
4034 MODULE_rpc_spoolss=STATIC
4035 MODULE_rpc_srv=STATIC
4036 MODULE_idmap_tdb=STATIC
4038 AC_ARG_WITH(static-modules,
4039 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
4040 [ if test $withval; then
4041         for i in `echo $withval | sed -e's/,/ /g'`
4042         do
4043                 eval MODULE_$i=STATIC
4044         done
4045 fi ])
4047 AC_ARG_WITH(shared-modules,
4048 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
4049 [ if test $withval; then
4050         for i in `echo $withval | sed -e's/,/ /g'`
4051         do
4052                         eval MODULE_$i=SHARED
4053         done
4054 fi ])
4056 ###########################################################################
4057 ## contributed pdb_modules
4059 SMB_MODULE(pdb_xml, passdb/pdb_xml.o, "bin/xml.$SHLIBEXT", PDB,
4060                   [ PASSDB_LIBS="$PASSDB_LIBS $XML_LIBS" ] )
4061 SMB_MODULE(pdb_mysql, passdb/pdb_mysql.o, "bin/mysql.$SHLIBEXT", PDB, 
4062                    [ PASSDB_LIBS="$PASSDB_LIBS $MYSQL_LIBS" ]   )
4064 ## end of contributed pdb_modules
4065 ###########################################################################
4067 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o, "bin/ldapsam.$SHLIBEXT", PDB, 
4068                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
4069 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
4070 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
4071 SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
4072 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.c)
4074 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
4075 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
4076 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
4077 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
4078 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
4079 SMB_MODULE(rpc_dfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
4080 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
4081 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
4082 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
4083 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
4084 SMB_SUBSYSTEM(RPC,smbd/server.c)
4086 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/idmap_ldap.$SHLIBEXT", IDMAP)
4087 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/idmap_tdb.$SHLIBEXT", IDMAP)
4088 SMB_SUBSYSTEM(IDMAP,sam/idmap.c)
4090 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
4091 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
4092 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
4093 SMB_SUBSYSTEM(CHARSET,lib/iconv.c)
4095 SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
4096 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
4097 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
4098 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
4099 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
4100 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
4101 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
4102 SMB_SUBSYSTEM(AUTH,auth/auth.c)
4104 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
4105 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
4106 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
4107 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
4108 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
4109 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
4110 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
4111 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
4112 SMB_SUBSYSTEM(VFS,smbd/vfs.c)
4114 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
4116 #################################################
4117 # do extra things if we are running insure
4119 if test "${ac_cv_prog_CC}" = "insure"; then
4120         CPPFLAGS="$CPPFLAGS -D__INSURE__"
4123 #################################################
4124 # Display summary of libraries detected
4126 AC_MSG_RESULT([Using libraries:])
4127 AC_MSG_RESULT([    LIBS = $LIBS])
4128 if test x"$with_ads_support" != x"no"; then
4129    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
4131 if test x"$with_ldap_support" != x"no"; then
4132    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
4134 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
4136 #################################################
4137 # final configure stuff
4139 AC_MSG_CHECKING([configure summary])
4140 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
4141            AC_MSG_RESULT(yes),
4142            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
4143            AC_MSG_WARN([cannot run when cross-compiling]))
4145 builddir=`pwd`
4146 AC_SUBST(builddir)
4148 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
4149 LIB_REMOVE_USR_LIB(LDFLAGS)
4150 LIB_REMOVE_USR_LIB(LIBS)
4152 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
4153 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
4154 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
4156 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh)
4158 #################################################
4159 # Print very concise instructions on building/use
4160 if test "x$enable_dmalloc" = xyes
4161 then
4162         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
4163         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])