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