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