Now that CAN-2003-0689 is published officially, we need to make possible
[Samba/bjacke.git] / source3 / configure.in
blob151411feb89a4228fb7af6b8f688623a27869149
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         # test if user trusts its own glibc version w.r.t. CAN-2003-0689
887         # Some vendors already provided glibc builds with this fix so getgrouplist() is usable 
888         # on those platforms. Unfortunately, we can't get this information from compiling yet.
889         AC_MSG_CHECKING([whether GNU libc has good getgrouplist w.r.t. CAN-2003-0689])
890         AC_ARG_WITH(good-getgrouplist,
891         [  --with-good-getgrouplist[=no]     whether GNU libc has good getgrouplist w.r.t. CAN-2003-0689 ],
892         [  case "$with_good_getgrouplist" in
893           yes)
894           AC_MSG_RESULT(yes)
895           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
896           ;;
897           *)
898           AC_MSG_RESULT(no)
899           ;;
900           esac],
901 # glibc <= 2.3.2 has a broken getgrouplist
902 AC_TRY_RUN([
903 #include <unistd.h>
904 #include <sys/utsname.h>
905 main() {
906        /* glibc up to 2.3 has a broken getgrouplist */
907 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
908        int libc_major = __GLIBC__;
909        int libc_minor = __GLIBC_MINOR__;
911        if (libc_major < 2)
912               exit(1);
913        if ((libc_major == 2) && (libc_minor <= 3))
914               exit(1);
915 #endif
916        exit(0);
918 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
919        if test x"$linux_getgrouplist_ok" = x"yes"; then
920           AC_MSG_RESULT(yes)
921           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
922        else
923           AC_MSG_RESULT(no)
924        fi
926        ;;
927     *)
928        AC_CHECK_FUNCS(getgrouplist)
929        ;;
930 esac
933 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
936 if test x$ac_cv_func_stat64 = xno ; then
937   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
938   AC_TRY_LINK([
939 #if defined(HAVE_UNISTD_H)
940 #include <unistd.h>
941 #endif
942 #include <sys/stat.h>
943 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
944   AC_MSG_RESULT([$ac_cv_func_stat64])
945   if test x$ac_cv_func_stat64 = xyes ; then
946     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
947   fi
950 if test x$ac_cv_func_lstat64 = xno ; then
951   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
952   AC_TRY_LINK([
953 #if defined(HAVE_UNISTD_H)
954 #include <unistd.h>
955 #endif
956 #include <sys/stat.h>
957 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
958   AC_MSG_RESULT([$ac_cv_func_lstat64])
959   if test x$ac_cv_func_lstat64 = xyes ; then
960     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
961   fi
964 if test x$ac_cv_func_fstat64 = xno ; then
965   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
966   AC_TRY_LINK([
967 #if defined(HAVE_UNISTD_H)
968 #include <unistd.h>
969 #endif
970 #include <sys/stat.h>
971 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
972   AC_MSG_RESULT([$ac_cv_func_fstat64])
973   if test x$ac_cv_func_fstat64 = xyes ; then
974     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
975   fi
978 #####################################
979 # we might need the resolv library on some systems
980 AC_CHECK_LIB(resolv, dn_expand)
983 # Check for the functions putprpwnam, set_auth_parameters,
984 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
985 # Needed for OSF1 and HPUX.
988 AC_LIBTESTFUNC(security, putprpwnam)
989 AC_LIBTESTFUNC(sec, putprpwnam)
991 AC_LIBTESTFUNC(security, set_auth_parameters)
992 AC_LIBTESTFUNC(sec, set_auth_parameters)
994 # UnixWare 7.x has its getspnam in -lgen
995 AC_LIBTESTFUNC(gen, getspnam)
997 AC_LIBTESTFUNC(security, getspnam)
998 AC_LIBTESTFUNC(sec, getspnam)
1000 AC_LIBTESTFUNC(security, bigcrypt)
1001 AC_LIBTESTFUNC(sec, bigcrypt)
1003 AC_LIBTESTFUNC(security, getprpwnam)
1004 AC_LIBTESTFUNC(sec, getprpwnam)
1006 ############################################
1007 # Check if we have libattr
1008 AC_SEARCH_LIBS(getxattr, [attr])
1009 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1010 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1011 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1012 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1013 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1015 # Assume non-shared by default and override below
1016 BLDSHARED="false"
1018 # these are the defaults, good for lots of systems
1019 HOST_OS="$host_os"
1020 LDSHFLAGS="-shared"
1021 SONAMEFLAG="#"
1022 SHLD="\${CC} \${CFLAGS}"
1023 PICFLAG=""
1024 PICSUFFIX="po"
1025 POBAD_CC="#"
1026 SHLIBEXT="so"
1028 if test "$enable_shared" = "yes"; then
1029   # this bit needs to be modified for each OS that is suported by
1030   # smbwrapper. You need to specify how to created a shared library and
1031   # how to compile C code to produce PIC object files
1033   AC_MSG_CHECKING([ability to build shared libraries])
1035   # and these are for particular systems
1036   case "$host_os" in
1037                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1038                         BLDSHARED="true"
1039                         LDSHFLAGS="-shared" 
1040                         DYNEXP="-Wl,--export-dynamic"
1041                         PICFLAG="-fPIC"
1042                         SONAMEFLAG="-Wl,-soname="
1043                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1044                         ;;
1045                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1046                         BLDSHARED="true"
1047                         LDSHFLAGS="-G"
1048                         SONAMEFLAG="-h "
1049                         if test "${GCC}" = "yes"; then
1050                                 PICFLAG="-fPIC"
1051                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1052                                         DYNEXP="-Wl,-E"
1053                                 fi
1054                         else
1055                                 PICFLAG="-KPIC"
1056                                 ## ${CFLAGS} added for building 64-bit shared 
1057                                 ## libs using Sun's Compiler
1058                                 LDSHFLAGS="-G \${CFLAGS}"
1059                                 POBAD_CC=""
1060                                 PICSUFFIX="po.o"
1061                         fi
1062                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1063                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1064                         ;;
1065                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1066                         BLDSHARED="true"
1067                         LDSHFLAGS="-G"
1068                         SONAMEFLAG="-Wl,-h,"
1069                         PICFLAG="-KPIC"   # Is this correct for SunOS
1070                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1071                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1072                         ;;
1073                 *netbsd* | *freebsd*)  BLDSHARED="true"
1074                         LDSHFLAGS="-shared"
1075                         DYNEXP="-Wl,--export-dynamic"
1076                         SONAMEFLAG="-Wl,-soname,"
1077                         PICFLAG="-fPIC -DPIC"
1078                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1079                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1080                         ;;
1081                 *openbsd*)  BLDSHARED="true"
1082                         LDSHFLAGS="-shared"
1083                         DYNEXP="-Wl,-Bdynamic"
1084                         SONAMEFLAG="-Wl,-soname,"
1085                         PICFLAG="-fPIC"
1086                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1087                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1088                         ;;
1089                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1090                         case "$host_os" in
1091                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1092                         ;;
1093                         esac
1094                         BLDSHARED="true"
1095                         LDSHFLAGS="-set_version sgi1.0 -shared"
1096                         SONAMEFLAG="-soname "
1097                         SHLD="\${LD}"
1098                         if test "${GCC}" = "yes"; then
1099                                 PICFLAG="-fPIC"
1100                         else 
1101                                 PICFLAG="-KPIC"
1102                         fi
1103                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1104                         ;;
1105                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1106                         BLDSHARED="true"
1107                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry,-berok"
1108                         DYNEXP="-Wl,-brtl,-bexpall"
1109                         PICFLAG="-O2"
1110                         if test "${GCC}" != "yes"; then
1111                                 ## for funky AIX compiler using strncpy()
1112                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1113                         fi
1115                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1116                         ;;
1117                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1118                         SHLIBEXT="sl"
1119                         # Use special PIC flags for the native HP-UX compiler.
1120                         if test $ac_cv_prog_cc_Ae = yes; then
1121                                 BLDSHARED="true"
1122                                 SHLD="/usr/bin/ld"
1123                                 LDSHFLAGS="-B symbolic -b -z"
1124                                 SONAMEFLAG="+h "
1125                                 PICFLAG="+z"
1126                         elif test "${GCC}" = "yes"; then
1127                                 PICFLAG="-fPIC"
1128                         fi
1129                         DYNEXP="-Wl,-E"
1130                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1131                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1132                         ;;
1133                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1134                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1135                         ;;
1136                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1137                         BLDSHARED="true"
1138                         LDSHFLAGS="-shared"
1139                         SONAMEFLAG="-Wl,-soname,"
1140                         PICFLAG="-fPIC"
1141                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1142                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1143                         ;;
1144                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1145                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1146                         ;;
1147                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1148                         BLDSHARED="true"
1149                         LDSHFLAGS="-shared"
1150                         SONAMEFLAG="-Wl,-soname,"
1151                         PICFLAG="-KPIC"
1152                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1153                         ;;
1154                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1155                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1156                         ;;
1157                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1158                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1159                         ;;
1160                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1161                         case "$host" in
1162                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1163                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1164                                         fi
1165                                         LDSHFLAGS="-G"
1166                                         DYNEXP="-Bexport"
1167                                 ;;
1168                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1169                         esac
1170                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1171                         ;;
1173                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1174                         if [ test "$GCC" != yes ]; then
1175                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1176                         fi
1177                         LDSHFLAGS="-G"
1178                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1179                         ;;
1180                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1181                         BLDSHARED="false"
1182                         LDSHFLAGS=""
1183                         ;;
1184                 *)
1185                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1186                         ;;
1187   esac
1188   AC_SUBST(DYNEXP)
1189   AC_MSG_RESULT($BLDSHARED)
1190   AC_MSG_CHECKING([linker flags for shared libraries])
1191   AC_MSG_RESULT([$LDSHFLAGS])
1192   AC_MSG_CHECKING([compiler flags for position-independent code])
1193   AC_MSG_RESULT([$PICFLAGS])
1196 #######################################################
1197 # test whether building a shared library actually works
1198 if test $BLDSHARED = true; then
1199 AC_CACHE_CHECK([whether building shared libraries actually works], 
1200                [ac_cv_shlib_works],[
1201    ac_cv_shlib_works=no
1202    # try building a trivial shared library
1203    if test "$PICSUFFIX" = "po"; then
1204      $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.po ${srcdir-.}/tests/shlib.c &&
1205        $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" shlib.po &&
1206        ac_cv_shlib_works=yes
1207    else
1208      $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c &&
1209        mv shlib.$PICSUFFIX shlib.po &&
1210        $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" shlib.po &&
1211        ac_cv_shlib_works=yes
1212    fi
1213    rm -f "shlib.$SHLIBEXT" shlib.po
1215 if test $ac_cv_shlib_works = no; then
1216    BLDSHARED=false
1220 ################
1222 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1223 AC_TRY_RUN([#include <stdio.h>
1224 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1225 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1226 if test x"$samba_cv_have_longlong" = x"yes"; then
1227     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1231 # Check if the compiler supports the LL prefix on long long integers.
1232 # AIX needs this.
1234 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1235     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1236         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1237 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1238    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1241   
1242 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1243 AC_TRY_RUN([#include <stdio.h>
1244 #include <sys/stat.h>
1245 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1246 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1247 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1248     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1251 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1252 AC_TRY_RUN([
1253 #if defined(HAVE_UNISTD_H)
1254 #include <unistd.h>
1255 #endif
1256 #include <stdio.h>
1257 #include <sys/stat.h>
1258 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1259 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1260 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1261     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1264 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1265 AC_TRY_RUN([#include <stdio.h>
1266 #include <sys/stat.h>
1267 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1268 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1269 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1270     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1273 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1274 AC_TRY_RUN([
1275 #if defined(HAVE_UNISTD_H)
1276 #include <unistd.h>
1277 #endif
1278 #include <stdio.h>
1279 #include <sys/stat.h>
1280 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1281 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1282 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1283     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1286 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1287 AC_TRY_RUN([
1288 #if defined(HAVE_UNISTD_H)
1289 #include <unistd.h>
1290 #endif
1291 #include <stdio.h>
1292 #include <sys/stat.h>
1293 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1294 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1295 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1296     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1299 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1300 AC_TRY_COMPILE([
1301 #if defined(HAVE_UNISTD_H)
1302 #include <unistd.h>
1303 #endif
1304 #include <sys/types.h>
1305 #include <dirent.h>],
1306 [struct dirent64 de;],
1307 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1308 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1309     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1312 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1313 AC_TRY_RUN([
1314 #if defined(HAVE_UNISTD_H)
1315 #include <unistd.h>
1316 #endif
1317 #include <sys/types.h>
1318 main() { dev_t dev; int i = major(dev); return 0; }],
1319 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1320 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1321     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1324 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1325 AC_TRY_RUN([
1326 #if defined(HAVE_UNISTD_H)
1327 #include <unistd.h>
1328 #endif
1329 #include <sys/types.h>
1330 main() { dev_t dev; int i = minor(dev); return 0; }],
1331 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1332 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1333     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1336 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1337 AC_TRY_RUN([#include <stdio.h>
1338 main() { char c; c=250; exit((c > 0)?0:1); }],
1339 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1340 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1341     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1344 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1345 AC_TRY_COMPILE([#include <sys/types.h>
1346 #include <sys/socket.h>
1347 #include <netinet/in.h>],
1348 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1349 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1350 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1351     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
1354 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1355 AC_TRY_COMPILE([#include <sys/types.h>
1356 #include <dirent.h>
1357 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1358 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1359 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1360     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1363 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1364 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1365 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1366 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1367     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1370 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1371 AC_TRY_RUN([
1372 #include <sys/time.h>
1373 #include <unistd.h>
1374 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1375            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1376 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1377     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
1380 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE_VA_COPY,[
1381 AC_TRY_LINK([#include <stdarg.h>
1382 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1383 samba_cv_HAVE_VA_COPY=yes,samba_cv_HAVE_VA_COPY=no)])
1384 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1385     AC_DEFINE(HAVE_VA_COPY,1,[Whether __va_copy() is available])
1388 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1389 AC_TRY_RUN([
1390 #include <sys/types.h>
1391 #include <stdarg.h>
1392 void foo(const char *format, ...) { 
1393        va_list ap;
1394        int len;
1395        char buf[5];
1397        va_start(ap, format);
1398        len = vsnprintf(buf, 0, format, ap);
1399        va_end(ap);
1400        if (len != 5) exit(1);
1402        va_start(ap, format);
1403        len = vsnprintf(0, 0, format, ap);
1404        va_end(ap);
1405        if (len != 5) exit(1);
1407        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1409        exit(0);
1411 main() { foo("hello"); }
1413 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1414 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1415     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
1418 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1419 AC_TRY_RUN([#include <sys/types.h>
1420 #include <dirent.h>
1421 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1422 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1423 di->d_name[0] == 0) exit(0); exit(1);} ],
1424 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1425 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1426     AC_DEFINE(HAVE_BROKEN_READDIR,1,[Whether readdir() is broken])
1429 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1430 AC_TRY_COMPILE([#include <sys/types.h>
1431 #include <utime.h>],
1432 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1433 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1434 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1435     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
1438 ##############
1439 # Check utmp details, but only if our OS offers utmp.h
1440 if test x"$ac_cv_header_utmp_h" = x"yes"; then
1441 dnl  utmp and utmpx come in many flavours
1442 dnl  We need to check for many of them
1443 dnl  But we don't need to do each and every one, because our code uses
1444 dnl  mostly just the utmp (not utmpx) fields.
1446 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1448 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1449 AC_TRY_COMPILE([#include <sys/types.h>
1450 #include <utmp.h>],
1451 [struct utmp ut;  ut.ut_name[0] = 'a';],
1452 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1453 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1454     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
1455 fi 
1457 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1458 AC_TRY_COMPILE([#include <sys/types.h>
1459 #include <utmp.h>],
1460 [struct utmp ut;  ut.ut_user[0] = 'a';],
1461 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1462 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1463     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
1464 fi 
1466 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1467 AC_TRY_COMPILE([#include <sys/types.h>
1468 #include <utmp.h>],
1469 [struct utmp ut;  ut.ut_id[0] = 'a';],
1470 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1471 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1472     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
1473 fi 
1475 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1476 AC_TRY_COMPILE([#include <sys/types.h>
1477 #include <utmp.h>],
1478 [struct utmp ut;  ut.ut_host[0] = 'a';],
1479 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1480 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1481     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
1482 fi 
1484 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1485 AC_TRY_COMPILE([#include <sys/types.h>
1486 #include <utmp.h>],
1487 [struct utmp ut;  time_t t; ut.ut_time = t;],
1488 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1489 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1490     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
1491 fi 
1493 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1494 AC_TRY_COMPILE([#include <sys/types.h>
1495 #include <utmp.h>],
1496 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1497 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1498 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1499     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
1500 fi 
1502 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1503 AC_TRY_COMPILE([#include <sys/types.h>
1504 #include <utmp.h>],
1505 [struct utmp ut;  ut.ut_type = 0;],
1506 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1507 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1508     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
1509 fi 
1511 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1512 AC_TRY_COMPILE([#include <sys/types.h>
1513 #include <utmp.h>],
1514 [struct utmp ut;  ut.ut_pid = 0;],
1515 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1516 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1517     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
1518 fi 
1520 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1521 AC_TRY_COMPILE([#include <sys/types.h>
1522 #include <utmp.h>],
1523 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1524 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1525 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1526     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
1527 fi 
1529 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1530 AC_TRY_COMPILE([#include <sys/types.h>
1531 #include <utmp.h>],
1532 [struct utmp ut;  ut.ut_addr = 0;],
1533 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1534 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1535     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
1536 fi 
1538 if test x$ac_cv_func_pututline = xyes ; then
1539   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1540   AC_TRY_COMPILE([#include <sys/types.h>
1541 #include <utmp.h>],
1542   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1543   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1544   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1545       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
1546   fi
1549 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1550 AC_TRY_COMPILE([#include <sys/types.h>
1551 #include <utmpx.h>],
1552 [struct utmpx ux;  ux.ut_syslen = 0;],
1553 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1554 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1555     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
1556 fi 
1559 # end utmp details
1562 ICONV_LOCATION=standard
1563 LOOK_DIRS="/usr /usr/local /sw"
1564 AC_ARG_WITH(libiconv,
1565 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
1567   if test "$withval" = "no" ; then
1568     AC_MSG_ERROR(I won't take no for an answer)
1569   else
1570      if test "$withval" != "yes" ; then
1571         ICONV_PATH_SPEC=yes
1572         LOOK_DIRS="$withval"
1573      fi
1574   fi
1577 ICONV_FOUND="no"
1578 for i in $LOOK_DIRS ; do
1579     save_LIBS=$LIBS
1580     save_LDFLAGS=$LDFLAGS
1581     save_CPPFLAGS=$CPPFLAGS
1582     CPPFLAGS="$CPPFLAGS -I$i/include"
1583 dnl This is here to handle -withval stuff for --with-libiconv
1584     if test x"$ICONV_PATH_SPEC" = "xyes" ; then
1585        LDFLAGS="-L$i/lib"
1586     fi
1587     LIBS=
1588     export LDFLAGS LIBS CPPFLAGS
1589 dnl Try to find iconv(3)
1590     jm_ICONV($i)
1592     if test "$ICONV_FOUND" = yes; then
1593         LIB_ADD_DIR(LDFLAGS, "$i/lib")
1594         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
1595         LIBS="$save_LIBS $LIBS"
1596         ICONV_LOCATION=$i
1597         export LDFLAGS LIBS CPPFLAGS
1598 dnl Now, check for a working iconv ... we want to do it here because
1599 dnl there might be a working iconv further down the list of LOOK_DIRS
1601         ############
1602         # check for iconv in libc
1603         ic_save_LIBS="$LIBS"
1604         if test x"$ICONV_PATH_SPEC" = "xyes" ; then
1605            LIBS="$LIBS -L$ICONV_LOCATION/lib"
1606         fi
1607 dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
1608         default_dos_charset=no
1609         default_display_charset=no
1610         default_unix_charset=no
1611         echo
1613         # check for default dos charset name
1614         for j in CP850 IBM850 ; do
1615             rjs_CHARSET($j)
1616             if test x"$ICONV_CHARSET" = x"$j"; then
1617                 default_dos_charset="\"$j\""
1618                 break
1619             fi
1620         done
1621         # check for default display charset name
1622         for j in ASCII 646 ; do
1623             rjs_CHARSET($j)
1624             if test x"$ICONV_CHARSET" = x"$j"; then
1625                 default_display_charset="\"$j\""
1626                 break
1627             fi
1628         done
1629         # check for default unix charset name
1630         for j in UTF-8 UTF8 ; do
1631             rjs_CHARSET($j)
1632             if test x"$ICONV_CHARSET" = x"$j"; then
1633                 default_unix_charset="\"$j\""
1634                 break
1635             fi
1636         done
1637         
1638         if test "$default_dos_charset" != "no" -a \
1639                 "$default_dos_charset" != "cross" -a \
1640                 "$default_display_charset" != "no" -a \ 
1641                 "$default_display_charset" != "cross" -a \
1642                 "$default_unix_charset" != "no" -a \
1643                 "$default_unix_charset" != "cross"
1644         then
1645                 samba_cv_HAVE_NATIVE_ICONV=yes
1646         else if test "$default_dos_charset" = "cross" -o \
1647                      "$default_display_charset" = "cross" -o \
1648                      "$default_unix_charset" = "cross"
1649         then
1650                 samba_cv_HAVE_NATIVE_ICONV=cross
1651         else
1652                 samba_cv_HAVE_NATIVE_ICONV=no
1653         fi
1654         fi
1655 dnl ])
1657         LIBS="$ic_save_LIBS"
1658         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
1659                 CPPFLAGS=$save_CPPFLAGS
1660                 CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
1661                 export CPPFLAGS
1662            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
1663            AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
1664            AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
1665            AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
1666            break
1667         fi
1668 dnl We didn't find a working iconv, so keep going
1669     fi
1670 dnl We only need to clean these up here for the next pass through the loop
1671     CPPFLAGS=$save_CPPFLAGS
1672     LDFLAGS=$save_LDFLAGS
1673     LIBS=$save_LIBS
1674     export LDFLAGS LIBS CPPFLAGS
1675 done
1678 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
1679     AC_MSG_WARN([Sufficient support for iconv function was not found. 
1680     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
1681    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"CP850",[Default dos charset name])
1682    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
1683    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
1687 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1688 AC_TRY_RUN([
1689 #include <sys/types.h>
1690 #include <fcntl.h>
1691 #ifndef F_GETLEASE
1692 #define F_GETLEASE      1025
1693 #endif
1694 main() {
1695        int fd = open("/dev/null", O_RDONLY);
1696        return fcntl(fd, F_GETLEASE, 0) == -1;
1699 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1700 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1701     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
1704 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1705 AC_TRY_RUN([
1706 #include <sys/types.h>
1707 #include <fcntl.h>
1708 #include <signal.h>
1709 #ifndef F_NOTIFY
1710 #define F_NOTIFY 1026
1711 #endif
1712 main() {
1713         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1716 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1717 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
1718     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
1721 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1722 AC_TRY_RUN([
1723 #include <sys/types.h>
1724 #include <fcntl.h>
1725 #include <signal.h>
1726 #include <sys/file.h>
1727 #ifndef LOCK_MAND
1728 #define LOCK_MAND       32
1729 #define LOCK_READ       64
1730 #endif
1731 main() {
1732         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1735 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1736 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1737     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
1743 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1744 AC_TRY_COMPILE([#include <sys/types.h>
1745 #include <fcntl.h>],
1746 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1747 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1748 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1749     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
1752 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1753 AC_TRY_RUN([#include <sys/types.h>
1754 #include <sys/capability.h>
1755 main() {
1756  cap_t cap;
1757  if ((cap = cap_get_proc()) == NULL)
1758    exit(1);
1759  cap->cap_effective |= CAP_NETWORK_MGT;
1760  cap->cap_inheritable |= CAP_NETWORK_MGT;
1761  cap_set_proc(cap);
1762  exit(0);
1765 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1766 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1767     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
1771 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1772 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1775 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1776 AC_TRY_COMPILE([#include <sys/types.h>
1777 #if defined(HAVE_RPC_RPC_H)
1778 #include <rpc/rpc.h>
1779 #endif],
1780 [int16 testvar;],
1781 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1782 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1783     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
1786 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1787 AC_TRY_COMPILE([#include <sys/types.h>
1788 #if defined(HAVE_RPC_RPC_H)
1789 #include <rpc/rpc.h>
1790 #endif],
1791 [uint16 testvar;],
1792 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1793 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1794     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
1797 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1798 AC_TRY_COMPILE([#include <sys/types.h>
1799 #if defined(HAVE_RPC_RPC_H)
1800 #include <rpc/rpc.h>
1801 #endif],
1802 [int32 testvar;],
1803 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1804 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1805     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
1808 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1809 AC_TRY_COMPILE([#include <sys/types.h>
1810 #if defined(HAVE_RPC_RPC_H)
1811 #include <rpc/rpc.h>
1812 #endif],
1813 [uint32 testvar;],
1814 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1815 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1816     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
1820 dnl Some systems (SCO) have a problem including
1821 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1822 dnl as a #define in <prot.h> and as part of an enum
1823 dnl in <rpc/rpc.h>.
1826 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1827 AC_TRY_COMPILE([#include <sys/types.h>
1828 #ifdef HAVE_SYS_SECURITY_H
1829 #include <sys/security.h>
1830 #include <prot.h>
1831 #endif  /* HAVE_SYS_SECURITY_H */
1832 #if defined(HAVE_RPC_RPC_H)
1833 #include <rpc/rpc.h>
1834 #endif],
1835 [int testvar;],
1836 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1837 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1838     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
1841 AC_MSG_CHECKING([for test routines])
1842 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1843            AC_MSG_RESULT(yes),
1844            AC_MSG_ERROR([cant find test code. Aborting config]),
1845            AC_MSG_WARN([cannot run when cross-compiling]))
1847 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1848 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1849            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1850 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1851     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
1854 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
1855 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
1856            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
1857            samba_cv_HAVE_WORKING_AF_LOCAL=no,
1858            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
1859 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
1860 then
1861     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
1864 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1865 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1866            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1867 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1868     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
1871 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1872 SAVE_CPPFLAGS="$CPPFLAGS"
1873 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper"
1874 AC_TRY_COMPILE([
1875 #define REPLACE_GETPASS 1
1876 #define NO_PROTO_H 1
1877 #define NO_CONFIG_H 1
1878 #define main dont_declare_main
1879 #include "${srcdir-.}/lib/getsmbpass.c"
1880 #undef main
1881 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1882 CPPFLAGS="$SAVE_CPPFLAGS"
1884 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
1885         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
1888 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
1889 AC_TRY_RUN([
1890 #include <stdio.h>
1891 #include <sys/types.h>
1892 #include <netinet/in.h>
1893 #ifdef HAVE_ARPA_INET_H
1894 #include <arpa/inet.h>
1895 #endif
1896 main() { struct in_addr ip; ip.s_addr = 0x12345678;
1897 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
1898     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
1899 exit(1);}],
1900            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
1901 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
1902     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
1905 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
1906 AC_TRY_RUN([#include <stdlib.h>
1907 #include <sys/types.h>
1908 #include <sys/stat.h>
1909 #include <unistd.h>
1910 main() { 
1911   struct stat st;
1912   char tpl[20]="/tmp/test.XXXXXX"; 
1913   int fd = mkstemp(tpl); 
1914   if (fd == -1) exit(1);
1915   unlink(tpl);
1916   if (fstat(fd, &st) != 0) exit(1);
1917   if ((st.st_mode & 0777) != 0600) exit(1);
1918   exit(0);
1920 samba_cv_HAVE_SECURE_MKSTEMP=yes,
1921 samba_cv_HAVE_SECURE_MKSTEMP=no,
1922 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
1923 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
1924     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
1927 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
1928 AC_TRY_RUN([#include <unistd.h>
1929 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
1930 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
1931 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
1932     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
1935 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
1936 AC_TRY_RUN([main() { exit(getuid() != 0); }],
1937            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
1938 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
1939     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
1940 else
1941     AC_MSG_WARN(running as non-root will disable some tests)
1944 ##################
1945 # look for a method of finding the list of network interfaces
1946 iface=no;
1947 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
1948 AC_TRY_RUN([
1949 #define HAVE_IFACE_AIX 1
1950 #define AUTOCONF_TEST 1
1951 #include "confdefs.h"
1952 #include "${srcdir-.}/lib/interfaces.c"],
1953            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
1954 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
1955     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
1958 if test $iface = no; then
1959 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
1960 AC_TRY_RUN([
1961 #define HAVE_IFACE_IFCONF 1
1962 #define AUTOCONF_TEST 1
1963 #include "confdefs.h"
1964 #include "${srcdir-.}/lib/interfaces.c"],
1965            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
1966 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
1967     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
1971 if test $iface = no; then
1972 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
1973 AC_TRY_RUN([
1974 #define HAVE_IFACE_IFREQ 1
1975 #define AUTOCONF_TEST 1
1976 #include "confdefs.h"
1977 #include "${srcdir-.}/lib/interfaces.c"],
1978            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
1979 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
1980     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
1985 ################################################
1986 # look for a method of setting the effective uid
1987 seteuid=no;
1988 if test $seteuid = no; then
1989 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
1990 AC_TRY_RUN([
1991 #define AUTOCONF_TEST 1
1992 #define USE_SETRESUID 1
1993 #include "confdefs.h"
1994 #include "${srcdir-.}/lib/util_sec.c"],
1995            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
1996 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
1997     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2002 if test $seteuid = no; then
2003 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2004 AC_TRY_RUN([
2005 #define AUTOCONF_TEST 1
2006 #define USE_SETREUID 1
2007 #include "confdefs.h"
2008 #include "${srcdir-.}/lib/util_sec.c"],
2009            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2010 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2011     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2015 if test $seteuid = no; then
2016 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2017 AC_TRY_RUN([
2018 #define AUTOCONF_TEST 1
2019 #define USE_SETEUID 1
2020 #include "confdefs.h"
2021 #include "${srcdir-.}/lib/util_sec.c"],
2022            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2023 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2024     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2028 if test $seteuid = no; then
2029 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2030 AC_TRY_RUN([
2031 #define AUTOCONF_TEST 1
2032 #define USE_SETUIDX 1
2033 #include "confdefs.h"
2034 #include "${srcdir-.}/lib/util_sec.c"],
2035            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2036 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2037     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2042 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2043 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2044            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2045 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2046     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2049 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
2050 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
2051            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
2052 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
2053     AC_DEFINE(FTRUNCATE_NEEDS_ROOT,1,[Whether ftruncate() needs root])
2056 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2057 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2058            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2059 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2060     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2063 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2064 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2065            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2066 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2067     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2069 else
2072 dnl Don't check for 64 bit fcntl locking if we know that the
2073 dnl glibc2.1 broken check has succeeded.
2074 dnl 
2076   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2077   AC_TRY_RUN([
2078 #if defined(HAVE_UNISTD_H)
2079 #include <unistd.h>
2080 #endif
2081 #include <stdio.h>
2082 #include <stdlib.h>
2084 #ifdef HAVE_FCNTL_H
2085 #include <fcntl.h>
2086 #endif
2088 #ifdef HAVE_SYS_FCNTL_H
2089 #include <sys/fcntl.h>
2090 #endif
2091 main() { struct flock64 fl64;
2092 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2093 exit(0);
2094 #else
2095 exit(1);
2096 #endif
2098        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2100   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2101       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2102   fi
2105 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2106 AC_TRY_COMPILE([#include <sys/types.h>
2107 #include <sys/stat.h>
2108 #include <unistd.h>],
2109 [struct stat st;  st.st_blocks = 0;],
2110 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2111 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2112     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2113 fi 
2115 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2116 AC_TRY_COMPILE([#include <sys/types.h>
2117 #include <sys/stat.h>
2118 #include <unistd.h>],
2119 [struct stat st;  st.st_blksize = 0;],
2120 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2121 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2122     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2125 case "$host_os" in
2126 *linux*)
2127 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
2128 AC_TRY_COMPILE([
2129 #ifdef HAVE_SYS_VFS_H
2130 #include <sys/vfs.h>
2131 #endif
2132 #ifdef HAVE_SYS_CAPABILITY_H
2133 #include <sys/capability.h>
2134 #endif
2135 ],[int i;],
2136    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
2137 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
2138    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
2141 esac
2143 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2144 AC_TRY_COMPILE([#include <sys/acl.h>
2145 #if defined(HAVE_RPCSVC_NIS_H)
2146 #include <rpcsvc/nis.h>
2147 #endif],
2148 [int i;],
2149 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2150 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2151         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2155 #################################################
2156 # check for smbwrapper support
2157 AC_MSG_CHECKING(whether to use smbwrapper)
2158 AC_ARG_WITH(smbwrapper,
2159 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
2160 [ case "$withval" in
2161   yes)
2162     AC_MSG_RESULT(yes)
2163     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
2164         WRAPPROG="bin/smbsh\$(EXEEXT)"
2165         WRAP="bin/smbwrapper.$SHLIBEXT"
2167 # Conditions under which smbwrapper should not be built.
2169         if test x$PICFLAG = x; then
2170            echo No support for PIC code - disabling smbwrapper and smbsh
2171            WRAPPROG=""
2172            WRAP=""
2173         elif test x$ac_cv_func_syscall = xno; then
2174            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
2175            WRAPPROG=""
2176            WRAP=""
2177         fi
2178         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP"
2179         SMBWRAPPER="$WRAPPROG $WRAP"
2180     ;;
2181   *)
2182     AC_MSG_RESULT(no)
2183     ;;
2184   esac ],
2185   AC_MSG_RESULT(no)
2188 #################################################
2189 # check for AFS clear-text auth support
2190 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2191 AC_ARG_WITH(afs,
2192 [  --with-afs              Include AFS clear-text auth support (default=no) ],
2193 [ case "$withval" in
2194   yes)
2195     AC_MSG_RESULT(yes)
2196     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2197     ;;
2198   *)
2199     AC_MSG_RESULT(no)
2200     ;;
2201   esac ],
2202   AC_MSG_RESULT(no)
2205 ####################################################
2206 # check for Linux-specific AFS fake-kaserver support
2207 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2208 AC_ARG_WITH(fake-kaserver,
2209 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
2210 [ case "$withval" in
2211   yes)
2212     AC_MSG_RESULT(yes)
2213     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2214     ;;
2215   *)
2216     AC_MSG_RESULT(no)
2217     ;;
2218   esac ],
2219   AC_MSG_RESULT(no)
2222 #################################################
2223 # check for the DFS clear-text auth system
2224 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2225 AC_ARG_WITH(dfs,
2226 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
2227 [ case "$withval" in
2228   yes)
2229     AC_MSG_RESULT(yes)
2230     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2231     ;;
2232   *)
2233     AC_MSG_RESULT(no)
2234     ;;
2235   esac ],
2236   AC_MSG_RESULT(no)
2239 ########################################################
2240 # Compile with LDAP support?
2242 with_ldap_support=auto
2243 AC_MSG_CHECKING([for LDAP support])
2245 AC_ARG_WITH(ldap,
2246 [  --with-ldap             LDAP support (default yes)],
2247 [ case "$withval" in
2248     yes|no)
2249         with_ldap_support=$withval
2250         ;;
2251   esac ])
2253 AC_MSG_RESULT($with_ldap_support)
2255 SMBLDAP=""
2256 AC_SUBST(SMBLDAP)
2257 if test x"$with_ldap_support" != x"no"; then
2259   ##################################################################
2260   # first test for ldap.h and lber.h
2261   # (ldap.h is required for this test)
2262   AC_CHECK_HEADERS(ldap.h lber.h)
2263   
2264   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2265         if test x"$with_ldap_support" = x"yes"; then
2266          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2267         else
2268          AC_MSG_WARN(ldap.h is needed for LDAP support)
2269         fi
2270         
2271         with_ldap_support=no
2272   fi
2275 if test x"$with_ldap_support" != x"no"; then
2276   ac_save_LIBS=$LIBS
2278   ##################################################################
2279   # we might need the lber lib on some systems. To avoid link errors
2280   # this test must be before the libldap test
2281   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
2283   ########################################################
2284   # now see if we can find the ldap libs in standard paths
2285   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
2287   AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS)
2288   
2289   ########################################################
2290   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2291   # Check found in pam_ldap 145.
2292   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
2294   LIBS="$LIBS $LDAP_LIBS"
2295   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
2296     AC_TRY_COMPILE([
2297         #include <lber.h>
2298         #include <ldap.h>], 
2299         [ldap_set_rebind_proc(0, 0, 0);], 
2300         [smb_ldap_cv_ldap_set_rebind_proc=3], 
2301         [smb_ldap_cv_ldap_set_rebind_proc=2]
2302     ) 
2303   ])
2304   
2305   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
2307   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS) 
2308   
2309   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes" -a x"$ac_cv_func_ext_ldap_domain2hostlist" = x"yes"; then
2310     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
2311     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
2312     SMBLDAP="lib/smbldap.o"
2313     with_ldap_support=yes
2314     AC_MSG_CHECKING(whether LDAP support is used)
2315     AC_MSG_RESULT(yes)
2316   else
2317     if test x"$with_ldap_support" = x"yes"; then
2318         AC_MSG_ERROR(libldap is needed for LDAP support)
2319     else
2320         AC_MSG_WARN(libldap is needed for LDAP support)
2321     fi
2322     
2323     LDAP_LIBS=""
2324     with_ldap_support=no
2325   fi
2326   LIBS=$ac_save_LIBS
2330 #################################################
2331 # active directory support
2333 with_ads_support=auto
2334 AC_MSG_CHECKING([for Active Directory and krb5 support])
2336 AC_ARG_WITH(ads,
2337 [  --with-ads              Active Directory support (default auto)],
2338 [ case "$withval" in
2339     yes|no)
2340         with_ads_support="$withval"
2341         ;;
2342   esac ])
2344 AC_MSG_RESULT($with_ads_support)
2346 FOUND_KRB5=no
2347 KRB5_LIBS=""
2349 if test x"$with_ldap_support" != x"yes"; then
2350     if test x"$with_ads_support" = x"yes"; then
2351         AC_MSG_ERROR(Active Directory Support requires LDAP support)
2352     elif test x"$with_ads_support" != x"no"; then
2353         AC_MSG_WARN(Active Directory Support requires LDAP support)
2354     fi
2355     with_ads_support=no
2358 if test x"$with_ads_support" != x"no"; then
2360   # Do no harm to the values of CFLAGS and LIBS while testing for
2361   # Kerberos support.
2363   #################################################
2364   # check for krb5-config from recent MIT and Heimdal kerberos 5
2365   AC_PATH_PROG(KRB5_CONFIG, krb5-config)
2366   AC_MSG_CHECKING(for working krb5-config)
2367   if test -x "$KRB5_CONFIG"; then
2368     ac_save_CFLAGS=$CFLAGS
2369     CFLAGS="";export CFLAGS
2370     ac_save_LDFLAGS=$LDFLAGS
2371     LDFLAGS="";export LDFLAGS
2372     KRB5_LIBS="`$KRB5_CONFIG --libs gssapi`"
2373     KRB5_CFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`" 
2374     KRB5_CPPFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"
2375     CFLAGS=$ac_save_CFLAGS;export CFLAGS
2376     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
2377     FOUND_KRB5=yes
2378     AC_MSG_RESULT(yes)
2379   else
2380     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
2381   fi
2382   
2383   if test x$FOUND_KRB5 = x"no"; then
2384     #################################################
2385     # check for location of Kerberos 5 install
2386     AC_MSG_CHECKING(for kerberos 5 install path)
2387     AC_ARG_WITH(krb5,
2388     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
2389     [ case "$withval" in
2390       no)
2391         AC_MSG_RESULT(no krb5-path given)
2392         ;;
2393       yes)
2394         AC_MSG_RESULT(/usr)
2395         FOUND_KRB5=yes
2396         ;;
2397       *)
2398         AC_MSG_RESULT($withval)
2399         KRB5_CFLAGS="-I$withval/include"
2400         KRB5_CPPFLAGS="-I$withval/include"
2401         KRB5_LDFLAGS="-L$withval/lib"
2402         FOUND_KRB5=yes
2403         ;;
2404       esac ],
2405       AC_MSG_RESULT(no krb5-path given)
2406     )
2407   fi
2409   if test x$FOUND_KRB5 = x"no"; then
2410     #################################################
2411     # see if this box has the SuSE location for the heimdal krb implementation
2412     AC_MSG_CHECKING(for /usr/include/heimdal)
2413     if test -d /usr/include/heimdal; then
2414       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
2415           KRB5_CFLAGS="-I/usr/include/heimdal"
2416           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2417           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
2418           AC_MSG_RESULT(yes)
2419       else
2420           KRB5_CFLAGS="-I/usr/include/heimdal"
2421           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2422           AC_MSG_RESULT(yes)
2423       fi
2424     else
2425       AC_MSG_RESULT(no)
2426     fi
2427   fi
2429   if test x$FOUND_KRB5 = x"no"; then
2430     #################################################
2431     # see if this box has the RedHat location for kerberos
2432     AC_MSG_CHECKING(for /usr/kerberos)
2433     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
2434       KRB5_LDFLAGS="-L/usr/kerberos/lib"
2435       KRB5_CFLAGS="-I/usr/kerberos/include"
2436       KRB5_CPPFLAGS="-I/usr/kerberos/include"
2437       AC_MSG_RESULT(yes)
2438     else
2439       AC_MSG_RESULT(no)
2440     fi
2441   fi
2443   ac_save_CFLAGS=$CFLAGS
2444   ac_save_CPPFLAGS=$CPPFLAGS
2445   ac_save_LDFLAGS=$LDFLAGS
2447   CFLAGS="$CFLAGS $KRB5_CFLAGS"
2448   CPPFLAGS="$CPPFLAGS $KRB5_CPPFLAGS"
2449   LDFLAGS="$LDFLAGS $KRB5_LDFLAGS"
2451   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
2453   # now check for krb5.h. Some systems have the libraries without the headers!
2454   # note that this check is done here to allow for different kerberos
2455   # include paths
2456   AC_CHECK_HEADERS(krb5.h)
2458   if test x"$ac_cv_header_krb5_h" = x"no"; then
2460     # Give a warning if AD support was not explicitly requested,
2461     # i.e with_ads_support = auto, otherwise die with an error.
2463     if test x"$with_ads_support" = x"yes"; then
2464       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
2465     else
2466       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
2467     fi
2469     # Turn off AD support and restore CFLAGS and LIBS variables
2471     with_ads_support="no"
2472     
2473     CFLAGS=$ac_save_CFLAGS
2474     CPPFLAGS=$ac_save_CPPFLAGS
2475     LDFLAGS=$ac_save_LDFLAGS
2476   fi
2479 # Now we have determined whether we really want ADS support
2481 if test x"$with_ads_support" != x"no"; then
2482   ac_save_LIBS=$LIBS
2484   # now check for gssapi headers.  This is also done here to allow for
2485   # different kerberos include paths
2486   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
2488   ##################################################################
2489   # we might need the k5crypto and com_err libraries on some systems
2490   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
2491   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
2493   # Heimdal checks.
2494   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
2495   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
2496   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
2498   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
2499   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],
2500                                 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2502   ########################################################
2503   # now see if we can find the krb5 libs in standard paths
2504   # or as specified above
2505   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
2507   ########################################################
2508   # now see if we can find the gssapi libs in standard paths
2509   AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],
2510             AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2512   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
2513   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
2514   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
2515   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
2516   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
2517   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 
2518   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
2519   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 
2520   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
2521   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 
2522   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
2523   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 
2524   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 
2525   AC_CHECK_FUNC_EXT(krb5_free_ktypes, $KRB5_LIBS)
2526   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
2528   LIBS="$LIBS $KRB5_LIBS"
2529   
2530   AC_CACHE_CHECK([for addrtype in krb5_address],
2531                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
2532     AC_TRY_COMPILE([#include <krb5.h>],
2533       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
2534       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
2535       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
2537   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
2538     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
2539                [Whether the krb5_address struct has a addrtype property])
2540   fi
2542   AC_CACHE_CHECK([for addr_type in krb5_address],
2543                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
2544     AC_TRY_COMPILE([#include <krb5.h>],
2545       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
2546       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
2547       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
2549   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
2550     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
2551               [Whether the krb5_address struct has a addr_type property])
2552   fi
2554   AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 
2555                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
2556                  [AC_TRY_COMPILE([#include <krb5.h>],
2557     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
2558     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
2560   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
2561     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
2562               [Whether the krb5_ticket struct has a enc_part2 property])
2563   fi
2565   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
2566                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
2567     AC_TRY_COMPILE([#include <krb5.h>],
2568       [krb5_keyblock key; key.keyvalue.data = NULL;],
2569       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
2570       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
2572   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
2573     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
2574               [Whether the krb5_keyblock struct has a keyvalue property])
2575   fi
2577   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
2578                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
2579     AC_TRY_COMPILE([#include <krb5.h>],
2580       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
2581       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
2582       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
2583   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
2584                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
2585     AC_TRY_COMPILE([#include <krb5.h>],
2586       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
2587       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
2588       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
2589 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
2590 # w.r.t. arcfour and windows, so we must not enable it here
2591   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
2592           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
2593     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
2594               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
2595   fi
2597   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
2598                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
2599     AC_TRY_COMPILE([#include <krb5.h>],
2600       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
2601       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
2602       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
2604   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
2605     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
2606               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
2607   fi
2609   AC_CACHE_CHECK([for the krb5_princ_component macro],
2610                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
2611     AC_TRY_LINK([#include <krb5.h>],
2612       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
2613       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
2614       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
2616   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
2617     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
2618                [Whether krb5_princ_component is available])
2619   fi
2621   AC_CACHE_CHECK([for memory keytab support],
2622                  samba_cv_HAVE_MEMORY_KEYTAB,[
2623     AC_TRY_RUN([
2624 #include<krb5.h>
2625   main()
2626   {
2627     krb5_context context;
2628     krb5_keytab keytab;
2629     
2630     krb5_init_context(&context);
2631     if (krb5_kt_resolve(context, "MEMORY:", &keytab))
2632       exit(0);
2633     exit(1);
2634   }], 
2635   samba_cv_HAVE_MEMORY_KEYTAB=no,
2636   samba_cv_HAVE_MEMORY_KEYTAB=yes)])
2638   if test x"$samba_cv_HAVE_MEMORY_KEYTAB" = x"yes"; then
2639       AC_DEFINE(HAVE_MEMORY_KEYTAB,1,
2640                [Whether in-memory keytabs are supported])
2641   fi
2644   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" = x"yes"; then
2645     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
2646     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
2647     AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
2648     AC_MSG_RESULT(yes)
2649   else
2650     if test x"$with_ads_support" = x"yes"; then
2651         AC_MSG_ERROR(libkrb5 is needed for Active Directory support)
2652     else
2653         AC_MSG_WARN(libkrb5 is needed for Active Directory support)
2654     fi
2655     KRB5_LIBS=""
2656     with_ads_support=no 
2657   fi
2658   LIBS="$ac_save_LIBS"
2661 ########################################################
2662 # Compile experimental passdb backends?
2663 # (pdb_xml, pdb_mysql)
2664 AC_MSG_CHECKING(whether to build experimental passdb libraries)
2665 AC_ARG_WITH(expsam,
2666 [  --with-expsam=<list>    Include experimental passdb libraries (default=no)]
2667 [                          Valid choices include (comma separated list): ]
2668 [                              xml & mysql],
2669 [ expsam_pdb_modules=`echo "$withval" | sed 's/,/ /g'`
2670   if test "z$expsam_pdb_modules" = "zyes"; then
2671     expsam_pdb_modules="xml mysql"
2672   fi
2673   AC_MSG_RESULT($expsam_pdb_modules)
2674   for i in $expsam_pdb_modules
2675   do 
2676     case "$i" in
2677     xml)
2678       ## pdb_xml
2679       AM_PATH_XML2([2.0.0],[default_shared_modules="$default_shared_modules pdb_xml"],[])
2680       CFLAGS="$CFLAGS $XML_CFLAGS"
2681       ;;
2682     mysql)
2683       ## pdb_mysql
2684       AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[])
2685       CFLAGS="$CFLAGS $MYSQL_CFLAGS"
2686       ;;
2687     no)
2688       ;;
2689     *)
2690       echo "Unknown module name \"$i\"!  Exiting..."
2691       exit 1
2692       ;;
2693     esac
2694   done ],
2695   AC_MSG_RESULT(no)
2698 #################################################
2699 # check for automount support
2700 AC_MSG_CHECKING(whether to use automount)
2701 AC_ARG_WITH(automount,
2702 [  --with-automount        Include automount support (default=no)],
2703 [ case "$withval" in
2704   yes)
2705     AC_MSG_RESULT(yes)
2706     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
2707     ;;
2708   *)
2709     AC_MSG_RESULT(no)
2710     ;;
2711   esac ],
2712   AC_MSG_RESULT(no)
2715 #################################################
2716 # check for smbmount support
2717 AC_MSG_CHECKING(whether to use smbmount)
2718 AC_ARG_WITH(smbmount,
2719 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
2720 [ case "$withval" in
2721   yes)
2722         case "$host_os" in
2723         *linux*)
2724                 AC_MSG_RESULT(yes)
2725                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
2726                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
2727                 ;;
2728         *)
2729                 AC_MSG_ERROR(not on a linux system!)
2730                 ;;
2731         esac
2732     ;;
2733   *)
2734     AC_MSG_RESULT(no)
2735     ;;
2736   esac ],
2737   AC_MSG_RESULT(no)
2741 #################################################
2742 # check for a PAM clear-text auth, accounts, password and session support
2743 with_pam_for_crypt=no
2744 AC_MSG_CHECKING(whether to use PAM)
2745 AC_ARG_WITH(pam,
2746 [  --with-pam              Include PAM support (default=no)],
2747 [ case "$withval" in
2748   yes)
2749     AC_MSG_RESULT(yes)
2750     if test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
2751        if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
2752           if test x"$ac_cv_header_security__pam_macros_h" = x"no"; then
2753              AC_MSG_ERROR(--with-pam specified but no PAM headers found)
2754           fi
2755        fi
2756     fi
2757     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
2758     AUTH_LIBS="$AUTH_LIBS -lpam"
2759     with_pam_for_crypt=yes
2760     ;;
2761   *)
2762     AC_MSG_RESULT(no)
2763     ;;
2764   esac ],
2765   AC_MSG_RESULT(no)
2768 # we can't build a pam module if we don't have pam.
2769 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
2771 #################################################
2772 # check for pam_smbpass support
2773 AC_MSG_CHECKING(whether to use pam_smbpass)
2774 AC_ARG_WITH(pam_smbpass,
2775 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
2776 [ case "$withval" in
2777   yes)
2778     AC_MSG_RESULT(yes)
2780        # Conditions under which pam_smbpass should not be built.
2782        if test x$PICFLAG = x; then
2783           AC_MSG_ERROR([No support for PIC code])
2784        elif test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
2785           AC_MSG_ERROR([No security/pam_appl.h found])
2786        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
2787           AC_MSG_ERROR([No libpam found])
2788        else
2789           AUTH_LIBS="$AUTH_LIBS -lpam"
2790           SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.$SHLIBEXT"
2791        fi
2792     ;;
2793   *)
2794     AC_MSG_RESULT(no)
2795     ;;
2796   esac ],
2797   AC_MSG_RESULT(no)
2801 ###############################################
2802 # test for where we get crypt() from
2803 AC_SEARCH_LIBS(crypt, [crypt],
2804   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
2805   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
2808 ## moved after the check for -lcrypt in order to
2809 ## ensure that the necessary libraries are included
2810 ## check checking for truncated salt.  Wrapped by the
2811 ## $with_pam_for_crypt variable as above   --jerry
2813 if test $with_pam_for_crypt = no; then
2814 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
2815 crypt_LIBS="$LIBS"
2816 LIBS="$AUTH_LIBS $LIBS"
2817 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
2818         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
2819 LIBS="$crypt_LIBS"])
2820 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
2821         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
2825 ########################################################################################
2827 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
2829 ########################################################################################
2831 #################################################
2832 # check for a LDAP password database configuration backwards compatibility
2833 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
2834 AC_ARG_WITH(ldapsam,
2835 [  --with-ldapsam          Include LDAP SAM 2.2 compatible configuration (default=no)],
2836 [ case "$withval" in
2837   yes)
2838     AC_MSG_RESULT(yes)
2839     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatible LDAP SAM configuration])
2840     ;;
2841   *)
2842     AC_MSG_RESULT(no)
2843     ;;
2844   esac ],
2845   AC_MSG_RESULT(no)
2848 ########################################################################################
2850 ## END OF TESTS FOR SAM BACKENDS.  
2852 ########################################################################################
2854 #################################################
2855 # check for a NISPLUS_HOME support 
2856 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
2857 AC_ARG_WITH(nisplus-home,
2858 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
2859 [ case "$withval" in
2860   yes)
2861     AC_MSG_RESULT(yes)
2862     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
2863     ;;
2864   *)
2865     AC_MSG_RESULT(no)
2866     ;;
2867   esac ],
2868   AC_MSG_RESULT(no)
2871 #################################################
2872 # check for syslog logging
2873 AC_MSG_CHECKING(whether to use syslog logging)
2874 AC_ARG_WITH(syslog,
2875 [  --with-syslog           Include experimental SYSLOG support (default=no)],
2876 [ case "$withval" in
2877   yes)
2878     AC_MSG_RESULT(yes)
2879     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
2880     ;;
2881   *)
2882     AC_MSG_RESULT(no)
2883     ;;
2884   esac ],
2885   AC_MSG_RESULT(no)
2888 #################################################
2889 # check for a shared memory profiling support
2890 AC_MSG_CHECKING(whether to use profiling)
2891 AC_ARG_WITH(profiling-data,
2892 [  --with-profiling-data   Include gathering source code profile information (default=no)],
2893 [ case "$withval" in
2894   yes)
2895     AC_MSG_RESULT(yes)
2896     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
2897     ;;
2898   *)
2899     AC_MSG_RESULT(no)
2900     ;;
2901   esac ],
2902   AC_MSG_RESULT(no)
2906 #################################################
2907 # check for experimental disk-quotas support
2909 samba_cv_WITH_QUOTAS=auto
2910 samba_cv_TRY_QUOTAS=no
2911 samba_cv_RUN_QUOTA_TESTS=auto
2912 samba_cv_WITH_SYS_QUOTAS=auto
2913 samba_cv_TRY_SYS_QUOTAS=no
2915 AC_MSG_CHECKING(whether to try disk-quotas support)
2916 AC_ARG_WITH(quotas,
2917 [  --with-quotas           Include disk-quota support (default=no)],
2918 [ case "$withval" in
2919   yes)
2920     AC_MSG_RESULT(yes)
2921     samba_cv_WITH_QUOTAS=yes
2922     samba_cv_TRY_QUOTAS=yes
2923     samba_cv_RUN_QUOTA_TESTS=yes
2924     #set sys quotas to auto in this case
2925     samba_cv_TRY_SYS_QUOTAS=auto
2926     ;;
2927   auto)
2928     AC_MSG_RESULT(auto)
2929     samba_cv_WITH_QUOTAS=auto
2930     samba_cv_TRY_QUOTAS=auto
2931     samba_cv_RUN_QUOTA_TESTS=auto
2932     #set sys quotas to auto in this case
2933     samba_cv_TRY_SYS_QUOTAS=auto
2934     ;;
2935   no)
2936     AC_MSG_RESULT(no)
2937     samba_cv_WITH_QUOTAS=no
2938     samba_cv_TRY_QUOTAS=no
2939     samba_cv_RUN_QUOTA_TESTS=no
2940     ;;
2941   *)
2942     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
2943     ;;
2944   esac ],
2945   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
2948 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
2949 AC_ARG_WITH(sys-quotas,
2950 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
2951 [ case "$withval" in
2952   yes)
2953     AC_MSG_RESULT(yes)
2954     samba_cv_WITH_SYS_QUOTAS=yes
2955     samba_cv_TRY_SYS_QUOTAS=yes
2956     samba_cv_RUN_QUOTA_TESTS=yes
2957     ;;
2958   auto)
2959     AC_MSG_RESULT(auto)
2960     samba_cv_WITH_SYS_QUOTAS=auto
2961     samba_cv_TRY_SYS_QUOTAS=auto
2962     samba_cv_RUN_QUOTA_TESTS=auto
2963     ;;
2964   no)
2965     AC_MSG_RESULT(no)
2966     samba_cv_WITH_SYS_QUOTAS=no
2967     samba_cv_TRY_SYS_QUOTAS=no
2968     ;;
2969   *)
2970     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
2971     ;;
2972   esac ],
2973   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
2976 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
2977 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
2978   case "$host_os" in
2979         *linux*)
2980             AC_MSG_RESULT(yes)
2981             samba_cv_TRY_SYS_QUOTAS=yes
2982             samba_cv_RUN_QUOTA_TESTS=yes
2983             ;;
2984         *)
2985             AC_MSG_RESULT(no)
2986             samba_cv_TRY_SYS_QUOTAS=no
2987             ;;
2988   esac
2991 #############################################
2992 # only check for quota stuff if --with-quotas
2993 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
2995 # For quotas on Veritas VxFS filesystems
2996 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
2998 # For sys/quota.h and linux/quota.h
2999 AC_CHECK_HEADERS(sys/quota.h)
3000 AC_CHECK_HEADERS(asm/types.h linux/quota.h)
3002 # For quotas on Linux XFS filesystems
3003 AC_CHECK_HEADERS(linux/xqm.h linux/xfs_fs.h)
3004 AC_CHECK_HEADERS(xfs/libxfs.h xfs/xqm.h xfs/xfs_fs.h)
3005 # For linux > 2.5.56 
3006 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
3008 # if we have struct if_dqblk in <linux/quota.h> we should use it
3009 AC_CACHE_CHECK([for struct if_dqblk in <linux/quota.h>],samba_cv_HAVE_STRUCT_IF_DQBLK, [
3010 AC_TRY_COMPILE([
3011 #include "confdefs.h"
3012 #ifdef HAVE_SYS_TYPES_H
3013 #include <sys/types.h>
3014 #endif
3015 #ifdef HAVE_ASM_TYPES_H
3016 #include <asm/types.h>
3017 #endif
3018 #include <linux/quota.h>
3019 ],[struct if_dqblk D;],
3020 samba_cv_HAVE_STRUCT_IF_DQBLK=yes,samba_cv_HAVE_STRUCT_IF_DQBLK=no)])
3021 if test "$samba_cv_HAVE_STRUCT_IF_DQBLK"x = "yes"x; then
3022         AC_DEFINE(HAVE_STRUCT_IF_DQBLK,1,[struct if_dqblk])
3025 # if we have struct mem_dqblk in <linux/quota.h> we should use it
3026 AC_CACHE_CHECK([for struct mem_dqblk in <linux/quota.h>],samba_cv_HAVE_STRUCT_MEM_DQBLK, [
3027 AC_TRY_COMPILE([
3028 #include "confdefs.h"
3029 #ifdef HAVE_SYS_TYPES_H
3030 #include <sys/types.h>
3031 #endif
3032 #ifdef HAVE_ASM_TYPES_H
3033 #include <asm/types.h>
3034 #endif
3035 #include <linux/quota.h>
3036 ],[struct mem_dqblk D;],
3037 samba_cv_HAVE_STRUCT_MEM_DQBLK=yes,samba_cv_HAVE_STRUCT_MEM_DQBLK=no)])
3038 if test "$samba_cv_HAVE_STRUCT_MEM_DQBLK"x = "yes"x; then
3039         AC_DEFINE(HAVE_STRUCT_MEM_DQBLK,1,[struct mem_dqblk])
3042 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
3043 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
3044 AC_TRY_COMPILE([
3045 #include "confdefs.h"
3046 #ifdef HAVE_SYS_QUOTA_H
3047 #include <sys/quota.h>
3048 #endif
3050 struct dqblk D;
3051 D.dqb_fsoftlimit = 0;],
3052 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
3053 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
3054         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
3057 ##################
3058 # look for a working quota system
3059 samba_cv_SYSQUOTA_FOUND=no;
3061 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3062 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
3063 AC_TRY_RUN_STRICT([
3064 #define HAVE_QUOTACTL_4A 1
3065 #define AUTOCONF_TEST 1
3066 #include "confdefs.h"
3067 #include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3068            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
3069 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
3070     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])
3074 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3075 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
3076 AC_TRY_RUN_STRICT([
3077 #define HAVE_QUOTACTL_4B 1
3078 #define AUTOCONF_TEST 1
3079 #include "confdefs.h"
3080 #include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3081            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
3082 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
3083     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
3084 #    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])
3088 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3089 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
3090 AC_TRY_RUN_STRICT([
3091 #define HAVE_QUOTACTL_3 1
3092 #define AUTOCONF_TEST 1
3093 #include "confdefs.h"
3094 #include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3095            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
3096 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
3097     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
3098 #    samba_cv_SYSQUOTA_FOUND=yes;AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
3102 #################################################
3103 # check for mntent.h and struct mntent
3104 AC_CHECK_HEADERS(mntent.h)
3105 #################################################
3106 # check for setmntent,getmntent,endmntent
3107 AC_CHECK_FUNCS(setmntent getmntent endmntent)
3109 #################################################
3110 # check for devnm.h and struct mntent
3111 AC_CHECK_HEADERS(devnm.h)
3112 #################################################
3113 # check for devnm
3114 AC_CHECK_FUNCS(devnm)
3116 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
3117     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3118         # if --with-sys-quotas=yes then build it 
3119         # you have can use the get/set quota command smb.conf
3120         # options then
3121         samba_cv_SYSQUOTA_FOUND=auto
3122     fi
3123     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
3124         # if --with-sys-quotas=yes then build it 
3125         # you have can use the get/set quota command smb.conf
3126         # options then
3127         samba_cv_TRY_SYS_QUOTAS=auto
3128     fi
3131 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
3132 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
3133 SAVE_CPPFLAGS="$CPPFLAGS"
3134 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3135 AC_TRY_COMPILE([
3136 #include "confdefs.h"
3137 #define NO_PROTO_H 1
3138 #define NO_CONFIG_H 1
3139 #define HAVE_SYS_QUOTAS 1
3140 #include "${srcdir-.}/lib/sysquotas.c"
3141 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
3142 CPPFLAGS="$SAVE_CPPFLAGS"
3144 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
3145 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
3146     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
3147         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3148         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
3149         samba_cv_WE_USE_SYS_QUOTAS=yes
3150         AC_MSG_RESULT(yes)
3151     else
3152         AC_MSG_RESULT(no)
3153     fi
3157 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
3158 SAVE_CPPFLAGS="$CPPFLAGS"
3159 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3160 AC_TRY_COMPILE([
3161 #include "confdefs.h"
3162 #define NO_PROTO_H 1
3163 #define NO_CONFIG_H 1
3164 #include "${srcdir-.}/smbd/quotas.c"
3165 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
3166 CPPFLAGS="$SAVE_CPPFLAGS"
3168 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
3169 AC_MSG_CHECKING(whether to use the old quota support)
3170     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
3171       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
3172         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3173         AC_MSG_RESULT(yes)
3174       else
3175         AC_MSG_RESULT(no)
3176       fi
3177     else
3178       AC_MSG_RESULT(no)
3179     fi
3182 ####################
3183 # End of quota check samba_cv_RUN_QUOTA_TESTS
3186 #################################################
3187 # check for experimental utmp accounting
3189 AC_MSG_CHECKING(whether to support utmp accounting)
3190 WITH_UTMP=yes
3191 AC_ARG_WITH(utmp,
3192 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
3193 [ case "$withval" in
3194   no)
3195                 WITH_UTMP=no
3196                 ;;
3197   *)
3198                 WITH_UTMP=yes
3199                 ;;
3200   esac ],
3203 # utmp requires utmp.h
3204 # Note similar check earlier, when checking utmp details.
3206 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
3207         utmp_no_reason=", no utmp.h on $host_os"
3208         WITH_UTMP=no
3211 # Display test results
3213 if test x"$WITH_UTMP" = x"yes"; then
3214         AC_MSG_RESULT(yes)
3215         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
3216 else
3217         AC_MSG_RESULT(no$utmp_no_reason)
3220 #################################################
3221 # choose native language(s) of man pages
3222 AC_MSG_CHECKING(chosen man pages' language(s))
3223 AC_ARG_WITH(manpages-langs,
3224 [  --with-manpages-langs={en,ja,pl}  Choose man pages' language(s). (en)],
3225 [ case "$withval" in
3226   yes|no)
3227     AC_MSG_WARN(--with-manpages-langs called without argument - will use default)
3228     manlangs="en"
3229   ;;
3230   *)
3231     manlangs="$withval"
3232   ;;
3233   esac
3235   AC_MSG_RESULT($manlangs)
3236   manlangs=`echo $manlangs | sed "s/,/ /g"`   # replacing commas with spaces to produce a list
3237   AC_SUBST(manlangs)],
3239   [manlangs="en"
3240   AC_MSG_RESULT($manlangs)
3241   AC_SUBST(manlangs)]
3244 #################################################
3245 # should we build libsmbclient?
3247 INSTALLCLIENTCMD_SH=:
3248 INSTALLCLIENTCMD_A=:
3249 INSTALLCLIENT=
3250 LIBSMBCLIENT_SHARED=
3251 LIBSMBCLIENT=
3252 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
3253 AC_ARG_WITH(libsmbclient,
3254 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
3255 [ case "$withval" in
3256   no) 
3257      AC_MSG_RESULT(no)
3258      ;;
3259   *)
3260      if test $BLDSHARED = true; then
3261         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3262         ## build the static version of libsmbclient as well
3263         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3264         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3265         LIBSMBCLIENT=libsmbclient
3266         AC_MSG_RESULT(yes)
3267      else
3268         enable_static=yes
3269         AC_MSG_RESULT(no shared library support -- will supply static library)
3270      fi
3271      if test $enable_static = yes; then
3272         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3273         LIBSMBCLIENT=libsmbclient
3274      fi
3275      INSTALLCLIENT=installclientlib
3276      ;;
3277   esac ],
3279 # if unspecified, default is to built it iff possible.
3280   if test $BLDSHARED = true; then
3281      INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3282      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3283      LIBSMBCLIENT=libsmbclient
3284      AC_MSG_RESULT(yes)
3285    else
3286      enable_static=yes
3287      AC_MSG_RESULT(no shared library support -- will supply static library)
3288    fi
3289    if test $enable_static = yes; then
3290      INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3291      LIBSMBCLIENT=libsmbclient
3292   fi]
3293   INSTALLCLIENT=installclientlib
3297 #################################################
3298 # these tests are taken from the GNU fileutils package
3299 AC_CHECKING(how to get filesystem space usage)
3300 space=no
3302 # Test for statvfs64.
3303 if test $space = no; then
3304   # SVR4
3305   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
3306   [AC_TRY_RUN([
3307 #if defined(HAVE_UNISTD_H)
3308 #include <unistd.h>
3309 #endif
3310 #include <sys/types.h>
3311 #include <sys/statvfs.h>
3312   main ()
3313   {
3314     struct statvfs64 fsd;
3315     exit (statvfs64 (".", &fsd));
3316   }],
3317   fu_cv_sys_stat_statvfs64=yes,
3318   fu_cv_sys_stat_statvfs64=no,
3319   fu_cv_sys_stat_statvfs64=cross)])
3320   if test $fu_cv_sys_stat_statvfs64 = yes; then
3321     space=yes
3322     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
3323   fi
3326 # Perform only the link test since it seems there are no variants of the
3327 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
3328 # because that got a false positive on SCO OSR5.  Adding the declaration
3329 # of a `struct statvfs' causes this test to fail (as it should) on such
3330 # systems.  That system is reported to work fine with STAT_STATFS4 which
3331 # is what it gets when this test fails.
3332 if test $space = no; then
3333   # SVR4
3334   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
3335                  [AC_TRY_LINK([#include <sys/types.h>
3336 #include <sys/statvfs.h>],
3337                               [struct statvfs fsd; statvfs (0, &fsd);],
3338                               fu_cv_sys_stat_statvfs=yes,
3339                               fu_cv_sys_stat_statvfs=no)])
3340   if test $fu_cv_sys_stat_statvfs = yes; then
3341     space=yes
3342     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
3343   fi
3346 if test $space = no; then
3347   # DEC Alpha running OSF/1
3348   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
3349   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
3350   [AC_TRY_RUN([
3351 #include <sys/param.h>
3352 #include <sys/types.h>
3353 #include <sys/mount.h>
3354   main ()
3355   {
3356     struct statfs fsd;
3357     fsd.f_fsize = 0;
3358     exit (statfs (".", &fsd, sizeof (struct statfs)));
3359   }],
3360   fu_cv_sys_stat_statfs3_osf1=yes,
3361   fu_cv_sys_stat_statfs3_osf1=no,
3362   fu_cv_sys_stat_statfs3_osf1=no)])
3363   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
3364   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
3365     space=yes
3366     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
3367   fi
3370 if test $space = no; then
3371 # AIX
3372   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
3373 member (AIX, 4.3BSD)])
3374   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
3375   [AC_TRY_RUN([
3376 #ifdef HAVE_SYS_PARAM_H
3377 #include <sys/param.h>
3378 #endif
3379 #ifdef HAVE_SYS_MOUNT_H
3380 #include <sys/mount.h>
3381 #endif
3382 #ifdef HAVE_SYS_VFS_H
3383 #include <sys/vfs.h>
3384 #endif
3385   main ()
3386   {
3387   struct statfs fsd;
3388   fsd.f_bsize = 0;
3389   exit (statfs (".", &fsd));
3390   }],
3391   fu_cv_sys_stat_statfs2_bsize=yes,
3392   fu_cv_sys_stat_statfs2_bsize=no,
3393   fu_cv_sys_stat_statfs2_bsize=no)])
3394   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
3395   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
3396     space=yes
3397     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
3398   fi
3401 if test $space = no; then
3402 # SVR3
3403   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
3404   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
3405   [AC_TRY_RUN([#include <sys/types.h>
3406 #include <sys/statfs.h>
3407   main ()
3408   {
3409   struct statfs fsd;
3410   exit (statfs (".", &fsd, sizeof fsd, 0));
3411   }],
3412     fu_cv_sys_stat_statfs4=yes,
3413     fu_cv_sys_stat_statfs4=no,
3414     fu_cv_sys_stat_statfs4=no)])
3415   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
3416   if test $fu_cv_sys_stat_statfs4 = yes; then
3417     space=yes
3418     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
3419   fi
3422 if test $space = no; then
3423 # 4.4BSD and NetBSD
3424   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
3425 member (4.4BSD and NetBSD)])
3426   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
3427   [AC_TRY_RUN([#include <sys/types.h>
3428 #ifdef HAVE_SYS_PARAM_H
3429 #include <sys/param.h>
3430 #endif
3431 #ifdef HAVE_SYS_MOUNT_H
3432 #include <sys/mount.h>
3433 #endif
3434   main ()
3435   {
3436   struct statfs fsd;
3437   fsd.f_fsize = 0;
3438   exit (statfs (".", &fsd));
3439   }],
3440   fu_cv_sys_stat_statfs2_fsize=yes,
3441   fu_cv_sys_stat_statfs2_fsize=no,
3442   fu_cv_sys_stat_statfs2_fsize=no)])
3443   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
3444   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
3445     space=yes
3446         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
3447   fi
3450 if test $space = no; then
3451   # Ultrix
3452   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
3453   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
3454   [AC_TRY_RUN([#include <sys/types.h>
3455 #ifdef HAVE_SYS_PARAM_H
3456 #include <sys/param.h>
3457 #endif
3458 #ifdef HAVE_SYS_MOUNT_H
3459 #include <sys/mount.h>
3460 #endif
3461 #ifdef HAVE_SYS_FS_TYPES_H
3462 #include <sys/fs_types.h>
3463 #endif
3464   main ()
3465   {
3466   struct fs_data fsd;
3467   /* Ultrix's statfs returns 1 for success,
3468      0 for not mounted, -1 for failure.  */
3469   exit (statfs (".", &fsd) != 1);
3470   }],
3471   fu_cv_sys_stat_fs_data=yes,
3472   fu_cv_sys_stat_fs_data=no,
3473   fu_cv_sys_stat_fs_data=no)])
3474   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
3475   if test $fu_cv_sys_stat_fs_data = yes; then
3476     space=yes
3477     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
3478   fi
3482 # As a gating factor for large file support, in order to
3483 # use <4GB files we must have the following minimal support
3484 # available.
3485 # long long, and a 64 bit off_t or off64_t.
3486 # If we don't have all of these then disable large
3487 # file support.
3489 AC_MSG_CHECKING([if large file support can be enabled])
3490 AC_TRY_COMPILE([
3491 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
3492 #include <sys/types.h>
3493 #else
3494 __COMPILE_ERROR_
3495 #endif
3497 [int i],
3498 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
3499 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
3500         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
3502 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
3504 AC_ARG_WITH(spinlocks, 
3505 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
3506 if test "x$with_spinlocks" = "xyes"; then
3507     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
3509     case "$host_cpu" in
3510         sparc)
3511             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
3512             ;;
3514         i386|i486|i586|i686)
3515             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
3516             ;;
3518         mips)
3519             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
3520             ;;
3522         powerpc)
3523             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
3524             ;;
3525     esac
3528 #################################################
3529 # check for ACL support
3531 AC_MSG_CHECKING(whether to support ACLs)
3532 AC_ARG_WITH(acl-support,
3533 [  --with-acl-support      Include ACL support (default=no)],
3534 [ case "$withval" in
3535   yes)
3537         case "$host_os" in
3538         *sysv5*)
3539                 AC_MSG_RESULT(Using UnixWare ACLs)
3540                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
3541                 ;;
3542         *solaris*)
3543                 AC_MSG_RESULT(Using solaris ACLs)
3544                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
3545                 ;;
3546         *hpux*)
3547                 AC_MSG_RESULT(Using HPUX ACLs)
3548                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
3549                 ;;
3550         *irix*)
3551                 AC_MSG_RESULT(Using IRIX ACLs)
3552                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
3553                 ;;
3554         *aix*)
3555                 AC_MSG_RESULT(Using AIX ACLs)
3556                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
3557                 ;;
3558         *osf*)
3559                 AC_MSG_RESULT(Using Tru64 ACLs)
3560                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
3561                 ACL_LIBS="$ACL_LIBS -lpacl"
3562                 ;;
3563         *freebsd5*)
3564                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
3565                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
3566                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3567                 ;;
3568         *linux*)
3569                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
3570                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
3571                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3572                 acl_LIBS=$LIBS
3573                 LIBS="$LIBS -lacl"
3574                 AC_TRY_LINK([#include <sys/types.h>
3575 #include <sys/acl.h>],
3576 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3577 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3578                 LIBS=$acl_LIBS])
3579                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3580                                 AC_MSG_RESULT(Using posix ACLs)
3581                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3582                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3583                                 acl_LIBS=$LIBS
3584                                 LIBS="$LIBS -lacl"
3585                                 AC_TRY_LINK([#include <sys/types.h>
3586 #include <sys/acl.h>],
3587 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3588 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3589                                 LIBS=$acl_LIBS])
3590                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3591                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3592                                 fi
3593                         fi
3594             ;;
3595          *)
3596                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
3597                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3598                 acl_LIBS=$LIBS
3599                 LIBS="$LIBS -lacl"
3600                 AC_TRY_LINK([#include <sys/types.h>
3601 #include <sys/acl.h>],
3602 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3603 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3604                 LIBS=$acl_LIBS])
3605                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3606                                 AC_MSG_RESULT(Using posix ACLs)
3607                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3608                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3609                                 acl_LIBS=$LIBS
3610                                 LIBS="$LIBS -lacl"
3611                                 AC_TRY_LINK([#include <sys/types.h>
3612 #include <sys/acl.h>],
3613 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3614 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3615                                 LIBS=$acl_LIBS])
3616                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3617                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3618                                 fi
3619                         fi
3620             ;;
3621         esac
3622         ;;
3623   *)
3624     AC_MSG_RESULT(no)
3625     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
3626     ;;
3627   esac ],
3628   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
3629   AC_MSG_RESULT(no)
3632 #################################################
3633 # check for sendfile support
3635 with_sendfile_support=yes
3636 AC_MSG_CHECKING(whether to check to support sendfile)
3637 AC_ARG_WITH(sendfile-support,
3638 [  --with-sendfile-support Check for sendfile support (default=yes)],
3639 [ case "$withval" in
3640   yes)
3642         AC_MSG_RESULT(yes);
3644         case "$host_os" in
3645         *linux*)
3646                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
3647                 AC_TRY_LINK([#include <sys/sendfile.h>],
3649 int tofd, fromfd;
3650 off64_t offset;
3651 size_t total;
3652 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
3654 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
3656                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
3657                 AC_TRY_LINK([#include <sys/sendfile.h>],
3659 int tofd, fromfd;
3660 off_t offset;
3661 size_t total;
3662 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
3664 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3666 # Try and cope with broken Linux sendfile....
3667                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
3668                 AC_TRY_LINK([\
3669 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
3670 #undef _FILE_OFFSET_BITS
3671 #endif
3672 #include <sys/sendfile.h>],
3674 int tofd, fromfd;
3675 off_t offset;
3676 size_t total;
3677 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
3679 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
3681         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3682                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
3683                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3684                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3685         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3686                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
3687                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3688                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3689         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
3690                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
3691                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
3692         else
3693                 AC_MSG_RESULT(no);
3694         fi
3696         ;;
3697         *freebsd*)
3698                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
3699                 AC_TRY_LINK([\
3700 #include <sys/types.h>
3701 #include <unistd.h>
3702 #include <sys/socket.h>
3703 #include <sys/uio.h>],
3705         int fromfd, tofd, ret, total=0;
3706         off_t offset, nwritten;
3707         struct sf_hdtr hdr;
3708         struct iovec hdtrl;
3709         hdr.headers = &hdtrl;
3710         hdr.hdr_cnt = 1;
3711         hdr.trailers = NULL;
3712         hdr.trl_cnt = 0;
3713         hdtrl.iov_base = NULL;
3714         hdtrl.iov_len = 0;
3715         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
3717 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3719         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3720                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
3721                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
3722                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3723         else
3724                 AC_MSG_RESULT(no);
3725         fi
3726         ;;
3728         *hpux*)
3729                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
3730                 AC_TRY_LINK([\
3731 #include <sys/socket.h>
3732 #include <sys/uio.h>],
3734         int fromfd, tofd;
3735         size_t total=0;
3736         struct iovec hdtrl[2];
3737         ssize_t nwritten;
3738         off64_t offset;
3740         hdtrl[0].iov_base = 0;
3741         hdtrl[0].iov_len = 0;
3743         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
3745 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
3746         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3747                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
3748                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
3749                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3750         else
3751                 AC_MSG_RESULT(no);
3752         fi
3754                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
3755                 AC_TRY_LINK([\
3756 #include <sys/socket.h>
3757 #include <sys/uio.h>],
3759         int fromfd, tofd;
3760         size_t total=0;
3761         struct iovec hdtrl[2];
3762         ssize_t nwritten;
3763         off_t offset;
3765         hdtrl[0].iov_base = 0;
3766         hdtrl[0].iov_len = 0;
3768         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
3770 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3771         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3772                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
3773                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
3774                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3775         else
3776                 AC_MSG_RESULT(no);
3777         fi
3778         ;;
3780         *solaris*)
3781                 AC_CHECK_LIB(sendfile,sendfilev)
3782                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
3783                 AC_TRY_LINK([\
3784 #include <sys/sendfile.h>],
3786         int sfvcnt;
3787         size_t xferred;
3788         struct sendfilevec vec[2];
3789         ssize_t nwritten;
3790         int tofd;
3792         sfvcnt = 2;
3794         vec[0].sfv_fd = SFV_FD_SELF;
3795         vec[0].sfv_flag = 0;
3796         vec[0].sfv_off = 0;
3797         vec[0].sfv_len = 0;
3799         vec[1].sfv_fd = 0;
3800         vec[1].sfv_flag = 0;
3801         vec[1].sfv_off = 0;
3802         vec[1].sfv_len = 0;
3803         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
3805 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
3807         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
3808                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
3809                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
3810                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3811         else
3812                 AC_MSG_RESULT(no);
3813         fi
3815                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
3816                 AC_TRY_LINK([\
3817 #include <sys/sendfile.h>],
3819         int sfvcnt;
3820         size_t xferred;
3821         struct sendfilevec vec[2];
3822         ssize_t nwritten;
3823         int tofd;
3825         sfvcnt = 2;
3827         vec[0].sfv_fd = SFV_FD_SELF;
3828         vec[0].sfv_flag = 0;
3829         vec[0].sfv_off = 0;
3830         vec[0].sfv_len = 0;
3832         vec[1].sfv_fd = 0;
3833         vec[1].sfv_flag = 0;
3834         vec[1].sfv_off = 0;
3835         vec[1].sfv_len = 0;
3836         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
3838 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
3840         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
3841                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
3842                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
3843                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
3844         else
3845                 AC_MSG_RESULT(no);
3846         fi
3847         ;;
3849         *)
3850         ;;
3851         esac
3852         ;;
3853   *)
3854     AC_MSG_RESULT(no)
3855     ;;
3856   esac ],
3857   AC_MSG_RESULT(yes)
3861 #################################################
3862 # Check whether winbind is supported on this platform.  If so we need to
3863 # build and install client programs, sbin programs and shared libraries
3865 AC_MSG_CHECKING(whether to build winbind)
3867 # Initially, the value of $host_os decides whether winbind is supported
3869 HAVE_WINBIND=yes
3871 # Define the winbind shared library name and any specific linker flags
3872 # it needs to be built with.
3874 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
3875 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
3876 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
3878 case "$host_os" in
3879         *linux*|*freebsd*)
3880                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
3881                 ;;
3882         *irix*)
3883                 # IRIX has differently named shared libraries
3884                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
3885                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
3886                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
3887                 ;;
3888         *solaris*)
3889                 # Solaris winbind client is implemented as a wrapper around
3890                 # the Linux version.
3891                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
3892                     nsswitch/winbind_nss_linux.o"
3893                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
3894                 ;;
3895         *hpux11*)
3896                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
3897                 ;;
3898         *aix*)
3899                 # AIX has even differently named shared libraries.  No
3900                 # WINS support has been implemented yet.
3901                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
3902                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
3903                 WINBIND_NSS="nsswitch/WINBIND"
3904                 WINBIND_WINS_NSS=""
3905                 ;;
3906         *)
3907                 HAVE_WINBIND=no
3908                 winbind_no_reason=", unsupported on $host_os"
3909                 ;;
3910 esac
3912 AC_SUBST(WINBIND_NSS)
3913 AC_SUBST(WINBIND_WINS_NSS)
3914 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
3915 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
3916 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
3918 # Check the setting of --with-winbindd
3920 AC_ARG_WITH(winbind,
3921 [  --with-winbind          Build winbind (default, if supported by OS)],
3923   case "$withval" in
3924         yes)
3925                 HAVE_WINBIND=yes
3926                 ;;
3927         no)
3928                 HAVE_WINBIND=no
3929                 winbind_reason=""
3930                 ;;
3931   esac ],
3934 # We need unix domain sockets for winbind
3936 if test x"$HAVE_WINBIND" = x"yes"; then
3937         if test x"$samba_cv_unixsocket" = x"no"; then
3938                 winbind_no_reason=", no unix domain socket support on $host_os"
3939                 HAVE_WINBIND=no
3940         fi
3943 # Display test results
3945 if test x"$HAVE_WINBIND" = x"yes"; then
3946         AC_MSG_RESULT(yes)
3947         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
3949         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
3950         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
3951         if test x"$BLDSHARED" = x"true"; then
3952                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
3954                 if test x"$with_pam" = x"yes"; then
3955                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.$SHLIBEXT"
3956                 fi
3957         fi
3958 else
3959         AC_MSG_RESULT(no$winbind_no_reason)
3962 # Solaris has some extra fields in struct passwd that need to be
3963 # initialised otherwise nscd crashes.  
3965 AC_CHECK_MEMBER(struct passwd.pw_comment,
3966                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
3967                 [#include <pwd.h>])
3969 AC_CHECK_MEMBER(struct passwd.pw_age,
3970                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
3971                 [#include <pwd.h>])
3973 #################################################
3974 # Check to see if we should use the included popt 
3976 AC_ARG_WITH(included-popt,
3977 [  --with-included-popt    use bundled popt library, not from system],
3979   case "$withval" in
3980         yes)
3981                 INCLUDED_POPT=yes
3982                 ;;
3983         no)
3984                 INCLUDED_POPT=no
3985                 ;;
3986   esac ],
3988 if test x"$INCLUDED_POPT" != x"yes"; then
3989     AC_CHECK_LIB(popt, poptGetContext,
3990                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
3993 AC_MSG_CHECKING(whether to use included popt)
3994 if test x"$INCLUDED_POPT" = x"yes"; then
3995     AC_MSG_RESULT(yes)
3996     BUILD_POPT='$(POPT_OBJS)'
3997         POPTLIBS='$(POPT_OBJS)'
3998     FLAGS1="-I$srcdir/popt"
3999 else
4000     AC_MSG_RESULT(no)
4001         BUILD_POPT=""
4002     POPTLIBS="-lpopt"
4004 AC_SUBST(BUILD_POPT)
4005 AC_SUBST(POPTLIBS)
4006 AC_SUBST(FLAGS1)
4008 #################################################
4009 # Check if the user wants Python
4011 # At the moment, you can use this to set which Python binary to link
4012 # against.  (Libraries built for Python2.2 can't be used by 2.1,
4013 # though they can coexist in different directories.)  In the future
4014 # this might make the Python stuff be built by default.
4016 # Defaulting python breaks the clean target if python isn't installed
4018 PYTHON=
4020 AC_ARG_WITH(python,
4021 [  --with-python=PYTHONNAME  build Python libraries],
4022 [ case "${withval-python}" in
4023   yes)
4024         PYTHON=python
4025         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
4026         ;;
4027   no)
4028         PYTHON=
4029         ;;
4030   *)
4031         PYTHON=${withval-python}
4032         ;;
4033   esac ])
4034 AC_SUBST(PYTHON)
4036 for i in `echo $default_static_modules | sed -e's/,/ /g'`
4038         eval MODULE_DEFAULT_$i=STATIC
4039 done
4041 for i in `echo $default_shared_modules | sed -e's/,/ /g'`
4043         dnl Fall back to static if dlopen() is not available
4044         eval MODULE_DEFAULT_$i=STATIC
4046         if test x"$ac_cv_func_dlopen" = xyes; then
4047                 eval MODULE_DEFAULT_$i=SHARED
4048         fi
4049 done
4051 dnl Always built these modules static
4052 MODULE_pdb_guest=STATIC
4053 MODULE_rpc_spoolss=STATIC
4054 MODULE_rpc_srv=STATIC
4055 MODULE_idmap_tdb=STATIC
4057 AC_ARG_WITH(static-modules,
4058 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
4059 [ if test $withval; then
4060         for i in `echo $withval | sed -e's/,/ /g'`
4061         do
4062                 eval MODULE_$i=STATIC
4063         done
4064 fi ])
4066 AC_ARG_WITH(shared-modules,
4067 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
4068 [ if test $withval; then
4069         for i in `echo $withval | sed -e's/,/ /g'`
4070         do
4071                         eval MODULE_$i=SHARED
4072         done
4073 fi ])
4075 ###########################################################################
4076 ## contributed pdb_modules
4078 SMB_MODULE(pdb_xml, passdb/pdb_xml.o, "bin/xml.$SHLIBEXT", PDB,
4079                   [ PASSDB_LIBS="$PASSDB_LIBS $XML_LIBS" ] )
4080 SMB_MODULE(pdb_mysql, passdb/pdb_mysql.o, "bin/mysql.$SHLIBEXT", PDB, 
4081                    [ PASSDB_LIBS="$PASSDB_LIBS $MYSQL_LIBS" ]   )
4083 ## end of contributed pdb_modules
4084 ###########################################################################
4086 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o, "bin/ldapsam.$SHLIBEXT", PDB, 
4087                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
4088 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
4089 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
4090 SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
4091 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.c)
4093 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
4094 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
4095 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
4096 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
4097 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
4098 SMB_MODULE(rpc_dfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
4099 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
4100 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
4101 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
4102 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
4103 SMB_SUBSYSTEM(RPC,smbd/server.c)
4105 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/idmap_ldap.$SHLIBEXT", IDMAP)
4106 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/idmap_tdb.$SHLIBEXT", IDMAP)
4107 SMB_SUBSYSTEM(IDMAP,sam/idmap.c)
4109 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
4110 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
4111 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
4112 SMB_SUBSYSTEM(CHARSET,lib/iconv.c)
4114 SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
4115 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
4116 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
4117 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
4118 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
4119 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
4120 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
4121 SMB_SUBSYSTEM(AUTH,auth/auth.c)
4123 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
4124 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
4125 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
4126 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
4127 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
4128 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
4129 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
4130 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
4131 SMB_SUBSYSTEM(VFS,smbd/vfs.c)
4133 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
4135 #################################################
4136 # do extra things if we are running insure
4138 if test "${ac_cv_prog_CC}" = "insure"; then
4139         CPPFLAGS="$CPPFLAGS -D__INSURE__"
4142 #################################################
4143 # Display summary of libraries detected
4145 AC_MSG_RESULT([Using libraries:])
4146 AC_MSG_RESULT([    LIBS = $LIBS])
4147 if test x"$with_ads_support" != x"no"; then
4148    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
4150 if test x"$with_ldap_support" != x"no"; then
4151    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
4153 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
4155 #################################################
4156 # final configure stuff
4158 AC_MSG_CHECKING([configure summary])
4159 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
4160            AC_MSG_RESULT(yes),
4161            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
4162            AC_MSG_WARN([cannot run when cross-compiling]))
4164 builddir=`pwd`
4165 AC_SUBST(builddir)
4167 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
4168 LIB_REMOVE_USR_LIB(LDFLAGS)
4169 LIB_REMOVE_USR_LIB(LIBS)
4171 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
4172 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
4173 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
4175 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh)
4177 #################################################
4178 # Print very concise instructions on building/use
4179 if test "x$enable_dmalloc" = xyes
4180 then
4181         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
4182         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])