Enable dynamic loading of RPC modules. See docs/textdocs/RPC_PLUGGIN.txt for instruc...
[Samba/gebeck_regimport.git] / source / configure.in
blob4daba5a647c61c085d17b42992dc12a05e38be64
1 dnl -*- mode: m4-mode -*-
2 dnl Process this file with autoconf to produce a configure script.
3 AC_INIT(include/includes.h)
4 AC_CONFIG_HEADER(include/config.h)
6 #################################################
7 # Directory handling stuff to support both the
8 # legacy SAMBA directories and FHS compliant
9 # ones...
10 AC_PREFIX_DEFAULT(/usr/local/samba)
12 AC_ARG_WITH(fhs, 
13 [  --with-fhs              Use FHS-compliant paths (default=no)],
14     configdir="${sysconfdir}/samba"
15     lockdir="\${VARDIR}/cache/samba"
16     piddir="\${VARDIR}/run/samba"
17     logfilebase="\${VARDIR}/log/samba"
18     privatedir="\${CONFIGDIR}/private"
19     libdir="\${prefix}/lib/samba"
20     swatdir="\${DATADIR}/samba/swat",
21     configdir="\${LIBDIR}"
22     logfilebase="\${VARDIR}"
23     lockdir="\${VARDIR}/locks"
24     piddir="\${VARDIR}/locks"
25     privatedir="\${prefix}/private"
26     swatdir="\${prefix}/swat")
28 #################################################
29 # set private directory location
30 AC_ARG_WITH(privatedir,
31 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
32 [ case "$withval" in
33   yes|no)
34   #
35   # Just in case anybody calls it without argument
36   #
37     AC_MSG_WARN([--with-privatedir called without argument - will use default])
38   ;;
39   * )
40     privatedir="$withval"
41     ;;
42   esac])
44 #################################################
45 # set lock directory location
46 AC_ARG_WITH(lockdir,
47 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
48 [ case "$withval" in
49   yes|no)
50   #
51   # Just in case anybody calls it without argument
52   #
53     AC_MSG_WARN([--with-lockdir called without argument - will use default])
54   ;;
55   * )
56     lockdir="$withval"
57     ;;
58   esac])
60 #################################################
61 # set pid directory location
62 AC_ARG_WITH(piddir,
63 [  --with-piddir=DIR       Where to put pid files ($ac_default_prefix/var/locks)],
64 [ case "$withval" in
65   yes|no)
66   #
67   # Just in case anybody calls it without argument
68   #
69     AC_MSG_WARN([--with-piddir called without argument - will use default])
70   ;;
71   * )
72     piddir="$withval"
73     ;;
74   esac])
76 #################################################
77 # set SWAT directory location
78 AC_ARG_WITH(swatdir,
79 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
80 [ case "$withval" in
81   yes|no)
82   #
83   # Just in case anybody does it
84   #
85     AC_MSG_WARN([--with-swatdir called without argument - will use default])
86   ;;
87   * )
88     swatdir="$withval"
89     ;;
90   esac])
92 #################################################
93 # set configuration directory location
94 AC_ARG_WITH(configdir,
95 [  --with-configdir=DIR    Where to put configuration files (\$libdir)],
96 [ case "$withval" in
97   yes|no)
98   #
99   # Just in case anybody does it
100   #
101     AC_MSG_WARN([--with-configdir called without argument - will use default])
102   ;;
103   * )
104     configdir="$withval"
105     ;;
106   esac])
108 #################################################
109 # set log directory location
110 AC_ARG_WITH(logfilebase,
111 [  --with-logfilebase=DIR  Where to put log files (\$(VARDIR))],
112 [ case "$withval" in
113   yes|no)
114   #
115   # Just in case anybody does it
116   #
117     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
118   ;;
119   * )
120     logfilebase="$withval"
121     ;;
122   esac])
124 AC_SUBST(configdir)
125 AC_SUBST(lockdir)
126 AC_SUBST(piddir)
127 AC_SUBST(logfilebase)
128 AC_SUBST(privatedir)
129 AC_SUBST(swatdir)
130 AC_SUBST(bindir)
131 AC_SUBST(sbindir)
133 dnl Unique-to-Samba variables we'll be playing with.
134 AC_SUBST(SHELL)
135 AC_SUBST(LDSHFLAGS)
136 AC_SUBST(SONAMEFLAG)
137 AC_SUBST(SHLD)
138 AC_SUBST(HOST_OS)
139 AC_SUBST(PICFLAG)
140 AC_SUBST(PICSUFFIX)
141 AC_SUBST(POBAD_CC)
142 AC_SUBST(SHLIBEXT)
143 AC_SUBST(LIBSMBCLIENT_SHARED)
144 AC_SUBST(LIBSMBCLIENT)
145 AC_SUBST(PRINTLIBS)
146 AC_SUBST(AUTHLIBS)
147 AC_SUBST(SHLIB_PROGS)
148 AC_SUBST(SMBWRAPPER)
149 AC_SUBST(EXTRA_BIN_PROGS)
150 AC_SUBST(EXTRA_SBIN_PROGS)
151 AC_SUBST(EXTRA_ALL_TARGETS)
152 AC_SUBST(LSA_DYNAMIC)
153 AC_SUBST(NETLOG_DYNAMIC)
154 AC_SUBST(SAMR_DYNAMIC)
155 AC_SUBST(SVC_DYNAMIC)
156 AC_SUBST(WKS_DYNAMIC)
157 AC_SUBST(REG_DYNAMIC)
158 AC_SUBST(SPOOLSS_DYNAMIC)
159 AC_SUBST(DFS_DYNAMIC)
161 # compile with optimization and without debugging by default
162 CFLAGS="-O ${CFLAGS}"
164 AC_ARG_ENABLE(debug, 
165 [  --enable-debug          Turn on compiler debugging information (default=no)],
166     [if eval "test x$enable_debug = xyes"; then
167         CFLAGS="${CFLAGS} -g"
168     fi])
170 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
171     [if eval "test x$enable_developer = xyes"; then
172         CFLAGS="${CFLAGS} -g -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -DDEBUG_PASSWORD -DDEVELOPER"
173     fi])
175 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
176     [if eval "test x$enable_krb5developer = xyes"; then
177         CFLAGS="${CFLAGS} -g -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -DDEBUG_PASSWORD -DDEVELOPER"
178     fi])
180 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
182 if test "x$enable_dmalloc" = xyes
183 then
184         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
185         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
186                   [Define to check invariants around some common functions])
187         LIBS="$LIBS -ldmalloc"  
190 AC_ARG_ENABLE(dynrpc,  [  --enable-dynrpc         Enable dynamic RPC modules [default=no]])
192 if test x$enable_dynrpc = xyes
193 then
194         enable_dynrpc=lsa,samr,reg,wks,netlog,dfs
197 if test x$enable_dynrpc != xno
198 then
199         for i in `echo $enable_dynrpc | sed -e's/,/ /g'` 
200          do case $i in lsa)
201           LSA_DYNAMIC=yes
202           AC_DEFINE(RPC_LSA_DYNAMIC, 1,
203                     [Define to make the LSA pipe dynamic])
204          ;; samr)
205           SAMR_DYNAMIC=yes
206           AC_DEFINE(RPC_SAMR_DYNAMIC, 1, 
207                     [Define to make the SAMR pipe dynamic])
208          ;; svc)
209           SVC_DYNAMIC=yes
210           AC_DEFINE(RPC_SVC_DYNAMIC, 1, 
211                     [Define to make the SRVSVC pipe dynamic])
212          ;; wks)
213           WKS_DYNAMIC=yes
214           AC_DEFINE(RPC_WKS_DYNAMIC, 1, 
215                     [Define to make the WKSSVC pipe dynamic])
216          ;; netlog)
217           NETLOG_DYNAMIC=yes
218           AC_DEFINE(RPC_NETLOG_DYNAMIC, 1, 
219                     [Define to make the NETLOGON pipe dynamic])
220          ;; reg)
221           REG_DYNAMIC=yes
222           AC_DEFINE(RPC_REG_DYNAMIC, 1, 
223                     [Define to make the WINREG pipe dynamic])
224          ;; spoolss)
225           SPOOLSS_DYNAMIC=yes
226           AC_DEFINE(RPC_SPOOLSS_DYNAMIC, 1, 
227                     [Define to make the SPOOLSS pipe dynamic])
228          ;; dfs)
229           DFS_DYNAMIC=yes
230           AC_DEFINE(RPC_DFS_DYNAMIC, 1, 
231                     [Define to make the NETDFS pipe dynamic])
232          ;; esac
233          done
236 dnl Checks for programs.
237 AC_PROG_CC
238 AC_PROG_INSTALL
239 AC_PROG_AWK
241 dnl Check if we use GNU ld
242 LD=ld
243 AC_PROG_LD_GNU
245 dnl needed before AC_TRY_COMPILE
246 AC_ISC_POSIX
248 dnl look for executable suffix
249 AC_EXEEXT
251 dnl Check if C compiler understands -c and -o at the same time
252 AC_PROG_CC_C_O
253 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
254       BROKEN_CC=
255 else
256       BROKEN_CC=#
258 AC_SUBST(BROKEN_CC)
260 dnl Check if the C compiler understands volatile (it should, being ANSI).
261 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
262     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
263         samba_cv_volatile=yes,samba_cv_volatile=no)])
264 if test x"$samba_cv_volatile" = x"yes"; then
265    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
269 AC_CANONICAL_SYSTEM
271 dnl Add #include for broken IRIX header files
272   case "$host_os" in
273         *irix6*) AC_ADD_INCLUDE(<standards.h>)
274         ;;
275 esac
277 AC_VALIDATE_CACHE_SYSTEM_TYPE
279 DYNEXP=
282 # Config CPPFLAG settings for strange OS's that must be set
283 # before other tests.
285 case "$host_os" in
286 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
287     *hpux*)
288     
289       AC_PROG_CC_FLAG(Ae)
290       # mmap on HPUX is completely broken...
291       AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
292       if test $ac_cv_prog_cc_Ae = yes; then
293         CPPFLAGS="$CPPFLAGS -Ae"
294       fi
296 # Defines needed for HPUX support.
297 # HPUX has bigcrypt but (sometimes?) doesn't use it for
298 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
300       case `uname -r` in
301                         *9*|*10*)
302                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4"
303                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
304                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
305                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
306                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
307                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
308                                 ;;
309                         *11*)
310                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4"
311                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
312                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
313                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
314                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
315                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
316                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
317                                 ;;
318       esac
319       DYNEXP="-Wl,-E"
320       ;;
323 # CRAY Unicos has broken const handling
324        *unicos*)
325           AC_MSG_RESULT([disabling const])
326           CPPFLAGS="$CPPFLAGS -Dconst="
327           ;;
328         
330 # AIX4.x doesn't even admit to having large
331 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
333     *aix4*)
334           AC_MSG_RESULT([enabling large file support])
335       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
336           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
337       ;;    
339 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
340 # to the existance of large files..
341 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
342 # recommendations on large file support, however it makes the
343 # compile work using gcc 2.7 and 2.8, whereas using the Sun
344 # recommendation makes the compile fail on gcc2.7. JRA.
346         *solaris*)
347                 case `uname -r` in
348                         5.0*|5.1*|5.2*|5.3*|5.5*)
349                                 AC_MSG_RESULT([no large file support])
350                                 ;;
351                         5.*)
352                         AC_MSG_RESULT([enabling large file support])
353                         if test "$ac_cv_prog_gcc" = yes; then
354                                 ${CC-cc} -v >conftest.c 2>&1
355                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
356                                 rm -fr conftest.c
357                                 case "$ac_cv_gcc_compiler_version_number" in
358                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
359                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
360                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
361                                                 ;;
362                                         *)
363                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
364                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
365                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
366                                                 ;;
367                                 esac
368                         else
369                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
370                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
371                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
372                         fi
373                         ;;
374                 esac
375                 ;;
377 # Tests needed for SINIX large file support.
379     *sysv4*)
380       if test $host = mips-sni-sysv4 ; then
381         AC_MSG_CHECKING([for LFS support])
382         old_CPPFLAGS="$CPPFLAGS"
383         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
384         AC_TRY_RUN([
385 #include <unistd.h>
386 main () {
387 #if _LFS64_LARGEFILE == 1
388 exit(0);
389 #else
390 exit(1);
391 #endif
392 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
393         CPPFLAGS="$old_CPPFLAGS"
394         if test x$SINIX_LFS_SUPPORT = xyes ; then
395           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
396                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
397           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
398           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
399           LIBS="`getconf LFS64_LIBS` $LIBS"
400         fi
401       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
402       fi
403     ;;
405 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
407     *linux*)
408         AC_MSG_CHECKING([for LFS support])
409         old_CPPFLAGS="$CPPFLAGS"
410         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
411        AC_TRY_RUN([
412 #include <unistd.h>
413 #include <sys/utsname.h>
414 main() {
415 #if _LFS64_LARGEFILE == 1
416        struct utsname uts;
417        char *release;
418        int major, minor;
420        /* Ensure this is glibc 2.2 or higher */
421 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
422        int libc_major = __GLIBC__;
423        int libc_minor = __GLIBC_MINOR__;
425        if (libc_major < 2)
426               exit(1);
427        if (libc_minor < 2)
428               exit(1);
429 #endif
431        /* Ensure this is kernel 2.4 or higher */
433        uname(&uts);
434        release = uts.release;
435        major = atoi(strsep(&release, "."));
436        minor = atoi(strsep(&release, "."));
438        if (major > 2 || (major == 2 && minor > 3))
439                exit(0);
440        exit(1);
441 #else
442        exit(1);
443 #endif
445 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
446         CPPFLAGS="$old_CPPFLAGS"
447         if test x$LINUX_LFS_SUPPORT = xyes ; then
448           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
449                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
450           AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
451           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
452         fi
453        AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
454                 ;;
456     *hurd*)
457         AC_MSG_CHECKING([for LFS support])
458         old_CPPFLAGS="$CPPFLAGS"
459         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
460         AC_TRY_RUN([
461 #include <unistd.h>
462 main () {
463 #if _LFS64_LARGEFILE == 1
464 exit(0);
465 #else
466 exit(1);
467 #endif
468 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
469         CPPFLAGS="$old_CPPFLAGS"
470         if test x$GLIBC_LFS_SUPPORT = xyes ; then
471           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
472                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
473           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
474         fi
475       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
476     ;;
478 esac
480 AC_INLINE
481 AC_HEADER_STDC
482 AC_HEADER_DIRENT
483 AC_HEADER_TIME
484 AC_HEADER_SYS_WAIT
485 AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
486 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h)
487 AC_CHECK_HEADERS(compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
488 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h)
489 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
490 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
491 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
492 AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h ldap.h lber.h dlfcn.h)
493 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
496 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
497 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
499 case "$host_os" in
500     *hpux*)
501                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
502                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
503                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
504                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
505                 fi
506         ;;
507 esac
508 AC_CHECK_HEADERS(shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
509 AC_CHECK_HEADERS(nss.h nss_common.h ns_api.h sys/security.h security/pam_appl.h security/pam_modules.h)
510 AC_CHECK_HEADERS(stropts.h poll.h)
511 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
512 AC_CHECK_HEADERS(sys/acl.h sys/cdefs.h glob.h)
514 # For experimental utmp support (lastlog on some BSD-like systems)
515 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
517 # For quotas on Veritas VxFS filesystems
518 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
520 # For quotas on Linux XFS filesystems
521 AC_CHECK_HEADERS(linux/xqm.h)
522 AC_CHECK_HEADERS(xfs/xqm.h)
524 AC_CHECK_SIZEOF(int,cross)
525 AC_CHECK_SIZEOF(long,cross)
526 AC_CHECK_SIZEOF(short,cross)
528 AC_C_CONST
529 AC_C_INLINE
530 AC_C_BIGENDIAN
531 AC_C_CHAR_UNSIGNED
533 AC_TYPE_SIGNAL
534 AC_TYPE_UID_T
535 AC_TYPE_MODE_T
536 AC_TYPE_OFF_T
537 AC_TYPE_SIZE_T
538 AC_TYPE_PID_T
539 AC_STRUCT_ST_RDEV
540 AC_DIRENT_D_OFF
541 AC_CHECK_TYPE(ino_t,unsigned)
542 AC_CHECK_TYPE(loff_t,off_t)
543 AC_CHECK_TYPE(offset_t,loff_t)
544 AC_CHECK_TYPE(ssize_t, int)
545 AC_CHECK_TYPE(wchar_t, unsigned short)
547 ############################################
548 # for cups support we need libcups, and a handful of header files
550 AC_ARG_ENABLE(cups,
551 [  --enable-cups           Turn on CUPS support (default=auto)])
553 if test x$enable_cups != xno; then
554         AC_PATH_PROG(CUPS_CONFIG, cups-config)
556         if test "x$CUPS_CONFIG" != x; then
557                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
558                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
559                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
560                 PRINTLIBS="$PRINTLIBS `$CUPS_CONFIG --libs`"
561         fi
564 ############################################
565 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
566 AC_SEARCH_LIBS(dlopen, [dl])
567 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
569 ############################################
570 # check if the compiler can do immediate structures
571 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
572     AC_TRY_COMPILE([
573 #include <stdio.h>],
575    typedef struct {unsigned x;} FOOBAR;
576    #define X_FOOBAR(x) ((FOOBAR) { x })
577    #define FOO_ONE X_FOOBAR(1)
578    FOOBAR f = FOO_ONE;   
579    static struct {
580         FOOBAR y; 
581         } f2[] = {
582                 {FOO_ONE}
583         };   
585         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
586 if test x"$samba_cv_immediate_structures" = x"yes"; then
587    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
590 ############################################
591 # check for unix domain sockets
592 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
593     AC_TRY_COMPILE([
594 #include <sys/types.h>
595 #include <stdlib.h>
596 #include <stddef.h>
597 #include <sys/socket.h>
598 #include <sys/un.h>],
600   struct sockaddr_un sunaddr; 
601   sunaddr.sun_family = AF_UNIX;
603         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
604 if test x"$samba_cv_unixsocket" = x"yes"; then
605    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
609 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
610     AC_TRY_COMPILE([
611 #include <sys/types.h>
612 #if STDC_HEADERS
613 #include <stdlib.h>
614 #include <stddef.h>
615 #endif
616 #include <sys/socket.h>],[socklen_t i = 0],
617         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
618 if test x"$samba_cv_socklen_t" = x"yes"; then
619    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
622 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
623     AC_TRY_COMPILE([
624 #include <sys/types.h>
625 #if STDC_HEADERS
626 #include <stdlib.h>
627 #include <stddef.h>
628 #endif
629 #include <signal.h>],[sig_atomic_t i = 0],
630         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
631 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
632    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
635 # stupid headers have the functions but no declaration. grrrr.
636 AC_HAVE_DECL(errno, [#include <errno.h>])
637 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
638 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
639 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
640 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
641 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
642 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
644 # and glibc has setresuid under linux but the function does
645 # nothing until kernel 2.1.44! very dumb.
646 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
647     AC_TRY_RUN([#include <errno.h>
648 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
649         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
650 if test x"$samba_cv_have_setresuid" = x"yes"; then
651     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
654 # Do the same check for setresguid...
656 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
657     AC_TRY_RUN([#include <unistd.h>
658 #include <errno.h>
659 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
660         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
661 if test x"$samba_cv_have_setresgid" = x"yes"; then
662     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
665 AC_FUNC_MEMCMP
667 ###############################################
668 # test for where we get crypt() from
669 AC_SEARCH_LIBS(crypt, [crypt], [AUTHLIBS="$AUTHLIBS -lcrypt";
670         AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
672 ###############################################
673 # Readline included by default unless explicitly asked not to
674 test "${with_readline+set}" != "set" && with_readline=yes
676 # test for where we get readline() from
677 AC_MSG_CHECKING(whether to use readline)
678 AC_ARG_WITH(readline,
679 [  --with-readline[=DIR]   Look for readline include/libs in DIR (default=auto) ],
680 [  case "$with_readline" in
681   yes)
682     AC_MSG_RESULT(yes)
684     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
685     AC_CHECK_HEADERS(readline/history.h)
687     AC_CHECK_HEADERS(readline.h readline/readline.h,[
688       for termlib in ncurses curses termcap terminfo termlib; do
689        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
690       done
691       AC_CHECK_LIB(readline, rl_callback_handler_install,
692        [TERMLIBS="-lreadline $TERMLIBS"
693        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
694        break], [TERMLIBS=], $TERMLIBS)])
695     ;;
696   no)
697     AC_MSG_RESULT(no)
698     ;;
699   *)
700     AC_MSG_RESULT(yes)
702     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
703     # alternate readline path
704     _ldflags=${LDFLAGS}
705     _cppflags=${CPPFLAGS}
707     # Add additional search path
708     LDFLAGS="-L$with_readline/lib $LDFLAGS"
709     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
711     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
712     AC_CHECK_HEADERS(readline/history.h)
714     AC_CHECK_HEADERS(readline.h readline/readline.h,[
715       for termlib in ncurses curses termcap terminfo termlib; do
716        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
717       done
718       AC_CHECK_LIB(readline, rl_callback_handler_install,
719        [TERMLDFLAGS="-L$with_readline/lib"
720        TERMCPPFLAGS="-I$with_readline/include"
721        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
722        TERMLIBS="-lreadline $TERMLIBS"
723        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
724        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
726     LDFLAGS=$_ldflags
727     ;;
728   esac],
729   AC_MSG_RESULT(no)
731 AC_SUBST(TERMLIBS)
732 AC_SUBST(TERMLDFLAGS)
734 # The readline API changed slightly from readline3 to readline4, so
735 # code will generate warnings on one of them unless we have a few
736 # special cases.
737 AC_CHECK_LIB(readline, rl_completion_matches,
738              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
739                         [Do we have rl_completion_matches?])],
740              [],
741              [$TERMLIBS])
743 # The following test taken from the cvs sources
744 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
745 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
746 # libsocket.so which has a bad implementation of gethostbyname (it
747 # only looks in /etc/hosts), so we only look for -lsocket if we need
748 # it.
749 AC_CHECK_FUNCS(connect)
750 if test x"$ac_cv_func_connect" = x"no"; then
751     case "$LIBS" in
752     *-lnsl*) ;;
753     *) AC_CHECK_LIB(nsl_s, printf) ;;
754     esac
755     case "$LIBS" in
756     *-lnsl*) ;;
757     *) AC_CHECK_LIB(nsl, printf) ;;
758     esac
759     case "$LIBS" in
760     *-lsocket*) ;;
761     *) AC_CHECK_LIB(socket, connect) ;;
762     esac
763     case "$LIBS" in
764     *-linet*) ;;
765     *) AC_CHECK_LIB(inet, connect) ;;
766     esac
767     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
768     dnl has been cached.
769     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
770        test x"$ac_cv_lib_inet_connect" = x"yes"; then
771         # ac_cv_func_connect=yes
772         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
773         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
774     fi
777 ###############################################
778 # test for where we get yp_get_default_domain() from
779 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
780 AC_CHECK_FUNCS(yp_get_default_domain)
782 # Check if we have execl, if not we need to compile smbrun.
783 AC_CHECK_FUNCS(execl)
784 if test x"$ac_cv_func_execl" = x"no"; then
785     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
788 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
789 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid)
790 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
791 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
792 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
793 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
794 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
795 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
796 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
797 AC_CHECK_FUNCS(syslog vsyslog getgrouplist timegm)
798 # setbuffer, shmget, shm_open are needed for smbtorture
799 AC_CHECK_FUNCS(setbuffer shmget shm_open)
801 # syscall() is needed for smbwrapper.
802 AC_CHECK_FUNCS(syscall)
804 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
805 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
806 AC_CHECK_FUNCS(__getcwd _getcwd)
807 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
808 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
809 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
810 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
811 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
812 AC_CHECK_FUNCS(_write __write _fork __fork)
813 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
814 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
815 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
816 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
817 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
820 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
823 if test x$ac_cv_func_stat64 = xno ; then
824   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
825   AC_TRY_LINK([
826 #if defined(HAVE_UNISTD_H)
827 #include <unistd.h>
828 #endif
829 #include <sys/stat.h>
830 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
831   AC_MSG_RESULT([$ac_cv_func_stat64])
832   if test x$ac_cv_func_stat64 = xyes ; then
833     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
834   fi
837 if test x$ac_cv_func_lstat64 = xno ; then
838   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
839   AC_TRY_LINK([
840 #if defined(HAVE_UNISTD_H)
841 #include <unistd.h>
842 #endif
843 #include <sys/stat.h>
844 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
845   AC_MSG_RESULT([$ac_cv_func_lstat64])
846   if test x$ac_cv_func_lstat64 = xyes ; then
847     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
848   fi
851 if test x$ac_cv_func_fstat64 = xno ; then
852   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
853   AC_TRY_LINK([
854 #if defined(HAVE_UNISTD_H)
855 #include <unistd.h>
856 #endif
857 #include <sys/stat.h>
858 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
859   AC_MSG_RESULT([$ac_cv_func_fstat64])
860   if test x$ac_cv_func_fstat64 = xyes ; then
861     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
862   fi
865 #####################################
866 # we might need the resolv library on some systems
867 AC_CHECK_LIB(resolv, dn_expand)
870 # Check for the functions putprpwnam, set_auth_parameters,
871 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
872 # Needed for OSF1 and HPUX.
875 AC_LIBTESTFUNC(security, putprpwnam)
876 AC_LIBTESTFUNC(sec, putprpwnam)
878 AC_LIBTESTFUNC(security, set_auth_parameters)
879 AC_LIBTESTFUNC(sec, set_auth_parameters)
881 # UnixWare 7.x has its getspnam in -lgen
882 AC_LIBTESTFUNC(gen, getspnam)
884 AC_LIBTESTFUNC(security, getspnam)
885 AC_LIBTESTFUNC(sec, getspnam)
887 AC_LIBTESTFUNC(security, bigcrypt)
888 AC_LIBTESTFUNC(sec, bigcrypt)
890 AC_LIBTESTFUNC(security, getprpwnam)
891 AC_LIBTESTFUNC(sec, getprpwnam)
893 # this bit needs to be modified for each OS that is suported by
894 # smbwrapper. You need to specify how to created a shared library and
895 # how to compile C code to produce PIC object files
897 # these are the defaults, good for lots of systems
898 HOST_OS="$host_os"
899 LDSHFLAGS="-shared"
900 SONAMEFLAG="#"
901 SHLD="\${CC}"
902 PICFLAG=""
903 PICSUFFIX="po"
904 POBAD_CC="#"
905 SHLIBEXT="so"
906 # Assume non-shared by default and override below
907 BLDSHARED="false"
908 AC_MSG_CHECKING([ability to build shared libraries])
910 # and these are for particular systems
911 case "$host_os" in
912                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
913                         BLDSHARED="true"
914                         LDSHFLAGS="-shared" 
915                         DYNEXP="-Wl,--export-dynamic"
916                         PICFLAG="-fPIC"
917                         SONAMEFLAG="-Wl,-soname="
918                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
919                         ;;
920                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
921                         BLDSHARED="true"
922                         LDSHFLAGS="-G"
923                         SONAMEFLAG="-h "
924                         if test "${GCC}" = "yes"; then
925                                 PICFLAG="-fPIC"
926                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
927                                         DYNEXP="-Wl,-E"
928                                 fi
929                         else
930                                 PICFLAG="-KPIC"
931                                 ## ${CFLAGS} added for building 64-bit shared 
932                                 ## libs using Sun's Compiler
933                                 LDSHFLAGS="-G \${CFLAGS}"
934                                 POBAD_CC=""
935                                 PICSUFFIX="po.o"
936                         fi
937                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
938                         ;;
939                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
940                         BLDSHARED="true"
941                         LDSHFLAGS="-G"
942                         SONAMEFLAG="-Wl,-h,"
943                         PICFLAG="-KPIC"   # Is this correct for SunOS
944                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
945                         ;;
946                 *freebsd*)  BLDSHARED="true"
947                         LDSHFLAGS="-shared"
948                         DYNEXP="-Wl,--export-dynamic"
949                         SONAMEFLAG="-Wl,-soname,"
950                         PICFLAG="-fPIC -DPIC"
951                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
952                         ;;
953                 *openbsd*)  BLDSHARED="true"
954                         LDSHFLAGS="-shared"
955                         DYNEXP="-Wl,-Bdynamic"
956                         SONAMEFLAG="-Wl,-soname,"
957                         PICFLAG="-fPIC"
958                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
959                         ;;
960                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
961                         case "$host_os" in
962                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
963                         ;;
964                         esac
965                         ATTEMPT_WRAP32_BUILD=yes
966                         BLDSHARED="true"
967                         LDSHFLAGS="-set_version sgi1.0 -shared"
968                         SONAMEFLAG="-soname "
969                         SHLD="\${LD}"
970                         if test "${GCC}" = "yes"; then
971                                 PICFLAG="-fPIC"
972                         else 
973                                 PICFLAG="-KPIC"
974                         fi
975                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
976                         ;;
977                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
978                         BLDSHARED="true"
979                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry"
980                         DYNEXP="-Wl,-brtl,-bexpall"
981                         PICFLAG="-O2"
982                         if test "${GCC}" != "yes"; then
983                                 ## for funky AIX compiler using strncpy()
984                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
985                         fi
987                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
988                         ;;
989                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
990                         SHLIBEXT="sl"
991                         # Use special PIC flags for the native HP-UX compiler.
992                         if test $ac_cv_prog_cc_Ae = yes; then
993                                 BLDSHARED="true"
994                                 SHLD="/usr/bin/ld"
995                                 LDSHFLAGS="-B symbolic -b -z"
996                                 SONAMEFLAG="+h "
997                                 PICFLAG="+z"
998                         fi
999                         DYNEXP="-Wl,-E"
1000                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1001                         ;;
1002                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1003                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1004                         ;;
1005                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1006                         BLDSHARED="true"
1007                         LDSHFLAGS="-shared"
1008                         SONAMEFLAG="-Wl,-soname,"
1009                         PICFLAG="-fPIC"
1010                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1011                         ;;
1012                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1013                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1014                         ;;
1015                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1016                         BLDSHARED="true"
1017                         LDSHFLAGS="-shared"
1018                         SONAMEFLAG="-Wl,-soname,"
1019                         PICFLAG="-KPIC"
1020                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1021                         ;;
1022                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1023                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1024                         ;;
1025                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1026                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1027                         ;;
1028                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1029                         case "$host" in
1030                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1031                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1032                                         fi
1033                                         LDSHFLAGS="-G"
1034                                         DYNEXP="-Bexport"
1035                                 ;;
1036                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1037                         esac
1038                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1039                         ;;
1041                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1042                         if [ test "$GCC" != yes ]; then
1043                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1044                         fi
1045                         LDSHFLAGS="-G"
1046                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1047                         ;;
1048                 *)
1049                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1050                         ;;
1051 esac
1052 AC_SUBST(DYNEXP)
1053 AC_MSG_RESULT($BLDSHARED)
1054 AC_MSG_CHECKING([linker flags for shared libraries])
1055 AC_MSG_RESULT([$LDSHFLAGS])
1056 AC_MSG_CHECKING([compiler flags for position-independent code])
1057 AC_MSG_RESULT([$PICFLAGS])
1059 #######################################################
1060 # test whether building a shared library actually works
1061 if test $BLDSHARED = true; then
1062 AC_CACHE_CHECK([whether building shared libraries actually works], 
1063                [ac_cv_shlib_works],[
1064    ac_cv_shlib_works=no
1065    # try building a trivial shared library
1066    if test "$PICSUFFIX" = "po"; then
1067      $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.po ${srcdir-.}/tests/shlib.c &&
1068        $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o shlib.so shlib.po &&
1069        ac_cv_shlib_works=yes
1070    else
1071      $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c &&
1072        mv shlib.$PICSUFFIX shlib.po &&
1073        $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o shlib.so shlib.po &&
1074        ac_cv_shlib_works=yes
1075    fi
1076    rm -f shlib.so shlib.po
1078 if test $ac_cv_shlib_works = no; then
1079    BLDSHARED=false
1083 # this updates our target list if we can build shared libs
1084 if test $BLDSHARED = true; then
1085    LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
1086 else
1087    LIBSMBCLIENT_SHARED=
1090 ################
1092 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1093 AC_TRY_RUN([#include <stdio.h>
1094 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1095 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1096 if test x"$samba_cv_have_longlong" = x"yes"; then
1097     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1101 # Check if the compiler supports the LL prefix on long long integers.
1102 # AIX needs this.
1104 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1105     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1106         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1107 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1108    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1111   
1112 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1113 AC_TRY_RUN([#include <stdio.h>
1114 #include <sys/stat.h>
1115 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1116 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1117 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1118     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1121 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1122 AC_TRY_RUN([
1123 #if defined(HAVE_UNISTD_H)
1124 #include <unistd.h>
1125 #endif
1126 #include <stdio.h>
1127 #include <sys/stat.h>
1128 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1129 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1130 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1131     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1134 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1135 AC_TRY_RUN([#include <stdio.h>
1136 #include <sys/stat.h>
1137 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1138 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1139 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1140     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1143 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1144 AC_TRY_RUN([
1145 #if defined(HAVE_UNISTD_H)
1146 #include <unistd.h>
1147 #endif
1148 #include <stdio.h>
1149 #include <sys/stat.h>
1150 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1151 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1152 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1153     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1156 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1157 AC_TRY_RUN([
1158 #if defined(HAVE_UNISTD_H)
1159 #include <unistd.h>
1160 #endif
1161 #include <stdio.h>
1162 #include <sys/stat.h>
1163 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1164 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1165 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1166     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1169 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1170 AC_TRY_COMPILE([
1171 #if defined(HAVE_UNISTD_H)
1172 #include <unistd.h>
1173 #endif
1174 #include <sys/types.h>
1175 #include <dirent.h>],
1176 [struct dirent64 de;],
1177 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1178 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1179     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1182 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1183 AC_TRY_RUN([
1184 #if defined(HAVE_UNISTD_H)
1185 #include <unistd.h>
1186 #endif
1187 #include <sys/types.h>
1188 main() { dev_t dev; int i = major(dev); return 0; }],
1189 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1190 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1191     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1194 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1195 AC_TRY_RUN([
1196 #if defined(HAVE_UNISTD_H)
1197 #include <unistd.h>
1198 #endif
1199 #include <sys/types.h>
1200 main() { dev_t dev; int i = minor(dev); return 0; }],
1201 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1202 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1203     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1206 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1207 AC_TRY_RUN([#include <stdio.h>
1208 main() { char c; c=250; exit((c > 0)?0:1); }],
1209 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1210 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1211     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1214 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1215 AC_TRY_COMPILE([#include <sys/types.h>
1216 #include <sys/socket.h>
1217 #include <netinet/in.h>],
1218 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1219 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1220 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1221     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
1224 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1225 AC_TRY_COMPILE([#include <sys/types.h>
1226 #include <dirent.h>
1227 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1228 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1229 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1230     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1233 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1234 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1235 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1236 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1237     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1240 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1241 AC_TRY_RUN([
1242 #include <sys/time.h>
1243 #include <unistd.h>
1244 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1245            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1246 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1247     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
1250 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE_VA_COPY,[
1251 AC_TRY_LINK([#include <stdarg.h>
1252 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1253 samba_cv_HAVE_VA_COPY=yes,samba_cv_HAVE_VA_COPY=no)])
1254 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1255     AC_DEFINE(HAVE_VA_COPY,1,[Whether __va_copy() is available])
1258 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1259 AC_TRY_RUN([
1260 #include <sys/types.h>
1261 #include <stdarg.h>
1262 void foo(const char *format, ...) { 
1263        va_list ap;
1264        int len;
1265        char buf[5];
1267        va_start(ap, format);
1268        len = vsnprintf(buf, 0, format, ap);
1269        va_end(ap);
1270        if (len != 5) exit(1);
1272        va_start(ap, format);
1273        len = vsnprintf(0, 0, format, ap);
1274        va_end(ap);
1275        if (len != 5) exit(1);
1277        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1279        exit(0);
1281 main() { foo("hello"); }
1283 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1284 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1285     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
1288 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1289 AC_TRY_RUN([#include <sys/types.h>
1290 #include <dirent.h>
1291 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1292 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1293 di->d_name[0] == 0) exit(0); exit(1);} ],
1294 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1295 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1296     AC_DEFINE(HAVE_BROKEN_READDIR,1,[Whether readdir() is broken])
1299 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1300 AC_TRY_COMPILE([#include <sys/types.h>
1301 #include <utime.h>],
1302 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1303 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1304 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1305     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
1308 dnl  utmp and utmpx come in many flavours
1309 dnl  We need to check for many of them
1310 dnl  But we don't need to do each and every one, because our code uses
1311 dnl  mostly just the utmp (not utmpx) fields.
1313 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1315 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1316 AC_TRY_COMPILE([#include <sys/types.h>
1317 #include <utmp.h>],
1318 [struct utmp ut;  ut.ut_name[0] = 'a';],
1319 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1320 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1321     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
1322 fi 
1324 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1325 AC_TRY_COMPILE([#include <sys/types.h>
1326 #include <utmp.h>],
1327 [struct utmp ut;  ut.ut_user[0] = 'a';],
1328 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1329 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1330     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
1331 fi 
1333 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1334 AC_TRY_COMPILE([#include <sys/types.h>
1335 #include <utmp.h>],
1336 [struct utmp ut;  ut.ut_id[0] = 'a';],
1337 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1338 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1339     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
1340 fi 
1342 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1343 AC_TRY_COMPILE([#include <sys/types.h>
1344 #include <utmp.h>],
1345 [struct utmp ut;  ut.ut_host[0] = 'a';],
1346 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1347 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1348     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
1349 fi 
1351 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1352 AC_TRY_COMPILE([#include <sys/types.h>
1353 #include <utmp.h>],
1354 [struct utmp ut;  time_t t; ut.ut_time = t;],
1355 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1356 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1357     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
1358 fi 
1360 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1361 AC_TRY_COMPILE([#include <sys/types.h>
1362 #include <utmp.h>],
1363 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1364 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1365 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1366     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
1367 fi 
1369 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1370 AC_TRY_COMPILE([#include <sys/types.h>
1371 #include <utmp.h>],
1372 [struct utmp ut;  ut.ut_type = 0;],
1373 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1374 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1375     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
1376 fi 
1378 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1379 AC_TRY_COMPILE([#include <sys/types.h>
1380 #include <utmp.h>],
1381 [struct utmp ut;  ut.ut_pid = 0;],
1382 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1383 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1384     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
1385 fi 
1387 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1388 AC_TRY_COMPILE([#include <sys/types.h>
1389 #include <utmp.h>],
1390 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1391 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1392 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1393     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
1394 fi 
1396 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1397 AC_TRY_COMPILE([#include <sys/types.h>
1398 #include <utmp.h>],
1399 [struct utmp ut;  ut.ut_addr = 0;],
1400 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1401 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1402     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
1403 fi 
1405 if test x$ac_cv_func_pututline = xyes ; then
1406   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1407   AC_TRY_COMPILE([#include <sys/types.h>
1408 #include <utmp.h>],
1409   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1410   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1411   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1412       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
1413   fi
1416 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1417 AC_TRY_COMPILE([#include <sys/types.h>
1418 #include <utmpx.h>],
1419 [struct utmpx ux;  ux.ut_syslen = 0;],
1420 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1421 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1422     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
1423 fi 
1426 #################################################
1427 # check for libiconv support
1428 AC_MSG_CHECKING(whether to use libiconv)
1429 AC_ARG_WITH(libiconv,
1430 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
1431 [ case "$withval" in
1432   no)
1433     AC_MSG_RESULT(no)
1434     ;;
1435   *)
1436     AC_MSG_RESULT(yes)
1437     CFLAGS="$CFLAGS -I$withval/include"
1438     LDFLAGS="$LDFLAGS -L$withval/lib"
1439     AC_CHECK_LIB(iconv, iconv_open)
1440     AC_DEFINE_UNQUOTED(WITH_LIBICONV, "${withval}",[Path to iconv])
1441     ;;
1442   esac ],
1443   AC_MSG_RESULT(no)
1447 ############
1448 # check for iconv in libc
1449 AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
1450 AC_TRY_RUN([
1451 #include <iconv.h>
1452 main() {
1453        iconv_t cd = iconv_open("ASCII", "UCS-2LE");
1454        if (cd == 0 || cd == (iconv_t)-1) return -1;
1455        return 0;
1458 samba_cv_HAVE_NATIVE_ICONV=yes,samba_cv_HAVE_NATIVE_ICONV=no,samba_cv_HAVE_NATIVE_ICONV=cross)])
1459 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
1460     AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
1464 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1465 AC_TRY_RUN([
1466 #include <sys/types.h>
1467 #include <fcntl.h>
1468 #ifndef F_GETLEASE
1469 #define F_GETLEASE      1025
1470 #endif
1471 main() {
1472        int fd = open("/dev/null", O_RDONLY);
1473        return fcntl(fd, F_GETLEASE, 0) == -1;
1476 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1477 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1478     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
1481 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1482 AC_TRY_RUN([
1483 #include <sys/types.h>
1484 #include <fcntl.h>
1485 #include <signal.h>
1486 #ifndef F_NOTIFY
1487 #define F_NOTIFY 1026
1488 #endif
1489 main() {
1490         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1493 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1494 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
1495     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
1498 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1499 AC_TRY_RUN([
1500 #include <sys/types.h>
1501 #include <fcntl.h>
1502 #include <signal.h>
1503 #include <sys/file.h>
1504 #ifndef LOCK_MAND
1505 #define LOCK_MAND       32
1506 #define LOCK_READ       64
1507 #endif
1508 main() {
1509         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1512 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1513 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1514     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
1520 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1521 AC_TRY_COMPILE([#include <sys/types.h>
1522 #include <fcntl.h>],
1523 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1524 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1525 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1526     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
1529 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1530 AC_TRY_RUN([#include <sys/types.h>
1531 #include <sys/capability.h>
1532 main() {
1533  cap_t cap;
1534  if ((cap = cap_get_proc()) == NULL)
1535    exit(1);
1536  cap->cap_effective |= CAP_NETWORK_MGT;
1537  cap->cap_inheritable |= CAP_NETWORK_MGT;
1538  cap_set_proc(cap);
1539  exit(0);
1542 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1543 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1544     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
1548 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1549 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1552 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1553 AC_TRY_COMPILE([#include <sys/types.h>
1554 #if defined(HAVE_RPC_RPC_H)
1555 #include <rpc/rpc.h>
1556 #endif],
1557 [int16 testvar;],
1558 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1559 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1560     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
1563 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1564 AC_TRY_COMPILE([#include <sys/types.h>
1565 #if defined(HAVE_RPC_RPC_H)
1566 #include <rpc/rpc.h>
1567 #endif],
1568 [uint16 testvar;],
1569 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1570 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1571     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
1574 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1575 AC_TRY_COMPILE([#include <sys/types.h>
1576 #if defined(HAVE_RPC_RPC_H)
1577 #include <rpc/rpc.h>
1578 #endif],
1579 [int32 testvar;],
1580 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1581 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1582     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
1585 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1586 AC_TRY_COMPILE([#include <sys/types.h>
1587 #if defined(HAVE_RPC_RPC_H)
1588 #include <rpc/rpc.h>
1589 #endif],
1590 [uint32 testvar;],
1591 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1592 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1593     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
1597 dnl Some systems (SCO) have a problem including
1598 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1599 dnl as a #define in <prot.h> and as part of an enum
1600 dnl in <rpc/rpc.h>.
1603 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1604 AC_TRY_COMPILE([#include <sys/types.h>
1605 #ifdef HAVE_SYS_SECURITY_H
1606 #include <sys/security.h>
1607 #include <prot.h>
1608 #endif  /* HAVE_SYS_SECURITY_H */
1609 #if defined(HAVE_RPC_RPC_H)
1610 #include <rpc/rpc.h>
1611 #endif],
1612 [int testvar;],
1613 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1614 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1615     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
1618 AC_MSG_CHECKING([for test routines])
1619 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1620            AC_MSG_RESULT(yes),
1621            AC_MSG_ERROR([cant find test code. Aborting config]),
1622            AC_MSG_WARN([cannot run when cross-compiling]))
1624 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1625 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1626            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1627 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1628     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
1631 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
1632 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
1633            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
1634            samba_cv_HAVE_WORKING_AF_LOCAL=no,
1635            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
1636 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
1637 then
1638     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
1641 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1642 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1643            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1644 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1645     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
1648 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1649 SAVE_CPPFLAGS="$CPPFLAGS"
1650 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper"
1651 AC_TRY_COMPILE([
1652 #define REPLACE_GETPASS 1
1653 #define NO_CONFIG_H 1
1654 #define main dont_declare_main
1655 #include "${srcdir-.}/lib/getsmbpass.c"
1656 #undef main
1657 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1658 CPPFLAGS="$SAVE_CPPFLAGS"
1660 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
1661         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
1664 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
1665 AC_TRY_RUN([
1666 #include <stdio.h>
1667 #include <sys/types.h>
1668 #include <netinet/in.h>
1669 #ifdef HAVE_ARPA_INET_H
1670 #include <arpa/inet.h>
1671 #endif
1672 main() { struct in_addr ip; ip.s_addr = 0x12345678;
1673 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
1674     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
1675 exit(1);}],
1676            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
1677 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
1678     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
1681 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
1682 AC_TRY_RUN([#include <stdlib.h>
1683 #include <sys/types.h>
1684 #include <sys/stat.h>
1685 #include <unistd.h>
1686 main() { 
1687   struct stat st;
1688   char tpl[20]="/tmp/test.XXXXXX"; 
1689   int fd = mkstemp(tpl); 
1690   if (fd == -1) exit(1);
1691   unlink(tpl);
1692   if (fstat(fd, &st) != 0) exit(1);
1693   if ((st.st_mode & 0777) != 0600) exit(1);
1694   exit(0);
1696 samba_cv_HAVE_SECURE_MKSTEMP=yes,
1697 samba_cv_HAVE_SECURE_MKSTEMP=no,
1698 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
1699 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
1700     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
1703 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
1704 AC_TRY_RUN([#include <unistd.h>
1705 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
1706 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
1707 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
1708     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
1711 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
1712 AC_TRY_RUN([main() { exit(getuid() != 0); }],
1713            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
1714 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
1715     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
1716 else
1717     AC_MSG_WARN(running as non-root will disable some tests)
1720 ##################
1721 # look for a method of finding the list of network interfaces
1722 iface=no;
1723 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
1724 AC_TRY_RUN([
1725 #define HAVE_IFACE_AIX 1
1726 #define AUTOCONF_TEST 1
1727 #include "confdefs.h"
1728 #include "${srcdir-.}/lib/interfaces.c"],
1729            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
1730 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
1731     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
1734 if test $iface = no; then
1735 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
1736 AC_TRY_RUN([
1737 #define HAVE_IFACE_IFCONF 1
1738 #define AUTOCONF_TEST 1
1739 #include "confdefs.h"
1740 #include "${srcdir-.}/lib/interfaces.c"],
1741            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
1742 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
1743     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
1747 if test $iface = no; then
1748 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
1749 AC_TRY_RUN([
1750 #define HAVE_IFACE_IFREQ 1
1751 #define AUTOCONF_TEST 1
1752 #include "confdefs.h"
1753 #include "${srcdir-.}/lib/interfaces.c"],
1754            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
1755 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
1756     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
1761 ################################################
1762 # look for a method of setting the effective uid
1763 seteuid=no;
1764 if test $seteuid = no; then
1765 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
1766 AC_TRY_RUN([
1767 #define AUTOCONF_TEST 1
1768 #define USE_SETRESUID 1
1769 #include "confdefs.h"
1770 #include "${srcdir-.}/lib/util_sec.c"],
1771            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
1772 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
1773     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
1778 if test $seteuid = no; then
1779 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
1780 AC_TRY_RUN([
1781 #define AUTOCONF_TEST 1
1782 #define USE_SETREUID 1
1783 #include "confdefs.h"
1784 #include "${srcdir-.}/lib/util_sec.c"],
1785            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
1786 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
1787     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
1791 if test $seteuid = no; then
1792 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
1793 AC_TRY_RUN([
1794 #define AUTOCONF_TEST 1
1795 #define USE_SETEUID 1
1796 #include "confdefs.h"
1797 #include "${srcdir-.}/lib/util_sec.c"],
1798            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
1799 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
1800     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
1804 if test $seteuid = no; then
1805 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
1806 AC_TRY_RUN([
1807 #define AUTOCONF_TEST 1
1808 #define USE_SETUIDX 1
1809 #include "confdefs.h"
1810 #include "${srcdir-.}/lib/util_sec.c"],
1811            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
1812 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
1813     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
1818 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
1819 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
1820            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
1821 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
1822     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
1825 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
1826 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
1827            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
1828 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
1829     AC_DEFINE(FTRUNCATE_NEEDS_ROOT,1,[Whether ftruncate() needs root])
1832 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
1833 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
1834            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
1835 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
1836     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
1839 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
1840 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
1841            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
1842 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
1843     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
1845 else
1848 dnl Don't check for 64 bit fcntl locking if we know that the
1849 dnl glibc2.1 broken check has succeeded.
1850 dnl 
1852   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
1853   AC_TRY_RUN([
1854 #if defined(HAVE_UNISTD_H)
1855 #include <unistd.h>
1856 #endif
1857 #include <stdio.h>
1858 #include <stdlib.h>
1860 #ifdef HAVE_FCNTL_H
1861 #include <fcntl.h>
1862 #endif
1864 #ifdef HAVE_SYS_FCNTL_H
1865 #include <sys/fcntl.h>
1866 #endif
1867 main() { struct flock64 fl64;
1868 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
1869 exit(0);
1870 #else
1871 exit(1);
1872 #endif
1874        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
1876   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
1877       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
1878   fi
1881 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
1882 AC_TRY_COMPILE([#include <sys/types.h>
1883 #include <sys/stat.h>
1884 #include <unistd.h>],
1885 [struct stat st;  st.st_blocks = 0;],
1886 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
1887 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
1888     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
1889 fi 
1891 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
1892 AC_TRY_COMPILE([#include <sys/types.h>
1893 #include <sys/stat.h>
1894 #include <unistd.h>],
1895 [struct stat st;  st.st_blksize = 0;],
1896 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
1897 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
1898     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
1901 case "$host_os" in
1902 *linux*)
1903 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
1904 AC_TRY_COMPILE([
1905 #ifdef HAVE_SYS_VFS_H
1906 #include <sys/vfs.h>
1907 #endif
1908 #ifdef HAVE_SYS_CAPABILITY_H
1909 #include <sys/capability.h>
1910 #endif
1911 ],[int i;],
1912    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
1913 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
1914    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
1917 esac
1919 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
1920 AC_TRY_COMPILE([#include <sys/acl.h>
1921 #if defined(HAVE_RPCSVC_NIS_H)
1922 #include <rpcsvc/nis.h>
1923 #endif],
1924 [int i;],
1925 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
1926 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
1927         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
1931 #################################################
1932 # check for smbwrapper support
1933 AC_MSG_CHECKING(whether to use smbwrapper)
1934 AC_ARG_WITH(smbwrapper,
1935 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
1936 [ case "$withval" in
1937   yes)
1938     AC_MSG_RESULT(yes)
1939     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
1940         WRAPPROG="bin/smbsh\$(EXEEXT)"
1941         WRAP="bin/smbwrapper.$SHLIBEXT"
1943         if test x$ATTEMPT_WRAP32_BUILD = x; then
1944                 WRAP32=""
1945         else
1946                         WRAP32=bin/smbwrapper.32.$SHLIBEXT
1947         fi
1949 # Conditions under which smbwrapper should not be built.
1951         if test x$PICFLAG = x; then
1952            echo No support for PIC code - disabling smbwrapper and smbsh
1953            WRAPPROG=""
1954            WRAP=""
1955            WRAP32=""
1956         elif test x$ac_cv_func_syscall = xno; then
1957            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
1958            WRAPPROG=""
1959            WRAP=""
1960            WRAP32=""
1961         fi
1962         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP $WRAP32"
1963         SMBWRAPPER="$WRAPPROG $WRAP $WRAP32"
1964     ;;
1965   *)
1966     AC_MSG_RESULT(no)
1967     ;;
1968   esac ],
1969   AC_MSG_RESULT(no)
1972 #################################################
1973 # check for AFS clear-text auth support
1974 AC_MSG_CHECKING(whether to use AFS clear-text auth)
1975 AC_ARG_WITH(afs,
1976 [  --with-afs              Include AFS clear-text auth support (default=no) ],
1977 [ case "$withval" in
1978   yes)
1979     AC_MSG_RESULT(yes)
1980     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
1981     ;;
1982   *)
1983     AC_MSG_RESULT(no)
1984     ;;
1985   esac ],
1986   AC_MSG_RESULT(no)
1990 #################################################
1991 # check for the DFS clear-text auth system
1992 AC_MSG_CHECKING(whether to use DFS clear-text auth)
1993 AC_ARG_WITH(dfs,
1994 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
1995 [ case "$withval" in
1996   yes)
1997     AC_MSG_RESULT(yes)
1998     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
1999     ;;
2000   *)
2001     AC_MSG_RESULT(no)
2002     ;;
2003   esac ],
2004   AC_MSG_RESULT(no)
2007 #################################################
2008 # active directory support
2010 with_ads_support=yes
2011 AC_MSG_CHECKING([whether to use Active Directory])
2013 AC_ARG_WITH(ads,
2014 [   --with-ads  Active Directory support (default yes)],
2015 [ case "$withval" in
2016     no)
2017         with_ads_support=no
2018         ;;
2019   esac ])
2021 if test x"$with_ads_support" = x"yes"; then
2022    AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
2025 AC_MSG_RESULT($with_ads_support)
2027 FOUND_KRB5=no
2028 if test x"$with_ads_support" = x"yes"; then
2030   #################################################
2031   # check for location of Kerberos 5 install
2032   AC_MSG_CHECKING(for kerberos 5 install path)
2033   AC_ARG_WITH(krb5,
2034   [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
2035   [ case "$withval" in
2036     no)
2037       AC_MSG_RESULT(no)
2038       ;;
2039     *)
2040       AC_MSG_RESULT(yes)
2041       LIBS="$LIBS -lkrb5"
2042       CFLAGS="$CFLAGS -I$withval/include"
2043       CPPFLAGS="$CPPFLAGS -I$withval/include"
2044       LDFLAGS="$LDFLAGS -L$withval/lib"
2045       FOUND_KRB5=yes
2046       ;;
2047     esac ],
2048     AC_MSG_RESULT(no)
2049   )
2052 if test x$FOUND_KRB5 = x"no"; then
2053 #################################################
2054 # see if this box has the SuSE location for the heimdal kerberos implementation
2055 AC_MSG_CHECKING(for /usr/include/heimdal)
2056 if test -d /usr/include/heimdal; then
2057     CFLAGS="$CFLAGS -I/usr/include/heimdal"
2058     CPPFLAGS="$CPPFLAGS -I/usr/include/heimdal"
2059     AC_MSG_RESULT(yes)
2060 else
2061     AC_MSG_RESULT(no)
2066 if test x$FOUND_KRB5 = x"no"; then
2067 #################################################
2068 # see if this box has the RedHat location for kerberos
2069 AC_MSG_CHECKING(for /usr/kerberos)
2070 if test -d /usr/kerberos; then
2071     LDFLAGS="$LDFLAGS -L/usr/kerberos/lib"
2072     CFLAGS="$CFLAGS -I/usr/kerberos/include"
2073     CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
2074     AC_MSG_RESULT(yes)
2075 else
2076     AC_MSG_RESULT(no)
2081   # now check for krb5.h. Some systems have the libraries without the headers!
2082   # note that this check is done here to allow for different kerberos
2083   # include paths
2084   AC_CHECK_HEADERS(krb5.h)
2086   # now check for gssapi headers.  This is also done here to allow for
2087   # different kerberos include paths
2088   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
2090   ##################################################################
2091   # we might need the k5crypto and com_err libraries on some systems
2092   AC_CHECK_LIB(com_err, _et_list, [LIBS="$LIBS -lcom_err"])
2093   AC_CHECK_LIB(k5crypto, krb5_encrypt_data, [LIBS="$LIBS -lk5crypto"])
2094   # Heimdal checks.
2095   AC_CHECK_LIB(crypto, des_set_key, [LIBS="$LIBS -lcrypto"])
2096   AC_CHECK_LIB(asn1, copy_Authenticator, [LIBS="$LIBS -lasn1 -lroken"])
2098   ########################################################
2099   # now see if we can find the krb5 libs in standard paths
2100   # or as specified above
2101   AC_CHECK_LIB(krb5, krb5_mk_req_extended, [LIBS="$LIBS -lkrb5";
2102         AC_DEFINE(HAVE_KRB5,1,[Whether KRB5 is available])])
2104   ########################################################
2105   # now see if we can find the gssapi libs in standard paths
2106   AC_CHECK_LIB(gssapi_krb5, gss_display_status, [LIBS="$LIBS -lgssapi_krb5";
2107         AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])])
2108   # Heimdal checks.
2109   AC_CHECK_LIB(gssapi, gss_display_status, [LIBS="$LIBS -lgssapi";
2110         AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])])
2113 ########################################################
2114 # Compile with LDAP support?
2116 with_ldap_support=yes
2117 AC_MSG_CHECKING([whether to use LDAP])
2119 AC_ARG_WITH(ldap,
2120 [   --with-ldap  LDAP support (default yes)],
2121 [ case "$withval" in
2122     no)
2123         with_ldap_support=no
2124         ;;
2125   esac ])
2127 AC_MSG_RESULT($with_ldap_support)
2129 if test x"$with_ldap_support" = x"yes"; then
2131   ##################################################################
2132   # we might need the lber lib on some systems. To avoid link errors
2133   # this test must be before the libldap test
2134   AC_CHECK_LIB(lber, ber_scanf, [LIBS="$LIBS -llber"])
2136   ########################################################
2137   # now see if we can find the ldap libs in standard paths
2138   if test x$have_ldap != xyes; then
2139   AC_CHECK_LIB(ldap, ldap_domain2hostlist, [LIBS="$LIBS -lldap";
2140         AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])])
2142         ########################################################
2143         # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2144         # Check found in pam_ldap 145.
2145         AC_CHECK_FUNCS(ldap_set_rebind_proc)
2146         AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, pam_ldap_cv_ldap_set_rebind_proc, [
2147         AC_TRY_COMPILE([
2148         #include <lber.h>
2149         #include <ldap.h>], [ldap_set_rebind_proc(0, 0, 0);], [pam_ldap_cv_ldap_set_rebind_proc=3], [pam_ldap_cv_ldap_set_rebind_proc=2]) ])
2150         AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $pam_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
2151   fi
2154 ########################################################
2155 # Compile with MySQL support?
2156 AM_PATH_MYSQL([0.11.0],[MODULE_MYSQL=bin/mysql.so],[MODULE_MYSQL=])
2157 CFLAGS="$CFLAGS $MYSQL_CFLAGS"
2158 AC_SUBST(MODULE_MYSQL)
2160 ########################################################
2161 # Compile with XML support?
2162 AM_PATH_XML2([2.0.0],[MODULE_XML=bin/xml.so],[MODULE_XML=])
2163 CFLAGS="$CFLAGS $XML_CFLAGS"
2164 AC_SUBST(MODULE_XML)
2166 #################################################
2167 # check for automount support
2168 AC_MSG_CHECKING(whether to use automount)
2169 AC_ARG_WITH(automount,
2170 [  --with-automount        Include automount support (default=no)],
2171 [ case "$withval" in
2172   yes)
2173     AC_MSG_RESULT(yes)
2174     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
2175     ;;
2176   *)
2177     AC_MSG_RESULT(no)
2178     ;;
2179   esac ],
2180   AC_MSG_RESULT(no)
2183 #################################################
2184 # check for smbmount support
2185 AC_MSG_CHECKING(whether to use smbmount)
2186 AC_ARG_WITH(smbmount,
2187 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
2188 [ case "$withval" in
2189   yes)
2190         case "$host_os" in
2191         *linux*)
2192                 AC_MSG_RESULT(yes)
2193                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
2194                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
2195                 ;;
2196         *)
2197                 AC_MSG_ERROR(not on a linux system!)
2198                 ;;
2199         esac
2200     ;;
2201   *)
2202     AC_MSG_RESULT(no)
2203     ;;
2204   esac ],
2205   AC_MSG_RESULT(no)
2209 #################################################
2210 # check for a PAM clear-text auth, accounts, password and session support
2211 with_pam_for_crypt=no
2212 AC_MSG_CHECKING(whether to use PAM)
2213 AC_ARG_WITH(pam,
2214 [  --with-pam              Include PAM support (default=no)],
2215 [ case "$withval" in
2216   yes)
2217     AC_MSG_RESULT(yes)
2218     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
2219     AUTHLIBS="$AUTHLIBS -lpam"
2220     with_pam_for_crypt=yes
2221     ;;
2222   *)
2223     AC_MSG_RESULT(no)
2224     ;;
2225   esac ],
2226   AC_MSG_RESULT(no)
2229 # we can't build a pam module if we don't have pam.
2230 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
2232 #################################################
2233 # check for pam_smbpass support
2234 AC_MSG_CHECKING(whether to use pam_smbpass)
2235 AC_ARG_WITH(pam_smbpass,
2236 [  --with-pam_smbpass      Build a PAM module to allow other applications to use our smbpasswd file (default=no)],
2237 [ case "$withval" in
2238   yes)
2239     AC_MSG_RESULT(yes)
2241 # Conditions under which pam_smbpass should not be built.
2243        if test x$PICFLAG = x; then
2244           AC_MSG_RESULT([No support for PIC code - disabling pam_smbpass])
2245        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
2246           AC_MSG_RESULT([No libpam found -- disabling pam_smbpass])
2247        else
2248           SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.so"
2249        fi
2250     ;;
2251   *)
2252     AC_MSG_RESULT(no)
2253     ;;
2254   esac ],
2255   AC_MSG_RESULT(no)
2259 ###############################################
2260 # test for where we get crypt() from, but only
2261 # if not using PAM
2262 if test x"$with_pam_for_crypt" = x"no"; then
2263 AC_CHECK_FUNCS(crypt)
2264 if test x"$ac_cv_func_crypt" = x"no"; then
2265     AC_CHECK_LIB(crypt, crypt, [AUTHLIBS="$AUTHLIBS -lcrypt";
2266         AC_DEFINE(HAVE_CRYPT,1,[Whether crypt() is available])])
2271 ## moved after the check for -lcrypt in order to
2272 ## ensure that the necessary libraries are included
2273 ## check checking for truncated salt.  Wrapped by the
2274 ## $with_pam_for_crypt variable as above   --jerry
2276 if test $with_pam_for_crypt = no; then
2277 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
2278 crypt_LIBS="$LIBS"
2279 LIBS="$AUTHLIBS $LIBS"
2280 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
2281         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
2282 LIBS="$crypt_LIBS"])
2283 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
2284         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
2288 # New experimental SAM system
2290 AC_MSG_CHECKING([whether to build the new (experimental) SAM database])
2291 AC_ARG_WITH(sam,
2292 [  --with-sam              Build new (experimental) SAM database (default=no)],
2293 [ case "$withval" in
2294   yes)
2295     AC_MSG_RESULT(yes)
2296     AC_DEFINE(WITH_SAM,1,[Whether to build the new (experimental) SAM database])
2297     ;;
2298   *)
2299     AC_MSG_RESULT(no)
2300     ;;
2301   esac ],
2302   AC_MSG_RESULT(no)
2306 ########################################################################################
2308 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
2310 ########################################################################################
2312 #################################################
2313 # check for a LDAP password database configuration backwards compatibility
2314 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
2315 AC_ARG_WITH(ldapsam,
2316 [  --with-ldapsam           Include LDAP SAM 2.2 compatible configuration (default=no)],
2317 [ case "$withval" in
2318   yes)
2319     AC_MSG_RESULT(yes)
2320     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatibel LDAP SAM configuration])
2321     ;;
2322   *)
2323     AC_MSG_RESULT(no)
2324     ;;
2325   esac ],
2326   AC_MSG_RESULT(no)
2329 #################################################
2330 # check for a TDB password database
2331 AC_MSG_CHECKING(whether to use TDB SAM database)
2332 AC_ARG_WITH(tdbsam,
2333 [  --with-tdbsam           Include experimental TDB SAM support (default=no)],
2334 [ case "$withval" in
2335   yes)
2336     AC_MSG_RESULT(yes)
2337     AC_DEFINE(WITH_TDB_SAM,1,[Whether to include experimental TDB SAM support])
2338     ;;
2339   *)
2340     AC_MSG_RESULT(no)
2341     ;;
2342   esac ],
2343   AC_MSG_RESULT(no)
2346 #################################################
2347 # check for a NISPLUS password database
2348 AC_MSG_CHECKING(whether to use NISPLUS SAM database)
2349 AC_ARG_WITH(nisplussam,
2350 [  --with-nisplussam       Include NISPLUS SAM support (default=no)],
2351 [ case "$withval" in
2352   yes)
2353     AC_MSG_RESULT(yes)
2354     AC_DEFINE(WITH_NISPLUS_SAM,1,[Whether to include nisplus SAM support])
2355     ;;
2356   *)
2357     AC_MSG_RESULT(no)
2358     ;;
2359   esac ],
2360   AC_MSG_RESULT(no)
2363 ########################################################################################
2365 ## END OF TESTS FOR SAM BACKENDS.  
2367 ########################################################################################
2369 #################################################
2370 # check for a NISPLUS_HOME support 
2371 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
2372 AC_ARG_WITH(nisplus-home,
2373 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
2374 [ case "$withval" in
2375   yes)
2376     AC_MSG_RESULT(yes)
2377     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
2378     ;;
2379   *)
2380     AC_MSG_RESULT(no)
2381     ;;
2382   esac ],
2383   AC_MSG_RESULT(no)
2386 #################################################
2387 # check for syslog logging
2388 AC_MSG_CHECKING(whether to use syslog logging)
2389 AC_ARG_WITH(syslog,
2390 [  --with-syslog           Include experimental SYSLOG support (default=no)],
2391 [ case "$withval" in
2392   yes)
2393     AC_MSG_RESULT(yes)
2394     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
2395     ;;
2396   *)
2397     AC_MSG_RESULT(no)
2398     ;;
2399   esac ],
2400   AC_MSG_RESULT(no)
2403 #################################################
2404 # check for a shared memory profiling support
2405 AC_MSG_CHECKING(whether to use profiling)
2406 AC_ARG_WITH(profiling-data,
2407 [  --with-profiling-data   Include gathering source code profile information (default=no)],
2408 [ case "$withval" in
2409   yes)
2410     AC_MSG_RESULT(yes)
2411     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
2412     ;;
2413   *)
2414     AC_MSG_RESULT(no)
2415     ;;
2416   esac ],
2417   AC_MSG_RESULT(no)
2421 #################################################
2422 # check for experimental disk-quotas support
2423 QUOTAOBJS=smbd/noquotas.o
2425 AC_MSG_CHECKING(whether to support disk-quotas)
2426 AC_ARG_WITH(quotas,
2427 [  --with-quotas           Include experimental disk-quota support (default=no)],
2428 [ case "$withval" in
2429   yes)
2430     AC_MSG_RESULT(yes)
2431     case "$host_os" in
2432       *linux*)
2433         # Check for kernel 2.4.x quota braindamage...
2434         AC_CACHE_CHECK([for linux 2.4.x quota braindamage..],samba_cv_linux_2_4_quota_braindamage, [
2435         AC_TRY_COMPILE([#include <stdio.h>
2436 #include <sys/types.h>
2437 #include <asm/types.h>
2438 #include <linux/quota.h>
2439 #include <mntent.h>
2440 #include <linux/unistd.h>],[struct mem_dqblk D;],
2441       samba_cv_linux_2_4_quota_braindamage=yes,samba_cv_linux_2_4_quota_braindamage=no)])
2442 if test x"$samba_cv_linux_2_4_quota_braindamage" = x"yes"; then
2443         AC_DEFINE(LINUX_QUOTAS_2,1,[linux 2.4.x quota braindamage])
2444 else
2445         AC_DEFINE(LINUX_QUOTAS_1,1,[linux quotas])
2447         ;;
2448       *)
2449         ;;
2450     esac
2451     QUOTAOBJS=smbd/quotas.o
2452     AC_DEFINE(WITH_QUOTAS,1,[Whether to include experimental quota support])
2453     ;;
2454   *)
2455     AC_MSG_RESULT(no)
2456     ;;
2457   esac ],
2458   AC_MSG_RESULT(no)
2460 AC_SUBST(QUOTAOBJS)
2462 #################################################
2463 # check for experimental utmp accounting
2465 AC_MSG_CHECKING(whether to support utmp accounting)
2466 AC_ARG_WITH(utmp,
2467 [  --with-utmp             Include experimental utmp accounting (default=no)],
2468 [ case "$withval" in
2469   yes)
2470     AC_MSG_RESULT(yes)
2471     AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
2472     ;;
2473   *)
2474     AC_MSG_RESULT(no)
2475     ;;
2476   esac ],
2477   AC_MSG_RESULT(no)
2480 #################################################
2481 # choose native language(s) of man pages
2482 AC_MSG_CHECKING(chosen man pages' language(s))
2483 AC_ARG_WITH(manpages-langs,
2484 [  --with-manpages-langs={en,ja,pl}  Choose man pages' language(s). (en)],
2485 [ case "$withval" in
2486   yes|no)
2487     AC_MSG_WARN(--with-manpages-langs called without argument - will use default)
2488     manlangs="en"
2489   ;;
2490   *)
2491     manlangs="$withval"
2492   ;;
2493   esac
2495   AC_MSG_RESULT($manlangs)
2496   manlangs=`echo $manlangs | sed "s/,/ /g"`   # replacing commas with spaces to produce a list
2497   AC_SUBST(manlangs)],
2499   [manlangs="en"
2500   AC_MSG_RESULT($manlangs)
2501   AC_SUBST(manlangs)]
2504 #################################################
2505 # should we build libsmbclient?
2507 LIBSMBCLIENT_SHARED=
2508 LIBSMBCLIENT=
2509 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
2510 AC_ARG_WITH(libsmbclient,
2511 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes)],
2512 [ case "$withval" in
2513   no) 
2514      AC_MSG_RESULT(no)
2515      ;;
2516   *)
2517      if test $BLDSHARED = true; then
2518         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
2519         LIBSMBCLIENT=libsmbclient
2520         AC_MSG_RESULT(yes)
2521      else
2522         AC_MSG_RESULT(no shared library support)
2523      fi
2524      ;;
2525   esac ],
2526   AC_MSG_RESULT(yes)
2530 #################################################
2531 # these tests are taken from the GNU fileutils package
2532 AC_CHECKING(how to get filesystem space usage)
2533 space=no
2535 # Test for statvfs64.
2536 if test $space = no; then
2537   # SVR4
2538   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
2539   [AC_TRY_RUN([
2540 #if defined(HAVE_UNISTD_H)
2541 #include <unistd.h>
2542 #endif
2543 #include <sys/types.h>
2544 #include <sys/statvfs.h>
2545   main ()
2546   {
2547     struct statvfs64 fsd;
2548     exit (statvfs64 (".", &fsd));
2549   }],
2550   fu_cv_sys_stat_statvfs64=yes,
2551   fu_cv_sys_stat_statvfs64=no,
2552   fu_cv_sys_stat_statvfs64=cross)])
2553   if test $fu_cv_sys_stat_statvfs64 = yes; then
2554     space=yes
2555     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
2556   fi
2559 # Perform only the link test since it seems there are no variants of the
2560 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
2561 # because that got a false positive on SCO OSR5.  Adding the declaration
2562 # of a `struct statvfs' causes this test to fail (as it should) on such
2563 # systems.  That system is reported to work fine with STAT_STATFS4 which
2564 # is what it gets when this test fails.
2565 if test $space = no; then
2566   # SVR4
2567   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
2568                  [AC_TRY_LINK([#include <sys/types.h>
2569 #include <sys/statvfs.h>],
2570                               [struct statvfs fsd; statvfs (0, &fsd);],
2571                               fu_cv_sys_stat_statvfs=yes,
2572                               fu_cv_sys_stat_statvfs=no)])
2573   if test $fu_cv_sys_stat_statvfs = yes; then
2574     space=yes
2575     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
2576   fi
2579 if test $space = no; then
2580   # DEC Alpha running OSF/1
2581   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
2582   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
2583   [AC_TRY_RUN([
2584 #include <sys/param.h>
2585 #include <sys/types.h>
2586 #include <sys/mount.h>
2587   main ()
2588   {
2589     struct statfs fsd;
2590     fsd.f_fsize = 0;
2591     exit (statfs (".", &fsd, sizeof (struct statfs)));
2592   }],
2593   fu_cv_sys_stat_statfs3_osf1=yes,
2594   fu_cv_sys_stat_statfs3_osf1=no,
2595   fu_cv_sys_stat_statfs3_osf1=no)])
2596   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
2597   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
2598     space=yes
2599     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
2600   fi
2603 if test $space = no; then
2604 # AIX
2605   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
2606 member (AIX, 4.3BSD)])
2607   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
2608   [AC_TRY_RUN([
2609 #ifdef HAVE_SYS_PARAM_H
2610 #include <sys/param.h>
2611 #endif
2612 #ifdef HAVE_SYS_MOUNT_H
2613 #include <sys/mount.h>
2614 #endif
2615 #ifdef HAVE_SYS_VFS_H
2616 #include <sys/vfs.h>
2617 #endif
2618   main ()
2619   {
2620   struct statfs fsd;
2621   fsd.f_bsize = 0;
2622   exit (statfs (".", &fsd));
2623   }],
2624   fu_cv_sys_stat_statfs2_bsize=yes,
2625   fu_cv_sys_stat_statfs2_bsize=no,
2626   fu_cv_sys_stat_statfs2_bsize=no)])
2627   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
2628   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
2629     space=yes
2630     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
2631   fi
2634 if test $space = no; then
2635 # SVR3
2636   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
2637   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
2638   [AC_TRY_RUN([#include <sys/types.h>
2639 #include <sys/statfs.h>
2640   main ()
2641   {
2642   struct statfs fsd;
2643   exit (statfs (".", &fsd, sizeof fsd, 0));
2644   }],
2645     fu_cv_sys_stat_statfs4=yes,
2646     fu_cv_sys_stat_statfs4=no,
2647     fu_cv_sys_stat_statfs4=no)])
2648   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
2649   if test $fu_cv_sys_stat_statfs4 = yes; then
2650     space=yes
2651     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
2652   fi
2655 if test $space = no; then
2656 # 4.4BSD and NetBSD
2657   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
2658 member (4.4BSD and NetBSD)])
2659   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
2660   [AC_TRY_RUN([#include <sys/types.h>
2661 #ifdef HAVE_SYS_PARAM_H
2662 #include <sys/param.h>
2663 #endif
2664 #ifdef HAVE_SYS_MOUNT_H
2665 #include <sys/mount.h>
2666 #endif
2667   main ()
2668   {
2669   struct statfs fsd;
2670   fsd.f_fsize = 0;
2671   exit (statfs (".", &fsd));
2672   }],
2673   fu_cv_sys_stat_statfs2_fsize=yes,
2674   fu_cv_sys_stat_statfs2_fsize=no,
2675   fu_cv_sys_stat_statfs2_fsize=no)])
2676   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
2677   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
2678     space=yes
2679         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
2680   fi
2683 if test $space = no; then
2684   # Ultrix
2685   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
2686   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
2687   [AC_TRY_RUN([#include <sys/types.h>
2688 #ifdef HAVE_SYS_PARAM_H
2689 #include <sys/param.h>
2690 #endif
2691 #ifdef HAVE_SYS_MOUNT_H
2692 #include <sys/mount.h>
2693 #endif
2694 #ifdef HAVE_SYS_FS_TYPES_H
2695 #include <sys/fs_types.h>
2696 #endif
2697   main ()
2698   {
2699   struct fs_data fsd;
2700   /* Ultrix's statfs returns 1 for success,
2701      0 for not mounted, -1 for failure.  */
2702   exit (statfs (".", &fsd) != 1);
2703   }],
2704   fu_cv_sys_stat_fs_data=yes,
2705   fu_cv_sys_stat_fs_data=no,
2706   fu_cv_sys_stat_fs_data=no)])
2707   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
2708   if test $fu_cv_sys_stat_fs_data = yes; then
2709     space=yes
2710     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
2711   fi
2715 # As a gating factor for large file support, in order to
2716 # use <4GB files we must have the following minimal support
2717 # available.
2718 # long long, and a 64 bit off_t or off64_t.
2719 # If we don't have all of these then disable large
2720 # file support.
2722 AC_MSG_CHECKING([if large file support can be enabled])
2723 AC_TRY_COMPILE([
2724 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
2725 #include <sys/types.h>
2726 #else
2727 __COMPILE_ERROR_
2728 #endif
2730 [int i],
2731 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
2732 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
2733         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
2735 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
2737 AC_ARG_WITH(spinlocks, 
2738 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
2739 if test "x$with_spinlocks" = "xyes"; then
2740     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
2742     case "$host_cpu" in
2743         sparc)
2744             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
2745             ;;
2747         i386|i486|i586|i686)
2748             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
2749             ;;
2751         mips)
2752             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
2753             ;;
2755         powerpc)
2756             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
2757             ;;
2758     esac
2761 #################################################
2762 # check for ACL support
2764 AC_MSG_CHECKING(whether to support ACLs)
2765 AC_ARG_WITH(acl-support,
2766 [  --with-acl-support      Include ACL support (default=no)],
2767 [ case "$withval" in
2768   yes)
2770         case "$host_os" in
2771         *sysv5*)
2772                 AC_MSG_RESULT(Using UnixWare ACLs)
2773                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
2774                 ;;
2775         *solaris*)
2776                 AC_MSG_RESULT(Using solaris ACLs)
2777                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
2778                 ;;
2779         *hpux*)
2780                 AC_MSG_RESULT(Using HPUX ACLs)
2781                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
2782                 ;;
2783         *irix*)
2784                 AC_MSG_RESULT(Using IRIX ACLs)
2785                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
2786                 ;;
2787         *aix*)
2788                 AC_MSG_RESULT(Using AIX ACLs)
2789                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
2790                 ;;
2791         *osf*)
2792                 AC_MSG_RESULT(Using Tru64 ACLs)
2793                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
2794                 LIBS="$LIBS -lpacl"
2795                 ;;
2796         *)
2797                 AC_CHECK_LIB(acl,acl_get_file)
2798                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
2799                 AC_TRY_LINK([#include <sys/types.h>
2800 #include <sys/acl.h>],
2801 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
2802 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)])
2803                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
2804                                 AC_MSG_RESULT(Using posix ACLs)
2805                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
2806                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
2807                                 AC_TRY_LINK([#include <sys/types.h>
2808 #include <sys/acl.h>],
2809 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
2810 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)])
2811                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
2812                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
2813                                 fi
2814                         fi
2815             ;;
2816         esac
2817         ;;
2818   *)
2819     AC_MSG_RESULT(no)
2820     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
2821     ;;
2822   esac ],
2823   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
2824   AC_MSG_RESULT(no)
2827 #################################################
2828 # check for sendfile support
2830 with_sendfile_support=yes
2831 AC_MSG_CHECKING(whether to check to support sendfile)
2832 AC_ARG_WITH(sendfile-support,
2833 [  --with-sendfile-support      Check for sendfile support (default=yes)],
2834 [ case "$withval" in
2835   yes)
2837         AC_MSG_RESULT(yes);
2839         case "$host_os" in
2840         *linux*)
2841                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
2842                 AC_TRY_LINK([#include <sys/sendfile.h>],
2844 int tofd, fromfd;
2845 off64_t offset;
2846 size_t total;
2847 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
2849 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
2851                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
2852                 AC_TRY_LINK([#include <sys/sendfile.h>],
2854 int tofd, fromfd;
2855 off_t offset;
2856 size_t total;
2857 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
2859 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2861 # Try and cope with broken Linux sendfile....
2862                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
2863                 AC_TRY_LINK([\
2864 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
2865 #undef _FILE_OFFSET_BITS
2866 #endif
2867 #include <sys/sendfile.h>],
2869 int tofd, fromfd;
2870 off_t offset;
2871 size_t total;
2872 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
2874 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
2876         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
2877                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
2878                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
2879                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
2880         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2881                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
2882                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
2883                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
2884         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
2885                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
2886                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
2887         else
2888                 AC_MSG_RESULT(no);
2889         fi
2891         ;;
2892         *freebsd*)
2893                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
2894                 AC_TRY_LINK([\
2895 #include <sys/types.h>
2896 #include <unistd.h>
2897 #include <sys/socket.h>
2898 #include <sys/uio.h>],
2900         int fromfd, tofd, ret, total=0;
2901         off_t offset, nwritten;
2902         struct sf_hdtr hdr;
2903         struct iovec hdtrl;
2904         hdr.headers = &hdtrl;
2905         hdr.hdr_cnt = 1;
2906         hdr.trailers = NULL;
2907         hdr.trl_cnt = 0;
2908         hdtrl.iov_base = NULL;
2909         hdtrl.iov_len = 0;
2910         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
2912 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2914         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2915                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
2916                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
2917                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
2918         else
2919                 AC_MSG_RESULT(no);
2920         fi
2921         ;;
2923         *hpux*)
2924                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
2925                 AC_TRY_LINK([\
2926 #include <sys/socket.h>
2927 #include <sys/uio.h>],
2929         int fromfd, tofd;
2930         size_t total=0;
2931         struct iovec hdtrl[2];
2932         ssize_t nwritten;
2933         off64_t offset;
2935         hdtrl[0].iov_base = 0;
2936         hdtrl[0].iov_len = 0;
2938         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
2940 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
2941         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
2942                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
2943                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
2944                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
2945         else
2946                 AC_MSG_RESULT(no);
2947         fi
2949                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
2950                 AC_TRY_LINK([\
2951 #include <sys/socket.h>
2952 #include <sys/uio.h>],
2954         int fromfd, tofd;
2955         size_t total=0;
2956         struct iovec hdtrl[2];
2957         ssize_t nwritten;
2958         off_t offset;
2960         hdtrl[0].iov_base = 0;
2961         hdtrl[0].iov_len = 0;
2963         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
2965 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2966         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2967                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
2968                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
2969                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
2970         else
2971                 AC_MSG_RESULT(no);
2972         fi
2973         ;;
2975         *solaris*)
2976                 AC_CHECK_LIB(sendfile,sendfilev)
2977                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
2978                 AC_TRY_LINK([\
2979 #include <sys/sendfile.h>],
2981         int sfvcnt;
2982         size_t xferred;
2983         struct sendfilevec vec[2];
2984         ssize_t nwritten;
2985         int tofd;
2987         sfvcnt = 2;
2989         vec[0].sfv_fd = SFV_FD_SELF;
2990         vec[0].sfv_flag = 0;
2991         vec[0].sfv_off = 0;
2992         vec[0].sfv_len = 0;
2994         vec[1].sfv_fd = 0;
2995         vec[1].sfv_flag = 0;
2996         vec[1].sfv_off = 0;
2997         vec[1].sfv_len = 0;
2998         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
3000 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
3002         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
3003                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
3004                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
3005                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3006         else
3007                 AC_MSG_RESULT(no);
3008         fi
3010                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
3011                 AC_TRY_LINK([\
3012 #include <sys/sendfile.h>],
3014         int sfvcnt;
3015         size_t xferred;
3016         struct sendfilevec vec[2];
3017         ssize_t nwritten;
3018         int tofd;
3020         sfvcnt = 2;
3022         vec[0].sfv_fd = SFV_FD_SELF;
3023         vec[0].sfv_flag = 0;
3024         vec[0].sfv_off = 0;
3025         vec[0].sfv_len = 0;
3027         vec[1].sfv_fd = 0;
3028         vec[1].sfv_flag = 0;
3029         vec[1].sfv_off = 0;
3030         vec[1].sfv_len = 0;
3031         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
3033 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
3035         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
3036                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
3037                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
3038                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
3039         else
3040                 AC_MSG_RESULT(no);
3041         fi
3042         ;;
3044         *)
3045         ;;
3046         esac
3047         ;;
3048   *)
3049     AC_MSG_RESULT(no)
3050     ;;
3051   esac ],
3052   AC_MSG_RESULT(yes)
3056 #################################################
3057 # Check whether winbind is supported on this platform.  If so we need to
3058 # build and install client programs, sbin programs and shared libraries
3060 AC_MSG_CHECKING(whether to build winbind)
3062 # Initially, the value of $host_os decides whether winbind is supported
3064 case "$host_os" in
3065         *linux*|*irix*)
3066                 HAVE_WINBIND=yes
3067                 ;;
3068         *solaris*)
3069                 HAVE_WINBIND=yes
3070                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
3071                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
3072                 ;;
3073         *hpux11*)
3074                 HAVE_WINBIND=yes
3075                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
3076                 ;;
3077         *)
3078                 HAVE_WINBIND=no
3079                 winbind_no_reason=", unsupported on $host_os"
3080                 ;;
3081 esac
3083 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
3084 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
3086 # Check the setting of --with-winbindd
3088 AC_ARG_WITH(winbind,
3089 [  --with-winbind          Build winbind (default, if supported by OS)],
3091   case "$withval" in
3092         yes)
3093                 HAVE_WINBIND=yes
3094                 ;;
3095         no)
3096                 HAVE_WINBIND=no
3097                 winbind_reason=""
3098                 ;;
3099   esac ],
3102 # We need unix domain sockets for winbind
3104 if test x"$HAVE_WINBIND" = x"yes"; then
3105         if test x"$samba_cv_unixsocket" = x"no"; then
3106                 winbind_no_reason=", no unix domain socket support on $host_os"
3107                 HAVE_WINBIND=no
3108         fi
3111 # Display test results
3113 if test x"$HAVE_WINBIND" = x"yes"; then
3114         AC_MSG_RESULT(yes)
3115         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
3117         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
3118         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
3119         if test x"$BLDSHARED" = x"true"; then
3120                 case "$host_os" in
3121                 *irix*)
3122                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/libns_winbind.so"
3123                         ;;
3124                 *)
3125                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/libnss_winbind.so"
3126                         ;;
3127                 esac
3128                 if test x"$with_pam" = x"yes"; then
3129                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.so"
3130                 fi
3131         fi
3132 else
3133         AC_MSG_RESULT(no$winbind_no_reason)
3136 # Solaris has some extra fields in struct passwd that need to be
3137 # initialised otherwise nscd crashes.  Unfortunately autoconf < 2.50
3138 # doesn't have the AC_CHECK_MEMBER macro which would be handy for checking
3139 # this. 
3141 #AC_CHECK_MEMBER(struct passwd.pw_comment,
3142 #               AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),
3143 #               [#include <pwd.h>])
3145 AC_CACHE_CHECK([whether struct passwd has pw_comment],samba_cv_passwd_pw_comment, [
3146     AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_comment;],
3147         samba_cv_passwd_pw_comment=yes,samba_cv_passwd_pw_comment=no)])
3148 if test x"$samba_cv_passwd_pw_comment" = x"yes"; then
3149    AC_DEFINE(HAVE_PASSWD_PW_COMMENT,1,[Whether struct passwd has pw_comment])
3152 #AC_CHECK_MEMBER(struct passwd.pw_age,
3153 #               AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),
3154 #               [#include <pwd.h>])
3156 AC_CACHE_CHECK([whether struct passwd has pw_age],samba_cv_passwd_pw_age, [
3157     AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_age;],
3158         samba_cv_passwd_pw_age=yes,samba_cv_passwd_pw_age=no)])
3159 if test x"$samba_cv_passwd_pw_age" = x"yes"; then
3160    AC_DEFINE(HAVE_PASSWD_PW_AGE,1,[Whether struct passwd has pw_age])
3163 #################################################
3164 # Check to see if we should use the included popt 
3166 AC_ARG_WITH(included-popt,
3167 [  --with-included-popt    use bundled popt library, not from system],
3169   case "$withval" in
3170         yes)
3171                 INCLUDED_POPT=yes
3172                 ;;
3173         no)
3174                 INCLUDED_POPT=no
3175                 ;;
3176   esac ],
3178 if test x"$INCLUDED_POPT" != x"yes"; then
3179     AC_CHECK_LIB(popt, poptGetContext,
3180                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
3183 AC_MSG_CHECKING(whether to use included popt)
3184 if test x"$INCLUDED_POPT" = x"yes"; then
3185     AC_MSG_RESULT(yes)
3186     BUILD_POPT='$(POPT_OBJS)'
3187     FLAGS1="-I$srcdir/popt"
3188 else
3189     AC_MSG_RESULT(no)
3190     LIBS="$LIBS -lpopt"
3192 AC_SUBST(BUILD_POPT)
3193 AC_SUBST(FLAGS1)
3195 #################################################
3196 # Check if the user wants Python
3198 # At the moment, you can use this to set which Python binary to link
3199 # against.  (Libraries built for Python2.2 can't be used by 2.1,
3200 # though they can coexist in different directories.)  In the future
3201 # this might make the Python stuff be built by default.
3203 # Defaulting python breaks the clean target if python isn't installed
3205 PYTHON=
3207 AC_ARG_WITH(python,
3208 [  --with-python=PYTHONNAME  build Python libraries],
3209 [ case "${withval-python}" in
3210   yes)
3211         PYTHON=python
3212         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
3213         ;;
3214   no)
3215         PYTHON=
3216         ;;
3217   *)
3218         PYTHON=${withval-python}
3219         ;;
3220   esac ])
3221 AC_SUBST(PYTHON)
3223 #################################################
3224 # do extra things if we are running insure
3226 if test "${ac_cv_prog_CC}" = "insure"; then
3227         CPPFLAGS="$CPPFLAGS -D__INSURE__"
3230 #################################################
3231 # final configure stuff
3233 AC_MSG_CHECKING([configure summary])
3234 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
3235            AC_MSG_RESULT(yes),
3236            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
3237            AC_MSG_WARN([cannot run when cross-compiling]))
3239 builddir=`pwd`
3240 AC_SUBST(builddir)
3242 AC_OUTPUT(include/stamp-h Makefile script/findsmb)
3244 #################################################
3245 # Print very concise instructions on building/use
3246 if test "x$enable_dmalloc" = xyes
3247 then
3248         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
3249         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])