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