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