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