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