Only do a kinit if we got told to use kerberos.
[Samba.git] / source / configure.in
blobb90d99bf3dc43d1e9cc2dd03834171390346964d
1 dnl -*- mode: m4-mode -*-
2 dnl Process this file with autoconf to produce a configure script.
4 dnl We must use autotools 2.53 or above
5 AC_PREREQ(2.53)
6 AC_INIT(include/includes.h)
7 AC_CONFIG_HEADER(include/config.h)
9 #################################################
10 # Directory handling stuff to support both the
11 # legacy SAMBA directories and FHS compliant
12 # ones...
13 AC_PREFIX_DEFAULT(/usr/local/samba)
15 AC_ARG_WITH(fhs, 
16 [  --with-fhs              Use FHS-compliant paths (default=no)],
17     configdir="${sysconfdir}/samba"
18     lockdir="\${VARDIR}/cache/samba"
19     piddir="\${VARDIR}/run/samba"
20     logfilebase="\${VARDIR}/log/samba"
21     privatedir="\${CONFIGDIR}/private"
22     libdir="\${prefix}/lib/samba"
23     swatdir="\${DATADIR}/samba/swat",
24     configdir="\${LIBDIR}"
25     logfilebase="\${VARDIR}"
26     lockdir="\${VARDIR}/locks"
27     piddir="\${VARDIR}/locks"
28     privatedir="\${prefix}/private"
29     swatdir="\${prefix}/swat")
31 #################################################
32 # set private directory location
33 AC_ARG_WITH(privatedir,
34 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
35 [ case "$withval" in
36   yes|no)
37   #
38   # Just in case anybody calls it without argument
39   #
40     AC_MSG_WARN([--with-privatedir called without argument - will use default])
41   ;;
42   * )
43     privatedir="$withval"
44     ;;
45   esac])
47 #################################################
48 # set lock directory location
49 AC_ARG_WITH(lockdir,
50 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
51 [ case "$withval" in
52   yes|no)
53   #
54   # Just in case anybody calls it without argument
55   #
56     AC_MSG_WARN([--with-lockdir called without argument - will use default])
57   ;;
58   * )
59     lockdir="$withval"
60     ;;
61   esac])
63 #################################################
64 # set pid directory location
65 AC_ARG_WITH(piddir,
66 [  --with-piddir=DIR       Where to put pid files ($ac_default_prefix/var/locks)],
67 [ case "$withval" in
68   yes|no)
69   #
70   # Just in case anybody calls it without argument
71   #
72     AC_MSG_WARN([--with-piddir called without argument - will use default])
73   ;;
74   * )
75     piddir="$withval"
76     ;;
77   esac])
79 #################################################
80 # set SWAT directory location
81 AC_ARG_WITH(swatdir,
82 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
83 [ case "$withval" in
84   yes|no)
85   #
86   # Just in case anybody does it
87   #
88     AC_MSG_WARN([--with-swatdir called without argument - will use default])
89   ;;
90   * )
91     swatdir="$withval"
92     ;;
93   esac])
95 #################################################
96 # set configuration directory location
97 AC_ARG_WITH(configdir,
98 [  --with-configdir=DIR    Where to put configuration files (\$libdir)],
99 [ case "$withval" in
100   yes|no)
101   #
102   # Just in case anybody does it
103   #
104     AC_MSG_WARN([--with-configdir called without argument - will use default])
105   ;;
106   * )
107     configdir="$withval"
108     ;;
109   esac])
111 #################################################
112 # set log directory location
113 AC_ARG_WITH(logfilebase,
114 [  --with-logfilebase=DIR  Where to put log files (\$(VARDIR))],
115 [ case "$withval" in
116   yes|no)
117   #
118   # Just in case anybody does it
119   #
120     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
121   ;;
122   * )
123     logfilebase="$withval"
124     ;;
125   esac])
127 AC_SUBST(configdir)
128 AC_SUBST(lockdir)
129 AC_SUBST(piddir)
130 AC_SUBST(logfilebase)
131 AC_SUBST(privatedir)
132 AC_SUBST(swatdir)
133 AC_SUBST(bindir)
134 AC_SUBST(sbindir)
136 dnl Unique-to-Samba variables we'll be playing with.
137 AC_SUBST(SHELL)
138 AC_SUBST(LDSHFLAGS)
139 AC_SUBST(SONAMEFLAG)
140 AC_SUBST(SHLD)
141 AC_SUBST(HOST_OS)
142 AC_SUBST(PICFLAG)
143 AC_SUBST(PICSUFFIX)
144 AC_SUBST(POBAD_CC)
145 AC_SUBST(SHLIBEXT)
146 AC_SUBST(INSTALLCLIENTCMD_SH)
147 AC_SUBST(INSTALLCLIENTCMD_A)
148 AC_SUBST(LIBSMBCLIENT_SHARED)
149 AC_SUBST(LIBSMBCLIENT)
150 AC_SUBST(PRINTLIBS)
151 AC_SUBST(AUTHLIBS)
152 AC_SUBST(ACLLIBS)
153 AC_SUBST(SHLIB_PROGS)
154 AC_SUBST(SMBWRAPPER)
155 AC_SUBST(EXTRA_BIN_PROGS)
156 AC_SUBST(EXTRA_SBIN_PROGS)
157 AC_SUBST(EXTRA_ALL_TARGETS)
158 dnl For the DYNAMIC RPC stuff
159 dnl The complicated _YES and _NO stuff allows us to avoid a dependency
160 dnl on GNU Make.
161 AC_SUBST(LSA_DYNAMIC_YES)
162 AC_SUBST(LSA_DYNAMIC_NO)
163 LSA_DYNAMIC_YES="#"
164 LSA_DYNAMIC_NO=
165 AC_SUBST(NETLOG_DYNAMIC_YES)
166 AC_SUBST(NETLOG_DYNAMIC_NO)
167 NETLOG_DYNAMIC_YES="#"
168 NETLOG_DYNAMIC_NO=
169 AC_SUBST(SAMR_DYNAMIC_YES)
170 AC_SUBST(SAMR_DYNAMIC_NO)
171 SAMR_DYNAMIC_YES="#"
172 SAMR_DYNAMIC_NO=
173 AC_SUBST(SVC_DYNAMIC_YES)
174 AC_SUBST(SVC_DYNAMIC_NO)
175 SVC_DYNAMIC_YES="#"
176 SVC_DYNAMIC_NO=
177 AC_SUBST(WKS_DYNAMIC_YES)
178 AC_SUBST(WKS_DYNAMIC_NO)
179 WKS_DYNAMIC_YES="#"
180 WKS_DYNAMIC_NO=
181 AC_SUBST(REG_DYNAMIC_YES)
182 AC_SUBST(REG_DYNAMIC_NO)
183 REG_DYNAMIC_YES="#"
184 REG_DYNAMIC_NO=
185 AC_SUBST(SPOOLSS_DYNAMIC_YES)
186 AC_SUBST(SPOOLSS_DYNAMIC_NO)
187 SPOOLSS_DYNAMIC_YES="#"
188 SPOOLSS_DYNAMIC_NO=
189 AC_SUBST(DFS_DYNAMIC_YES)
190 AC_SUBST(DFS_DYNAMIC_NO)
191 DFS_DYNAMIC_YES="#"
192 DFS_DYNAMIC_NO=
194 # compile with optimization and without debugging by default
195 CFLAGS="-O ${CFLAGS}"
197 AC_ARG_ENABLE(debug, 
198 [  --enable-debug          Turn on compiler debugging information (default=no)],
199     [if eval "test x$enable_debug = xyes"; then
200         CFLAGS="${CFLAGS} -g"
201     fi])
203 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
204     [if eval "test x$enable_developer = xyes"; then
205         CFLAGS="${CFLAGS} -g -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -DDEBUG_PASSWORD -DDEVELOPER"
206     fi])
208 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
209     [if eval "test x$enable_krb5developer = xyes"; then
210         CFLAGS="${CFLAGS} -g -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -DDEBUG_PASSWORD -DDEVELOPER"
211     fi])
213 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
215 if test "x$enable_dmalloc" = xyes
216 then
217         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
218         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
219                   [Define to check invariants around some common functions])
220         LIBS="$LIBS -ldmalloc"  
223 AC_ARG_ENABLE(dynrpc,  [  --enable-dynrpc         Enable dynamic RPC modules [default=no]])
225 if test x$enable_dynrpc = xyes
226 then
227         enable_dynrpc=lsa,samr,reg,wks,netlog,dfs
230 if test x$enable_dynrpc != xno
231 then
232         for i in `echo $enable_dynrpc | sed -e's/,/ /g'` 
233          do case $i in lsa)
234           LSA_DYNAMIC_YES=
235           LSA_DYNAMIC_NO="#"
236           AC_DEFINE(RPC_LSA_DYNAMIC, 1,
237                     [Define to make the LSA pipe dynamic])
238          ;; samr)
239           SAMR_DYNAMIC_YES=
240           SAMR_DYNAMIC_NO="#"
241           AC_DEFINE(RPC_SAMR_DYNAMIC, 1, 
242                     [Define to make the SAMR pipe dynamic])
243          ;; svc)
244           SVC_DYNAMIC_YES=
245           SVC_DYNAMIC_NO="#"
246           AC_DEFINE(RPC_SVC_DYNAMIC, 1, 
247                     [Define to make the SRVSVC pipe dynamic])
248          ;; wks)
249           WKS_DYNAMIC_YES=
250           WKS_DYNAMIC_NO="#"
251           AC_DEFINE(RPC_WKS_DYNAMIC, 1, 
252                     [Define to make the WKSSVC pipe dynamic])
253          ;; netlog)
254           NETLOG_DYNAMIC_YES=
255           NETLOG_DYNAMIC_NO="#"
256           AC_DEFINE(RPC_NETLOG_DYNAMIC, 1, 
257                     [Define to make the NETLOGON pipe dynamic])
258          ;; reg)
259           REG_DYNAMIC_YES=
260           REG_DYNAMIC_NO="#"
261           AC_DEFINE(RPC_REG_DYNAMIC, 1, 
262                     [Define to make the WINREG pipe dynamic])
263          ;; spoolss)
264           SPOOLSS_DYNAMIC_YES=
265           SPOOLSS_DYNAMIC_NO="#"
266           AC_DEFINE(RPC_SPOOLSS_DYNAMIC, 1, 
267                     [Define to make the SPOOLSS pipe dynamic])
268          ;; dfs)
269           DFS_DYNAMIC_YES=
270           DFS_DYNAMIC_NO="#"
271           AC_DEFINE(RPC_DFS_DYNAMIC, 1, 
272                     [Define to make the NETDFS pipe dynamic])
273          ;; esac
274          done
277 dnl Checks for programs.
278 AC_PROG_CC
279 AC_PROG_INSTALL
280 AC_PROG_AWK
281 AC_PATH_PROG(PERL, perl)
283 dnl Check if we use GNU ld
284 LD=ld
285 AC_PROG_LD_GNU
287 dnl needed before AC_TRY_COMPILE
288 AC_ISC_POSIX
290 dnl look for executable suffix
291 AC_EXEEXT
293 dnl Check if C compiler understands -c and -o at the same time
294 AC_PROG_CC_C_O
295 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
296       BROKEN_CC=
297 else
298       BROKEN_CC=#
300 AC_SUBST(BROKEN_CC)
302 dnl Check if the C compiler understands volatile (it should, being ANSI).
303 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
304     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
305         samba_cv_volatile=yes,samba_cv_volatile=no)])
306 if test x"$samba_cv_volatile" = x"yes"; then
307    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
311 AC_CANONICAL_SYSTEM
313 dnl Add #include for broken IRIX header files
314   case "$host_os" in
315         *irix6*) AC_ADD_INCLUDE(<standards.h>)
316         ;;
317 esac
319 AC_VALIDATE_CACHE_SYSTEM_TYPE
321 DYNEXP=
324 # Config CPPFLAG settings for strange OS's that must be set
325 # before other tests.
327 case "$host_os" in
328 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
329     *hpux*)
330     
331       AC_PROG_CC_FLAG(Ae)
332       # mmap on HPUX is completely broken...
333       AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
334       if test $ac_cv_prog_cc_Ae = yes; then
335         CPPFLAGS="$CPPFLAGS -Ae"
336       fi
338 # Defines needed for HPUX support.
339 # HPUX has bigcrypt but (sometimes?) doesn't use it for
340 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
342       case `uname -r` in
343                         *9*|*10*)
344                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
345                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
346                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
347                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
348                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
349                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
350                                 ;;
351                         *11*)
352                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
353                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
354                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
355                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
356                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
357                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
358                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
359                                 ;;
360       esac
361       DYNEXP="-Wl,-E"
362       ;;
365 # CRAY Unicos has broken const handling
366        *unicos*)
367           AC_MSG_RESULT([disabling const])
368           CPPFLAGS="$CPPFLAGS -Dconst="
369           ;;
370         
372 # AIX4.x doesn't even admit to having large
373 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
375     *aix4*)
376           AC_MSG_RESULT([enabling large file support])
377       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
378           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
379       ;;    
381 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
382 # to the existance of large files..
383 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
384 # recommendations on large file support, however it makes the
385 # compile work using gcc 2.7 and 2.8, whereas using the Sun
386 # recommendation makes the compile fail on gcc2.7. JRA.
388         *solaris*)
389                 case `uname -r` in
390                         5.0*|5.1*|5.2*|5.3*|5.5*)
391                                 AC_MSG_RESULT([no large file support])
392                                 ;;
393                         5.*)
394                         AC_MSG_RESULT([enabling large file support])
395                         if test "$ac_cv_prog_gcc" = yes; then
396                                 ${CC-cc} -v >conftest.c 2>&1
397                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
398                                 rm -fr conftest.c
399                                 case "$ac_cv_gcc_compiler_version_number" in
400                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
401                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
402                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
403                                                 ;;
404                                         *)
405                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
406                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
407                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
408                                                 ;;
409                                 esac
410                         else
411                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
412                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
413                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
414                         fi
415                         ;;
416                 esac
417                 ;;
419 # VOS may need to have POSIX support and System V compatibility enabled.
421     *vos*)
422     case "$CPPFLAGS" in
423           *-D_POSIX_C_SOURCE*)
424                 ;;
425           *)
426                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=199506L"
427                 AC_DEFINE(_POSIX_C_SOURCE, 199506L, [Whether to enable POSIX support])
428                 ;;
429     esac
430     case "$CPPFLAGS" in
431           *-D_SYSV*|*-D_SVID_SOURCE*)
432                 ;;
433           *)
434                 CPPFLAGS="$CPPFLAGS -D_SYSV"
435                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
436     esac
437     ;;
439 # Tests needed for SINIX large file support.
441     *sysv4*)
442       if test $host = mips-sni-sysv4 ; then
443         AC_MSG_CHECKING([for LFS support])
444         old_CPPFLAGS="$CPPFLAGS"
445         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
446         AC_TRY_RUN([
447 #include <unistd.h>
448 main () {
449 #if _LFS64_LARGEFILE == 1
450 exit(0);
451 #else
452 exit(1);
453 #endif
454 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
455         CPPFLAGS="$old_CPPFLAGS"
456         if test x$SINIX_LFS_SUPPORT = xyes ; then
457           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
458                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
459           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
460           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
461           LIBS="`getconf LFS64_LIBS` $LIBS"
462         fi
463       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
464       fi
465     ;;
467 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
469     *linux*)
470         AC_MSG_CHECKING([for LFS support])
471         old_CPPFLAGS="$CPPFLAGS"
472         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
473        AC_TRY_RUN([
474 #include <unistd.h>
475 #include <sys/utsname.h>
476 main() {
477 #if _LFS64_LARGEFILE == 1
478        struct utsname uts;
479        char *release;
480        int major, minor;
482        /* Ensure this is glibc 2.2 or higher */
483 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
484        int libc_major = __GLIBC__;
485        int libc_minor = __GLIBC_MINOR__;
487        if (libc_major < 2)
488               exit(1);
489        if (libc_minor < 2)
490               exit(1);
491 #endif
493        /* Ensure this is kernel 2.4 or higher */
495        uname(&uts);
496        release = uts.release;
497        major = atoi(strsep(&release, "."));
498        minor = atoi(strsep(&release, "."));
500        if (major > 2 || (major == 2 && minor > 3))
501                exit(0);
502        exit(1);
503 #else
504        exit(1);
505 #endif
507 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
508         CPPFLAGS="$old_CPPFLAGS"
509         if test x$LINUX_LFS_SUPPORT = xyes ; then
510           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
511                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
512           AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
513           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
514         fi
515        AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
516                 ;;
518     *hurd*)
519         AC_MSG_CHECKING([for LFS support])
520         old_CPPFLAGS="$CPPFLAGS"
521         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
522         AC_TRY_RUN([
523 #include <unistd.h>
524 main () {
525 #if _LFS64_LARGEFILE == 1
526 exit(0);
527 #else
528 exit(1);
529 #endif
530 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
531         CPPFLAGS="$old_CPPFLAGS"
532         if test x$GLIBC_LFS_SUPPORT = xyes ; then
533           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
534                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
535           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
536         fi
537       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
538     ;;
540 esac
542 AC_INLINE
543 AC_HEADER_STDC
544 AC_HEADER_DIRENT
545 AC_HEADER_TIME
546 AC_HEADER_SYS_WAIT
547 AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
548 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h)
549 AC_CHECK_HEADERS(compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
550 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h)
551 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
552 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
553 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
554 AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h ldap.h lber.h dlfcn.h)
555 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
558 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
559 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
561 case "$host_os" in
562     *hpux*)
563                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
564                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
565                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
566                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
567                 fi
568         ;;
569 esac
570 AC_CHECK_HEADERS(shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
571 AC_CHECK_HEADERS(nss.h nss_common.h ns_api.h sys/security.h security/pam_appl.h security/pam_modules.h)
572 AC_CHECK_HEADERS(stropts.h poll.h)
573 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
574 AC_CHECK_HEADERS(sys/acl.h sys/cdefs.h glob.h)
576 # For experimental utmp support (lastlog on some BSD-like systems)
577 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
579 # For quotas on Veritas VxFS filesystems
580 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
582 # For quotas on Linux XFS filesystems
583 AC_CHECK_HEADERS(linux/xqm.h)
584 AC_CHECK_HEADERS(xfs/xqm.h)
586 AC_CHECK_SIZEOF(int,cross)
587 AC_CHECK_SIZEOF(long,cross)
588 AC_CHECK_SIZEOF(short,cross)
590 AC_C_CONST
591 AC_C_INLINE
592 AC_C_BIGENDIAN
593 AC_C_CHAR_UNSIGNED
595 AC_TYPE_SIGNAL
596 AC_TYPE_UID_T
597 AC_TYPE_MODE_T
598 AC_TYPE_OFF_T
599 AC_TYPE_SIZE_T
600 AC_TYPE_PID_T
601 AC_STRUCT_ST_RDEV
602 AC_DIRENT_D_OFF
603 AC_CHECK_TYPE(ino_t,unsigned)
604 AC_CHECK_TYPE(loff_t,off_t)
605 AC_CHECK_TYPE(offset_t,loff_t)
606 AC_CHECK_TYPE(ssize_t, int)
607 AC_CHECK_TYPE(wchar_t, unsigned short)
609 ############################################
610 # for cups support we need libcups, and a handful of header files
612 AC_ARG_ENABLE(cups,
613 [  --enable-cups           Turn on CUPS support (default=auto)])
615 if test x$enable_cups != xno; then
616         AC_PATH_PROG(CUPS_CONFIG, cups-config)
618         if test "x$CUPS_CONFIG" != x; then
619                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
620                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
621                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
622                 PRINTLIBS="$PRINTLIBS `$CUPS_CONFIG --libs`"
623         fi
626 ############################################
627 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
628 AC_SEARCH_LIBS(dlopen, [dl])
629 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
631 ############################################
632 # check if the compiler can do immediate structures
633 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
634     AC_TRY_COMPILE([
635 #include <stdio.h>],
637    typedef struct {unsigned x;} FOOBAR;
638    #define X_FOOBAR(x) ((FOOBAR) { x })
639    #define FOO_ONE X_FOOBAR(1)
640    FOOBAR f = FOO_ONE;   
641    static struct {
642         FOOBAR y; 
643         } f2[] = {
644                 {FOO_ONE}
645         };   
647         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
648 if test x"$samba_cv_immediate_structures" = x"yes"; then
649    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
652 ############################################
653 # check for unix domain sockets
654 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
655     AC_TRY_COMPILE([
656 #include <sys/types.h>
657 #include <stdlib.h>
658 #include <stddef.h>
659 #include <sys/socket.h>
660 #include <sys/un.h>],
662   struct sockaddr_un sunaddr; 
663   sunaddr.sun_family = AF_UNIX;
665         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
666 if test x"$samba_cv_unixsocket" = x"yes"; then
667    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
671 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
672     AC_TRY_COMPILE([
673 #include <sys/types.h>
674 #if STDC_HEADERS
675 #include <stdlib.h>
676 #include <stddef.h>
677 #endif
678 #include <sys/socket.h>],[socklen_t i = 0],
679         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
680 if test x"$samba_cv_socklen_t" = x"yes"; then
681    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
684 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
685     AC_TRY_COMPILE([
686 #include <sys/types.h>
687 #if STDC_HEADERS
688 #include <stdlib.h>
689 #include <stddef.h>
690 #endif
691 #include <signal.h>],[sig_atomic_t i = 0],
692         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
693 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
694    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
697 # stupid headers have the functions but no declaration. grrrr.
698 AC_HAVE_DECL(errno, [#include <errno.h>])
699 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
700 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
701 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
702 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
703 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
704 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
706 # and glibc has setresuid under linux but the function does
707 # nothing until kernel 2.1.44! very dumb.
708 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
709     AC_TRY_RUN([#include <errno.h>
710 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
711         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
712 if test x"$samba_cv_have_setresuid" = x"yes"; then
713     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
716 # Do the same check for setresguid...
718 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
719     AC_TRY_RUN([#include <unistd.h>
720 #include <errno.h>
721 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
722         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
723 if test x"$samba_cv_have_setresgid" = x"yes"; then
724     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
727 AC_FUNC_MEMCMP
729 ###############################################
730 # test for where we get crypt() from
731 AC_SEARCH_LIBS(crypt, [crypt], [AUTHLIBS="$AUTHLIBS -lcrypt";
732         AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
734 ###############################################
735 # Readline included by default unless explicitly asked not to
736 test "${with_readline+set}" != "set" && with_readline=yes
738 # test for where we get readline() from
739 AC_MSG_CHECKING(whether to use readline)
740 AC_ARG_WITH(readline,
741 [  --with-readline[=DIR]   Look for readline include/libs in DIR (default=auto) ],
742 [  case "$with_readline" in
743   yes)
744     AC_MSG_RESULT(yes)
746     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
747     AC_CHECK_HEADERS(readline/history.h)
749     AC_CHECK_HEADERS(readline.h readline/readline.h,[
750       for termlib in ncurses curses termcap terminfo termlib tinfo; do
751        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
752       done
753       AC_CHECK_LIB(readline, rl_callback_handler_install,
754        [TERMLIBS="-lreadline $TERMLIBS"
755        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
756        break], [TERMLIBS=], $TERMLIBS)])
757     ;;
758   no)
759     AC_MSG_RESULT(no)
760     ;;
761   *)
762     AC_MSG_RESULT(yes)
764     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
765     # alternate readline path
766     _ldflags=${LDFLAGS}
767     _cppflags=${CPPFLAGS}
769     # Add additional search path
770     LDFLAGS="-L$with_readline/lib $LDFLAGS"
771     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
773     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
774     AC_CHECK_HEADERS(readline/history.h)
776     AC_CHECK_HEADERS(readline.h readline/readline.h,[
777       for termlib in ncurses curses termcap terminfo termlib; do
778        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
779       done
780       AC_CHECK_LIB(readline, rl_callback_handler_install,
781        [TERMLDFLAGS="-L$with_readline/lib"
782        TERMCPPFLAGS="-I$with_readline/include"
783        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
784        TERMLIBS="-lreadline $TERMLIBS"
785        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
786        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
788     LDFLAGS=$_ldflags
789     ;;
790   esac],
791   AC_MSG_RESULT(no)
793 AC_SUBST(TERMLIBS)
794 AC_SUBST(TERMLDFLAGS)
796 # The readline API changed slightly from readline3 to readline4, so
797 # code will generate warnings on one of them unless we have a few
798 # special cases.
799 AC_CHECK_LIB(readline, rl_completion_matches,
800              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
801                         [Do we have rl_completion_matches?])],
802              [],
803              [$TERMLIBS])
805 # The following test taken from the cvs sources
806 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
807 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
808 # libsocket.so which has a bad implementation of gethostbyname (it
809 # only looks in /etc/hosts), so we only look for -lsocket if we need
810 # it.
811 AC_CHECK_FUNCS(connect)
812 if test x"$ac_cv_func_connect" = x"no"; then
813     case "$LIBS" in
814     *-lnsl*) ;;
815     *) AC_CHECK_LIB(nsl_s, printf) ;;
816     esac
817     case "$LIBS" in
818     *-lnsl*) ;;
819     *) AC_CHECK_LIB(nsl, printf) ;;
820     esac
821     case "$LIBS" in
822     *-lsocket*) ;;
823     *) AC_CHECK_LIB(socket, connect) ;;
824     esac
825     case "$LIBS" in
826     *-linet*) ;;
827     *) AC_CHECK_LIB(inet, connect) ;;
828     esac
829     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
830     dnl has been cached.
831     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
832        test x"$ac_cv_lib_inet_connect" = x"yes"; then
833         # ac_cv_func_connect=yes
834         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
835         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
836     fi
839 ###############################################
840 # test for where we get yp_get_default_domain() from
841 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
842 AC_CHECK_FUNCS(yp_get_default_domain)
844 # Check if we have execl, if not we need to compile smbrun.
845 AC_CHECK_FUNCS(execl)
846 if test x"$ac_cv_func_execl" = x"no"; then
847     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
850 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
851 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid)
852 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
853 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
854 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
855 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
856 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
857 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
858 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
859 AC_CHECK_FUNCS(syslog vsyslog getgrouplist timegm)
860 # setbuffer, shmget, shm_open are needed for smbtorture
861 AC_CHECK_FUNCS(setbuffer shmget shm_open)
863 # syscall() is needed for smbwrapper.
864 AC_CHECK_FUNCS(syscall)
866 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
867 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
868 AC_CHECK_FUNCS(__getcwd _getcwd)
869 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
870 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
871 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
872 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
873 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
874 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
875 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
876 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
877 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
878 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
879 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
882 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
885 if test x$ac_cv_func_stat64 = xno ; then
886   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
887   AC_TRY_LINK([
888 #if defined(HAVE_UNISTD_H)
889 #include <unistd.h>
890 #endif
891 #include <sys/stat.h>
892 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
893   AC_MSG_RESULT([$ac_cv_func_stat64])
894   if test x$ac_cv_func_stat64 = xyes ; then
895     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
896   fi
899 if test x$ac_cv_func_lstat64 = xno ; then
900   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
901   AC_TRY_LINK([
902 #if defined(HAVE_UNISTD_H)
903 #include <unistd.h>
904 #endif
905 #include <sys/stat.h>
906 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
907   AC_MSG_RESULT([$ac_cv_func_lstat64])
908   if test x$ac_cv_func_lstat64 = xyes ; then
909     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
910   fi
913 if test x$ac_cv_func_fstat64 = xno ; then
914   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
915   AC_TRY_LINK([
916 #if defined(HAVE_UNISTD_H)
917 #include <unistd.h>
918 #endif
919 #include <sys/stat.h>
920 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
921   AC_MSG_RESULT([$ac_cv_func_fstat64])
922   if test x$ac_cv_func_fstat64 = xyes ; then
923     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
924   fi
927 #####################################
928 # we might need the resolv library on some systems
929 AC_CHECK_LIB(resolv, dn_expand)
932 # Check for the functions putprpwnam, set_auth_parameters,
933 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
934 # Needed for OSF1 and HPUX.
937 AC_LIBTESTFUNC(security, putprpwnam)
938 AC_LIBTESTFUNC(sec, putprpwnam)
940 AC_LIBTESTFUNC(security, set_auth_parameters)
941 AC_LIBTESTFUNC(sec, set_auth_parameters)
943 # UnixWare 7.x has its getspnam in -lgen
944 AC_LIBTESTFUNC(gen, getspnam)
946 AC_LIBTESTFUNC(security, getspnam)
947 AC_LIBTESTFUNC(sec, getspnam)
949 AC_LIBTESTFUNC(security, bigcrypt)
950 AC_LIBTESTFUNC(sec, bigcrypt)
952 AC_LIBTESTFUNC(security, getprpwnam)
953 AC_LIBTESTFUNC(sec, getprpwnam)
955 # this bit needs to be modified for each OS that is suported by
956 # smbwrapper. You need to specify how to created a shared library and
957 # how to compile C code to produce PIC object files
959 # these are the defaults, good for lots of systems
960 HOST_OS="$host_os"
961 LDSHFLAGS="-shared"
962 SONAMEFLAG="#"
963 SHLD="\${CC}"
964 PICFLAG=""
965 PICSUFFIX="po"
966 POBAD_CC="#"
967 SHLIBEXT="so"
968 # Assume non-shared by default and override below
969 BLDSHARED="false"
970 AC_MSG_CHECKING([ability to build shared libraries])
972 # and these are for particular systems
973 case "$host_os" in
974                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
975                         BLDSHARED="true"
976                         LDSHFLAGS="-shared" 
977                         DYNEXP="-Wl,--export-dynamic"
978                         PICFLAG="-fPIC"
979                         SONAMEFLAG="-Wl,-soname="
980                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
981                         ;;
982                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
983                         BLDSHARED="true"
984                         LDSHFLAGS="-G"
985                         SONAMEFLAG="-h "
986                         if test "${GCC}" = "yes"; then
987                                 PICFLAG="-fPIC"
988                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
989                                         DYNEXP="-Wl,-E"
990                                 fi
991                         else
992                                 PICFLAG="-KPIC"
993                                 ## ${CFLAGS} added for building 64-bit shared 
994                                 ## libs using Sun's Compiler
995                                 LDSHFLAGS="-G \${CFLAGS}"
996                                 POBAD_CC=""
997                                 PICSUFFIX="po.o"
998                         fi
999                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1000                         ;;
1001                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1002                         BLDSHARED="true"
1003                         LDSHFLAGS="-G"
1004                         SONAMEFLAG="-Wl,-h,"
1005                         PICFLAG="-KPIC"   # Is this correct for SunOS
1006                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1007                         ;;
1008                 *netbsd* | *freebsd*)  BLDSHARED="true"
1009                         LDSHFLAGS="-shared"
1010                         DYNEXP="-Wl,--export-dynamic"
1011                         SONAMEFLAG="-Wl,-soname,"
1012                         PICFLAG="-fPIC -DPIC"
1013                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1014                         ;;
1015                 *openbsd*)  BLDSHARED="true"
1016                         LDSHFLAGS="-shared"
1017                         DYNEXP="-Wl,-Bdynamic"
1018                         SONAMEFLAG="-Wl,-soname,"
1019                         PICFLAG="-fPIC"
1020                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1021                         ;;
1022                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1023                         case "$host_os" in
1024                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1025                         ;;
1026                         esac
1027                         ATTEMPT_WRAP32_BUILD=yes
1028                         BLDSHARED="true"
1029                         LDSHFLAGS="-set_version sgi1.0 -shared"
1030                         SONAMEFLAG="-soname "
1031                         SHLD="\${LD}"
1032                         if test "${GCC}" = "yes"; then
1033                                 PICFLAG="-fPIC"
1034                         else 
1035                                 PICFLAG="-KPIC"
1036                         fi
1037                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1038                         ;;
1039                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1040                         BLDSHARED="true"
1041                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry"
1042                         DYNEXP="-Wl,-brtl,-bexpall"
1043                         PICFLAG="-O2"
1044                         if test "${GCC}" != "yes"; then
1045                                 ## for funky AIX compiler using strncpy()
1046                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1047                         fi
1049                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1050                         ;;
1051                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1052                         SHLIBEXT="sl"
1053                         # Use special PIC flags for the native HP-UX compiler.
1054                         if test $ac_cv_prog_cc_Ae = yes; then
1055                                 BLDSHARED="true"
1056                                 SHLD="/usr/bin/ld"
1057                                 LDSHFLAGS="-B symbolic -b -z"
1058                                 SONAMEFLAG="+h "
1059                                 PICFLAG="+z"
1060                         fi
1061                         DYNEXP="-Wl,-E"
1062                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1063                         ;;
1064                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1065                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1066                         ;;
1067                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1068                         BLDSHARED="true"
1069                         LDSHFLAGS="-shared"
1070                         SONAMEFLAG="-Wl,-soname,"
1071                         PICFLAG="-fPIC"
1072                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1073                         ;;
1074                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1075                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1076                         ;;
1077                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1078                         BLDSHARED="true"
1079                         LDSHFLAGS="-shared"
1080                         SONAMEFLAG="-Wl,-soname,"
1081                         PICFLAG="-KPIC"
1082                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1083                         ;;
1084                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1085                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1086                         ;;
1087                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1088                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1089                         ;;
1090                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1091                         case "$host" in
1092                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1093                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1094                                         fi
1095                                         LDSHFLAGS="-G"
1096                                         DYNEXP="-Bexport"
1097                                 ;;
1098                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1099                         esac
1100                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1101                         ;;
1103                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1104                         if [ test "$GCC" != yes ]; then
1105                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1106                         fi
1107                         LDSHFLAGS="-G"
1108                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1109                         ;;
1110                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1111                         BLDSHARED="false"
1112                         LDSHFLAGS=""
1113                         ;;
1114                 *)
1115                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1116                         ;;
1117 esac
1118 AC_SUBST(DYNEXP)
1119 AC_MSG_RESULT($BLDSHARED)
1120 AC_MSG_CHECKING([linker flags for shared libraries])
1121 AC_MSG_RESULT([$LDSHFLAGS])
1122 AC_MSG_CHECKING([compiler flags for position-independent code])
1123 AC_MSG_RESULT([$PICFLAGS])
1125 #######################################################
1126 # test whether building a shared library actually works
1127 if test $BLDSHARED = true; then
1128 AC_CACHE_CHECK([whether building shared libraries actually works], 
1129                [ac_cv_shlib_works],[
1130    ac_cv_shlib_works=no
1131    # try building a trivial shared library
1132    if test "$PICSUFFIX" = "po"; then
1133      $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.po ${srcdir-.}/tests/shlib.c &&
1134        $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o shlib.so shlib.po &&
1135        ac_cv_shlib_works=yes
1136    else
1137      $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c &&
1138        mv shlib.$PICSUFFIX shlib.po &&
1139        $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o shlib.so shlib.po &&
1140        ac_cv_shlib_works=yes
1141    fi
1142    rm -f shlib.so shlib.po
1144 if test $ac_cv_shlib_works = no; then
1145    BLDSHARED=false
1149 ################
1151 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1152 AC_TRY_RUN([#include <stdio.h>
1153 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1154 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1155 if test x"$samba_cv_have_longlong" = x"yes"; then
1156     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1160 # Check if the compiler supports the LL prefix on long long integers.
1161 # AIX needs this.
1163 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1164     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1165         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1166 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1167    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1170   
1171 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1172 AC_TRY_RUN([#include <stdio.h>
1173 #include <sys/stat.h>
1174 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1175 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1176 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1177     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1180 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1181 AC_TRY_RUN([
1182 #if defined(HAVE_UNISTD_H)
1183 #include <unistd.h>
1184 #endif
1185 #include <stdio.h>
1186 #include <sys/stat.h>
1187 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1188 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1189 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1190     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1193 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1194 AC_TRY_RUN([#include <stdio.h>
1195 #include <sys/stat.h>
1196 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1197 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1198 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1199     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1202 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1203 AC_TRY_RUN([
1204 #if defined(HAVE_UNISTD_H)
1205 #include <unistd.h>
1206 #endif
1207 #include <stdio.h>
1208 #include <sys/stat.h>
1209 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1210 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1211 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1212     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1215 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1216 AC_TRY_RUN([
1217 #if defined(HAVE_UNISTD_H)
1218 #include <unistd.h>
1219 #endif
1220 #include <stdio.h>
1221 #include <sys/stat.h>
1222 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1223 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1224 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1225     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1228 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1229 AC_TRY_COMPILE([
1230 #if defined(HAVE_UNISTD_H)
1231 #include <unistd.h>
1232 #endif
1233 #include <sys/types.h>
1234 #include <dirent.h>],
1235 [struct dirent64 de;],
1236 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1237 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1238     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1241 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1242 AC_TRY_RUN([
1243 #if defined(HAVE_UNISTD_H)
1244 #include <unistd.h>
1245 #endif
1246 #include <sys/types.h>
1247 main() { dev_t dev; int i = major(dev); return 0; }],
1248 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1249 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1250     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1253 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1254 AC_TRY_RUN([
1255 #if defined(HAVE_UNISTD_H)
1256 #include <unistd.h>
1257 #endif
1258 #include <sys/types.h>
1259 main() { dev_t dev; int i = minor(dev); return 0; }],
1260 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1261 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1262     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1265 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1266 AC_TRY_RUN([#include <stdio.h>
1267 main() { char c; c=250; exit((c > 0)?0:1); }],
1268 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1269 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1270     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1273 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1274 AC_TRY_COMPILE([#include <sys/types.h>
1275 #include <sys/socket.h>
1276 #include <netinet/in.h>],
1277 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1278 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1279 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1280     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
1283 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1284 AC_TRY_COMPILE([#include <sys/types.h>
1285 #include <dirent.h>
1286 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1287 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1288 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1289     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1292 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1293 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1294 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1295 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1296     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1299 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1300 AC_TRY_RUN([
1301 #include <sys/time.h>
1302 #include <unistd.h>
1303 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1304            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1305 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1306     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
1309 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE_VA_COPY,[
1310 AC_TRY_LINK([#include <stdarg.h>
1311 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1312 samba_cv_HAVE_VA_COPY=yes,samba_cv_HAVE_VA_COPY=no)])
1313 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1314     AC_DEFINE(HAVE_VA_COPY,1,[Whether __va_copy() is available])
1317 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1318 AC_TRY_RUN([
1319 #include <sys/types.h>
1320 #include <stdarg.h>
1321 void foo(const char *format, ...) { 
1322        va_list ap;
1323        int len;
1324        char buf[5];
1326        va_start(ap, format);
1327        len = vsnprintf(buf, 0, format, ap);
1328        va_end(ap);
1329        if (len != 5) exit(1);
1331        va_start(ap, format);
1332        len = vsnprintf(0, 0, format, ap);
1333        va_end(ap);
1334        if (len != 5) exit(1);
1336        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1338        exit(0);
1340 main() { foo("hello"); }
1342 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1343 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1344     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
1347 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1348 AC_TRY_RUN([#include <sys/types.h>
1349 #include <dirent.h>
1350 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1351 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1352 di->d_name[0] == 0) exit(0); exit(1);} ],
1353 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1354 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1355     AC_DEFINE(HAVE_BROKEN_READDIR,1,[Whether readdir() is broken])
1358 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1359 AC_TRY_COMPILE([#include <sys/types.h>
1360 #include <utime.h>],
1361 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1362 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1363 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1364     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
1367 dnl  utmp and utmpx come in many flavours
1368 dnl  We need to check for many of them
1369 dnl  But we don't need to do each and every one, because our code uses
1370 dnl  mostly just the utmp (not utmpx) fields.
1372 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1374 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1375 AC_TRY_COMPILE([#include <sys/types.h>
1376 #include <utmp.h>],
1377 [struct utmp ut;  ut.ut_name[0] = 'a';],
1378 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1379 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1380     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
1381 fi 
1383 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1384 AC_TRY_COMPILE([#include <sys/types.h>
1385 #include <utmp.h>],
1386 [struct utmp ut;  ut.ut_user[0] = 'a';],
1387 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1388 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1389     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
1390 fi 
1392 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1393 AC_TRY_COMPILE([#include <sys/types.h>
1394 #include <utmp.h>],
1395 [struct utmp ut;  ut.ut_id[0] = 'a';],
1396 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1397 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1398     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
1399 fi 
1401 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1402 AC_TRY_COMPILE([#include <sys/types.h>
1403 #include <utmp.h>],
1404 [struct utmp ut;  ut.ut_host[0] = 'a';],
1405 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1406 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1407     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
1408 fi 
1410 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1411 AC_TRY_COMPILE([#include <sys/types.h>
1412 #include <utmp.h>],
1413 [struct utmp ut;  time_t t; ut.ut_time = t;],
1414 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1415 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1416     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
1417 fi 
1419 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1420 AC_TRY_COMPILE([#include <sys/types.h>
1421 #include <utmp.h>],
1422 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1423 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1424 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1425     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
1426 fi 
1428 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1429 AC_TRY_COMPILE([#include <sys/types.h>
1430 #include <utmp.h>],
1431 [struct utmp ut;  ut.ut_type = 0;],
1432 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1433 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1434     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
1435 fi 
1437 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1438 AC_TRY_COMPILE([#include <sys/types.h>
1439 #include <utmp.h>],
1440 [struct utmp ut;  ut.ut_pid = 0;],
1441 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1442 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1443     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
1444 fi 
1446 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1447 AC_TRY_COMPILE([#include <sys/types.h>
1448 #include <utmp.h>],
1449 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1450 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1451 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1452     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
1453 fi 
1455 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1456 AC_TRY_COMPILE([#include <sys/types.h>
1457 #include <utmp.h>],
1458 [struct utmp ut;  ut.ut_addr = 0;],
1459 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1460 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1461     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
1462 fi 
1464 if test x$ac_cv_func_pututline = xyes ; then
1465   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1466   AC_TRY_COMPILE([#include <sys/types.h>
1467 #include <utmp.h>],
1468   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1469   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1470   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1471       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
1472   fi
1475 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1476 AC_TRY_COMPILE([#include <sys/types.h>
1477 #include <utmpx.h>],
1478 [struct utmpx ux;  ux.ut_syslen = 0;],
1479 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1480 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1481     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
1482 fi 
1485 #################################################
1486 # check for libiconv support
1487 AC_MSG_CHECKING(whether to use libiconv)
1488 AC_ARG_WITH(libiconv,
1489 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
1490 [ case "$withval" in
1491   no)
1492     AC_MSG_RESULT(no)
1493     ;;
1494   *)
1495     AC_MSG_RESULT(yes)
1496     CFLAGS="$CFLAGS -I$withval/include"
1497     LDFLAGS="$LDFLAGS -L$withval/lib"
1498     AC_CHECK_LIB(iconv, iconv_open)
1499     AC_DEFINE_UNQUOTED(WITH_LIBICONV, "${withval}",[Path to iconv])
1500     ;;
1501   esac ],
1502   AC_MSG_RESULT(no)
1506 ############
1507 # check for iconv in libc
1508 AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
1509 AC_TRY_RUN([
1510 #include <iconv.h>
1511 main() {
1512        iconv_t cd = iconv_open("ASCII", "UCS-2LE");
1513        if (cd == 0 || cd == (iconv_t)-1) return -1;
1514        return 0;
1517 samba_cv_HAVE_NATIVE_ICONV=yes,samba_cv_HAVE_NATIVE_ICONV=no,samba_cv_HAVE_NATIVE_ICONV=cross)])
1518 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
1519     AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
1523 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1524 AC_TRY_RUN([
1525 #include <sys/types.h>
1526 #include <fcntl.h>
1527 #ifndef F_GETLEASE
1528 #define F_GETLEASE      1025
1529 #endif
1530 main() {
1531        int fd = open("/dev/null", O_RDONLY);
1532        return fcntl(fd, F_GETLEASE, 0) == -1;
1535 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1536 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1537     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
1540 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1541 AC_TRY_RUN([
1542 #include <sys/types.h>
1543 #include <fcntl.h>
1544 #include <signal.h>
1545 #ifndef F_NOTIFY
1546 #define F_NOTIFY 1026
1547 #endif
1548 main() {
1549         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1552 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1553 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
1554     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
1557 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1558 AC_TRY_RUN([
1559 #include <sys/types.h>
1560 #include <fcntl.h>
1561 #include <signal.h>
1562 #include <sys/file.h>
1563 #ifndef LOCK_MAND
1564 #define LOCK_MAND       32
1565 #define LOCK_READ       64
1566 #endif
1567 main() {
1568         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1571 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1572 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1573     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
1579 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1580 AC_TRY_COMPILE([#include <sys/types.h>
1581 #include <fcntl.h>],
1582 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1583 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1584 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1585     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
1588 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1589 AC_TRY_RUN([#include <sys/types.h>
1590 #include <sys/capability.h>
1591 main() {
1592  cap_t cap;
1593  if ((cap = cap_get_proc()) == NULL)
1594    exit(1);
1595  cap->cap_effective |= CAP_NETWORK_MGT;
1596  cap->cap_inheritable |= CAP_NETWORK_MGT;
1597  cap_set_proc(cap);
1598  exit(0);
1601 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1602 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1603     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
1607 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1608 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1611 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1612 AC_TRY_COMPILE([#include <sys/types.h>
1613 #if defined(HAVE_RPC_RPC_H)
1614 #include <rpc/rpc.h>
1615 #endif],
1616 [int16 testvar;],
1617 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1618 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1619     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
1622 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1623 AC_TRY_COMPILE([#include <sys/types.h>
1624 #if defined(HAVE_RPC_RPC_H)
1625 #include <rpc/rpc.h>
1626 #endif],
1627 [uint16 testvar;],
1628 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1629 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1630     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
1633 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1634 AC_TRY_COMPILE([#include <sys/types.h>
1635 #if defined(HAVE_RPC_RPC_H)
1636 #include <rpc/rpc.h>
1637 #endif],
1638 [int32 testvar;],
1639 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1640 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1641     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
1644 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1645 AC_TRY_COMPILE([#include <sys/types.h>
1646 #if defined(HAVE_RPC_RPC_H)
1647 #include <rpc/rpc.h>
1648 #endif],
1649 [uint32 testvar;],
1650 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1651 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1652     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
1656 dnl Some systems (SCO) have a problem including
1657 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1658 dnl as a #define in <prot.h> and as part of an enum
1659 dnl in <rpc/rpc.h>.
1662 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1663 AC_TRY_COMPILE([#include <sys/types.h>
1664 #ifdef HAVE_SYS_SECURITY_H
1665 #include <sys/security.h>
1666 #include <prot.h>
1667 #endif  /* HAVE_SYS_SECURITY_H */
1668 #if defined(HAVE_RPC_RPC_H)
1669 #include <rpc/rpc.h>
1670 #endif],
1671 [int testvar;],
1672 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1673 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1674     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
1677 AC_MSG_CHECKING([for test routines])
1678 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1679            AC_MSG_RESULT(yes),
1680            AC_MSG_ERROR([cant find test code. Aborting config]),
1681            AC_MSG_WARN([cannot run when cross-compiling]))
1683 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1684 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1685            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1686 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1687     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
1690 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
1691 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
1692            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
1693            samba_cv_HAVE_WORKING_AF_LOCAL=no,
1694            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
1695 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
1696 then
1697     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
1700 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1701 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1702            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1703 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1704     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
1707 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1708 SAVE_CPPFLAGS="$CPPFLAGS"
1709 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper"
1710 AC_TRY_COMPILE([
1711 #define REPLACE_GETPASS 1
1712 #define NO_CONFIG_H 1
1713 #define main dont_declare_main
1714 #include "${srcdir-.}/lib/getsmbpass.c"
1715 #undef main
1716 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1717 CPPFLAGS="$SAVE_CPPFLAGS"
1719 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
1720         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
1723 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
1724 AC_TRY_RUN([
1725 #include <stdio.h>
1726 #include <sys/types.h>
1727 #include <netinet/in.h>
1728 #ifdef HAVE_ARPA_INET_H
1729 #include <arpa/inet.h>
1730 #endif
1731 main() { struct in_addr ip; ip.s_addr = 0x12345678;
1732 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
1733     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
1734 exit(1);}],
1735            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
1736 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
1737     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
1740 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
1741 AC_TRY_RUN([#include <stdlib.h>
1742 #include <sys/types.h>
1743 #include <sys/stat.h>
1744 #include <unistd.h>
1745 main() { 
1746   struct stat st;
1747   char tpl[20]="/tmp/test.XXXXXX"; 
1748   int fd = mkstemp(tpl); 
1749   if (fd == -1) exit(1);
1750   unlink(tpl);
1751   if (fstat(fd, &st) != 0) exit(1);
1752   if ((st.st_mode & 0777) != 0600) exit(1);
1753   exit(0);
1755 samba_cv_HAVE_SECURE_MKSTEMP=yes,
1756 samba_cv_HAVE_SECURE_MKSTEMP=no,
1757 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
1758 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
1759     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
1762 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
1763 AC_TRY_RUN([#include <unistd.h>
1764 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
1765 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
1766 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
1767     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
1770 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
1771 AC_TRY_RUN([main() { exit(getuid() != 0); }],
1772            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
1773 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
1774     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
1775 else
1776     AC_MSG_WARN(running as non-root will disable some tests)
1779 ##################
1780 # look for a method of finding the list of network interfaces
1781 iface=no;
1782 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
1783 AC_TRY_RUN([
1784 #define HAVE_IFACE_AIX 1
1785 #define AUTOCONF_TEST 1
1786 #include "confdefs.h"
1787 #include "${srcdir-.}/lib/interfaces.c"],
1788            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
1789 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
1790     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
1793 if test $iface = no; then
1794 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
1795 AC_TRY_RUN([
1796 #define HAVE_IFACE_IFCONF 1
1797 #define AUTOCONF_TEST 1
1798 #include "confdefs.h"
1799 #include "${srcdir-.}/lib/interfaces.c"],
1800            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
1801 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
1802     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
1806 if test $iface = no; then
1807 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
1808 AC_TRY_RUN([
1809 #define HAVE_IFACE_IFREQ 1
1810 #define AUTOCONF_TEST 1
1811 #include "confdefs.h"
1812 #include "${srcdir-.}/lib/interfaces.c"],
1813            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
1814 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
1815     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
1820 ################################################
1821 # look for a method of setting the effective uid
1822 seteuid=no;
1823 if test $seteuid = no; then
1824 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
1825 AC_TRY_RUN([
1826 #define AUTOCONF_TEST 1
1827 #define USE_SETRESUID 1
1828 #include "confdefs.h"
1829 #include "${srcdir-.}/lib/util_sec.c"],
1830            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
1831 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
1832     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
1837 if test $seteuid = no; then
1838 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
1839 AC_TRY_RUN([
1840 #define AUTOCONF_TEST 1
1841 #define USE_SETREUID 1
1842 #include "confdefs.h"
1843 #include "${srcdir-.}/lib/util_sec.c"],
1844            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
1845 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
1846     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
1850 if test $seteuid = no; then
1851 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
1852 AC_TRY_RUN([
1853 #define AUTOCONF_TEST 1
1854 #define USE_SETEUID 1
1855 #include "confdefs.h"
1856 #include "${srcdir-.}/lib/util_sec.c"],
1857            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
1858 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
1859     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
1863 if test $seteuid = no; then
1864 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
1865 AC_TRY_RUN([
1866 #define AUTOCONF_TEST 1
1867 #define USE_SETUIDX 1
1868 #include "confdefs.h"
1869 #include "${srcdir-.}/lib/util_sec.c"],
1870            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
1871 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
1872     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
1877 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
1878 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
1879            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
1880 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
1881     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
1884 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
1885 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
1886            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
1887 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
1888     AC_DEFINE(FTRUNCATE_NEEDS_ROOT,1,[Whether ftruncate() needs root])
1891 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
1892 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
1893            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
1894 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
1895     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
1898 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
1899 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
1900            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
1901 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
1902     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
1904 else
1907 dnl Don't check for 64 bit fcntl locking if we know that the
1908 dnl glibc2.1 broken check has succeeded.
1909 dnl 
1911   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
1912   AC_TRY_RUN([
1913 #if defined(HAVE_UNISTD_H)
1914 #include <unistd.h>
1915 #endif
1916 #include <stdio.h>
1917 #include <stdlib.h>
1919 #ifdef HAVE_FCNTL_H
1920 #include <fcntl.h>
1921 #endif
1923 #ifdef HAVE_SYS_FCNTL_H
1924 #include <sys/fcntl.h>
1925 #endif
1926 main() { struct flock64 fl64;
1927 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
1928 exit(0);
1929 #else
1930 exit(1);
1931 #endif
1933        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
1935   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
1936       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
1937   fi
1940 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
1941 AC_TRY_COMPILE([#include <sys/types.h>
1942 #include <sys/stat.h>
1943 #include <unistd.h>],
1944 [struct stat st;  st.st_blocks = 0;],
1945 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
1946 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
1947     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
1948 fi 
1950 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
1951 AC_TRY_COMPILE([#include <sys/types.h>
1952 #include <sys/stat.h>
1953 #include <unistd.h>],
1954 [struct stat st;  st.st_blksize = 0;],
1955 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
1956 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
1957     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
1960 case "$host_os" in
1961 *linux*)
1962 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
1963 AC_TRY_COMPILE([
1964 #ifdef HAVE_SYS_VFS_H
1965 #include <sys/vfs.h>
1966 #endif
1967 #ifdef HAVE_SYS_CAPABILITY_H
1968 #include <sys/capability.h>
1969 #endif
1970 ],[int i;],
1971    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
1972 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
1973    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
1976 esac
1978 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
1979 AC_TRY_COMPILE([#include <sys/acl.h>
1980 #if defined(HAVE_RPCSVC_NIS_H)
1981 #include <rpcsvc/nis.h>
1982 #endif],
1983 [int i;],
1984 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
1985 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
1986         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
1990 #################################################
1991 # check for smbwrapper support
1992 AC_MSG_CHECKING(whether to use smbwrapper)
1993 AC_ARG_WITH(smbwrapper,
1994 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
1995 [ case "$withval" in
1996   yes)
1997     AC_MSG_RESULT(yes)
1998     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
1999         WRAPPROG="bin/smbsh\$(EXEEXT)"
2000         WRAP="bin/smbwrapper.$SHLIBEXT"
2002         if test x$ATTEMPT_WRAP32_BUILD = x; then
2003                 WRAP32=""
2004         else
2005                         WRAP32=bin/smbwrapper.32.$SHLIBEXT
2006         fi
2008 # Conditions under which smbwrapper should not be built.
2010         if test x$PICFLAG = x; then
2011            echo No support for PIC code - disabling smbwrapper and smbsh
2012            WRAPPROG=""
2013            WRAP=""
2014            WRAP32=""
2015         elif test x$ac_cv_func_syscall = xno; then
2016            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
2017            WRAPPROG=""
2018            WRAP=""
2019            WRAP32=""
2020         fi
2021         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP $WRAP32"
2022         SMBWRAPPER="$WRAPPROG $WRAP $WRAP32"
2023     ;;
2024   *)
2025     AC_MSG_RESULT(no)
2026     ;;
2027   esac ],
2028   AC_MSG_RESULT(no)
2031 #################################################
2032 # check for AFS clear-text auth support
2033 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2034 AC_ARG_WITH(afs,
2035 [  --with-afs              Include AFS clear-text auth support (default=no) ],
2036 [ case "$withval" in
2037   yes)
2038     AC_MSG_RESULT(yes)
2039     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2040     ;;
2041   *)
2042     AC_MSG_RESULT(no)
2043     ;;
2044   esac ],
2045   AC_MSG_RESULT(no)
2049 #################################################
2050 # check for the DFS clear-text auth system
2051 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2052 AC_ARG_WITH(dfs,
2053 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
2054 [ case "$withval" in
2055   yes)
2056     AC_MSG_RESULT(yes)
2057     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2058     ;;
2059   *)
2060     AC_MSG_RESULT(no)
2061     ;;
2062   esac ],
2063   AC_MSG_RESULT(no)
2066 #################################################
2067 # active directory support
2069 with_ads_support=yes
2070 AC_MSG_CHECKING([whether to use Active Directory])
2072 AC_ARG_WITH(ads,
2073 [   --with-ads  Active Directory support (default yes)],
2074 [ case "$withval" in
2075     no)
2076         with_ads_support=no
2077         ;;
2078   esac ])
2080 if test x"$with_ads_support" = x"yes"; then
2081    AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
2084 AC_MSG_RESULT($with_ads_support)
2086 FOUND_KRB5=no
2087 if test x"$with_ads_support" = x"yes"; then
2089   #################################################
2090   # check for krb5-config from recent MIT and Heimdal kerberos 5
2091   AC_PATH_PROG(KRB5_CONFIG, krb5-config)
2092   AC_MSG_CHECKING(for working krb5-config)
2093   if test -x "$KRB5_CONFIG"; then
2094     LIBS="$LIBS `$KRB5_CONFIG --libs`"
2095     CFLAGS="$CFLAGS `$KRB5_CONFIG --cflags`" 
2096     CPPFLAGS="$CPPFLAGS `$KRB5_CONFIG --cflags`"
2097     FOUND_KRB5=yes
2098     AC_MSG_RESULT(yes)
2099   else
2100     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
2101   fi
2102   
2103   if test x$FOUND_KRB5 = x"no"; then
2104   #################################################
2105   # check for location of Kerberos 5 install
2106   AC_MSG_CHECKING(for kerberos 5 install path)
2107   AC_ARG_WITH(krb5,
2108   [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
2109   [ case "$withval" in
2110     no)
2111       AC_MSG_RESULT(no)
2112       ;;
2113     *)
2114       AC_MSG_RESULT(yes)
2115       LIBS="$LIBS -lkrb5"
2116       CFLAGS="$CFLAGS -I$withval/include"
2117       CPPFLAGS="$CPPFLAGS -I$withval/include"
2118       LDFLAGS="$LDFLAGS -L$withval/lib"
2119       FOUND_KRB5=yes
2120       ;;
2121     esac ],
2122     AC_MSG_RESULT(no)
2123   )
2124   fi
2126 if test x$FOUND_KRB5 = x"no"; then
2127 #################################################
2128 # see if this box has the SuSE location for the heimdal kerberos implementation
2129 AC_MSG_CHECKING(for /usr/include/heimdal)
2130 if test -d /usr/include/heimdal; then
2131     if test -f /usr/lib/heimdal/lib/libkrb5.a; then
2132         LIBS="$LIBS -lkrb5"
2133         CFLAGS="$CFLAGS -I/usr/include/heimdal"
2134         CPPFLAGS="$CPPFLAGS -I/usr/include/heimdal"
2135         LDFLAGS="$LDFLAGS -L/usr/lib/heimdal/lib"
2136         AC_MSG_RESULT(yes)
2137     else
2138         LIBS="$LIBS -lkrb5"
2139         CFLAGS="$CFLAGS -I/usr/include/heimdal"
2140         CPPFLAGS="$CPPFLAGS -I/usr/include/heimdal"
2141         AC_MSG_RESULT(yes)
2143     fi
2144 else
2145     AC_MSG_RESULT(no)
2150 if test x$FOUND_KRB5 = x"no"; then
2151 #################################################
2152 # see if this box has the RedHat location for kerberos
2153 AC_MSG_CHECKING(for /usr/kerberos)
2154 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
2155     LIBS="$LIBS -lkrb5"
2156     LDFLAGS="$LDFLAGS -L/usr/kerberos/lib"
2157     CFLAGS="$CFLAGS -I/usr/kerberos/include"
2158     CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
2159     AC_MSG_RESULT(yes)
2160 else
2161     AC_MSG_RESULT(no)
2165   # now check for krb5.h. Some systems have the libraries without the headers!
2166   # note that this check is done here to allow for different kerberos
2167   # include paths
2168   AC_CHECK_HEADERS(krb5.h)
2170   # now check for gssapi headers.  This is also done here to allow for
2171   # different kerberos include paths
2172   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
2174   ##################################################################
2175   # we might need the k5crypto and com_err libraries on some systems
2176   AC_CHECK_LIB(com_err, _et_list, [LIBS="$LIBS -lcom_err"])
2177   AC_CHECK_LIB(k5crypto, krb5_encrypt_data, [LIBS="$LIBS -lk5crypto"])
2178   # Heimdal checks.
2179   AC_CHECK_LIB(crypto, des_set_key, [LIBS="$LIBS -lcrypto"])
2180   AC_CHECK_LIB(asn1, copy_Authenticator, [LIBS="$LIBS -lasn1 -lroken"])
2181   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
2182   AC_CHECK_LIB(gssapi, gss_display_status, [LIBS="$LIBS -lgssapi -lkrb5 -lasn1";
2183         AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])])
2185   AC_CHECK_LIB(krb5, krb5_set_real_time, [AC_DEFINE(HAVE_KRB5_SET_REAL_TIME,1,[Whether krb5_set_real_time is available])])
2186   AC_CHECK_LIB(krb5, krb5_set_default_in_tkt_etypes, [AC_DEFINE(HAVE_KRB5_SET_DEFAULT_IN_TKT_ETYPES,1,[Whether krb5_set_default_in_tkt_etypes, is available])])
2187   AC_CHECK_LIB(krb5, krb5_set_default_tgs_ktypes, [AC_DEFINE(HAVE_KRB5_SET_DEFAULT_TGS_KTYPES,1,[Whether krb5_set_default_tgs_ktypes is available])])
2189   AC_CHECK_LIB(krb5, krb5_principal2salt, [AC_DEFINE(HAVE_KRB5_PRINCIPAL2SALT,1,[Whether krb5_principal2salt is available])])
2190   AC_CHECK_LIB(krb5, krb5_use_enctype, [AC_DEFINE(HAVE_KRB5_USE_ENCTYPE,1,[Whether krb5_use_enctype is available])])
2191   AC_CHECK_LIB(krb5, krb5_string_to_key, [AC_DEFINE(HAVE_KRB5_STRING_TO_KEY,1,[Whether krb5_string_to_key is available])])
2192   AC_CHECK_LIB(krb5, krb5_get_pw_salt, [AC_DEFINE(HAVE_KRB5_GET_PW_SALT,1,[Whether krb5_get_pw_salt is available])])
2193   AC_CHECK_LIB(krb5, krb5_string_to_key_salt, [AC_DEFINE(HAVE_KRB5_STRING_TO_KEY_SALT,1,[Whether krb5_string_to_key_salt is available])])
2194   AC_CHECK_LIB(krb5, krb5_auth_con_setkey, [AC_DEFINE(HAVE_KRB5_AUTH_CON_SETKEY,1,[Whether krb5_auth_con_setkey is available])])
2195   AC_CHECK_LIB(krb5, krb5_auth_con_setuseruserkey, [AC_DEFINE(HAVE_KRB5_AUTH_CON_SETUSERUSERKEY,1,[Whether krb5_auth_con_setuseruserkey is available])])
2196   AC_CHECK_LIB(krb5, krb5_locate_kdc, [AC_DEFINE(HAVE_KRB5_LOCATE_KDC,1,[Whether krb5_locate_kdc is available])])
2197   AC_CHECK_LIB(krb5, krb5_get_permitted_enctypes, [AC_DEFINE(HAVE_KRB5_GET_PERMITTED_ENCTYPES,1,[Whether krb5_get_permitted_enctypes is available])])
2198   AC_CHECK_LIB(krb5, krb5_get_default_in_tkt_etypes, [AC_DEFINE(HAVE_KRB5_GET_DEFAULT_IN_TKT_ETYPES,1,[Whether krb5_get_default_in_tkt_etypes is available])])
2199   AC_CHECK_LIB(krb5, krb5_free_ktypes, [AC_DEFINE(HAVE_KRB5_FREE_KTYPES,1,[Whether krb5_free_ktypes is available])])
2201 AC_CACHE_CHECK([for addrtype in krb5_address],samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
2202 AC_TRY_COMPILE([#include <krb5.h>],
2203 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
2204 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
2205 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
2206     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,[Whether the krb5_address struct has a addrtype property])
2209 AC_CACHE_CHECK([for addr_type in krb5_address],samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
2210 AC_TRY_COMPILE([#include <krb5.h>],
2211 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
2212 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
2213 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
2214     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,[Whether the krb5_address struct has a addr_type property])
2217 AC_CACHE_CHECK([for enc_part2 in krb5_ticket],samba_cv_HAVE_KRB5_TKT_ENC_PART2,[
2218 AC_TRY_COMPILE([#include <krb5.h>],
2219 [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
2220 samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
2221 if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
2222     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,[Whether the krb5_ticket struct has a enc_part2 property])
2225   ########################################################
2226   # now see if we can find the krb5 libs in standard paths
2227   # or as specified above
2228   AC_CHECK_LIB(krb5, krb5_mk_req_extended, [LIBS="$LIBS -lkrb5";
2229         AC_DEFINE(HAVE_KRB5,1,[Whether KRB5 is available])])
2231   ########################################################
2232   # now see if we can find the gssapi libs in standard paths
2233   AC_CHECK_LIB(gssapi_krb5, gss_display_status, [LIBS="$LIBS -lgssapi_krb5";
2234         AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])])
2238 ########################################################
2239 # Compile with LDAP support?
2241 with_ldap_support=yes
2242 AC_MSG_CHECKING([whether to use LDAP])
2244 AC_ARG_WITH(ldap,
2245 [   --with-ldap  LDAP support (default yes)],
2246 [ case "$withval" in
2247     no)
2248         with_ldap_support=no
2249         ;;
2250   esac ])
2252 AC_MSG_RESULT($with_ldap_support)
2254 if test x"$with_ldap_support" = x"yes"; then
2256   ##################################################################
2257   # we might need the lber lib on some systems. To avoid link errors
2258   # this test must be before the libldap test
2259   AC_CHECK_LIB(lber, ber_scanf, [LIBS="$LIBS -llber"])
2261   ########################################################
2262   # now see if we can find the ldap libs in standard paths
2263   if test x$have_ldap != xyes; then
2264   AC_CHECK_LIB(ldap, ldap_domain2hostlist, [LIBS="$LIBS -lldap";
2265         AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])])
2267         ########################################################
2268         # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2269         # Check found in pam_ldap 145.
2270         AC_CHECK_FUNCS(ldap_set_rebind_proc)
2271         AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, pam_ldap_cv_ldap_set_rebind_proc, [
2272         AC_TRY_COMPILE([
2273         #include <lber.h>
2274         #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]) ])
2275         AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $pam_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
2276   fi
2279 ########################################################
2280 # Compile with MySQL support?
2281 AM_PATH_MYSQL([0.11.0],[MODULE_MYSQL=bin/mysql.so],[MODULE_MYSQL=])
2282 CFLAGS="$CFLAGS $MYSQL_CFLAGS"
2283 AC_SUBST(MODULE_MYSQL)
2285 ########################################################
2286 # Compile with XML support?
2287 AM_PATH_XML2([2.0.0],[MODULE_XML=bin/xml.so],[MODULE_XML=])
2288 CFLAGS="$CFLAGS $XML_CFLAGS"
2289 AC_SUBST(MODULE_XML)
2291 #################################################
2292 # check for automount support
2293 AC_MSG_CHECKING(whether to use automount)
2294 AC_ARG_WITH(automount,
2295 [  --with-automount        Include automount support (default=no)],
2296 [ case "$withval" in
2297   yes)
2298     AC_MSG_RESULT(yes)
2299     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
2300     ;;
2301   *)
2302     AC_MSG_RESULT(no)
2303     ;;
2304   esac ],
2305   AC_MSG_RESULT(no)
2308 #################################################
2309 # check for smbmount support
2310 AC_MSG_CHECKING(whether to use smbmount)
2311 AC_ARG_WITH(smbmount,
2312 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
2313 [ case "$withval" in
2314   yes)
2315         case "$host_os" in
2316         *linux*)
2317                 AC_MSG_RESULT(yes)
2318                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
2319                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
2320                 ;;
2321         *)
2322                 AC_MSG_ERROR(not on a linux system!)
2323                 ;;
2324         esac
2325     ;;
2326   *)
2327     AC_MSG_RESULT(no)
2328     ;;
2329   esac ],
2330   AC_MSG_RESULT(no)
2334 #################################################
2335 # check for a PAM clear-text auth, accounts, password and session support
2336 with_pam_for_crypt=no
2337 AC_MSG_CHECKING(whether to use PAM)
2338 AC_ARG_WITH(pam,
2339 [  --with-pam              Include PAM support (default=no)],
2340 [ case "$withval" in
2341   yes)
2342     AC_MSG_RESULT(yes)
2343     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
2344     AUTHLIBS="$AUTHLIBS -lpam"
2345     with_pam_for_crypt=yes
2346     ;;
2347   *)
2348     AC_MSG_RESULT(no)
2349     ;;
2350   esac ],
2351   AC_MSG_RESULT(no)
2354 # we can't build a pam module if we don't have pam.
2355 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
2357 #################################################
2358 # check for pam_smbpass support
2359 AC_MSG_CHECKING(whether to use pam_smbpass)
2360 AC_ARG_WITH(pam_smbpass,
2361 [  --with-pam_smbpass      Build a PAM module to allow other applications to use our smbpasswd file (default=no)],
2362 [ case "$withval" in
2363   yes)
2364     AC_MSG_RESULT(yes)
2366 # Conditions under which pam_smbpass should not be built.
2368        if test x$PICFLAG = x; then
2369           AC_MSG_RESULT([No support for PIC code - disabling pam_smbpass])
2370        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
2371           AC_MSG_RESULT([No libpam found -- disabling pam_smbpass])
2372        else
2373           SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.so"
2374        fi
2375     ;;
2376   *)
2377     AC_MSG_RESULT(no)
2378     ;;
2379   esac ],
2380   AC_MSG_RESULT(no)
2384 ###############################################
2385 # test for where we get crypt() from, but only
2386 # if not using PAM
2387 if test x"$with_pam_for_crypt" = x"no"; then
2388 AC_CHECK_FUNCS(crypt)
2389 if test x"$ac_cv_func_crypt" = x"no"; then
2390     AC_CHECK_LIB(crypt, crypt, [AUTHLIBS="$AUTHLIBS -lcrypt";
2391         AC_DEFINE(HAVE_CRYPT,1,[Whether crypt() is available])])
2396 ## moved after the check for -lcrypt in order to
2397 ## ensure that the necessary libraries are included
2398 ## check checking for truncated salt.  Wrapped by the
2399 ## $with_pam_for_crypt variable as above   --jerry
2401 if test $with_pam_for_crypt = no; then
2402 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
2403 crypt_LIBS="$LIBS"
2404 LIBS="$AUTHLIBS $LIBS"
2405 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
2406         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
2407 LIBS="$crypt_LIBS"])
2408 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
2409         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
2413 # New experimental SAM system
2415 AC_MSG_CHECKING([whether to build the new (experimental) SAM database])
2416 AC_ARG_WITH(sam,
2417 [  --with-sam              Build new (experimental) SAM database (default=no)],
2418 [ case "$withval" in
2419   yes)
2420     AC_MSG_RESULT(yes)
2421     AC_DEFINE(WITH_SAM,1,[Whether to build the new (experimental) SAM database])
2422     ;;
2423   *)
2424     AC_MSG_RESULT(no)
2425     ;;
2426   esac ],
2427   AC_MSG_RESULT(no)
2431 ########################################################################################
2433 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
2435 ########################################################################################
2437 #################################################
2438 # check for a LDAP password database configuration backwards compatibility
2439 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
2440 AC_ARG_WITH(ldapsam,
2441 [  --with-ldapsam           Include LDAP SAM 2.2 compatible configuration (default=no)],
2442 [ case "$withval" in
2443   yes)
2444     AC_MSG_RESULT(yes)
2445     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatibel LDAP SAM configuration])
2446     ;;
2447   *)
2448     AC_MSG_RESULT(no)
2449     ;;
2450   esac ],
2451   AC_MSG_RESULT(no)
2454 #################################################
2455 # check for a TDB password database
2456 AC_MSG_CHECKING(whether to use TDB SAM database)
2457 AC_ARG_WITH(tdbsam,
2458 [  --with-tdbsam           Include experimental TDB SAM support (default=no)],
2459 [ case "$withval" in
2460   yes)
2461     AC_MSG_RESULT(yes)
2462     AC_DEFINE(WITH_TDB_SAM,1,[Whether to include experimental TDB SAM support])
2463     ;;
2464   *)
2465     AC_MSG_RESULT(no)
2466     ;;
2467   esac ],
2468   AC_MSG_RESULT(no)
2471 #################################################
2472 # check for a NISPLUS password database
2473 AC_MSG_CHECKING(whether to use NISPLUS SAM database)
2474 AC_ARG_WITH(nisplussam,
2475 [  --with-nisplussam       Include NISPLUS SAM support (default=no)],
2476 [ case "$withval" in
2477   yes)
2478     AC_MSG_RESULT(yes)
2479     AC_DEFINE(WITH_NISPLUS_SAM,1,[Whether to include nisplus SAM support])
2480     ;;
2481   *)
2482     AC_MSG_RESULT(no)
2483     ;;
2484   esac ],
2485   AC_MSG_RESULT(no)
2488 ########################################################################################
2490 ## END OF TESTS FOR SAM BACKENDS.  
2492 ########################################################################################
2494 #################################################
2495 # check for a NISPLUS_HOME support 
2496 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
2497 AC_ARG_WITH(nisplus-home,
2498 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
2499 [ case "$withval" in
2500   yes)
2501     AC_MSG_RESULT(yes)
2502     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
2503     ;;
2504   *)
2505     AC_MSG_RESULT(no)
2506     ;;
2507   esac ],
2508   AC_MSG_RESULT(no)
2511 #################################################
2512 # check for syslog logging
2513 AC_MSG_CHECKING(whether to use syslog logging)
2514 AC_ARG_WITH(syslog,
2515 [  --with-syslog           Include experimental SYSLOG support (default=no)],
2516 [ case "$withval" in
2517   yes)
2518     AC_MSG_RESULT(yes)
2519     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
2520     ;;
2521   *)
2522     AC_MSG_RESULT(no)
2523     ;;
2524   esac ],
2525   AC_MSG_RESULT(no)
2528 #################################################
2529 # check for a shared memory profiling support
2530 AC_MSG_CHECKING(whether to use profiling)
2531 AC_ARG_WITH(profiling-data,
2532 [  --with-profiling-data   Include gathering source code profile information (default=no)],
2533 [ case "$withval" in
2534   yes)
2535     AC_MSG_RESULT(yes)
2536     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
2537     ;;
2538   *)
2539     AC_MSG_RESULT(no)
2540     ;;
2541   esac ],
2542   AC_MSG_RESULT(no)
2546 #################################################
2547 # check for experimental disk-quotas support
2548 QUOTAOBJS=smbd/noquotas.o
2550 AC_MSG_CHECKING(whether to support disk-quotas)
2551 AC_ARG_WITH(quotas,
2552 [  --with-quotas           Include experimental disk-quota support (default=no)],
2553 [ case "$withval" in
2554   yes)
2555     AC_MSG_RESULT(yes)
2556     case "$host_os" in
2557       *linux*)
2558         # Check for kernel 2.4.x quota braindamage...
2559         AC_CACHE_CHECK([for linux 2.4.x quota braindamage..],samba_cv_linux_2_4_quota_braindamage, [
2560         AC_TRY_COMPILE([#include <stdio.h>
2561 #include <sys/types.h>
2562 #include <asm/types.h>
2563 #include <linux/quota.h>
2564 #include <mntent.h>
2565 #include <linux/unistd.h>],[struct mem_dqblk D;],
2566       samba_cv_linux_2_4_quota_braindamage=yes,samba_cv_linux_2_4_quota_braindamage=no)])
2567 if test x"$samba_cv_linux_2_4_quota_braindamage" = x"yes"; then
2568         AC_DEFINE(LINUX_QUOTAS_2,1,[linux 2.4.x quota braindamage])
2569 else
2570         AC_DEFINE(LINUX_QUOTAS_1,1,[linux quotas])
2572         ;;
2573       *)
2574         ;;
2575     esac
2576     QUOTAOBJS=smbd/quotas.o
2577     AC_DEFINE(WITH_QUOTAS,1,[Whether to include experimental quota support])
2578     ;;
2579   *)
2580     AC_MSG_RESULT(no)
2581     ;;
2582   esac ],
2583   AC_MSG_RESULT(no)
2585 AC_SUBST(QUOTAOBJS)
2587 #################################################
2588 # check for experimental utmp accounting
2590 AC_MSG_CHECKING(whether to support utmp accounting)
2591 AC_ARG_WITH(utmp,
2592 [  --with-utmp             Include experimental utmp accounting (default=no)],
2593 [ case "$withval" in
2594   yes)
2595     AC_MSG_RESULT(yes)
2596     AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
2597     ;;
2598   *)
2599     AC_MSG_RESULT(no)
2600     ;;
2601   esac ],
2602   AC_MSG_RESULT(no)
2605 #################################################
2606 # choose native language(s) of man pages
2607 AC_MSG_CHECKING(chosen man pages' language(s))
2608 AC_ARG_WITH(manpages-langs,
2609 [  --with-manpages-langs={en,ja,pl}  Choose man pages' language(s). (en)],
2610 [ case "$withval" in
2611   yes|no)
2612     AC_MSG_WARN(--with-manpages-langs called without argument - will use default)
2613     manlangs="en"
2614   ;;
2615   *)
2616     manlangs="$withval"
2617   ;;
2618   esac
2620   AC_MSG_RESULT($manlangs)
2621   manlangs=`echo $manlangs | sed "s/,/ /g"`   # replacing commas with spaces to produce a list
2622   AC_SUBST(manlangs)],
2624   [manlangs="en"
2625   AC_MSG_RESULT($manlangs)
2626   AC_SUBST(manlangs)]
2629 #################################################
2630 # should we build libsmbclient?
2632 INSTALLCLIENTCMD_SH=:
2633 INSTALLCLIENTCMD_A=:
2634 LIBSMBCLIENT_SHARED=
2635 LIBSMBCLIENT=
2636 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
2637 AC_ARG_WITH(libsmbclient,
2638 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
2639 [ case "$withval" in
2640   no) 
2641      AC_MSG_RESULT(no)
2642      ;;
2643   *)
2644      if test $BLDSHARED = true; then
2645         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
2646         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
2647         LIBSMBCLIENT=libsmbclient
2648         AC_MSG_RESULT(yes)
2649      else
2650         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
2651         LIBSMBCLIENT=libsmbclient
2652         AC_MSG_RESULT(no shared library support -- will supply static library)
2653      fi
2654      ;;
2655   esac ],
2657 # if unspecified, default is to built it iff possible.
2658   if test $BLDSHARED = true; then
2659      INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
2660      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
2661      LIBSMBCLIENT=libsmbclient
2662      AC_MSG_RESULT(yes)
2663   else
2664      INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
2665      LIBSMBCLIENT=libsmbclient
2666      AC_MSG_RESULT(no shared library support -- will supply static library)
2667   fi]
2671 #################################################
2672 # these tests are taken from the GNU fileutils package
2673 AC_CHECKING(how to get filesystem space usage)
2674 space=no
2676 # Test for statvfs64.
2677 if test $space = no; then
2678   # SVR4
2679   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
2680   [AC_TRY_RUN([
2681 #if defined(HAVE_UNISTD_H)
2682 #include <unistd.h>
2683 #endif
2684 #include <sys/types.h>
2685 #include <sys/statvfs.h>
2686   main ()
2687   {
2688     struct statvfs64 fsd;
2689     exit (statvfs64 (".", &fsd));
2690   }],
2691   fu_cv_sys_stat_statvfs64=yes,
2692   fu_cv_sys_stat_statvfs64=no,
2693   fu_cv_sys_stat_statvfs64=cross)])
2694   if test $fu_cv_sys_stat_statvfs64 = yes; then
2695     space=yes
2696     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
2697   fi
2700 # Perform only the link test since it seems there are no variants of the
2701 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
2702 # because that got a false positive on SCO OSR5.  Adding the declaration
2703 # of a `struct statvfs' causes this test to fail (as it should) on such
2704 # systems.  That system is reported to work fine with STAT_STATFS4 which
2705 # is what it gets when this test fails.
2706 if test $space = no; then
2707   # SVR4
2708   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
2709                  [AC_TRY_LINK([#include <sys/types.h>
2710 #include <sys/statvfs.h>],
2711                               [struct statvfs fsd; statvfs (0, &fsd);],
2712                               fu_cv_sys_stat_statvfs=yes,
2713                               fu_cv_sys_stat_statvfs=no)])
2714   if test $fu_cv_sys_stat_statvfs = yes; then
2715     space=yes
2716     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
2717   fi
2720 if test $space = no; then
2721   # DEC Alpha running OSF/1
2722   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
2723   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
2724   [AC_TRY_RUN([
2725 #include <sys/param.h>
2726 #include <sys/types.h>
2727 #include <sys/mount.h>
2728   main ()
2729   {
2730     struct statfs fsd;
2731     fsd.f_fsize = 0;
2732     exit (statfs (".", &fsd, sizeof (struct statfs)));
2733   }],
2734   fu_cv_sys_stat_statfs3_osf1=yes,
2735   fu_cv_sys_stat_statfs3_osf1=no,
2736   fu_cv_sys_stat_statfs3_osf1=no)])
2737   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
2738   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
2739     space=yes
2740     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
2741   fi
2744 if test $space = no; then
2745 # AIX
2746   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
2747 member (AIX, 4.3BSD)])
2748   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
2749   [AC_TRY_RUN([
2750 #ifdef HAVE_SYS_PARAM_H
2751 #include <sys/param.h>
2752 #endif
2753 #ifdef HAVE_SYS_MOUNT_H
2754 #include <sys/mount.h>
2755 #endif
2756 #ifdef HAVE_SYS_VFS_H
2757 #include <sys/vfs.h>
2758 #endif
2759   main ()
2760   {
2761   struct statfs fsd;
2762   fsd.f_bsize = 0;
2763   exit (statfs (".", &fsd));
2764   }],
2765   fu_cv_sys_stat_statfs2_bsize=yes,
2766   fu_cv_sys_stat_statfs2_bsize=no,
2767   fu_cv_sys_stat_statfs2_bsize=no)])
2768   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
2769   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
2770     space=yes
2771     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
2772   fi
2775 if test $space = no; then
2776 # SVR3
2777   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
2778   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
2779   [AC_TRY_RUN([#include <sys/types.h>
2780 #include <sys/statfs.h>
2781   main ()
2782   {
2783   struct statfs fsd;
2784   exit (statfs (".", &fsd, sizeof fsd, 0));
2785   }],
2786     fu_cv_sys_stat_statfs4=yes,
2787     fu_cv_sys_stat_statfs4=no,
2788     fu_cv_sys_stat_statfs4=no)])
2789   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
2790   if test $fu_cv_sys_stat_statfs4 = yes; then
2791     space=yes
2792     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
2793   fi
2796 if test $space = no; then
2797 # 4.4BSD and NetBSD
2798   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
2799 member (4.4BSD and NetBSD)])
2800   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
2801   [AC_TRY_RUN([#include <sys/types.h>
2802 #ifdef HAVE_SYS_PARAM_H
2803 #include <sys/param.h>
2804 #endif
2805 #ifdef HAVE_SYS_MOUNT_H
2806 #include <sys/mount.h>
2807 #endif
2808   main ()
2809   {
2810   struct statfs fsd;
2811   fsd.f_fsize = 0;
2812   exit (statfs (".", &fsd));
2813   }],
2814   fu_cv_sys_stat_statfs2_fsize=yes,
2815   fu_cv_sys_stat_statfs2_fsize=no,
2816   fu_cv_sys_stat_statfs2_fsize=no)])
2817   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
2818   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
2819     space=yes
2820         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
2821   fi
2824 if test $space = no; then
2825   # Ultrix
2826   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
2827   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
2828   [AC_TRY_RUN([#include <sys/types.h>
2829 #ifdef HAVE_SYS_PARAM_H
2830 #include <sys/param.h>
2831 #endif
2832 #ifdef HAVE_SYS_MOUNT_H
2833 #include <sys/mount.h>
2834 #endif
2835 #ifdef HAVE_SYS_FS_TYPES_H
2836 #include <sys/fs_types.h>
2837 #endif
2838   main ()
2839   {
2840   struct fs_data fsd;
2841   /* Ultrix's statfs returns 1 for success,
2842      0 for not mounted, -1 for failure.  */
2843   exit (statfs (".", &fsd) != 1);
2844   }],
2845   fu_cv_sys_stat_fs_data=yes,
2846   fu_cv_sys_stat_fs_data=no,
2847   fu_cv_sys_stat_fs_data=no)])
2848   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
2849   if test $fu_cv_sys_stat_fs_data = yes; then
2850     space=yes
2851     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
2852   fi
2856 # As a gating factor for large file support, in order to
2857 # use <4GB files we must have the following minimal support
2858 # available.
2859 # long long, and a 64 bit off_t or off64_t.
2860 # If we don't have all of these then disable large
2861 # file support.
2863 AC_MSG_CHECKING([if large file support can be enabled])
2864 AC_TRY_COMPILE([
2865 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
2866 #include <sys/types.h>
2867 #else
2868 __COMPILE_ERROR_
2869 #endif
2871 [int i],
2872 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
2873 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
2874         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
2876 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
2878 AC_ARG_WITH(spinlocks, 
2879 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
2880 if test "x$with_spinlocks" = "xyes"; then
2881     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
2883     case "$host_cpu" in
2884         sparc)
2885             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
2886             ;;
2888         i386|i486|i586|i686)
2889             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
2890             ;;
2892         mips)
2893             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
2894             ;;
2896         powerpc)
2897             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
2898             ;;
2899     esac
2902 #################################################
2903 # check for ACL support
2905 AC_MSG_CHECKING(whether to support ACLs)
2906 AC_ARG_WITH(acl-support,
2907 [  --with-acl-support      Include ACL support (default=no)],
2908 [ case "$withval" in
2909   yes)
2911         case "$host_os" in
2912         *sysv5*)
2913                 AC_MSG_RESULT(Using UnixWare ACLs)
2914                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
2915                 ;;
2916         *solaris*)
2917                 AC_MSG_RESULT(Using solaris ACLs)
2918                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
2919                 ;;
2920         *hpux*)
2921                 AC_MSG_RESULT(Using HPUX ACLs)
2922                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
2923                 ;;
2924         *irix*)
2925                 AC_MSG_RESULT(Using IRIX ACLs)
2926                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
2927                 ;;
2928         *aix*)
2929                 AC_MSG_RESULT(Using AIX ACLs)
2930                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
2931                 ;;
2932         *osf*)
2933                 AC_MSG_RESULT(Using Tru64 ACLs)
2934                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
2935                 ACLLIBS="$ACLLIBS -lpacl"
2936                 ;;
2937         *)
2938                 AC_CHECK_LIB(acl,acl_get_file,[ACLLIBS="$ACLLIBS -lacl"])
2939                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
2940                 acl_LIBS=$LIBS
2941                 LIBS="$LIBS -lacl"
2942                 AC_TRY_LINK([#include <sys/types.h>
2943 #include <sys/acl.h>],
2944 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
2945 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
2946                 LIBS=$acl_LIBS])
2947                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
2948                                 AC_MSG_RESULT(Using posix ACLs)
2949                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
2950                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
2951                                 acl_LIBS=$LIBS
2952                                 LIBS="$LIBS -lacl"
2953                                 AC_TRY_LINK([#include <sys/types.h>
2954 #include <sys/acl.h>],
2955 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
2956 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
2957                                 LIBS=$acl_LIBS])
2958                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
2959                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
2960                                 fi
2961                         fi
2962             ;;
2963         esac
2964         ;;
2965   *)
2966     AC_MSG_RESULT(no)
2967     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
2968     ;;
2969   esac ],
2970   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
2971   AC_MSG_RESULT(no)
2974 #################################################
2975 # check for sendfile support
2977 with_sendfile_support=yes
2978 AC_MSG_CHECKING(whether to check to support sendfile)
2979 AC_ARG_WITH(sendfile-support,
2980 [  --with-sendfile-support      Check for sendfile support (default=yes)],
2981 [ case "$withval" in
2982   yes)
2984         AC_MSG_RESULT(yes);
2986         case "$host_os" in
2987         *linux*)
2988                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
2989                 AC_TRY_LINK([#include <sys/sendfile.h>],
2991 int tofd, fromfd;
2992 off64_t offset;
2993 size_t total;
2994 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
2996 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
2998                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
2999                 AC_TRY_LINK([#include <sys/sendfile.h>],
3001 int tofd, fromfd;
3002 off_t offset;
3003 size_t total;
3004 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
3006 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3008 # Try and cope with broken Linux sendfile....
3009                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
3010                 AC_TRY_LINK([\
3011 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
3012 #undef _FILE_OFFSET_BITS
3013 #endif
3014 #include <sys/sendfile.h>],
3016 int tofd, fromfd;
3017 off_t offset;
3018 size_t total;
3019 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
3021 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
3023         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3024                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
3025                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3026                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3027         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3028                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
3029                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
3030                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
3031         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
3032                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
3033                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
3034         else
3035                 AC_MSG_RESULT(no);
3036         fi
3038         ;;
3039         *freebsd*)
3040                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
3041                 AC_TRY_LINK([\
3042 #include <sys/types.h>
3043 #include <unistd.h>
3044 #include <sys/socket.h>
3045 #include <sys/uio.h>],
3047         int fromfd, tofd, ret, total=0;
3048         off_t offset, nwritten;
3049         struct sf_hdtr hdr;
3050         struct iovec hdtrl;
3051         hdr.headers = &hdtrl;
3052         hdr.hdr_cnt = 1;
3053         hdr.trailers = NULL;
3054         hdr.trl_cnt = 0;
3055         hdtrl.iov_base = NULL;
3056         hdtrl.iov_len = 0;
3057         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
3059 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3061         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3062                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
3063                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
3064                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3065         else
3066                 AC_MSG_RESULT(no);
3067         fi
3068         ;;
3070         *hpux*)
3071                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
3072                 AC_TRY_LINK([\
3073 #include <sys/socket.h>
3074 #include <sys/uio.h>],
3076         int fromfd, tofd;
3077         size_t total=0;
3078         struct iovec hdtrl[2];
3079         ssize_t nwritten;
3080         off64_t offset;
3082         hdtrl[0].iov_base = 0;
3083         hdtrl[0].iov_len = 0;
3085         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
3087 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
3088         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
3089                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
3090                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
3091                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3092         else
3093                 AC_MSG_RESULT(no);
3094         fi
3096                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
3097                 AC_TRY_LINK([\
3098 #include <sys/socket.h>
3099 #include <sys/uio.h>],
3101         int fromfd, tofd;
3102         size_t total=0;
3103         struct iovec hdtrl[2];
3104         ssize_t nwritten;
3105         off_t offset;
3107         hdtrl[0].iov_base = 0;
3108         hdtrl[0].iov_len = 0;
3110         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
3112 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
3113         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
3114                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
3115                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
3116                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3117         else
3118                 AC_MSG_RESULT(no);
3119         fi
3120         ;;
3122         *solaris*)
3123                 AC_CHECK_LIB(sendfile,sendfilev)
3124                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
3125                 AC_TRY_LINK([\
3126 #include <sys/sendfile.h>],
3128         int sfvcnt;
3129         size_t xferred;
3130         struct sendfilevec vec[2];
3131         ssize_t nwritten;
3132         int tofd;
3134         sfvcnt = 2;
3136         vec[0].sfv_fd = SFV_FD_SELF;
3137         vec[0].sfv_flag = 0;
3138         vec[0].sfv_off = 0;
3139         vec[0].sfv_len = 0;
3141         vec[1].sfv_fd = 0;
3142         vec[1].sfv_flag = 0;
3143         vec[1].sfv_off = 0;
3144         vec[1].sfv_len = 0;
3145         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
3147 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
3149         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
3150                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
3151                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
3152                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3153         else
3154                 AC_MSG_RESULT(no);
3155         fi
3157                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
3158                 AC_TRY_LINK([\
3159 #include <sys/sendfile.h>],
3161         int sfvcnt;
3162         size_t xferred;
3163         struct sendfilevec vec[2];
3164         ssize_t nwritten;
3165         int tofd;
3167         sfvcnt = 2;
3169         vec[0].sfv_fd = SFV_FD_SELF;
3170         vec[0].sfv_flag = 0;
3171         vec[0].sfv_off = 0;
3172         vec[0].sfv_len = 0;
3174         vec[1].sfv_fd = 0;
3175         vec[1].sfv_flag = 0;
3176         vec[1].sfv_off = 0;
3177         vec[1].sfv_len = 0;
3178         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
3180 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
3182         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
3183                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
3184                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
3185                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
3186         else
3187                 AC_MSG_RESULT(no);
3188         fi
3189         ;;
3191         *)
3192         ;;
3193         esac
3194         ;;
3195   *)
3196     AC_MSG_RESULT(no)
3197     ;;
3198   esac ],
3199   AC_MSG_RESULT(yes)
3203 #################################################
3204 # Check whether winbind is supported on this platform.  If so we need to
3205 # build and install client programs, sbin programs and shared libraries
3207 AC_MSG_CHECKING(whether to build winbind)
3209 # Initially, the value of $host_os decides whether winbind is supported
3211 case "$host_os" in
3212         *linux*|*irix*)
3213                 HAVE_WINBIND=yes
3214                 ;;
3215         *solaris*)
3216                 HAVE_WINBIND=yes
3217                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
3218                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
3219                 ;;
3220         *hpux11*)
3221                 HAVE_WINBIND=yes
3222                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
3223                 ;;
3224         *)
3225                 HAVE_WINBIND=no
3226                 winbind_no_reason=", unsupported on $host_os"
3227                 ;;
3228 esac
3230 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
3231 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
3233 # Check the setting of --with-winbindd
3235 AC_ARG_WITH(winbind,
3236 [  --with-winbind          Build winbind (default, if supported by OS)],
3238   case "$withval" in
3239         yes)
3240                 HAVE_WINBIND=yes
3241                 ;;
3242         no)
3243                 HAVE_WINBIND=no
3244                 winbind_reason=""
3245                 ;;
3246   esac ],
3249 # We need unix domain sockets for winbind
3251 if test x"$HAVE_WINBIND" = x"yes"; then
3252         if test x"$samba_cv_unixsocket" = x"no"; then
3253                 winbind_no_reason=", no unix domain socket support on $host_os"
3254                 HAVE_WINBIND=no
3255         fi
3258 # Display test results
3260 if test x"$HAVE_WINBIND" = x"yes"; then
3261         AC_MSG_RESULT(yes)
3262         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
3264         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
3265         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
3266         if test x"$BLDSHARED" = x"true"; then
3267                 case "$host_os" in
3268                 *irix*)
3269                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/libns_winbind.so"
3270                         ;;
3271                 *)
3272                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/libnss_winbind.so"
3273                         ;;
3274                 esac
3275                 if test x"$with_pam" = x"yes"; then
3276                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.so"
3277                 fi
3278         fi
3279 else
3280         AC_MSG_RESULT(no$winbind_no_reason)
3283 # Solaris has some extra fields in struct passwd that need to be
3284 # initialised otherwise nscd crashes.  Unfortunately autoconf < 2.50
3285 # doesn't have the AC_CHECK_MEMBER macro which would be handy for checking
3286 # this. 
3288 #AC_CHECK_MEMBER(struct passwd.pw_comment,
3289 #               AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),
3290 #               [#include <pwd.h>])
3292 AC_CACHE_CHECK([whether struct passwd has pw_comment],samba_cv_passwd_pw_comment, [
3293     AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_comment;],
3294         samba_cv_passwd_pw_comment=yes,samba_cv_passwd_pw_comment=no)])
3295 if test x"$samba_cv_passwd_pw_comment" = x"yes"; then
3296    AC_DEFINE(HAVE_PASSWD_PW_COMMENT,1,[Whether struct passwd has pw_comment])
3299 #AC_CHECK_MEMBER(struct passwd.pw_age,
3300 #               AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),
3301 #               [#include <pwd.h>])
3303 AC_CACHE_CHECK([whether struct passwd has pw_age],samba_cv_passwd_pw_age, [
3304     AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_age;],
3305         samba_cv_passwd_pw_age=yes,samba_cv_passwd_pw_age=no)])
3306 if test x"$samba_cv_passwd_pw_age" = x"yes"; then
3307    AC_DEFINE(HAVE_PASSWD_PW_AGE,1,[Whether struct passwd has pw_age])
3310 #################################################
3311 # Check to see if we should use the included popt 
3313 AC_ARG_WITH(included-popt,
3314 [  --with-included-popt    use bundled popt library, not from system],
3316   case "$withval" in
3317         yes)
3318                 INCLUDED_POPT=yes
3319                 ;;
3320         no)
3321                 INCLUDED_POPT=no
3322                 ;;
3323   esac ],
3325 if test x"$INCLUDED_POPT" != x"yes"; then
3326     AC_CHECK_LIB(popt, poptGetContext,
3327                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
3330 AC_MSG_CHECKING(whether to use included popt)
3331 if test x"$INCLUDED_POPT" = x"yes"; then
3332     AC_MSG_RESULT(yes)
3333     BUILD_POPT='$(POPT_OBJS)'
3334     FLAGS1="-I$srcdir/popt"
3335 else
3336     AC_MSG_RESULT(no)
3337     LIBS="$LIBS -lpopt"
3339 AC_SUBST(BUILD_POPT)
3340 AC_SUBST(FLAGS1)
3342 #################################################
3343 # Check if the user wants Python
3345 # At the moment, you can use this to set which Python binary to link
3346 # against.  (Libraries built for Python2.2 can't be used by 2.1,
3347 # though they can coexist in different directories.)  In the future
3348 # this might make the Python stuff be built by default.
3350 # Defaulting python breaks the clean target if python isn't installed
3352 PYTHON=
3354 AC_ARG_WITH(python,
3355 [  --with-python=PYTHONNAME  build Python libraries],
3356 [ case "${withval-python}" in
3357   yes)
3358         PYTHON=python
3359         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
3360         ;;
3361   no)
3362         PYTHON=
3363         ;;
3364   *)
3365         PYTHON=${withval-python}
3366         ;;
3367   esac ])
3368 AC_SUBST(PYTHON)
3370 #################################################
3371 # do extra things if we are running insure
3373 if test "${ac_cv_prog_CC}" = "insure"; then
3374         CPPFLAGS="$CPPFLAGS -D__INSURE__"
3377 #################################################
3378 # final configure stuff
3380 AC_MSG_CHECKING([configure summary])
3381 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
3382            AC_MSG_RESULT(yes),
3383            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
3384            AC_MSG_WARN([cannot run when cross-compiling]))
3386 builddir=`pwd`
3387 AC_SUBST(builddir)
3389 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
3390 LIB_REMOVE_USR_LIB(LDFLAGS)
3391 LIB_REMOVE_USR_LIB(LIBS)
3393 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
3394 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
3395 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
3397 AC_OUTPUT(include/stamp-h Makefile script/findsmb)
3399 #################################################
3400 # Print very concise instructions on building/use
3401 if test "x$enable_dmalloc" = xyes
3402 then
3403         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
3404         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])