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