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