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