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