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