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