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