Fallback to our defaults (CP850/ASCII/UTF8) if there is no native iconv on the platfo...
[Samba/gebeck_regimport.git] / source3 / configure.in
blobfc158a04c762772dd9be068038bd02d439ccc7b9
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(INSTALLCLIENTCMD_SH)
149 AC_SUBST(INSTALLCLIENTCMD_A)
150 AC_SUBST(LIBSMBCLIENT_SHARED)
151 AC_SUBST(LIBSMBCLIENT)
152 AC_SUBST(PRINTLIBS)
153 AC_SUBST(AUTHLIBS)
154 AC_SUBST(ACLLIBS)
155 AC_SUBST(PASSDBLIBS)
156 AC_SUBST(IDMAP_LIBS)
157 AC_SUBST(KRB5_LIBS)
158 AC_SUBST(LDAP_LIBS)
159 AC_SUBST(SHLIB_PROGS)
160 AC_SUBST(SMBWRAPPER)
161 AC_SUBST(EXTRA_BIN_PROGS)
162 AC_SUBST(EXTRA_SBIN_PROGS)
163 AC_SUBST(EXTRA_ALL_TARGETS)
165 AC_ARG_ENABLE(debug, 
166 [  --enable-debug          Turn on compiler debugging information (default=no)],
167     [if eval "test x$enable_debug = xyes"; then
168         CFLAGS="${CFLAGS} -g"
169     fi])
171 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
172     [if eval "test x$enable_developer = xyes"; then
173         developer=yes
174         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
175     fi])
177 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
178     [if eval "test x$enable_krb5developer = xyes"; then
179         developer=yes
180         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
181     fi])
183 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
185 if test "x$enable_dmalloc" = xyes
186 then
187         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
188         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
189                   [Define to check invariants around some common functions])
190         LIBS="$LIBS -ldmalloc"  
193 dnl Checks for programs.
194 AC_PROG_CC
195 AC_PROG_INSTALL
196 AC_PROG_AWK
197 AC_PATH_PROG(PERL, perl)
199 # compile with optimization and without debugging by default, but
200 # allow people to set their own preference.
201 if test "x$CFLAGS" = x
202 then
203   CFLAGS="-O ${CFLAGS}"
206 dnl Check if we use GNU ld
207 LD=ld
208 AC_PROG_LD_GNU
210 dnl needed before AC_TRY_COMPILE
211 AC_ISC_POSIX
213 dnl look for executable suffix
214 AC_EXEEXT
216 dnl Check if C compiler understands -c and -o at the same time
217 AC_PROG_CC_C_O
218 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
219       BROKEN_CC=
220 else
221       BROKEN_CC=#
223 AC_SUBST(BROKEN_CC)
225 dnl Check if the C compiler understands -Werror
226 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
227  AC_TRY_RUN_STRICT([
228   int main(void)
229   {
230         return 0;
231   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
232   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
233 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
234    Werror_FLAGS="-Werror"
235 else 
236 dnl Check if the C compiler understands -w2
237 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
238  AC_TRY_RUN_STRICT([
239   int main(void)
240   {
241         return 0;
242   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
243   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
244 if test x"$samba_cv_HAVE_w2" = x"yes"; then
245    Werror_FLAGS="-w2"
249 dnl Check if the C compiler understands volatile (it should, being ANSI).
250 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
251     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
252         samba_cv_volatile=yes,samba_cv_volatile=no)])
253 if test x"$samba_cv_volatile" = x"yes"; then
254    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
257 UNAME_S=`uname -s`
258 AC_MSG_CHECKING(uname -s)
259 AC_MSG_RESULT(${UNAME_S})
261 UNAME_R=`uname -r`
262 AC_MSG_CHECKING(uname -r)
263 AC_MSG_RESULT(${UNAME_R})
265 UNAME_M=`uname -m`
266 AC_MSG_CHECKING(uname -m)
267 AC_MSG_RESULT(${UNAME_M})
269 UNAME_P=`uname -p`
270 AC_MSG_CHECKING(uname -p)
271 AC_MSG_RESULT(${UNAME_P})
273 AC_CANONICAL_SYSTEM
275 dnl Add #include for broken IRIX header files
276   case "$host_os" in
277         *irix6*) AC_ADD_INCLUDE(<standards.h>)
278         ;;
279 esac
281 AC_VALIDATE_CACHE_SYSTEM_TYPE
283 DYNEXP=
285 dnl Add modules that have to be built by default here
286 dnl These have to be built static:
287 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"
289 dnl These are preferably build shared, and static if dlopen() is not available
290 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly"
292 if test "x$developer" = xyes; then
293    default_static_modules="$default_static_modules rpc_echo"
294    default_shared_modules="$default_shared_modules charset_weird"
298 # Config CPPFLAG settings for strange OS's that must be set
299 # before other tests.
301 case "$host_os" in
302 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
303     *hpux*)
304     
305       AC_PROG_CC_FLAG(Ae)
306       # mmap on HPUX is completely broken...
307       AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
308       if test $ac_cv_prog_cc_Ae = yes; then
309         CPPFLAGS="$CPPFLAGS -Ae"
310       fi
312 # Defines needed for HPUX support.
313 # HPUX has bigcrypt but (sometimes?) doesn't use it for
314 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
316       case `uname -r` in
317                         *9*|*10*)
318                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
319                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
320                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
321                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
322                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
323                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
324                                 ;;
325                         *11*)
326                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
327                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
328                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
329                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
330                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
331                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
332                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
333                                 ;;
334       esac
335       DYNEXP="-Wl,-E"
336       ;;
339 # CRAY Unicos has broken const handling
340        *unicos*)
341           AC_MSG_RESULT([disabling const])
342           CPPFLAGS="$CPPFLAGS -Dconst="
343           ;;
344         
346 # AIX4.x doesn't even admit to having large
347 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
349     *aix4*)
350           AC_MSG_RESULT([enabling large file support])
351       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
352           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
353       ;;    
355 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
356 # to the existance of large files..
357 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
358 # recommendations on large file support, however it makes the
359 # compile work using gcc 2.7 and 2.8, whereas using the Sun
360 # recommendation makes the compile fail on gcc2.7. JRA.
362         *solaris*)
363                 case `uname -r` in
364                         5.0*|5.1*|5.2*|5.3*|5.5*)
365                                 AC_MSG_RESULT([no large file support])
366                                 ;;
367                         5.*)
368                         AC_MSG_RESULT([enabling large file support])
369                         if test "$ac_cv_prog_gcc" = yes; then
370                                 ${CC-cc} -v >conftest.c 2>&1
371                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
372                                 rm -fr conftest.c
373                                 case "$ac_cv_gcc_compiler_version_number" in
374                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
375                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
376                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
377                                                 ;;
378                                         *)
379                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
380                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
381                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
382                                                 ;;
383                                 esac
384                         else
385                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
386                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
387                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
388                         fi
389                         ;;
390                 esac
391                 ;;
393 # VOS may need to have POSIX support and System V compatibility enabled.
395     *vos*)
396     case "$CPPFLAGS" in
397           *-D_POSIX_C_SOURCE*)
398                 ;;
399           *)
400                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=199506L"
401                 AC_DEFINE(_POSIX_C_SOURCE, 199506L, [Whether to enable POSIX support])
402                 ;;
403     esac
404     case "$CPPFLAGS" in
405           *-D_SYSV*|*-D_SVID_SOURCE*)
406                 ;;
407           *)
408                 CPPFLAGS="$CPPFLAGS -D_SYSV"
409                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
410     esac
411     ;;
413 # Tests needed for SINIX large file support.
415     *sysv4*)
416       if test $host = mips-sni-sysv4 ; then
417         AC_MSG_CHECKING([for LFS support])
418         old_CPPFLAGS="$CPPFLAGS"
419         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
420         AC_TRY_RUN([
421 #include <unistd.h>
422 main () {
423 #if _LFS64_LARGEFILE == 1
424 exit(0);
425 #else
426 exit(1);
427 #endif
428 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
429         CPPFLAGS="$old_CPPFLAGS"
430         if test x$SINIX_LFS_SUPPORT = xyes ; then
431           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
432                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
433           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
434           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
435           LIBS="`getconf LFS64_LIBS` $LIBS"
436         fi
437       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
438       fi
439     ;;
441 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
443     *linux*)
444         AC_MSG_CHECKING([for LFS support])
445         old_CPPFLAGS="$CPPFLAGS"
446         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
447        AC_TRY_RUN([
448 #include <unistd.h>
449 #include <sys/utsname.h>
450 main() {
451 #if _LFS64_LARGEFILE == 1
452        struct utsname uts;
453        char *release;
454        int major, minor;
456        /* Ensure this is glibc 2.2 or higher */
457 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
458        int libc_major = __GLIBC__;
459        int libc_minor = __GLIBC_MINOR__;
461        if (libc_major < 2)
462               exit(1);
463        if (libc_minor < 2)
464               exit(1);
465 #endif
467        /* Ensure this is kernel 2.4 or higher */
469        uname(&uts);
470        release = uts.release;
471        major = atoi(strsep(&release, "."));
472        minor = atoi(strsep(&release, "."));
474        if (major > 2 || (major == 2 && minor > 3))
475                exit(0);
476        exit(1);
477 #else
478        exit(1);
479 #endif
481 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
482         CPPFLAGS="$old_CPPFLAGS"
483         if test x$LINUX_LFS_SUPPORT = xyes ; then
484           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
485                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
486           AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
487           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
488         fi
489        AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
490                 ;;
492     *hurd*)
493         AC_MSG_CHECKING([for LFS support])
494         old_CPPFLAGS="$CPPFLAGS"
495         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
496         AC_TRY_RUN([
497 #include <unistd.h>
498 main () {
499 #if _LFS64_LARGEFILE == 1
500 exit(0);
501 #else
502 exit(1);
503 #endif
504 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
505         CPPFLAGS="$old_CPPFLAGS"
506         if test x$GLIBC_LFS_SUPPORT = xyes ; then
507           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
508                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
509           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
510         fi
511       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
512     ;;
514 esac
516 AC_INLINE
517 AC_HEADER_STDC
518 AC_HEADER_DIRENT
519 AC_HEADER_TIME
520 AC_HEADER_SYS_WAIT
521 AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
522 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h)
523 AC_CHECK_HEADERS(compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
524 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h)
525 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
526 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
527 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
528 AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h dlfcn.h)
529 AC_CHECK_HEADERS(sys/syslog.h syslog.h execinfo.h)
530 AC_CHECK_HEADERS(langinfo.h locale.h)
532 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
533 # subdirectory of headers.
534 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
537 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
538 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
540 case "$host_os" in
541     *hpux*)
542                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
543                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
544                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
545                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
546                 fi
547         ;;
548 esac
549 AC_CHECK_HEADERS(shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
550 AC_CHECK_HEADERS(nss.h nss_common.h ns_api.h sys/security.h security/pam_appl.h security/pam_modules.h)
551 AC_CHECK_HEADERS(stropts.h poll.h)
552 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
553 AC_CHECK_HEADERS(sys/acl.h sys/attributes.h attr/xattr.h sys/cdefs.h glob.h)
555 # For experimental utmp support (lastlog on some BSD-like systems)
556 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
558 AC_CHECK_SIZEOF(int,cross)
559 AC_CHECK_SIZEOF(long,cross)
560 AC_CHECK_SIZEOF(short,cross)
562 AC_C_CONST
563 AC_C_INLINE
564 AC_C_BIGENDIAN
565 AC_C_CHAR_UNSIGNED
567 AC_TYPE_SIGNAL
568 AC_TYPE_UID_T
569 AC_TYPE_MODE_T
570 AC_TYPE_OFF_T
571 AC_TYPE_SIZE_T
572 AC_TYPE_PID_T
573 AC_STRUCT_ST_RDEV
574 AC_DIRENT_D_OFF
575 AC_CHECK_TYPE(ino_t,unsigned)
576 AC_CHECK_TYPE(loff_t,off_t)
577 AC_CHECK_TYPE(offset_t,loff_t)
578 AC_CHECK_TYPE(ssize_t, int)
579 AC_CHECK_TYPE(wchar_t, unsigned short)
581 ############################################
582 # for cups support we need libcups, and a handful of header files
584 AC_ARG_ENABLE(cups,
585 [  --enable-cups           Turn on CUPS support (default=auto)])
587 if test x$enable_cups != xno; then
588         AC_PATH_PROG(CUPS_CONFIG, cups-config)
590         if test "x$CUPS_CONFIG" != x; then
591                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
592                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
593                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
594                 PRINTLIBS="$PRINTLIBS `$CUPS_CONFIG --libs`"
595         fi
598 ############################################
599 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
600 AC_SEARCH_LIBS(dlopen, [dl])
601 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
603 ############################################
604 # check if the compiler can do immediate structures
605 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
606     AC_TRY_COMPILE([
607 #include <stdio.h>],
609    typedef struct {unsigned x;} FOOBAR;
610    #define X_FOOBAR(x) ((FOOBAR) { x })
611    #define FOO_ONE X_FOOBAR(1)
612    FOOBAR f = FOO_ONE;   
613    static struct {
614         FOOBAR y; 
615         } f2[] = {
616                 {FOO_ONE}
617         };   
619         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
620 if test x"$samba_cv_immediate_structures" = x"yes"; then
621    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
624 ############################################
625 # check if the compiler can do immediate structures
626 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
627     AC_TRY_LINK([
628 #include <stdio.h>],
630                 if (0) {
631                    this_function_does_not_exist();
632                 } else {
633                   return 1;
634                 }
637         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
638 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
639    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
642 ############################################
643 # check for unix domain sockets
644 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
645     AC_TRY_COMPILE([
646 #include <sys/types.h>
647 #include <stdlib.h>
648 #include <stddef.h>
649 #include <sys/socket.h>
650 #include <sys/un.h>],
652   struct sockaddr_un sunaddr; 
653   sunaddr.sun_family = AF_UNIX;
655         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
656 if test x"$samba_cv_unixsocket" = x"yes"; then
657    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
661 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
662     AC_TRY_COMPILE([
663 #include <sys/types.h>
664 #if STDC_HEADERS
665 #include <stdlib.h>
666 #include <stddef.h>
667 #endif
668 #include <sys/socket.h>],[socklen_t i = 0],
669         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
670 if test x"$samba_cv_socklen_t" = x"yes"; then
671    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
674 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
675     AC_TRY_COMPILE([
676 #include <sys/types.h>
677 #if STDC_HEADERS
678 #include <stdlib.h>
679 #include <stddef.h>
680 #endif
681 #include <signal.h>],[sig_atomic_t i = 0],
682         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
683 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
684    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
687 # stupid headers have the functions but no declaration. grrrr.
688 AC_HAVE_DECL(errno, [#include <errno.h>])
689 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
690 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
691 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
692 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
693 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
694 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
696 # and glibc has setresuid under linux but the function does
697 # nothing until kernel 2.1.44! very dumb.
698 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
699     AC_TRY_RUN([#include <errno.h>
700 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
701         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
702 if test x"$samba_cv_have_setresuid" = x"yes"; then
703     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
706 # Do the same check for setresguid...
708 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
709     AC_TRY_RUN([#include <unistd.h>
710 #include <errno.h>
711 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
712         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
713 if test x"$samba_cv_have_setresgid" = x"yes"; then
714     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
717 AC_FUNC_MEMCMP
719 ###############################################
720 # Readline included by default unless explicitly asked not to
721 test "${with_readline+set}" != "set" && with_readline=yes
723 # test for where we get readline() from
724 AC_MSG_CHECKING(whether to use readline)
725 AC_ARG_WITH(readline,
726 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
727 [  case "$with_readline" in
728   yes)
729     AC_MSG_RESULT(yes)
731     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
732     AC_CHECK_HEADERS(readline/history.h)
734     AC_CHECK_HEADERS(readline.h readline/readline.h,[
735       for termlib in ncurses curses termcap terminfo termlib tinfo; do
736        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
737       done
738       AC_CHECK_LIB(readline, rl_callback_handler_install,
739        [TERMLIBS="-lreadline $TERMLIBS"
740        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
741        break], [TERMLIBS=], $TERMLIBS)])
742     ;;
743   no)
744     AC_MSG_RESULT(no)
745     ;;
746   *)
747     AC_MSG_RESULT(yes)
749     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
750     # alternate readline path
751     _ldflags=${LDFLAGS}
752     _cppflags=${CPPFLAGS}
754     # Add additional search path
755     LDFLAGS="-L$with_readline/lib $LDFLAGS"
756     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
758     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
759     AC_CHECK_HEADERS(readline/history.h)
761     AC_CHECK_HEADERS(readline.h readline/readline.h,[
762       for termlib in ncurses curses termcap terminfo termlib; do
763        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
764       done
765       AC_CHECK_LIB(readline, rl_callback_handler_install,
766        [TERMLDFLAGS="-L$with_readline/lib"
767        TERMCPPFLAGS="-I$with_readline/include"
768        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
769        TERMLIBS="-lreadline $TERMLIBS"
770        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
771        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
773     LDFLAGS=$_ldflags
774     ;;
775   esac],
776   AC_MSG_RESULT(no)
778 AC_SUBST(TERMLIBS)
779 AC_SUBST(TERMLDFLAGS)
781 # The readline API changed slightly from readline3 to readline4, so
782 # code will generate warnings on one of them unless we have a few
783 # special cases.
784 AC_CHECK_LIB(readline, rl_completion_matches,
785              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
786                         [Do we have rl_completion_matches?])],
787              [],
788              [$TERMLIBS])
790 # The following test taken from the cvs sources
791 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
792 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
793 # libsocket.so which has a bad implementation of gethostbyname (it
794 # only looks in /etc/hosts), so we only look for -lsocket if we need
795 # it.
796 AC_CHECK_FUNCS(connect)
797 if test x"$ac_cv_func_connect" = x"no"; then
798     case "$LIBS" in
799     *-lnsl*) ;;
800     *) AC_CHECK_LIB(nsl_s, printf) ;;
801     esac
802     case "$LIBS" in
803     *-lnsl*) ;;
804     *) AC_CHECK_LIB(nsl, printf) ;;
805     esac
806     case "$LIBS" in
807     *-lsocket*) ;;
808     *) AC_CHECK_LIB(socket, connect) ;;
809     esac
810     case "$LIBS" in
811     *-linet*) ;;
812     *) AC_CHECK_LIB(inet, connect) ;;
813     esac
814     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
815     dnl has been cached.
816     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
817        test x"$ac_cv_lib_inet_connect" = x"yes"; then
818         # ac_cv_func_connect=yes
819         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
820         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
821     fi
824 ###############################################
825 # test for where we get yp_get_default_domain() from
826 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
827 AC_CHECK_FUNCS(yp_get_default_domain)
829 # Check if we have execl, if not we need to compile smbrun.
830 AC_CHECK_FUNCS(execl)
831 if test x"$ac_cv_func_execl" = x"no"; then
832     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
835 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
836 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid)
837 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
838 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
839 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
840 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
841 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
842 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
843 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
844 AC_CHECK_FUNCS(syslog vsyslog timegm)
845 AC_CHECK_FUNCS(setlocale nl_langinfo)
846 # setbuffer, shmget, shm_open are needed for smbtorture
847 AC_CHECK_FUNCS(setbuffer shmget shm_open backtrace_symbols)
849 # syscall() is needed for smbwrapper.
850 AC_CHECK_FUNCS(syscall)
852 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
853 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
854 AC_CHECK_FUNCS(__getcwd _getcwd)
855 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
856 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
857 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
858 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
859 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
860 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
861 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
862 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
863 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
864 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
865 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
870 case "$host_os" in
871     *linux*)
872        # glibc <= 2.3.2 has a broken getgrouplist
873        AC_TRY_RUN([
874 #include <unistd.h>
875 #include <sys/utsname.h>
876 main() {
877        /* glibc up to 2.3 has a broken getgrouplist */
878 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
879        int libc_major = __GLIBC__;
880        int libc_minor = __GLIBC_MINOR__;
882        if (libc_major < 2)
883               exit(1);
884        if ((libc_major == 2) && (libc_minor <= 3))
885               exit(1);
886 #endif
887        exit(0);
889 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
890        if test x"$linux_getgrouplist_ok" = x"yes"; then
891           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
892        fi
893        ;;
894     *)
895        AC_CHECK_FUNCS(getgrouplist)
896        ;;
897 esac
900 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
903 if test x$ac_cv_func_stat64 = xno ; then
904   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
905   AC_TRY_LINK([
906 #if defined(HAVE_UNISTD_H)
907 #include <unistd.h>
908 #endif
909 #include <sys/stat.h>
910 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
911   AC_MSG_RESULT([$ac_cv_func_stat64])
912   if test x$ac_cv_func_stat64 = xyes ; then
913     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
914   fi
917 if test x$ac_cv_func_lstat64 = xno ; then
918   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
919   AC_TRY_LINK([
920 #if defined(HAVE_UNISTD_H)
921 #include <unistd.h>
922 #endif
923 #include <sys/stat.h>
924 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
925   AC_MSG_RESULT([$ac_cv_func_lstat64])
926   if test x$ac_cv_func_lstat64 = xyes ; then
927     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
928   fi
931 if test x$ac_cv_func_fstat64 = xno ; then
932   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
933   AC_TRY_LINK([
934 #if defined(HAVE_UNISTD_H)
935 #include <unistd.h>
936 #endif
937 #include <sys/stat.h>
938 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
939   AC_MSG_RESULT([$ac_cv_func_fstat64])
940   if test x$ac_cv_func_fstat64 = xyes ; then
941     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
942   fi
945 #####################################
946 # we might need the resolv library on some systems
947 AC_CHECK_LIB(resolv, dn_expand)
950 # Check for the functions putprpwnam, set_auth_parameters,
951 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
952 # Needed for OSF1 and HPUX.
955 AC_LIBTESTFUNC(security, putprpwnam)
956 AC_LIBTESTFUNC(sec, putprpwnam)
958 AC_LIBTESTFUNC(security, set_auth_parameters)
959 AC_LIBTESTFUNC(sec, set_auth_parameters)
961 # UnixWare 7.x has its getspnam in -lgen
962 AC_LIBTESTFUNC(gen, getspnam)
964 AC_LIBTESTFUNC(security, getspnam)
965 AC_LIBTESTFUNC(sec, getspnam)
967 AC_LIBTESTFUNC(security, bigcrypt)
968 AC_LIBTESTFUNC(sec, bigcrypt)
970 AC_LIBTESTFUNC(security, getprpwnam)
971 AC_LIBTESTFUNC(sec, getprpwnam)
973 ############################################
974 # Check if we have libattr
975 AC_SEARCH_LIBS(getxattr, [attr])
976 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
977 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
978 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
979 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
980 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
982 # Assume non-shared by default and override below
983 BLDSHARED="false"
985 # these are the defaults, good for lots of systems
986 HOST_OS="$host_os"
987 LDSHFLAGS="-shared"
988 SONAMEFLAG="#"
989 SHLD="\${CC} \${CFLAGS}"
990 PICFLAG=""
991 PICSUFFIX="po"
992 POBAD_CC="#"
993 SHLIBEXT="so"
995 if test "$enable_shared" = "yes"; then
996   # this bit needs to be modified for each OS that is suported by
997   # smbwrapper. You need to specify how to created a shared library and
998   # how to compile C code to produce PIC object files
1000   AC_MSG_CHECKING([ability to build shared libraries])
1002   # and these are for particular systems
1003   case "$host_os" in
1004                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1005                         BLDSHARED="true"
1006                         LDSHFLAGS="-shared" 
1007                         DYNEXP="-Wl,--export-dynamic"
1008                         PICFLAG="-fPIC"
1009                         SONAMEFLAG="-Wl,-soname="
1010                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1011                         ;;
1012                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1013                         BLDSHARED="true"
1014                         LDSHFLAGS="-G"
1015                         SONAMEFLAG="-h "
1016                         if test "${GCC}" = "yes"; then
1017                                 PICFLAG="-fPIC"
1018                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1019                                         DYNEXP="-Wl,-E"
1020                                 fi
1021                         else
1022                                 PICFLAG="-KPIC"
1023                                 ## ${CFLAGS} added for building 64-bit shared 
1024                                 ## libs using Sun's Compiler
1025                                 LDSHFLAGS="-G \${CFLAGS}"
1026                                 POBAD_CC=""
1027                                 PICSUFFIX="po.o"
1028                         fi
1029                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1030                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1031                         ;;
1032                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1033                         BLDSHARED="true"
1034                         LDSHFLAGS="-G"
1035                         SONAMEFLAG="-Wl,-h,"
1036                         PICFLAG="-KPIC"   # Is this correct for SunOS
1037                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1038                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1039                         ;;
1040                 *netbsd* | *freebsd*)  BLDSHARED="true"
1041                         LDSHFLAGS="-shared"
1042                         DYNEXP="-Wl,--export-dynamic"
1043                         SONAMEFLAG="-Wl,-soname,"
1044                         PICFLAG="-fPIC -DPIC"
1045                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1046                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1047                         ;;
1048                 *openbsd*)  BLDSHARED="true"
1049                         LDSHFLAGS="-shared"
1050                         DYNEXP="-Wl,-Bdynamic"
1051                         SONAMEFLAG="-Wl,-soname,"
1052                         PICFLAG="-fPIC"
1053                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1054                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1055                         ;;
1056                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1057                         case "$host_os" in
1058                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1059                         ;;
1060                         esac
1061                         BLDSHARED="true"
1062                         LDSHFLAGS="-set_version sgi1.0 -shared"
1063                         SONAMEFLAG="-soname "
1064                         SHLD="\${LD}"
1065                         if test "${GCC}" = "yes"; then
1066                                 PICFLAG="-fPIC"
1067                         else 
1068                                 PICFLAG="-KPIC"
1069                         fi
1070                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1071                         ;;
1072                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1073                         BLDSHARED="true"
1074                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry,-berok"
1075                         DYNEXP="-Wl,-brtl,-bexpall"
1076                         PICFLAG="-O2"
1077                         if test "${GCC}" != "yes"; then
1078                                 ## for funky AIX compiler using strncpy()
1079                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1080                         fi
1082                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1083                         ;;
1084                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1085                         SHLIBEXT="sl"
1086                         # Use special PIC flags for the native HP-UX compiler.
1087                         if test $ac_cv_prog_cc_Ae = yes; then
1088                                 BLDSHARED="true"
1089                                 SHLD="/usr/bin/ld"
1090                                 LDSHFLAGS="-B symbolic -b -z"
1091                                 SONAMEFLAG="+h "
1092                                 PICFLAG="+z"
1093                         fi
1094                         DYNEXP="-Wl,-E"
1095                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1096                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1097                         ;;
1098                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1099                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1100                         ;;
1101                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1102                         BLDSHARED="true"
1103                         LDSHFLAGS="-shared"
1104                         SONAMEFLAG="-Wl,-soname,"
1105                         PICFLAG="-fPIC"
1106                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1107                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1108                         ;;
1109                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1110                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1111                         ;;
1112                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1113                         BLDSHARED="true"
1114                         LDSHFLAGS="-shared"
1115                         SONAMEFLAG="-Wl,-soname,"
1116                         PICFLAG="-KPIC"
1117                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1118                         ;;
1119                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1120                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1121                         ;;
1122                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1123                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1124                         ;;
1125                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1126                         case "$host" in
1127                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1128                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1129                                         fi
1130                                         LDSHFLAGS="-G"
1131                                         DYNEXP="-Bexport"
1132                                 ;;
1133                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1134                         esac
1135                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1136                         ;;
1138                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1139                         if [ test "$GCC" != yes ]; then
1140                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1141                         fi
1142                         LDSHFLAGS="-G"
1143                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1144                         ;;
1145                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1146                         BLDSHARED="false"
1147                         LDSHFLAGS=""
1148                         ;;
1149                 *)
1150                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1151                         ;;
1152   esac
1153   AC_SUBST(DYNEXP)
1154   AC_MSG_RESULT($BLDSHARED)
1155   AC_MSG_CHECKING([linker flags for shared libraries])
1156   AC_MSG_RESULT([$LDSHFLAGS])
1157   AC_MSG_CHECKING([compiler flags for position-independent code])
1158   AC_MSG_RESULT([$PICFLAGS])
1161 #######################################################
1162 # test whether building a shared library actually works
1163 if test $BLDSHARED = true; then
1164 AC_CACHE_CHECK([whether building shared libraries actually works], 
1165                [ac_cv_shlib_works],[
1166    ac_cv_shlib_works=no
1167    # try building a trivial shared library
1168    if test "$PICSUFFIX" = "po"; then
1169      $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.po ${srcdir-.}/tests/shlib.c &&
1170        $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" shlib.po &&
1171        ac_cv_shlib_works=yes
1172    else
1173      $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c &&
1174        mv shlib.$PICSUFFIX shlib.po &&
1175        $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" shlib.po &&
1176        ac_cv_shlib_works=yes
1177    fi
1178    rm -f "shlib.$SHLIBEXT" shlib.po
1180 if test $ac_cv_shlib_works = no; then
1181    BLDSHARED=false
1185 ################
1187 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1188 AC_TRY_RUN([#include <stdio.h>
1189 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1190 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1191 if test x"$samba_cv_have_longlong" = x"yes"; then
1192     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1196 # Check if the compiler supports the LL prefix on long long integers.
1197 # AIX needs this.
1199 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1200     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1201         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1202 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1203    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1206   
1207 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1208 AC_TRY_RUN([#include <stdio.h>
1209 #include <sys/stat.h>
1210 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1211 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1212 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1213     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1216 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1217 AC_TRY_RUN([
1218 #if defined(HAVE_UNISTD_H)
1219 #include <unistd.h>
1220 #endif
1221 #include <stdio.h>
1222 #include <sys/stat.h>
1223 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1224 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1225 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1226     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1229 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1230 AC_TRY_RUN([#include <stdio.h>
1231 #include <sys/stat.h>
1232 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1233 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1234 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1235     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1238 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1239 AC_TRY_RUN([
1240 #if defined(HAVE_UNISTD_H)
1241 #include <unistd.h>
1242 #endif
1243 #include <stdio.h>
1244 #include <sys/stat.h>
1245 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1246 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1247 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1248     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1251 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_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; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1259 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1260 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1261     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1264 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1265 AC_TRY_COMPILE([
1266 #if defined(HAVE_UNISTD_H)
1267 #include <unistd.h>
1268 #endif
1269 #include <sys/types.h>
1270 #include <dirent.h>],
1271 [struct dirent64 de;],
1272 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1273 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1274     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1277 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1278 AC_TRY_RUN([
1279 #if defined(HAVE_UNISTD_H)
1280 #include <unistd.h>
1281 #endif
1282 #include <sys/types.h>
1283 main() { dev_t dev; int i = major(dev); return 0; }],
1284 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1285 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1286     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1289 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1290 AC_TRY_RUN([
1291 #if defined(HAVE_UNISTD_H)
1292 #include <unistd.h>
1293 #endif
1294 #include <sys/types.h>
1295 main() { dev_t dev; int i = minor(dev); return 0; }],
1296 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1297 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1298     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1301 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1302 AC_TRY_RUN([#include <stdio.h>
1303 main() { char c; c=250; exit((c > 0)?0:1); }],
1304 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1305 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1306     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1309 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1310 AC_TRY_COMPILE([#include <sys/types.h>
1311 #include <sys/socket.h>
1312 #include <netinet/in.h>],
1313 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1314 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1315 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1316     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
1319 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1320 AC_TRY_COMPILE([#include <sys/types.h>
1321 #include <dirent.h>
1322 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1323 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1324 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1325     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1328 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1329 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1330 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1331 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1332     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1335 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1336 AC_TRY_RUN([
1337 #include <sys/time.h>
1338 #include <unistd.h>
1339 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1340            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1341 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1342     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
1345 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE_VA_COPY,[
1346 AC_TRY_LINK([#include <stdarg.h>
1347 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1348 samba_cv_HAVE_VA_COPY=yes,samba_cv_HAVE_VA_COPY=no)])
1349 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1350     AC_DEFINE(HAVE_VA_COPY,1,[Whether __va_copy() is available])
1353 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1354 AC_TRY_RUN([
1355 #include <sys/types.h>
1356 #include <stdarg.h>
1357 void foo(const char *format, ...) { 
1358        va_list ap;
1359        int len;
1360        char buf[5];
1362        va_start(ap, format);
1363        len = vsnprintf(buf, 0, format, ap);
1364        va_end(ap);
1365        if (len != 5) exit(1);
1367        va_start(ap, format);
1368        len = vsnprintf(0, 0, format, ap);
1369        va_end(ap);
1370        if (len != 5) exit(1);
1372        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1374        exit(0);
1376 main() { foo("hello"); }
1378 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1379 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1380     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
1383 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1384 AC_TRY_RUN([#include <sys/types.h>
1385 #include <dirent.h>
1386 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1387 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1388 di->d_name[0] == 0) exit(0); exit(1);} ],
1389 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1390 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1391     AC_DEFINE(HAVE_BROKEN_READDIR,1,[Whether readdir() is broken])
1394 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1395 AC_TRY_COMPILE([#include <sys/types.h>
1396 #include <utime.h>],
1397 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1398 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1399 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1400     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
1403 ##############
1404 # Check utmp details, but only if our OS offers utmp.h
1405 if test x"$ac_cv_header_utmp_h" = x"yes"; then
1406 dnl  utmp and utmpx come in many flavours
1407 dnl  We need to check for many of them
1408 dnl  But we don't need to do each and every one, because our code uses
1409 dnl  mostly just the utmp (not utmpx) fields.
1411 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1413 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1414 AC_TRY_COMPILE([#include <sys/types.h>
1415 #include <utmp.h>],
1416 [struct utmp ut;  ut.ut_name[0] = 'a';],
1417 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1418 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1419     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
1420 fi 
1422 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1423 AC_TRY_COMPILE([#include <sys/types.h>
1424 #include <utmp.h>],
1425 [struct utmp ut;  ut.ut_user[0] = 'a';],
1426 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1427 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1428     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
1429 fi 
1431 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1432 AC_TRY_COMPILE([#include <sys/types.h>
1433 #include <utmp.h>],
1434 [struct utmp ut;  ut.ut_id[0] = 'a';],
1435 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1436 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1437     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
1438 fi 
1440 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1441 AC_TRY_COMPILE([#include <sys/types.h>
1442 #include <utmp.h>],
1443 [struct utmp ut;  ut.ut_host[0] = 'a';],
1444 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1445 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1446     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
1447 fi 
1449 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1450 AC_TRY_COMPILE([#include <sys/types.h>
1451 #include <utmp.h>],
1452 [struct utmp ut;  time_t t; ut.ut_time = t;],
1453 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1454 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1455     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
1456 fi 
1458 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1459 AC_TRY_COMPILE([#include <sys/types.h>
1460 #include <utmp.h>],
1461 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1462 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1463 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1464     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
1465 fi 
1467 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1468 AC_TRY_COMPILE([#include <sys/types.h>
1469 #include <utmp.h>],
1470 [struct utmp ut;  ut.ut_type = 0;],
1471 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1472 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1473     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
1474 fi 
1476 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1477 AC_TRY_COMPILE([#include <sys/types.h>
1478 #include <utmp.h>],
1479 [struct utmp ut;  ut.ut_pid = 0;],
1480 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1481 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1482     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
1483 fi 
1485 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1486 AC_TRY_COMPILE([#include <sys/types.h>
1487 #include <utmp.h>],
1488 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1489 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1490 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1491     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
1492 fi 
1494 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1495 AC_TRY_COMPILE([#include <sys/types.h>
1496 #include <utmp.h>],
1497 [struct utmp ut;  ut.ut_addr = 0;],
1498 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1499 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1500     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
1501 fi 
1503 if test x$ac_cv_func_pututline = xyes ; then
1504   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1505   AC_TRY_COMPILE([#include <sys/types.h>
1506 #include <utmp.h>],
1507   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1508   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1509   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1510       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
1511   fi
1514 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1515 AC_TRY_COMPILE([#include <sys/types.h>
1516 #include <utmpx.h>],
1517 [struct utmpx ux;  ux.ut_syslen = 0;],
1518 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1519 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1520     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
1521 fi 
1524 # end utmp details
1527 ICONV_LOCATION=standard
1528 LOOK_DIRS="/usr /usr/local /sw"
1529 AC_ARG_WITH(libiconv,
1530 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
1532   if test "$withval" = "no" ; then
1533     AC_MSG_ERROR(I won't take no for an answer)
1534   else
1535      if test "$withval" != "yes" ; then
1536         ICONV_PATH_SPEC=yes
1537         LOOK_DIRS="$withval"
1538      fi
1539   fi
1542 ICONV_FOUND="no"
1543 for i in $LOOK_DIRS ; do
1544     save_LIBS=$LIBS
1545     save_LDFLAGS=$LDFLAGS
1546     save_CPPFLAGS=$CPPFLAGS
1547     CPPFLAGS="$CPPFLAGS -I$i/include"
1548 dnl This is here to handle -withval stuff for --with-libiconv
1549     if test x"$ICONV_PATH_SPEC" = "xyes" ; then
1550        LDFLAGS="-L$i/lib"
1551     fi
1552     LIBS=
1553     export LDFLAGS LIBS CPPFLAGS
1554 dnl Try to find iconv(3)
1555     jm_ICONV($i)
1557     if test "$ICONV_FOUND" = yes; then
1558         LIB_ADD_DIR(LDFLAGS, "$i/lib")
1559         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
1560         LIBS="$save_LIBS $LIBS"
1561         ICONV_LOCATION=$i
1562         export LDFLAGS LIBS CPPFLAGS
1563 dnl Now, check for a working iconv ... we want to do it here because
1564 dnl there might be a working iconv further down the list of LOOK_DIRS
1566         ############
1567         # check for iconv in libc
1568         ic_save_LIBS="$LIBS"
1569         if test x"$ICONV_PATH_SPEC" = "xyes" ; then
1570            LIBS="$LIBS -L$ICONV_LOCATION/lib"
1571         fi
1572 dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
1573         default_dos_charset=no
1574         default_display_charset=no
1575         default_unix_charset=no
1576         echo
1578         # check for default dos charset name
1579         for j in CP850 IBM850 ; do
1580             rjs_CHARSET($j)
1581             if test x"$ICONV_CHARSET" = x"$j"; then
1582                 default_dos_charset="\"$j\""
1583                 break
1584             fi
1585         done
1586         # check for default display charset name
1587         for j in ASCII 646 ; do
1588             rjs_CHARSET($j)
1589             if test x"$ICONV_CHARSET" = x"$j"; then
1590                 default_display_charset="\"$j\""
1591                 break
1592             fi
1593         done
1594         # check for default unix charset name
1595         for j in UTF-8 UTF8 ; do
1596             rjs_CHARSET($j)
1597             if test x"$ICONV_CHARSET" = x"$j"; then
1598                 default_unix_charset="\"$j\""
1599                 break
1600             fi
1601         done
1602         
1603         if test "$default_dos_charset" != "no" -a \
1604                 "$default_dos_charset" != "cross" -a \
1605                 "$default_display_charset" != "no" -a \ 
1606                 "$default_display_charset" != "cross" -a \
1607                 "$default_unix_charset" != "no" -a \
1608                 "$default_unix_charset" != "cross"
1609         then
1610                 samba_cv_HAVE_NATIVE_ICONV=yes
1611         else if test "$default_dos_charset" = "cross" -o \
1612                      "$default_display_charset" = "cross" -o \
1613                      "$default_unix_charset" = "cross"
1614         then
1615                 samba_cv_HAVE_NATIVE_ICONV=cross
1616         else
1617                 samba_cv_HAVE_NATIVE_ICONV=no
1618         fi
1619         fi
1620 dnl ])
1622         LIBS="$ic_save_LIBS"
1623         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
1624                 CPPFLAGS=$save_CPPFLAGS
1625                 CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
1626                 export CPPFLAGS
1627            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
1628            AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
1629            AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
1630            AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
1631            break
1632         fi
1633 dnl We didn't find a working iconv, so keep going
1634     fi
1635 dnl We only need to clean these up here for the next pass through the loop
1636     CPPFLAGS=$save_CPPFLAGS
1637     LDFLAGS=$save_LDFLAGS
1638     LIBS=$save_LIBS
1639     export LDFLAGS LIBS CPPFLAGS
1640 done
1643 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
1644     AC_MSG_WARN([Sufficient support for iconv function was not found. 
1645     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
1646    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"CP850",[Default dos charset name])
1647    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
1648    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
1652 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1653 AC_TRY_RUN([
1654 #include <sys/types.h>
1655 #include <fcntl.h>
1656 #ifndef F_GETLEASE
1657 #define F_GETLEASE      1025
1658 #endif
1659 main() {
1660        int fd = open("/dev/null", O_RDONLY);
1661        return fcntl(fd, F_GETLEASE, 0) == -1;
1664 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1665 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1666     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
1669 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1670 AC_TRY_RUN([
1671 #include <sys/types.h>
1672 #include <fcntl.h>
1673 #include <signal.h>
1674 #ifndef F_NOTIFY
1675 #define F_NOTIFY 1026
1676 #endif
1677 main() {
1678         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1681 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1682 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
1683     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
1686 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1687 AC_TRY_RUN([
1688 #include <sys/types.h>
1689 #include <fcntl.h>
1690 #include <signal.h>
1691 #include <sys/file.h>
1692 #ifndef LOCK_MAND
1693 #define LOCK_MAND       32
1694 #define LOCK_READ       64
1695 #endif
1696 main() {
1697         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1700 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1701 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1702     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
1708 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1709 AC_TRY_COMPILE([#include <sys/types.h>
1710 #include <fcntl.h>],
1711 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1712 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1713 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1714     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
1717 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1718 AC_TRY_RUN([#include <sys/types.h>
1719 #include <sys/capability.h>
1720 main() {
1721  cap_t cap;
1722  if ((cap = cap_get_proc()) == NULL)
1723    exit(1);
1724  cap->cap_effective |= CAP_NETWORK_MGT;
1725  cap->cap_inheritable |= CAP_NETWORK_MGT;
1726  cap_set_proc(cap);
1727  exit(0);
1730 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1731 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1732     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
1736 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1737 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1740 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1741 AC_TRY_COMPILE([#include <sys/types.h>
1742 #if defined(HAVE_RPC_RPC_H)
1743 #include <rpc/rpc.h>
1744 #endif],
1745 [int16 testvar;],
1746 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1747 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1748     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
1751 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1752 AC_TRY_COMPILE([#include <sys/types.h>
1753 #if defined(HAVE_RPC_RPC_H)
1754 #include <rpc/rpc.h>
1755 #endif],
1756 [uint16 testvar;],
1757 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1758 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1759     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
1762 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1763 AC_TRY_COMPILE([#include <sys/types.h>
1764 #if defined(HAVE_RPC_RPC_H)
1765 #include <rpc/rpc.h>
1766 #endif],
1767 [int32 testvar;],
1768 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1769 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1770     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
1773 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1774 AC_TRY_COMPILE([#include <sys/types.h>
1775 #if defined(HAVE_RPC_RPC_H)
1776 #include <rpc/rpc.h>
1777 #endif],
1778 [uint32 testvar;],
1779 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1780 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1781     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
1785 dnl Some systems (SCO) have a problem including
1786 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1787 dnl as a #define in <prot.h> and as part of an enum
1788 dnl in <rpc/rpc.h>.
1791 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1792 AC_TRY_COMPILE([#include <sys/types.h>
1793 #ifdef HAVE_SYS_SECURITY_H
1794 #include <sys/security.h>
1795 #include <prot.h>
1796 #endif  /* HAVE_SYS_SECURITY_H */
1797 #if defined(HAVE_RPC_RPC_H)
1798 #include <rpc/rpc.h>
1799 #endif],
1800 [int testvar;],
1801 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1802 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1803     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
1806 AC_MSG_CHECKING([for test routines])
1807 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1808            AC_MSG_RESULT(yes),
1809            AC_MSG_ERROR([cant find test code. Aborting config]),
1810            AC_MSG_WARN([cannot run when cross-compiling]))
1812 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1813 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1814            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1815 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1816     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
1819 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
1820 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
1821            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
1822            samba_cv_HAVE_WORKING_AF_LOCAL=no,
1823            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
1824 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
1825 then
1826     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
1829 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1830 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1831            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1832 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1833     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
1836 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1837 SAVE_CPPFLAGS="$CPPFLAGS"
1838 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper"
1839 AC_TRY_COMPILE([
1840 #define REPLACE_GETPASS 1
1841 #define NO_PROTO_H 1
1842 #define NO_CONFIG_H 1
1843 #define main dont_declare_main
1844 #include "${srcdir-.}/lib/getsmbpass.c"
1845 #undef main
1846 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1847 CPPFLAGS="$SAVE_CPPFLAGS"
1849 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
1850         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
1853 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
1854 AC_TRY_RUN([
1855 #include <stdio.h>
1856 #include <sys/types.h>
1857 #include <netinet/in.h>
1858 #ifdef HAVE_ARPA_INET_H
1859 #include <arpa/inet.h>
1860 #endif
1861 main() { struct in_addr ip; ip.s_addr = 0x12345678;
1862 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
1863     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
1864 exit(1);}],
1865            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
1866 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
1867     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
1870 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
1871 AC_TRY_RUN([#include <stdlib.h>
1872 #include <sys/types.h>
1873 #include <sys/stat.h>
1874 #include <unistd.h>
1875 main() { 
1876   struct stat st;
1877   char tpl[20]="/tmp/test.XXXXXX"; 
1878   int fd = mkstemp(tpl); 
1879   if (fd == -1) exit(1);
1880   unlink(tpl);
1881   if (fstat(fd, &st) != 0) exit(1);
1882   if ((st.st_mode & 0777) != 0600) exit(1);
1883   exit(0);
1885 samba_cv_HAVE_SECURE_MKSTEMP=yes,
1886 samba_cv_HAVE_SECURE_MKSTEMP=no,
1887 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
1888 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
1889     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
1892 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
1893 AC_TRY_RUN([#include <unistd.h>
1894 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
1895 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
1896 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
1897     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
1900 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
1901 AC_TRY_RUN([main() { exit(getuid() != 0); }],
1902            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
1903 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
1904     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
1905 else
1906     AC_MSG_WARN(running as non-root will disable some tests)
1909 ##################
1910 # look for a method of finding the list of network interfaces
1911 iface=no;
1912 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
1913 AC_TRY_RUN([
1914 #define HAVE_IFACE_AIX 1
1915 #define AUTOCONF_TEST 1
1916 #include "confdefs.h"
1917 #include "${srcdir-.}/lib/interfaces.c"],
1918            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
1919 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
1920     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
1923 if test $iface = no; then
1924 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
1925 AC_TRY_RUN([
1926 #define HAVE_IFACE_IFCONF 1
1927 #define AUTOCONF_TEST 1
1928 #include "confdefs.h"
1929 #include "${srcdir-.}/lib/interfaces.c"],
1930            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
1931 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
1932     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
1936 if test $iface = no; then
1937 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
1938 AC_TRY_RUN([
1939 #define HAVE_IFACE_IFREQ 1
1940 #define AUTOCONF_TEST 1
1941 #include "confdefs.h"
1942 #include "${srcdir-.}/lib/interfaces.c"],
1943            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
1944 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
1945     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
1950 ################################################
1951 # look for a method of setting the effective uid
1952 seteuid=no;
1953 if test $seteuid = no; then
1954 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
1955 AC_TRY_RUN([
1956 #define AUTOCONF_TEST 1
1957 #define USE_SETRESUID 1
1958 #include "confdefs.h"
1959 #include "${srcdir-.}/lib/util_sec.c"],
1960            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
1961 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
1962     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
1967 if test $seteuid = no; then
1968 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
1969 AC_TRY_RUN([
1970 #define AUTOCONF_TEST 1
1971 #define USE_SETREUID 1
1972 #include "confdefs.h"
1973 #include "${srcdir-.}/lib/util_sec.c"],
1974            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
1975 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
1976     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
1980 if test $seteuid = no; then
1981 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
1982 AC_TRY_RUN([
1983 #define AUTOCONF_TEST 1
1984 #define USE_SETEUID 1
1985 #include "confdefs.h"
1986 #include "${srcdir-.}/lib/util_sec.c"],
1987            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
1988 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
1989     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
1993 if test $seteuid = no; then
1994 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
1995 AC_TRY_RUN([
1996 #define AUTOCONF_TEST 1
1997 #define USE_SETUIDX 1
1998 #include "confdefs.h"
1999 #include "${srcdir-.}/lib/util_sec.c"],
2000            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2001 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2002     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2007 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2008 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2009            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2010 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2011     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2014 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
2015 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
2016            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
2017 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
2018     AC_DEFINE(FTRUNCATE_NEEDS_ROOT,1,[Whether ftruncate() needs root])
2021 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2022 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2023            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2024 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2025     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2028 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2029 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2030            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2031 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2032     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2034 else
2037 dnl Don't check for 64 bit fcntl locking if we know that the
2038 dnl glibc2.1 broken check has succeeded.
2039 dnl 
2041   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2042   AC_TRY_RUN([
2043 #if defined(HAVE_UNISTD_H)
2044 #include <unistd.h>
2045 #endif
2046 #include <stdio.h>
2047 #include <stdlib.h>
2049 #ifdef HAVE_FCNTL_H
2050 #include <fcntl.h>
2051 #endif
2053 #ifdef HAVE_SYS_FCNTL_H
2054 #include <sys/fcntl.h>
2055 #endif
2056 main() { struct flock64 fl64;
2057 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2058 exit(0);
2059 #else
2060 exit(1);
2061 #endif
2063        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2065   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2066       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2067   fi
2070 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2071 AC_TRY_COMPILE([#include <sys/types.h>
2072 #include <sys/stat.h>
2073 #include <unistd.h>],
2074 [struct stat st;  st.st_blocks = 0;],
2075 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2076 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2077     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2078 fi 
2080 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2081 AC_TRY_COMPILE([#include <sys/types.h>
2082 #include <sys/stat.h>
2083 #include <unistd.h>],
2084 [struct stat st;  st.st_blksize = 0;],
2085 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2086 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2087     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2090 case "$host_os" in
2091 *linux*)
2092 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
2093 AC_TRY_COMPILE([
2094 #ifdef HAVE_SYS_VFS_H
2095 #include <sys/vfs.h>
2096 #endif
2097 #ifdef HAVE_SYS_CAPABILITY_H
2098 #include <sys/capability.h>
2099 #endif
2100 ],[int i;],
2101    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
2102 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
2103    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
2106 esac
2108 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2109 AC_TRY_COMPILE([#include <sys/acl.h>
2110 #if defined(HAVE_RPCSVC_NIS_H)
2111 #include <rpcsvc/nis.h>
2112 #endif],
2113 [int i;],
2114 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2115 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2116         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2120 #################################################
2121 # check for smbwrapper support
2122 AC_MSG_CHECKING(whether to use smbwrapper)
2123 AC_ARG_WITH(smbwrapper,
2124 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
2125 [ case "$withval" in
2126   yes)
2127     AC_MSG_RESULT(yes)
2128     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
2129         WRAPPROG="bin/smbsh\$(EXEEXT)"
2130         WRAP="bin/smbwrapper.$SHLIBEXT"
2132 # Conditions under which smbwrapper should not be built.
2134         if test x$PICFLAG = x; then
2135            echo No support for PIC code - disabling smbwrapper and smbsh
2136            WRAPPROG=""
2137            WRAP=""
2138         elif test x$ac_cv_func_syscall = xno; then
2139            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
2140            WRAPPROG=""
2141            WRAP=""
2142         fi
2143         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP"
2144         SMBWRAPPER="$WRAPPROG $WRAP"
2145     ;;
2146   *)
2147     AC_MSG_RESULT(no)
2148     ;;
2149   esac ],
2150   AC_MSG_RESULT(no)
2153 #################################################
2154 # check for AFS clear-text auth support
2155 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2156 AC_ARG_WITH(afs,
2157 [  --with-afs              Include AFS clear-text auth support (default=no) ],
2158 [ case "$withval" in
2159   yes)
2160     AC_MSG_RESULT(yes)
2161     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2162     ;;
2163   *)
2164     AC_MSG_RESULT(no)
2165     ;;
2166   esac ],
2167   AC_MSG_RESULT(no)
2171 #################################################
2172 # check for the DFS clear-text auth system
2173 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2174 AC_ARG_WITH(dfs,
2175 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
2176 [ case "$withval" in
2177   yes)
2178     AC_MSG_RESULT(yes)
2179     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2180     ;;
2181   *)
2182     AC_MSG_RESULT(no)
2183     ;;
2184   esac ],
2185   AC_MSG_RESULT(no)
2188 ########################################################
2189 # Compile with LDAP support?
2191 with_ldap_support=auto
2192 AC_MSG_CHECKING([for LDAP support])
2194 AC_ARG_WITH(ldap,
2195 [  --with-ldap             LDAP support (default yes)],
2196 [ case "$withval" in
2197     yes|no)
2198         with_ldap_support=$withval
2199         ;;
2200   esac ])
2202 AC_MSG_RESULT($with_ldap_support)
2204 SMBLDAP=""
2205 AC_SUBST(SMBLDAP)
2206 if test x"$with_ldap_support" != x"no"; then
2208   ##################################################################
2209   # first test for ldap.h and lber.h
2210   # (ldap.h is required for this test)
2211   AC_CHECK_HEADERS(ldap.h lber.h)
2212   
2213   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2214         if test x"$with_ldap_support" = x"yes"; then
2215          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2216         else
2217          AC_MSG_WARN(ldap.h is needed for LDAP support)
2218         fi
2219         
2220         with_ldap_support=no
2221   fi
2224 if test x"$with_ldap_support" != x"no"; then
2225   ac_save_LIBS=$LIBS
2227   ##################################################################
2228   # we might need the lber lib on some systems. To avoid link errors
2229   # this test must be before the libldap test
2230   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
2232   ########################################################
2233   # now see if we can find the ldap libs in standard paths
2234   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
2236   AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS)
2237   
2238   ########################################################
2239   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2240   # Check found in pam_ldap 145.
2241   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
2243   LIBS="$LIBS $LDAP_LIBS"
2244   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
2245     AC_TRY_COMPILE([
2246         #include <lber.h>
2247         #include <ldap.h>], 
2248         [ldap_set_rebind_proc(0, 0, 0);], 
2249         [smb_ldap_cv_ldap_set_rebind_proc=3], 
2250         [smb_ldap_cv_ldap_set_rebind_proc=2]
2251     ) 
2252   ])
2253   
2254   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
2256   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS) 
2257   
2258   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes" -a x"$ac_cv_func_ext_ldap_domain2hostlist" = x"yes"; then
2259     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
2260     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
2261     SMBLDAP="lib/smbldap.o"
2262     with_ldap_support=yes
2263     AC_MSG_CHECKING(whether LDAP support is used)
2264     AC_MSG_RESULT(yes)
2265   else
2266     if test x"$with_ldap_support" = x"yes"; then
2267         AC_MSG_ERROR(libldap is needed for LDAP support)
2268     else
2269         AC_MSG_WARN(libldap is needed for LDAP support)
2270     fi
2271     
2272     LDAP_LIBS=""
2273     with_ldap_support=no
2274   fi
2275   LIBS=$ac_save_LIBS
2279 #################################################
2280 # active directory support
2282 with_ads_support=auto
2283 AC_MSG_CHECKING([for Active Directory and krb5 support])
2285 AC_ARG_WITH(ads,
2286 [  --with-ads              Active Directory support (default auto)],
2287 [ case "$withval" in
2288     yes|no)
2289         with_ads_support="$withval"
2290         ;;
2291   esac ])
2293 AC_MSG_RESULT($with_ads_support)
2295 FOUND_KRB5=no
2296 KRB5_LIBS=""
2298 if test x"$with_ldap_support" != x"yes"; then
2299     if test x"$with_ads_support" = x"yes"; then
2300         AC_MSG_ERROR(Active Directory Support requires LDAP support)
2301     elif test x"$with_ads_support" != x"no"; then
2302         AC_MSG_WARN(Active Directory Support requires LDAP support)
2303     fi
2304     with_ads_support=no
2307 if test x"$with_ads_support" != x"no"; then
2309   # Do no harm to the values of CFLAGS and LIBS while testing for
2310   # Kerberos support.
2312   #################################################
2313   # check for krb5-config from recent MIT and Heimdal kerberos 5
2314   AC_PATH_PROG(KRB5_CONFIG, krb5-config)
2315   AC_MSG_CHECKING(for working krb5-config)
2316   if test -x "$KRB5_CONFIG"; then
2317     ac_save_CFLAGS=$CFLAGS
2318     CFLAGS="";export CFLAGS
2319     ac_save_LDFLAGS=$LDFLAGS
2320     LDFLAGS="";export LDFLAGS
2321     KRB5_LIBS="`$KRB5_CONFIG --libs gssapi`"
2322     KRB5_CFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`" 
2323     KRB5_CPPFLAGS="`$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`"
2324     CFLAGS=$ac_save_CFLAGS;export CFLAGS
2325     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
2326     FOUND_KRB5=yes
2327     AC_MSG_RESULT(yes)
2328   else
2329     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
2330   fi
2331   
2332   if test x$FOUND_KRB5 = x"no"; then
2333     #################################################
2334     # check for location of Kerberos 5 install
2335     AC_MSG_CHECKING(for kerberos 5 install path)
2336     AC_ARG_WITH(krb5,
2337     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
2338     [ case "$withval" in
2339       no)
2340         AC_MSG_RESULT(no krb5-path given)
2341         ;;
2342       yes)
2343         AC_MSG_RESULT(/usr)
2344         FOUND_KRB5=yes
2345         ;;
2346       *)
2347         AC_MSG_RESULT($withval)
2348         KRB5_CFLAGS="-I$withval/include"
2349         KRB5_CPPFLAGS="-I$withval/include"
2350         KRB5_LDFLAGS="-L$withval/lib"
2351         FOUND_KRB5=yes
2352         ;;
2353       esac ],
2354       AC_MSG_RESULT(no krb5-path given)
2355     )
2356   fi
2358   if test x$FOUND_KRB5 = x"no"; then
2359     #################################################
2360     # see if this box has the SuSE location for the heimdal krb implementation
2361     AC_MSG_CHECKING(for /usr/include/heimdal)
2362     if test -d /usr/include/heimdal; then
2363       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
2364           KRB5_CFLAGS="-I/usr/include/heimdal"
2365           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2366           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
2367           AC_MSG_RESULT(yes)
2368       else
2369           KRB5_CFLAGS="-I/usr/include/heimdal"
2370           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2371           AC_MSG_RESULT(yes)
2372       fi
2373     else
2374       AC_MSG_RESULT(no)
2375     fi
2376   fi
2378   if test x$FOUND_KRB5 = x"no"; then
2379     #################################################
2380     # see if this box has the RedHat location for kerberos
2381     AC_MSG_CHECKING(for /usr/kerberos)
2382     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
2383       KRB5_LDFLAGS="-L/usr/kerberos/lib"
2384       KRB5_CFLAGS="-I/usr/kerberos/include"
2385       KRB5_CPPFLAGS="-I/usr/kerberos/include"
2386       AC_MSG_RESULT(yes)
2387     else
2388       AC_MSG_RESULT(no)
2389     fi
2390   fi
2392   ac_save_CFLAGS=$CFLAGS
2393   ac_save_CPPFLAGS=$CPPFLAGS
2394   ac_save_LDFLAGS=$LDFLAGS
2396   CFLAGS="$CFLAGS $KRB5_CFLAGS"
2397   CPPFLAGS="$CPPFLAGS $KRB5_CPPFLAGS"
2398   LDFLAGS="$LDFLAGS $KRB5_LDFLAGS"
2400   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
2402   # now check for krb5.h. Some systems have the libraries without the headers!
2403   # note that this check is done here to allow for different kerberos
2404   # include paths
2405   AC_CHECK_HEADERS(krb5.h)
2407   if test x"$ac_cv_header_krb5_h" = x"no"; then
2409     # Give a warning if AD support was not explicitly requested,
2410     # i.e with_ads_support = auto, otherwise die with an error.
2412     if test x"$with_ads_support" = x"yes"; then
2413       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
2414     else
2415       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
2416     fi
2418     # Turn off AD support and restore CFLAGS and LIBS variables
2420     with_ads_support="no"
2421     
2422     CFLAGS=$ac_save_CFLAGS
2423     CPPFLAGS=$ac_save_CPPFLAGS
2424     LDFLAGS=$ac_save_LDFLAGS
2425   fi
2428 # Now we have determined whether we really want ADS support
2430 if test x"$with_ads_support" != x"no"; then
2431   ac_save_LIBS=$LIBS
2433   # now check for gssapi headers.  This is also done here to allow for
2434   # different kerberos include paths
2435   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
2437   ##################################################################
2438   # we might need the k5crypto and com_err libraries on some systems
2439   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
2440   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
2442   # Heimdal checks.
2443   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
2444   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
2445   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
2447   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
2448   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],
2449                                 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2451   ########################################################
2452   # now see if we can find the krb5 libs in standard paths
2453   # or as specified above
2454   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
2456   ########################################################
2457   # now see if we can find the gssapi libs in standard paths
2458   AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],
2459             AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2461   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
2462   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
2463   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
2464   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
2465   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
2466   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 
2467   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
2468   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 
2469   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
2470   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 
2471   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
2472   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 
2473   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 
2474   AC_CHECK_FUNC_EXT(krb5_free_ktypes, $KRB5_LIBS)
2475   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
2477   LIBS="$LIBS $KRB5_LIBS"
2478   
2479   AC_CACHE_CHECK([for addrtype in krb5_address],
2480                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
2481     AC_TRY_COMPILE([#include <krb5.h>],
2482       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
2483       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
2484       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
2486   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
2487     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
2488                [Whether the krb5_address struct has a addrtype property])
2489   fi
2491   AC_CACHE_CHECK([for addr_type in krb5_address],
2492                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
2493     AC_TRY_COMPILE([#include <krb5.h>],
2494       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
2495       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
2496       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
2498   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
2499     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
2500               [Whether the krb5_address struct has a addr_type property])
2501   fi
2503   AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 
2504                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
2505                  [AC_TRY_COMPILE([#include <krb5.h>],
2506     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
2507     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
2509   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
2510     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
2511               [Whether the krb5_ticket struct has a enc_part2 property])
2512   fi
2514   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
2515                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
2516     AC_TRY_COMPILE([#include <krb5.h>],
2517       [krb5_keyblock key; key.keyvalue.data = NULL;],
2518       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
2519       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
2521   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
2522     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
2523               [Whether the krb5_keyblock struct has a keyvalue property])
2524   fi
2526   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
2527                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
2528     AC_TRY_COMPILE([#include <krb5.h>],
2529       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
2530       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
2531       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
2533   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes"; then
2534     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
2535               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
2536   fi
2538   AC_CACHE_CHECK([for the krb5_princ_component macro],
2539                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
2540     AC_TRY_LINK([#include <krb5.h>],
2541       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
2542       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
2543       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
2545   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
2546     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
2547                [Whether krb5_princ_component is available])
2548   fi
2551   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" = x"yes"; then
2552     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
2553     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
2554     AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
2555     AC_MSG_RESULT(yes)
2556   else
2557     if test x"$with_ads_support" = x"yes"; then
2558         AC_MSG_ERROR(libkrb5 is needed for Active Directory support)
2559     else
2560         AC_MSG_WARN(libkrb5 is needed for Active Directory support)
2561     fi
2562     KRB5_LIBS=""
2563     with_ads_support=no 
2564   fi
2565   LIBS="$ac_save_LIBS"
2568 ########################################################
2569 # Compile experimental passdb backends?
2570 # (pdb_xml, pdb_mysql)
2571 AC_MSG_CHECKING(whether to build experimental passdb libraries)
2572 AC_ARG_WITH(expsam,
2573 [  --with-expsam=<list>    Include experimental passdb libraries (default=no)]
2574 [                          Valid choices include (comma separated list): ]
2575 [                              xml & mysql],
2576 [ expsam_pdb_modules=`echo "$withval" | sed 's/,/ /g'`
2577   if test "z$expsam_pdb_modules" = "zyes"; then
2578     expsam_pdb_modules="xml mysql"
2579   fi
2580   AC_MSG_RESULT($expsam_pdb_modules)
2581   for i in $expsam_pdb_modules
2582   do 
2583     case "$i" in
2584     xml)
2585       ## pdb_xml
2586       AM_PATH_XML2([2.0.0],[default_shared_modules="$default_shared_modules pdb_xml"],[])
2587       CFLAGS="$CFLAGS $XML_CFLAGS"
2588       ;;
2589     mysql)
2590       ## pdb_mysql
2591       AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[])
2592       CFLAGS="$CFLAGS $MYSQL_CFLAGS"
2593       ;;
2594     no)
2595       ;;
2596     *)
2597       echo "Unknown module name \"$i\"!  Exiting..."
2598       exit 1
2599       ;;
2600     esac
2601   done ],
2602   AC_MSG_RESULT(no)
2605 #################################################
2606 # check for automount support
2607 AC_MSG_CHECKING(whether to use automount)
2608 AC_ARG_WITH(automount,
2609 [  --with-automount        Include automount support (default=no)],
2610 [ case "$withval" in
2611   yes)
2612     AC_MSG_RESULT(yes)
2613     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
2614     ;;
2615   *)
2616     AC_MSG_RESULT(no)
2617     ;;
2618   esac ],
2619   AC_MSG_RESULT(no)
2622 #################################################
2623 # check for smbmount support
2624 AC_MSG_CHECKING(whether to use smbmount)
2625 AC_ARG_WITH(smbmount,
2626 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
2627 [ case "$withval" in
2628   yes)
2629         case "$host_os" in
2630         *linux*)
2631                 AC_MSG_RESULT(yes)
2632                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
2633                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
2634                 ;;
2635         *)
2636                 AC_MSG_ERROR(not on a linux system!)
2637                 ;;
2638         esac
2639     ;;
2640   *)
2641     AC_MSG_RESULT(no)
2642     ;;
2643   esac ],
2644   AC_MSG_RESULT(no)
2648 #################################################
2649 # check for a PAM clear-text auth, accounts, password and session support
2650 with_pam_for_crypt=no
2651 AC_MSG_CHECKING(whether to use PAM)
2652 AC_ARG_WITH(pam,
2653 [  --with-pam              Include PAM support (default=no)],
2654 [ case "$withval" in
2655   yes)
2656     AC_MSG_RESULT(yes)
2657     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
2658     AUTHLIBS="$AUTHLIBS -lpam"
2659     with_pam_for_crypt=yes
2660     ;;
2661   *)
2662     AC_MSG_RESULT(no)
2663     ;;
2664   esac ],
2665   AC_MSG_RESULT(no)
2668 # we can't build a pam module if we don't have pam.
2669 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
2671 #################################################
2672 # check for pam_smbpass support
2673 AC_MSG_CHECKING(whether to use pam_smbpass)
2674 AC_ARG_WITH(pam_smbpass,
2675 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
2676 [ case "$withval" in
2677   yes)
2678     AC_MSG_RESULT(yes)
2680 # Conditions under which pam_smbpass should not be built.
2682        if test x$PICFLAG = x; then
2683           AC_MSG_RESULT([No support for PIC code - disabling pam_smbpass])
2684        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
2685           AC_MSG_RESULT([No libpam found -- disabling pam_smbpass])
2686        else
2687           SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.$SHLIBEXT"
2688        fi
2689     ;;
2690   *)
2691     AC_MSG_RESULT(no)
2692     ;;
2693   esac ],
2694   AC_MSG_RESULT(no)
2698 ###############################################
2699 # test for where we get crypt() from
2700 AC_SEARCH_LIBS(crypt, [crypt],
2701   [test "$ac_cv_search_crypt" = "none required" || AUTHLIBS="-lcrypt $AUTHLIBS"
2702   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
2705 ## moved after the check for -lcrypt in order to
2706 ## ensure that the necessary libraries are included
2707 ## check checking for truncated salt.  Wrapped by the
2708 ## $with_pam_for_crypt variable as above   --jerry
2710 if test $with_pam_for_crypt = no; then
2711 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
2712 crypt_LIBS="$LIBS"
2713 LIBS="$AUTHLIBS $LIBS"
2714 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
2715         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
2716 LIBS="$crypt_LIBS"])
2717 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
2718         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
2722 ########################################################################################
2724 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
2726 ########################################################################################
2728 #################################################
2729 # check for a LDAP password database configuration backwards compatibility
2730 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
2731 AC_ARG_WITH(ldapsam,
2732 [  --with-ldapsam          Include LDAP SAM 2.2 compatible configuration (default=no)],
2733 [ case "$withval" in
2734   yes)
2735     AC_MSG_RESULT(yes)
2736     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatible LDAP SAM configuration])
2737     ;;
2738   *)
2739     AC_MSG_RESULT(no)
2740     ;;
2741   esac ],
2742   AC_MSG_RESULT(no)
2745 ########################################################################################
2747 ## END OF TESTS FOR SAM BACKENDS.  
2749 ########################################################################################
2751 #################################################
2752 # check for a NISPLUS_HOME support 
2753 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
2754 AC_ARG_WITH(nisplus-home,
2755 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
2756 [ case "$withval" in
2757   yes)
2758     AC_MSG_RESULT(yes)
2759     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
2760     ;;
2761   *)
2762     AC_MSG_RESULT(no)
2763     ;;
2764   esac ],
2765   AC_MSG_RESULT(no)
2768 #################################################
2769 # check for syslog logging
2770 AC_MSG_CHECKING(whether to use syslog logging)
2771 AC_ARG_WITH(syslog,
2772 [  --with-syslog           Include experimental SYSLOG support (default=no)],
2773 [ case "$withval" in
2774   yes)
2775     AC_MSG_RESULT(yes)
2776     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
2777     ;;
2778   *)
2779     AC_MSG_RESULT(no)
2780     ;;
2781   esac ],
2782   AC_MSG_RESULT(no)
2785 #################################################
2786 # check for a shared memory profiling support
2787 AC_MSG_CHECKING(whether to use profiling)
2788 AC_ARG_WITH(profiling-data,
2789 [  --with-profiling-data   Include gathering source code profile information (default=no)],
2790 [ case "$withval" in
2791   yes)
2792     AC_MSG_RESULT(yes)
2793     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
2794     ;;
2795   *)
2796     AC_MSG_RESULT(no)
2797     ;;
2798   esac ],
2799   AC_MSG_RESULT(no)
2803 #################################################
2804 # check for experimental disk-quotas support
2806 samba_cv_WITH_QUOTAS=auto
2807 samba_cv_TRY_QUOTAS=no
2808 samba_cv_RUN_QUOTA_TESTS=auto
2809 samba_cv_WITH_SYS_QUOTAS=auto
2810 samba_cv_TRY_SYS_QUOTAS=no
2812 AC_MSG_CHECKING(whether to try disk-quotas support)
2813 AC_ARG_WITH(quotas,
2814 [  --with-quotas           Include disk-quota support (default=no)],
2815 [ case "$withval" in
2816   yes)
2817     AC_MSG_RESULT(yes)
2818     samba_cv_WITH_QUOTAS=yes
2819     samba_cv_TRY_QUOTAS=yes
2820     samba_cv_RUN_QUOTA_TESTS=yes
2821     #set sys quotas to auto in this case
2822     samba_cv_TRY_SYS_QUOTAS=auto
2823     ;;
2824   auto)
2825     AC_MSG_RESULT(auto)
2826     samba_cv_WITH_QUOTAS=auto
2827     samba_cv_TRY_QUOTAS=auto
2828     samba_cv_RUN_QUOTA_TESTS=auto
2829     #set sys quotas to auto in this case
2830     samba_cv_TRY_SYS_QUOTAS=auto
2831     ;;
2832   no)
2833     AC_MSG_RESULT(no)
2834     samba_cv_WITH_QUOTAS=no
2835     samba_cv_TRY_QUOTAS=no
2836     samba_cv_RUN_QUOTA_TESTS=no
2837     ;;
2838   *)
2839     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
2840     ;;
2841   esac ],
2842   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
2845 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
2846 AC_ARG_WITH(sys-quotas,
2847 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
2848 [ case "$withval" in
2849   yes)
2850     AC_MSG_RESULT(yes)
2851     samba_cv_WITH_SYS_QUOTAS=yes
2852     samba_cv_TRY_SYS_QUOTAS=yes
2853     samba_cv_RUN_QUOTA_TESTS=yes
2854     ;;
2855   auto)
2856     AC_MSG_RESULT(auto)
2857     samba_cv_WITH_SYS_QUOTAS=auto
2858     samba_cv_TRY_SYS_QUOTAS=auto
2859     samba_cv_RUN_QUOTA_TESTS=auto
2860     ;;
2861   no)
2862     AC_MSG_RESULT(no)
2863     samba_cv_WITH_SYS_QUOTAS=no
2864     samba_cv_TRY_SYS_QUOTAS=no
2865     ;;
2866   *)
2867     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
2868     ;;
2869   esac ],
2870   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
2873 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
2874 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
2875   case "$host_os" in
2876         *linux*)
2877             AC_MSG_RESULT(yes)
2878             samba_cv_TRY_SYS_QUOTAS=yes
2879             samba_cv_RUN_QUOTA_TESTS=yes
2880             ;;
2881         *)
2882             AC_MSG_RESULT(no)
2883             samba_cv_TRY_SYS_QUOTAS=no
2884             ;;
2885   esac
2888 #############################################
2889 # only check for quota stuff if --with-quotas
2890 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
2892 # For quotas on Veritas VxFS filesystems
2893 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
2895 # For sys/quota.h and linux/quota.h
2896 AC_CHECK_HEADERS(sys/quota.h)
2897 AC_CHECK_HEADERS(asm/types.h linux/quota.h)
2899 # For quotas on Linux XFS filesystems
2900 AC_CHECK_HEADERS(linux/xqm.h linux/xfs_fs.h)
2901 AC_CHECK_HEADERS(xfs/libxfs.h xfs/xqm.h xfs/xfs_fs.h)
2902 # For linux > 2.5.56 
2903 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
2905 # if we have struct if_dqblk in <linux/quota.h> we should use it
2906 AC_CACHE_CHECK([for struct if_dqblk in <linux/quota.h>],samba_cv_HAVE_STRUCT_IF_DQBLK, [
2907 AC_TRY_COMPILE([
2908 #include "confdefs.h"
2909 #ifdef HAVE_SYS_TYPES_H
2910 #include <sys/types.h>
2911 #endif
2912 #ifdef HAVE_ASM_TYPES_H
2913 #include <asm/types.h>
2914 #endif
2915 #include <linux/quota.h>
2916 ],[struct if_dqblk D;],
2917 samba_cv_HAVE_STRUCT_IF_DQBLK=yes,samba_cv_HAVE_STRUCT_IF_DQBLK=no)])
2918 if test "$samba_cv_HAVE_STRUCT_IF_DQBLK"x = "yes"x; then
2919         AC_DEFINE(HAVE_STRUCT_IF_DQBLK,1,[struct if_dqblk])
2922 # if we have struct mem_dqblk in <linux/quota.h> we should use it
2923 AC_CACHE_CHECK([for struct mem_dqblk in <linux/quota.h>],samba_cv_HAVE_STRUCT_MEM_DQBLK, [
2924 AC_TRY_COMPILE([
2925 #include "confdefs.h"
2926 #ifdef HAVE_SYS_TYPES_H
2927 #include <sys/types.h>
2928 #endif
2929 #ifdef HAVE_ASM_TYPES_H
2930 #include <asm/types.h>
2931 #endif
2932 #include <linux/quota.h>
2933 ],[struct mem_dqblk D;],
2934 samba_cv_HAVE_STRUCT_MEM_DQBLK=yes,samba_cv_HAVE_STRUCT_MEM_DQBLK=no)])
2935 if test "$samba_cv_HAVE_STRUCT_MEM_DQBLK"x = "yes"x; then
2936         AC_DEFINE(HAVE_STRUCT_MEM_DQBLK,1,[struct mem_dqblk])
2939 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
2940 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
2941 AC_TRY_COMPILE([
2942 #include "confdefs.h"
2943 #ifdef HAVE_SYS_QUOTA_H
2944 #include <sys/quota.h>
2945 #endif
2947 struct dqblk D;
2948 D.dqb_fsoftlimit = 0;],
2949 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
2950 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
2951         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
2954 ##################
2955 # look for a working quota system
2956 samba_cv_SYSQUOTA_FOUND=no;
2958 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
2959 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
2960 AC_TRY_RUN_STRICT([
2961 #define HAVE_QUOTACTL_4A 1
2962 #define AUTOCONF_TEST 1
2963 #include "confdefs.h"
2964 #include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
2965            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
2966 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
2967     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])
2971 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
2972 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
2973 AC_TRY_RUN_STRICT([
2974 #define HAVE_QUOTACTL_4B 1
2975 #define AUTOCONF_TEST 1
2976 #include "confdefs.h"
2977 #include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
2978            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
2979 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
2980     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
2981 #    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])
2985 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
2986 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
2987 AC_TRY_RUN_STRICT([
2988 #define HAVE_QUOTACTL_3 1
2989 #define AUTOCONF_TEST 1
2990 #include "confdefs.h"
2991 #include "${srcdir-.}/lib/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
2992            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
2993 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
2994     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
2995 #    samba_cv_SYSQUOTA_FOUND=yes;AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
2999 #################################################
3000 # check for mntent.h and struct mntent
3001 AC_CHECK_HEADERS(mntent.h)
3002 #################################################
3003 # check for setmntent,getmntent,endmntent
3004 AC_CHECK_FUNCS(setmntent getmntent endmntent)
3006 #################################################
3007 # check for devnm.h and struct mntent
3008 AC_CHECK_HEADERS(devnm.h)
3009 #################################################
3010 # check for devnm
3011 AC_CHECK_FUNCS(devnm)
3013 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
3014     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3015         # if --with-sys-quotas=yes then build it 
3016         # you have can use the get/set quota command smb.conf
3017         # options then
3018         samba_cv_SYSQUOTA_FOUND=auto
3019     fi
3020     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
3021         # if --with-sys-quotas=yes then build it 
3022         # you have can use the get/set quota command smb.conf
3023         # options then
3024         samba_cv_TRY_SYS_QUOTAS=auto
3025     fi
3028 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
3029 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
3030 SAVE_CPPFLAGS="$CPPFLAGS"
3031 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3032 AC_TRY_COMPILE([
3033 #include "confdefs.h"
3034 #define NO_PROTO_H 1
3035 #define NO_CONFIG_H 1
3036 #define HAVE_SYS_QUOTAS 1
3037 #include "${srcdir-.}/lib/sysquotas.c"
3038 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
3039 CPPFLAGS="$SAVE_CPPFLAGS"
3041 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
3042 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
3043     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
3044         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3045         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
3046         samba_cv_WE_USE_SYS_QUOTAS=yes
3047         AC_MSG_RESULT(yes)
3048     else
3049         AC_MSG_RESULT(no)
3050     fi
3054 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
3055 SAVE_CPPFLAGS="$CPPFLAGS"
3056 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3057 AC_TRY_COMPILE([
3058 #include "confdefs.h"
3059 #define NO_PROTO_H 1
3060 #define NO_CONFIG_H 1
3061 #include "${srcdir-.}/smbd/quotas.c"
3062 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
3063 CPPFLAGS="$SAVE_CPPFLAGS"
3065 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
3066 AC_MSG_CHECKING(whether to use the old quota support)
3067     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
3068       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
3069         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3070         AC_MSG_RESULT(yes)
3071       else
3072         AC_MSG_RESULT(no)
3073       fi
3074     else
3075       AC_MSG_RESULT(no)
3076     fi
3079 ####################
3080 # End of quota check samba_cv_RUN_QUOTA_TESTS
3083 #################################################
3084 # check for experimental utmp accounting
3086 AC_MSG_CHECKING(whether to support utmp accounting)
3087 WITH_UTMP=yes
3088 AC_ARG_WITH(utmp,
3089 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
3090 [ case "$withval" in
3091   no)
3092                 WITH_UTMP=no
3093                 ;;
3094   *)
3095                 WITH_UTMP=yes
3096                 ;;
3097   esac ],
3100 # utmp requires utmp.h
3101 # Note similar check earlier, when checking utmp details.
3103 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
3104         utmp_no_reason=", no utmp.h on $host_os"
3105         WITH_UTMP=no
3108 # Display test results
3110 if test x"$WITH_UTMP" = x"yes"; then
3111         AC_MSG_RESULT(yes)
3112         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
3113 else
3114         AC_MSG_RESULT(no$utmp_no_reason)
3117 #################################################
3118 # choose native language(s) of man pages
3119 AC_MSG_CHECKING(chosen man pages' language(s))
3120 AC_ARG_WITH(manpages-langs,
3121 [  --with-manpages-langs={en,ja,pl}  Choose man pages' language(s). (en)],
3122 [ case "$withval" in
3123   yes|no)
3124     AC_MSG_WARN(--with-manpages-langs called without argument - will use default)
3125     manlangs="en"
3126   ;;
3127   *)
3128     manlangs="$withval"
3129   ;;
3130   esac
3132   AC_MSG_RESULT($manlangs)
3133   manlangs=`echo $manlangs | sed "s/,/ /g"`   # replacing commas with spaces to produce a list
3134   AC_SUBST(manlangs)],
3136   [manlangs="en"
3137   AC_MSG_RESULT($manlangs)
3138   AC_SUBST(manlangs)]
3141 #################################################
3142 # should we build libsmbclient?
3144 INSTALLCLIENTCMD_SH=:
3145 INSTALLCLIENTCMD_A=:
3146 LIBSMBCLIENT_SHARED=
3147 LIBSMBCLIENT=
3148 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
3149 AC_ARG_WITH(libsmbclient,
3150 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
3151 [ case "$withval" in
3152   no) 
3153      AC_MSG_RESULT(no)
3154      ;;
3155   *)
3156      if test $BLDSHARED = true; then
3157         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3158         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3159         LIBSMBCLIENT=libsmbclient
3160         AC_MSG_RESULT(yes)
3161      else
3162         enable_static=yes
3163         AC_MSG_RESULT(no shared library support -- will supply static library)
3164      fi
3165      if test $enable_static = yes; then
3166         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3167         LIBSMBCLIENT=libsmbclient
3168      fi
3169      ;;
3170   esac ],
3172 # if unspecified, default is to built it iff possible.
3173   if test $BLDSHARED = true; then
3174      INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3175      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3176      LIBSMBCLIENT=libsmbclient
3177      AC_MSG_RESULT(yes)
3178    else
3179      enable_static=yes
3180      AC_MSG_RESULT(no shared library support -- will supply static library)
3181    fi
3182    if test $enable_static = yes; then
3183      INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3184      LIBSMBCLIENT=libsmbclient
3185   fi]
3189 #################################################
3190 # these tests are taken from the GNU fileutils package
3191 AC_CHECKING(how to get filesystem space usage)
3192 space=no
3194 # Test for statvfs64.
3195 if test $space = no; then
3196   # SVR4
3197   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
3198   [AC_TRY_RUN([
3199 #if defined(HAVE_UNISTD_H)
3200 #include <unistd.h>
3201 #endif
3202 #include <sys/types.h>
3203 #include <sys/statvfs.h>
3204   main ()
3205   {
3206     struct statvfs64 fsd;
3207     exit (statvfs64 (".", &fsd));
3208   }],
3209   fu_cv_sys_stat_statvfs64=yes,
3210   fu_cv_sys_stat_statvfs64=no,
3211   fu_cv_sys_stat_statvfs64=cross)])
3212   if test $fu_cv_sys_stat_statvfs64 = yes; then
3213     space=yes
3214     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
3215   fi
3218 # Perform only the link test since it seems there are no variants of the
3219 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
3220 # because that got a false positive on SCO OSR5.  Adding the declaration
3221 # of a `struct statvfs' causes this test to fail (as it should) on such
3222 # systems.  That system is reported to work fine with STAT_STATFS4 which
3223 # is what it gets when this test fails.
3224 if test $space = no; then
3225   # SVR4
3226   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
3227                  [AC_TRY_LINK([#include <sys/types.h>
3228 #include <sys/statvfs.h>],
3229                               [struct statvfs fsd; statvfs (0, &fsd);],
3230                               fu_cv_sys_stat_statvfs=yes,
3231                               fu_cv_sys_stat_statvfs=no)])
3232   if test $fu_cv_sys_stat_statvfs = yes; then
3233     space=yes
3234     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
3235   fi
3238 if test $space = no; then
3239   # DEC Alpha running OSF/1
3240   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
3241   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
3242   [AC_TRY_RUN([
3243 #include <sys/param.h>
3244 #include <sys/types.h>
3245 #include <sys/mount.h>
3246   main ()
3247   {
3248     struct statfs fsd;
3249     fsd.f_fsize = 0;
3250     exit (statfs (".", &fsd, sizeof (struct statfs)));
3251   }],
3252   fu_cv_sys_stat_statfs3_osf1=yes,
3253   fu_cv_sys_stat_statfs3_osf1=no,
3254   fu_cv_sys_stat_statfs3_osf1=no)])
3255   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
3256   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
3257     space=yes
3258     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
3259   fi
3262 if test $space = no; then
3263 # AIX
3264   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
3265 member (AIX, 4.3BSD)])
3266   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
3267   [AC_TRY_RUN([
3268 #ifdef HAVE_SYS_PARAM_H
3269 #include <sys/param.h>
3270 #endif
3271 #ifdef HAVE_SYS_MOUNT_H
3272 #include <sys/mount.h>
3273 #endif
3274 #ifdef HAVE_SYS_VFS_H
3275 #include <sys/vfs.h>
3276 #endif
3277   main ()
3278   {
3279   struct statfs fsd;
3280   fsd.f_bsize = 0;
3281   exit (statfs (".", &fsd));
3282   }],
3283   fu_cv_sys_stat_statfs2_bsize=yes,
3284   fu_cv_sys_stat_statfs2_bsize=no,
3285   fu_cv_sys_stat_statfs2_bsize=no)])
3286   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
3287   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
3288     space=yes
3289     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
3290   fi
3293 if test $space = no; then
3294 # SVR3
3295   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
3296   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
3297   [AC_TRY_RUN([#include <sys/types.h>
3298 #include <sys/statfs.h>
3299   main ()
3300   {
3301   struct statfs fsd;
3302   exit (statfs (".", &fsd, sizeof fsd, 0));
3303   }],
3304     fu_cv_sys_stat_statfs4=yes,
3305     fu_cv_sys_stat_statfs4=no,
3306     fu_cv_sys_stat_statfs4=no)])
3307   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
3308   if test $fu_cv_sys_stat_statfs4 = yes; then
3309     space=yes
3310     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
3311   fi
3314 if test $space = no; then
3315 # 4.4BSD and NetBSD
3316   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
3317 member (4.4BSD and NetBSD)])
3318   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
3319   [AC_TRY_RUN([#include <sys/types.h>
3320 #ifdef HAVE_SYS_PARAM_H
3321 #include <sys/param.h>
3322 #endif
3323 #ifdef HAVE_SYS_MOUNT_H
3324 #include <sys/mount.h>
3325 #endif
3326   main ()
3327   {
3328   struct statfs fsd;
3329   fsd.f_fsize = 0;
3330   exit (statfs (".", &fsd));
3331   }],
3332   fu_cv_sys_stat_statfs2_fsize=yes,
3333   fu_cv_sys_stat_statfs2_fsize=no,
3334   fu_cv_sys_stat_statfs2_fsize=no)])
3335   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
3336   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
3337     space=yes
3338         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
3339   fi
3342 if test $space = no; then
3343   # Ultrix
3344   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
3345   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
3346   [AC_TRY_RUN([#include <sys/types.h>
3347 #ifdef HAVE_SYS_PARAM_H
3348 #include <sys/param.h>
3349 #endif
3350 #ifdef HAVE_SYS_MOUNT_H
3351 #include <sys/mount.h>
3352 #endif
3353 #ifdef HAVE_SYS_FS_TYPES_H
3354 #include <sys/fs_types.h>
3355 #endif
3356   main ()
3357   {
3358   struct fs_data fsd;
3359   /* Ultrix's statfs returns 1 for success,
3360      0 for not mounted, -1 for failure.  */
3361   exit (statfs (".", &fsd) != 1);
3362   }],
3363   fu_cv_sys_stat_fs_data=yes,
3364   fu_cv_sys_stat_fs_data=no,
3365   fu_cv_sys_stat_fs_data=no)])
3366   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
3367   if test $fu_cv_sys_stat_fs_data = yes; then
3368     space=yes
3369     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
3370   fi
3374 # As a gating factor for large file support, in order to
3375 # use <4GB files we must have the following minimal support
3376 # available.
3377 # long long, and a 64 bit off_t or off64_t.
3378 # If we don't have all of these then disable large
3379 # file support.
3381 AC_MSG_CHECKING([if large file support can be enabled])
3382 AC_TRY_COMPILE([
3383 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
3384 #include <sys/types.h>
3385 #else
3386 __COMPILE_ERROR_
3387 #endif
3389 [int i],
3390 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
3391 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
3392         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
3394 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
3396 AC_ARG_WITH(spinlocks, 
3397 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
3398 if test "x$with_spinlocks" = "xyes"; then
3399     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
3401     case "$host_cpu" in
3402         sparc)
3403             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
3404             ;;
3406         i386|i486|i586|i686)
3407             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
3408             ;;
3410         mips)
3411             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
3412             ;;
3414         powerpc)
3415             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
3416             ;;
3417     esac
3420 #################################################
3421 # check for ACL support
3423 AC_MSG_CHECKING(whether to support ACLs)
3424 AC_ARG_WITH(acl-support,
3425 [  --with-acl-support      Include ACL support (default=no)],
3426 [ case "$withval" in
3427   yes)
3429         case "$host_os" in
3430         *sysv5*)
3431                 AC_MSG_RESULT(Using UnixWare ACLs)
3432                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
3433                 ;;
3434         *solaris*)
3435                 AC_MSG_RESULT(Using solaris ACLs)
3436                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
3437                 ;;
3438         *hpux*)
3439                 AC_MSG_RESULT(Using HPUX ACLs)
3440                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
3441                 ;;
3442         *irix*)
3443                 AC_MSG_RESULT(Using IRIX ACLs)
3444                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
3445                 ;;
3446         *aix*)
3447                 AC_MSG_RESULT(Using AIX ACLs)
3448                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
3449                 ;;
3450         *osf*)
3451                 AC_MSG_RESULT(Using Tru64 ACLs)
3452                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
3453                 ACLLIBS="$ACLLIBS -lpacl"
3454                 ;;
3455         *freebsd5*)
3456                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
3457                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
3458                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3459                 ;;
3460         *linux*)
3461                 AC_CHECK_LIB(attr,getxattr,[ACLLIBS="$ACLLIBS -lattr"])
3462                 AC_CHECK_LIB(acl,acl_get_file,[ACLLIBS="$ACLLIBS -lacl"])
3463                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3464                 acl_LIBS=$LIBS
3465                 LIBS="$LIBS -lacl"
3466                 AC_TRY_LINK([#include <sys/types.h>
3467 #include <sys/acl.h>],
3468 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3469 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3470                 LIBS=$acl_LIBS])
3471                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3472                                 AC_MSG_RESULT(Using posix ACLs)
3473                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3474                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3475                                 acl_LIBS=$LIBS
3476                                 LIBS="$LIBS -lacl"
3477                                 AC_TRY_LINK([#include <sys/types.h>
3478 #include <sys/acl.h>],
3479 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3480 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3481                                 LIBS=$acl_LIBS])
3482                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3483                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3484                                 fi
3485                         fi
3486             ;;
3487          *)
3488                 AC_CHECK_LIB(acl,acl_get_file,[ACLLIBS="$ACLLIBS -lacl"])
3489                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3490                 acl_LIBS=$LIBS
3491                 LIBS="$LIBS -lacl"
3492                 AC_TRY_LINK([#include <sys/types.h>
3493 #include <sys/acl.h>],
3494 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3495 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3496                 LIBS=$acl_LIBS])
3497                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3498                                 AC_MSG_RESULT(Using posix ACLs)
3499                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3500                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3501                                 acl_LIBS=$LIBS
3502                                 LIBS="$LIBS -lacl"
3503                                 AC_TRY_LINK([#include <sys/types.h>
3504 #include <sys/acl.h>],
3505 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3506 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3507                                 LIBS=$acl_LIBS])
3508                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3509                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3510                                 fi
3511                         fi
3512             ;;
3513         esac
3514         ;;
3515   *)
3516     AC_MSG_RESULT(no)
3517     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
3518     ;;
3519   esac ],
3520   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
3521   AC_MSG_RESULT(no)
3524 #################################################
3525 # check for sendfile support
3527 with_sendfile_support=yes
3528 AC_MSG_CHECKING(whether to check to support sendfile)
3529 AC_ARG_WITH(sendfile-support,
3530 [  --with-sendfile-support Check for sendfile support (default=yes)],
3531 [ case "$withval" in
3532   yes)
3534         AC_MSG_RESULT(yes);
3536         case "$host_os" in
3537         *linux*)
3538                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
3539                 AC_TRY_LINK([#include <sys/sendfile.h>],
3541 int tofd, fromfd;
3542 off64_t offset;
3543 size_t total;
3544 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
3546 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
3548                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
3549                 AC_TRY_LINK([#include <sys/sendfile.h>],
3551 int tofd, fromfd;
3552 off_t offset;
3553 size_t total;
3554 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
3556 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3558 # Try and cope with broken Linux sendfile....
3559                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
3560                 AC_TRY_LINK([\
3561 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
3562 #undef _FILE_OFFSET_BITS
3563 #endif
3564 #include <sys/sendfile.h>],
3566 int tofd, fromfd;
3567 off_t offset;
3568 size_t total;
3569 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
3571 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
3573         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3574                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
3575                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3576                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3577         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3578                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
3579                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3580                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3581         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
3582                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
3583                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
3584         else
3585                 AC_MSG_RESULT(no);
3586         fi
3588         ;;
3589         *freebsd*)
3590                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
3591                 AC_TRY_LINK([\
3592 #include <sys/types.h>
3593 #include <unistd.h>
3594 #include <sys/socket.h>
3595 #include <sys/uio.h>],
3597         int fromfd, tofd, ret, total=0;
3598         off_t offset, nwritten;
3599         struct sf_hdtr hdr;
3600         struct iovec hdtrl;
3601         hdr.headers = &hdtrl;
3602         hdr.hdr_cnt = 1;
3603         hdr.trailers = NULL;
3604         hdr.trl_cnt = 0;
3605         hdtrl.iov_base = NULL;
3606         hdtrl.iov_len = 0;
3607         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
3609 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3611         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3612                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
3613                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
3614                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3615         else
3616                 AC_MSG_RESULT(no);
3617         fi
3618         ;;
3620         *hpux*)
3621                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
3622                 AC_TRY_LINK([\
3623 #include <sys/socket.h>
3624 #include <sys/uio.h>],
3626         int fromfd, tofd;
3627         size_t total=0;
3628         struct iovec hdtrl[2];
3629         ssize_t nwritten;
3630         off64_t offset;
3632         hdtrl[0].iov_base = 0;
3633         hdtrl[0].iov_len = 0;
3635         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
3637 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
3638         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3639                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
3640                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
3641                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3642         else
3643                 AC_MSG_RESULT(no);
3644         fi
3646                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
3647                 AC_TRY_LINK([\
3648 #include <sys/socket.h>
3649 #include <sys/uio.h>],
3651         int fromfd, tofd;
3652         size_t total=0;
3653         struct iovec hdtrl[2];
3654         ssize_t nwritten;
3655         off_t offset;
3657         hdtrl[0].iov_base = 0;
3658         hdtrl[0].iov_len = 0;
3660         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
3662 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3663         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3664                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
3665                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
3666                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3667         else
3668                 AC_MSG_RESULT(no);
3669         fi
3670         ;;
3672         *solaris*)
3673                 AC_CHECK_LIB(sendfile,sendfilev)
3674                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
3675                 AC_TRY_LINK([\
3676 #include <sys/sendfile.h>],
3678         int sfvcnt;
3679         size_t xferred;
3680         struct sendfilevec vec[2];
3681         ssize_t nwritten;
3682         int tofd;
3684         sfvcnt = 2;
3686         vec[0].sfv_fd = SFV_FD_SELF;
3687         vec[0].sfv_flag = 0;
3688         vec[0].sfv_off = 0;
3689         vec[0].sfv_len = 0;
3691         vec[1].sfv_fd = 0;
3692         vec[1].sfv_flag = 0;
3693         vec[1].sfv_off = 0;
3694         vec[1].sfv_len = 0;
3695         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
3697 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
3699         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
3700                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
3701                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
3702                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3703         else
3704                 AC_MSG_RESULT(no);
3705         fi
3707                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
3708                 AC_TRY_LINK([\
3709 #include <sys/sendfile.h>],
3711         int sfvcnt;
3712         size_t xferred;
3713         struct sendfilevec vec[2];
3714         ssize_t nwritten;
3715         int tofd;
3717         sfvcnt = 2;
3719         vec[0].sfv_fd = SFV_FD_SELF;
3720         vec[0].sfv_flag = 0;
3721         vec[0].sfv_off = 0;
3722         vec[0].sfv_len = 0;
3724         vec[1].sfv_fd = 0;
3725         vec[1].sfv_flag = 0;
3726         vec[1].sfv_off = 0;
3727         vec[1].sfv_len = 0;
3728         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
3730 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
3732         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
3733                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
3734                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
3735                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
3736         else
3737                 AC_MSG_RESULT(no);
3738         fi
3739         ;;
3741         *)
3742         ;;
3743         esac
3744         ;;
3745   *)
3746     AC_MSG_RESULT(no)
3747     ;;
3748   esac ],
3749   AC_MSG_RESULT(yes)
3753 #################################################
3754 # Check whether winbind is supported on this platform.  If so we need to
3755 # build and install client programs, sbin programs and shared libraries
3757 AC_MSG_CHECKING(whether to build winbind)
3759 # Initially, the value of $host_os decides whether winbind is supported
3761 HAVE_WINBIND=yes
3763 # Define the winbind shared library name and any specific linker flags
3764 # it needs to be built with.
3766 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
3767 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
3768 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
3770 case "$host_os" in
3771         *linux*|*freebsd*)
3772                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
3773                 ;;
3774         *irix*)
3775                 # IRIX has differently named shared libraries
3776                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
3777                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
3778                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
3779                 ;;
3780         *solaris*)
3781                 # Solaris winbind client is implemented as a wrapper around
3782                 # the Linux version.
3783                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
3784                     nsswitch/winbind_nss_linux.o"
3785                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
3786                 ;;
3787         *hpux11*)
3788                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
3789                 ;;
3790         *aix*)
3791                 # AIX has even differently named shared libraries.  No
3792                 # WINS support has been implemented yet.
3793                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
3794                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
3795                 WINBIND_NSS="nsswitch/WINBIND"
3796                 WINBIND_WINS_NSS=""
3797                 ;;
3798         *)
3799                 HAVE_WINBIND=no
3800                 winbind_no_reason=", unsupported on $host_os"
3801                 ;;
3802 esac
3804 AC_SUBST(WINBIND_NSS)
3805 AC_SUBST(WINBIND_WINS_NSS)
3806 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
3807 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
3808 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
3810 # Check the setting of --with-winbindd
3812 AC_ARG_WITH(winbind,
3813 [  --with-winbind          Build winbind (default, if supported by OS)],
3815   case "$withval" in
3816         yes)
3817                 HAVE_WINBIND=yes
3818                 ;;
3819         no)
3820                 HAVE_WINBIND=no
3821                 winbind_reason=""
3822                 ;;
3823   esac ],
3826 # We need unix domain sockets for winbind
3828 if test x"$HAVE_WINBIND" = x"yes"; then
3829         if test x"$samba_cv_unixsocket" = x"no"; then
3830                 winbind_no_reason=", no unix domain socket support on $host_os"
3831                 HAVE_WINBIND=no
3832         fi
3835 # Display test results
3837 if test x"$HAVE_WINBIND" = x"yes"; then
3838         AC_MSG_RESULT(yes)
3839         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
3841         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
3842         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
3843         if test x"$BLDSHARED" = x"true"; then
3844                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
3846                 if test x"$with_pam" = x"yes"; then
3847                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.$SHLIBEXT"
3848                 fi
3849         fi
3850 else
3851         AC_MSG_RESULT(no$winbind_no_reason)
3854 # Solaris has some extra fields in struct passwd that need to be
3855 # initialised otherwise nscd crashes.  
3857 AC_CHECK_MEMBER(struct passwd.pw_comment,
3858                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
3859                 [#include <pwd.h>])
3861 AC_CHECK_MEMBER(struct passwd.pw_age,
3862                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
3863                 [#include <pwd.h>])
3865 #################################################
3866 # Check to see if we should use the included popt 
3868 AC_ARG_WITH(included-popt,
3869 [  --with-included-popt    use bundled popt library, not from system],
3871   case "$withval" in
3872         yes)
3873                 INCLUDED_POPT=yes
3874                 ;;
3875         no)
3876                 INCLUDED_POPT=no
3877                 ;;
3878   esac ],
3880 if test x"$INCLUDED_POPT" != x"yes"; then
3881     AC_CHECK_LIB(popt, poptGetContext,
3882                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
3885 AC_MSG_CHECKING(whether to use included popt)
3886 if test x"$INCLUDED_POPT" = x"yes"; then
3887     AC_MSG_RESULT(yes)
3888     BUILD_POPT='$(POPT_OBJS)'
3889         POPTLIBS='$(POPT_OBJS)'
3890     FLAGS1="-I$srcdir/popt"
3891 else
3892     AC_MSG_RESULT(no)
3893         BUILD_POPT=""
3894     POPTLIBS="-lpopt"
3896 AC_SUBST(BUILD_POPT)
3897 AC_SUBST(POPTLIBS)
3898 AC_SUBST(FLAGS1)
3900 #################################################
3901 # Check if the user wants Python
3903 # At the moment, you can use this to set which Python binary to link
3904 # against.  (Libraries built for Python2.2 can't be used by 2.1,
3905 # though they can coexist in different directories.)  In the future
3906 # this might make the Python stuff be built by default.
3908 # Defaulting python breaks the clean target if python isn't installed
3910 PYTHON=
3912 AC_ARG_WITH(python,
3913 [  --with-python=PYTHONNAME  build Python libraries],
3914 [ case "${withval-python}" in
3915   yes)
3916         PYTHON=python
3917         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
3918         ;;
3919   no)
3920         PYTHON=
3921         ;;
3922   *)
3923         PYTHON=${withval-python}
3924         ;;
3925   esac ])
3926 AC_SUBST(PYTHON)
3928 for i in `echo $default_static_modules | sed -e's/,/ /g'`
3930         eval MODULE_DEFAULT_$i=STATIC
3931 done
3933 for i in `echo $default_shared_modules | sed -e's/,/ /g'`
3935         dnl Fall back to static if dlopen() is not available
3936         eval MODULE_DEFAULT_$i=STATIC
3938         if test x"$ac_cv_func_dlopen" = xyes; then
3939                 eval MODULE_DEFAULT_$i=SHARED
3940         fi
3941 done
3943 dnl Always built these modules static
3944 MODULE_pdb_guest=STATIC
3945 MODULE_rpc_spoolss=STATIC
3946 MODULE_rpc_srv=STATIC
3947 MODULE_idmap_tdb=STATIC
3949 AC_ARG_WITH(static-modules,
3950 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
3951 [ if test $withval; then
3952         for i in `echo $withval | sed -e's/,/ /g'`
3953         do
3954                 eval MODULE_$i=STATIC
3955         done
3956 fi ])
3958 AC_ARG_WITH(shared-modules,
3959 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
3960 [ if test $withval; then
3961         for i in `echo $withval | sed -e's/,/ /g'`
3962         do
3963                         eval MODULE_$i=SHARED
3964         done
3965 fi ])
3967 ###########################################################################
3968 ## contributed pdb_modules
3970 SMB_MODULE(pdb_xml, passdb/pdb_xml.o, "bin/xml.$SHLIBEXT", PDB,
3971                   [ PASSDBLIBS="$PASSDBLIBS $XML_LIBS" ] )
3972 SMB_MODULE(pdb_mysql, passdb/pdb_mysql.o, "bin/mysql.$SHLIBEXT", PDB, 
3973                    [ PASSDBLIBS="$PASSDBLIBS $MYSQL_LIBS" ]     )
3975 ## end of contributed pdb_modules
3976 ###########################################################################
3978 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o, "bin/ldapsam.$SHLIBEXT", PDB, 
3979                    [ PASSDBLIBS="$PASSDBLIBS $LDAP_LIBS" ] )
3980 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
3981 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
3982 SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
3983 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.c)
3985 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
3986 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
3987 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
3988 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
3989 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
3990 SMB_MODULE(rpc_dfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
3991 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
3992 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
3993 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
3994 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
3995 SMB_SUBSYSTEM(RPC,smbd/server.c)
3997 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/idmap_ldap.$SHLIBEXT", IDMAP)
3998 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/idmap_tdb.$SHLIBEXT", IDMAP)
3999 SMB_SUBSYSTEM(IDMAP,sam/idmap.c)
4001 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
4002 SMB_SUBSYSTEM(CHARSET,lib/iconv.c)
4004 SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
4005 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
4006 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
4007 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
4008 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
4009 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
4010 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
4011 SMB_SUBSYSTEM(AUTH,auth/auth.c)
4013 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
4014 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
4015 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
4016 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
4017 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
4018 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
4019 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
4020 SMB_SUBSYSTEM(VFS,smbd/vfs.c)
4022 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
4024 #################################################
4025 # do extra things if we are running insure
4027 if test "${ac_cv_prog_CC}" = "insure"; then
4028         CPPFLAGS="$CPPFLAGS -D__INSURE__"
4031 #################################################
4032 # Display summary of libraries detected
4034 AC_MSG_RESULT([Using libraries:])
4035 AC_MSG_RESULT([    LIBS = $LIBS])
4036 if test x"$with_ads_support" != x"no"; then
4037    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
4039 if test x"$with_ldap_support" != x"no"; then
4040    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
4043 #################################################
4044 # final configure stuff
4046 AC_MSG_CHECKING([configure summary])
4047 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
4048            AC_MSG_RESULT(yes),
4049            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
4050            AC_MSG_WARN([cannot run when cross-compiling]))
4052 builddir=`pwd`
4053 AC_SUBST(builddir)
4055 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
4056 LIB_REMOVE_USR_LIB(LDFLAGS)
4057 LIB_REMOVE_USR_LIB(LIBS)
4059 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
4060 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
4061 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
4063 AC_OUTPUT(include/stamp-h Makefile script/findsmb)
4065 #################################################
4066 # Print very concise instructions on building/use
4067 if test "x$enable_dmalloc" = xyes
4068 then
4069         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
4070         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])