include updates
[tomato.git] / release / src-rt-6.x.4708 / router / samba-3.0.25b / source / configure.in
blobf16766e05101aa23d6f201f3b8e5bfad8e2461d2
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)
7 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
9 SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
10 echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
12 SAMBA_VERSION_SVN_REVISION=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_SVN_REVISION' | cut -d ' ' -f3-`
13 if test -n "${SAMBA_VERSION_SVN_REVISION}";then
14         echo "BUILD REVISION: ${SAMBA_VERSION_SVN_REVISION}"
17 AC_LIBREPLACE_LOCATION_CHECKS
19 AC_DISABLE_STATIC
20 AC_ENABLE_SHARED
22 #################################################
23 # Directory handling stuff to support both the
24 # legacy SAMBA directories and FHS compliant
25 # ones...
26 AC_PREFIX_DEFAULT(/usr/local/samba)
28 rootsbindir="\${SBINDIR}"
29 lockdir="\${VARDIR}/locks"
30 piddir="\${VARDIR}/locks"
31 test "${mandir}" || mandir="\${prefix}/man"
32 logfilebase="\${VARDIR}"
33 privatedir="\${prefix}/private"
34 test "${libdir}" || libdir="\${prefix}/lib"
35 pammodulesdir="\${LIBDIR}/security"
36 configdir="\${LIBDIR}"
37 swatdir="\${prefix}/swat"
39 AC_ARG_WITH(fhs,
40 [  --with-fhs              Use FHS-compliant paths (default=no)],
41 [ case "$withval" in
42   yes)
43     lockdir="\${VARDIR}/lib/samba"
44     piddir="\${VARDIR}/run"
45     mandir="\${prefix}/share/man"
46     logfilebase="\${VARDIR}/log/samba"
47     privatedir="\${CONFIGDIR}/private"
48     libdir="\${prefix}/lib/samba"
49     configdir="\${sysconfdir}/samba"
50     swatdir="\${DATADIR}/samba/swat"
51     ;;
52   esac])
54 #################################################
55 # set private directory location
56 AC_ARG_WITH(privatedir,
57 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
58 [ case "$withval" in
59   yes|no)
60   #
61   # Just in case anybody calls it without argument
62   #
63     AC_MSG_WARN([--with-privatedir called without argument - will use default])
64   ;;
65   * )
66     privatedir="$withval"
67     ;;
68   esac])
70 #################################################
71 # set root sbin directory location
72 AC_ARG_WITH(rootsbindir,
73 [  --with-rootsbindir=DIR  Which directory to use for root sbin ($ac_default_prefix/sbin)],
74 [ case "$withval" in
75   yes|no)
76   #
77   # Just in case anybody calls it without argument
78   #
79     AC_MSG_WARN([--with-rootsbindir called without argument - will use default])
80   ;;
81   * )
82     rootsbindir="$withval"
83     ;;
84   esac])
86 #################################################
87 # set lock directory location
88 AC_ARG_WITH(lockdir,
89 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
90 [ case "$withval" in
91   yes|no)
92   #
93   # Just in case anybody calls it without argument
94   #
95     AC_MSG_WARN([--with-lockdir called without argument - will use default])
96   ;;
97   * )
98     lockdir="$withval"
99     ;;
100   esac])
102 #################################################
103 # set pid directory location
104 AC_ARG_WITH(piddir,
105 [  --with-piddir=DIR       Where to put pid files ($ac_default_prefix/var/locks)],
106 [ case "$withval" in
107   yes|no)
108   #
109   # Just in case anybody calls it without argument
110   #
111     AC_MSG_WARN([--with-piddir called without argument - will use default])
112   ;;
113   * )
114     piddir="$withval"
115     ;;
116   esac])
118 #################################################
119 # set SWAT directory location
120 AC_ARG_WITH(swatdir,
121 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
122 [ case "$withval" in
123   yes|no)
124   #
125   # Just in case anybody does it
126   #
127     AC_MSG_WARN([--with-swatdir called without argument - will use default])
128   ;;
129   * )
130     swatdir="$withval"
131     ;;
132   esac])
134 #################################################
135 # set configuration directory location
136 AC_ARG_WITH(configdir,
137 [  --with-configdir=DIR    Where to put configuration files ($libdir)],
138 [ case "$withval" in
139   yes|no)
140   #
141   # Just in case anybody does it
142   #
143     AC_MSG_WARN([--with-configdir called without argument - will use default])
144   ;;
145   * )
146     configdir="$withval"
147     ;;
148   esac])
150 #################################################
151 # set log directory location
152 AC_ARG_WITH(logfilebase,
153 [  --with-logfilebase=DIR  Where to put log files ($VARDIR)],
154 [ case "$withval" in
155   yes|no)
156   #
157   # Just in case anybody does it
158   #
159     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
160   ;;
161   * )
162     logfilebase="$withval"
163     ;;
164   esac])
166 #################################################
167 # set lib directory location
168 AC_ARG_WITH(libdir,
169 [  --with-libdir=DIR       Where to put libdir ($libdir)],
170 [ case "$withval" in
171   yes|no)
172   #
173   # Just in case anybody does it
174   #
175     AC_MSG_WARN([--with-libdir without argument - will use default])
176   ;;
177   * )
178     libdir="$withval"
179     ;;
180   esac])
182 #################################################
183 # set PAM modules directory location
184 AC_ARG_WITH(pammodulesdir,
185 [  --with-pammodulesdir=DIR  Which directory to use for PAM modules ($ac_default_prefix/$libdir/security)],
186 [ case "$withval" in
187   yes|no)
188   #
189   # Just in case anybody calls it without argument
190   #
191     AC_MSG_WARN([--with-pammodulesdir called without argument - will use default])
192   ;;
193   * )
194     pammodulesdir="$withval"
195     ;;
196   esac])
198 #################################################
199 # set man directory location
200 AC_ARG_WITH(mandir,
201 [  --with-mandir=DIR       Where to put man pages ($mandir)],
202 [ case "$withval" in
203   yes|no)
204   #
205   # Just in case anybody does it
206   #
207     AC_MSG_WARN([--with-mandir without argument - will use default])
208   ;;
209   * )
210     mandir="$withval"
211     ;;
212   esac])
214 AC_ARG_WITH(cfenc,
215 [  --with-cfenc=HEADERDIR  Use internal CoreFoundation encoding API
216                           for optimization (Mac OS X/Darwin only)],
218 # May be in source $withval/CoreFoundation/StringEncodings.subproj.
219 # Should have been in framework $withval/CoreFoundation.framework/Headers.
220 for d in \
221     $withval/CoreFoundation/StringEncodings.subproj \
222     $withval/StringEncodings.subproj \
223     $withval/CoreFoundation.framework/Headers \
224     $withval/Headers \
225     $withval
227     if test -r $d/CFStringEncodingConverter.h; then
228         ln -sfh $d include/CoreFoundation
229     fi
230 done
233 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include  -I. -I${srcdir-.}"
234 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
235 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/talloc"
236 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/tdb/include"
237 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
238 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
240 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/popt"
242 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
243 if test "x${srcdir-.}" != "x."; then
244         SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
247 AC_SUBST(configdir)
248 AC_SUBST(lockdir)
249 AC_SUBST(piddir)
250 AC_SUBST(logfilebase)
251 AC_SUBST(privatedir)
252 AC_SUBST(swatdir)
253 AC_SUBST(bindir)
254 AC_SUBST(sbindir)
255 AC_SUBST(rootsbindir)
256 AC_SUBST(pammodulesdir)
258 dnl Unique-to-Samba variables we'll be playing with.
259 AC_SUBST(SAMBA_CPPFLAGS)
260 AC_SUBST(SHELL)
261 AC_SUBST(LDSHFLAGS)
262 AC_SUBST(SONAMEFLAG)
263 AC_SUBST(SHLD)
264 AC_SUBST(HOST_OS)
265 AC_SUBST(PICFLAG)
266 AC_SUBST(PIE_CFLAGS)
267 AC_SUBST(PIE_LDFLAGS)
268 AC_SUBST(SHLIBEXT)
269 AC_SUBST(INSTALLLIBCMD_SH)
270 AC_SUBST(INSTALLLIBCMD_A)
271 AC_SUBST(UNINSTALLLIBCMD_SH)
272 AC_SUBST(UNINSTALLLIBCMD_A)
273 AC_SUBST(INSTALL_LIBMSRPC)
274 AC_SUBST(UNINSTALL_LIBMSRPC)
275 AC_SUBST(LIBMSRPC_SHARED)
276 AC_SUBST(LIBMSRPC)
277 AC_SUBST(INSTALL_LIBADDNS)
278 AC_SUBST(UNINSTALL_LIBADDNS)
279 AC_SUBST(LIBADDNS_SHARED)
280 AC_SUBST(LIBADDNS)
281 AC_SUBST(INSTALL_LIBSMBCLIENT)
282 AC_SUBST(UNINSTALL_LIBSMBCLIENT)
283 AC_SUBST(LIBSMBCLIENT_SHARED)
284 AC_SUBST(LIBSMBCLIENT)
285 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
286 AC_SUBST(UNINSTALL_LIBSMBSHAREMODES)
287 AC_SUBST(LIBSMBSHAREMODES_SHARED)
288 AC_SUBST(LIBSMBSHAREMODES)
289 AC_SUBST(PRINT_LIBS)
290 AC_SUBST(AUTH_LIBS)
291 AC_SUBST(ACL_LIBS)
292 AC_SUBST(PASSDB_LIBS)
293 AC_SUBST(IDMAP_LIBS)
294 AC_SUBST(KRB5_LIBS)
295 AC_SUBST(UUID_LIBS)
296 AC_SUBST(LDAP_LIBS)
297 AC_SUBST(PAM_MODULES)
298 AC_SUBST(INSTALL_PAM_MODULES)
299 AC_SUBST(UNINSTALL_PAM_MODULES)
300 AC_SUBST(NSS_MODULES)
301 AC_SUBST(EXTRA_BIN_PROGS)
302 AC_SUBST(SMBMOUNT_PROGS)
303 AC_SUBST(CIFSMOUNT_PROGS)
304 AC_SUBST(INSTALL_CIFSMOUNT)
305 AC_SUBST(UNINSTALL_CIFSMOUNT)
306 AC_SUBST(EXTRA_SBIN_PROGS)
307 AC_SUBST(EXTRA_ALL_TARGETS)
308 AC_SUBST(CONFIG_LIBS)
309 AC_SUBST(NSCD_LIBS)
311 ## check for --enable-debug first before checking CFLAGS before
312 ## so that we don't mix -O and -g
313 AC_ARG_ENABLE(debug,
314 [  --enable-debug          Turn on compiler debugging information (default=no)],
315     [if eval "test x$enable_debug = xyes"; then
316         CFLAGS="${CFLAGS} -g"
317     fi])
319 # compile with optimization and without debugging by default, but
320 # allow people to set their own preference.
321 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
322 # if it has no value.  This prevent *very* large debug binaries from occurring
323 # by default.
324 if test "x$CFLAGS" = x; then
325   CFLAGS="-O"
328 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
330 AC_LIBREPLACE_CC_CHECKS
332 m4_include(lib/socket_wrapper/config.m4)
334 #################################################
335 # set prefix for 'make test'
336 selftest_prefix="./"
337 AC_SUBST(selftest_prefix)
338 AC_ARG_WITH(selftest-prefix,
339 [  --with-selftest-prefix=DIR    The prefix where make test will be runned ($selftest_prefix)],
340 [ case "$withval" in
341   yes|no)
342     AC_MSG_WARN([--with-selftest-prefix called without argument - will use default])
343   ;;
344   * )
345     selftest_prefix="$withval"
346     ;;
347   esac
350 #################################################
351 # set path of samba4's smbtorture
352 smbtorture4_path=""
353 AC_SUBST(smbtorture4_path)
354 AC_ARG_WITH(smbtorture4_path,
355 [  --with-smbtorture4-path=PATH    The path to a samba4 smbtorture for make test (none)],
356 [ case "$withval" in
357   yes|no)
358     AC_MSG_ERROR([--with-smbtorture4-path should take a path])
359   ;;
360   * )
361     smbtorture4_path="$withval"
362     if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then
363         AC_MSG_ERROR(['$smbtorture_path' does not  exist!])
364     fi
365   ;;
366  esac
369 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
370     [if eval "test x$enable_developer = xyes"; then
371         developer=yes
372         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
373         # Add -Wdeclaration-after-statement if compiler supports it
374         AC_CACHE_CHECK(
375           [that the C compiler understands -Wdeclaration-after-statement],
376           samba_cv_HAVE_Wdeclaration_after_statement, [
377           AC_TRY_RUN_STRICT([
378             int main(void)
379             {
380                 return 0;
381             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
382             samba_cv_HAVE_Wdeclaration_after_statement=yes,
383             samba_cv_HAVE_Wdeclaration_after_statement=no,
384             samba_cv_HAVE_Wdeclaration_after_statement=cross)
385        ])
386        if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
387             CFLAGS="${CFLAGS} -Wdeclaration-after-statement"
388        fi
389     fi])
391 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
392     [if eval "test x$enable_krb5developer = xyes"; then
393         developer=yes
394         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
395     fi])
397 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
399 if test "x$enable_dmalloc" = xyes
400 then
401         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
402         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
403                   [Define to check invariants around some common functions])
404         LIBS="$LIBS -ldmalloc"  
407 #################################################
408 # check for a shared memory profiling support
409 AC_MSG_CHECKING(whether to use profiling)
410 AC_ARG_WITH(profiling-data,
411 [  --with-profiling-data   Include gathering source code profile information (default=no)],
412 [ case "$withval" in
413   yes)
414     AC_MSG_RESULT(yes)
415     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
416     samba_cv_WITH_PROFILE=yes
417     ;;
418   *)
419     AC_MSG_RESULT(no)
420     samba_cv_WITH_PROFILE=no
421     ;;
422   esac ],
423   AC_MSG_RESULT(no)
426 dnl Checks for programs.
428 AC_PROG_INSTALL
429 AC_PROG_AWK
430 AC_PATH_PROG(PERL, perl)
432 AC_CHECK_TOOL(AR, ar)
434 dnl Check if we use GNU ld
435 LD=ld
436 AC_PROG_LD_GNU
438 dnl Certain versions of GNU ld the default is not to have the
439 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
440 dnl warnings when building modules.
441 if test "$ac_cv_prog_gnu_ld" = "yes"; then
442         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
443         AC_MSG_CHECKING(GNU ld release date)
444         changequote(,)dnl
445         ac_cv_gnu_ld_date=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'`
446         changequote([,])dnl
447         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
448         if test -n "$ac_cv_gnu_ld_date"; then
449         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
450                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
451         fi
452         else
453            AC_MSG_CHECKING(GNU ld release version)
454            changequote(,)dnl
455            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
456            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
457            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
458            changequote([,])dnl
459            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
460            AC_MSG_CHECKING(GNU ld release version major)
461            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
462            AC_MSG_CHECKING(GNU ld release version minor)
463            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
464            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
465              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
466            fi
467         fi
470 dnl look for executable suffix
471 AC_EXEEXT
473 dnl Check if C compiler understands -c and -o at the same time
474 AC_PROG_CC_C_O
475 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
476       BROKEN_CC=
477 else
478       BROKEN_CC=#
480 AC_SUBST(BROKEN_CC)
482 dnl Check if the C compiler understands -Werror
483 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
484  AC_TRY_RUN_STRICT([
485   int main(void)
486   {
487         return 0;
488   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
489   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
490 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
491    Werror_FLAGS="-Werror"
492 else
493 dnl Check if the C compiler understands -w2
494 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
495  AC_TRY_RUN_STRICT([
496   int main(void)
497   {
498         return 0;
499   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
500   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
501 if test x"$samba_cv_HAVE_w2" = x"yes"; then
502    Werror_FLAGS="-w2"
506 dnl Check if the C compiler understands volatile (it should, being ANSI).
507 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
508     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
509         samba_cv_volatile=yes,samba_cv_volatile=no)])
510 if test x"$samba_cv_volatile" = x"yes"; then
511    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
514 ############################################
515 # check if the compiler can handle negative enum values
516 # and don't truncate the values to INT_MAX
517 # a runtime test is needed here
518 AC_SUBST(PIDL_ARGS)
519 AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
520     AC_TRY_RUN(
522         #include <stdio.h>
523         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
524         int main(void) {
525                 enum negative_values v1 = NEGATIVE_VALUE;
526                 unsigned v2 = NEGATIVE_VALUE;
528                 if (v1 != 0xFFFFFFFF) {
529                         printf("%u != 0xFFFFFFFF\n", v1);
530                         return 1;
531                 }
532                 if (v2 != 0xFFFFFFFF) {
533                         printf("%u != 0xFFFFFFFF\n", v2);
534                         return 1;
535                 }
537                 return 0;
538         }
540         SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
541 if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
542         AC_MSG_WARN([using --unit-enums for pidl])
543         PIDL_ARGS="$PIDL_ARGS --uint-enums"
546 dnl Figure out the flags to support named structure initializers
548 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
550 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
551 AC_MSG_CHECKING(uname -s)
552 AC_MSG_RESULT(${UNAME_S})
554 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
555 AC_MSG_CHECKING(uname -r)
556 AC_MSG_RESULT(${UNAME_R})
558 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
559 AC_MSG_CHECKING(uname -m)
560 AC_MSG_RESULT(${UNAME_M})
562 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
563 AC_MSG_CHECKING(uname -p)
564 AC_MSG_RESULT(${UNAME_P})
566 dnl Add #include for broken IRIX header files
567   case "$host_os" in
568         *irix6*)
569                 #TODO add to libreplace
570                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
571                         dnl Fix sensible defaults for MIPSPro compilers. The
572                         dnl error numbers are valid for the 7.3 compilers,
573                         dnl hopefully also valid for the 7.4 series.
574                         dnl
575                         dnl Bugzilla 3801. Force an error on warning 1035
576                         dnl so we don't incorrectly detect stdint.h. This
577                         dnl warning is emitted for #error directives.
578                         CFLAGS="$CFLAGS -diag_error 1035"
579                         dnl 1209: Controlling expression is constant
580                         dnl 1174: Function foo declared but never referenced
581                         dnl 3201: Parameter foo was never referenced
582                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
583                 fi
584         ;;
585 esac
587 DYNEXP=
588 AC_SUBST(DYNEXP)
590 dnl Add modules that have to be built by default here
591 dnl These have to be built static:
592 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_reg rpc_shutdown rpc_lsa_ds rpc_wkssvc rpc_svcctl rpc_ntsvcs rpc_net rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog rpc_echo auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
594 dnl These are preferably build shared, and static if dlopen() is not available
595 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 auth_script vfs_readahead"
597 if test "x$developer" = xyes; then
598    default_static_modules="$default_static_modules rpc_rpcecho"
599    default_shared_modules="$default_shared_modules charset_weird"
603 # Config CPPFLAG settings for strange OS's that must be set
604 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
605 # case statement; its first reference must be unconditional.
607 case "$host_os" in
608     *hpux*)
610 # Defines needed for HPUX support.
611 # HPUX has bigcrypt but (sometimes?) doesn't use it for
612 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
614       case `uname -r` in
615                         *9*|*10*)
616                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
617                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
618                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
619                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
620                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
621                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
622                                 ;;
623                         *11*)
624                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
625                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
626                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
627                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
628                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
629                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
630                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
631                                 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [Unix 98 sources -- needed for socklen_t in getsockopt on HP/UX 11])
632                                 ;;
633       esac
634       ;;
637 # CRAY Unicos has broken const handling
638        *unicos*)
639           AC_MSG_RESULT([disabling const])
640           CPPFLAGS="$CPPFLAGS -Dconst="
641           ;;
642         
644 # AIX4.x doesn't even admit to having large
645 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
647     *aix4*)
648           AC_MSG_RESULT([enabling large file support])
649       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
650           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
651       ;;
653 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
654 # to the existance of large files..
655 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
656 # recommendations on large file support, however it makes the
657 # compile work using gcc 2.7 and 2.8, whereas using the Sun
658 # recommendation makes the compile fail on gcc2.7. JRA.
660 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
662         *solaris*)
663                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
664                 case `uname -r` in
665                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
666                                 AC_MSG_RESULT([no large file support])
667                                 ;;
668                         5.*)
669                         AC_MSG_RESULT([enabling large file support])
670                         if test "$ac_cv_prog_gcc" = yes; then
671                                 ${CC-cc} -v >conftest.c 2>&1
672                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
673                                 rm -fr conftest.c
674                                 case "$ac_cv_gcc_compiler_version_number" in
675                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
676                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
677                                                 LDFLAGS="$LDFLAGS -lthread"
678                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
679                                                 ;;
680                                         *)
681                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
682                                                 LDFLAGS="$LDFLAGS -lthread"
683                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
684                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
685                                                 ;;
686                                 esac
687                         else
688                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
689                                 LDFLAGS="$LDFLAGS -lthread"
690                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
691                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
692                         fi
693                         ;;
694                 esac
695                 ;;
697 # IRIX uses SYSV printing.  Make sure to set that here
699         *irix*)
700                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
701                 ;;
702         *freebsd*|*dragonfly*)
703                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
704                 ;;
706 # VOS may need to have POSIX support and System V compatibility enabled.
708     *vos*)
709     case "$CPPFLAGS" in
710           *-D_POSIX_C_SOURCE*)
711                 ;;
712           *)
713                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
714                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
715                 ;;
716     esac
717     case "$CPPFLAGS" in
718           *-D_SYSV*|*-D_SVID_SOURCE*)
719                 ;;
720           *)
721                 CPPFLAGS="$CPPFLAGS -D_SYSV"
722                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
723     esac
724     ;;
726 # Tests needed for SINIX large file support.
728     *sysv4*)
729       if test $host = mips-sni-sysv4 ; then
730         AC_MSG_CHECKING([for LFS support])
731         old_CPPFLAGS="$CPPFLAGS"
732         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
733         AC_TRY_RUN([
734 #include <unistd.h>
735 main () {
736 #if _LFS64_LARGEFILE == 1
737 exit(0);
738 #else
739 exit(1);
740 #endif
741 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
742         CPPFLAGS="$old_CPPFLAGS"
743         if test x$SINIX_LFS_SUPPORT = xyes ; then
744           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
745                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
746           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
747           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
748           LIBS="`getconf LFS64_LIBS` $LIBS"
749         fi
750       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
751       fi
752     ;;
754 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
756     *linux*)
757         AC_MSG_CHECKING([for LFS support])
758         old_CPPFLAGS="$CPPFLAGS"
759         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
760        AC_TRY_RUN([
761 #include <unistd.h>
762 #include <sys/utsname.h>
763 #include <string.h>
764 #include <stdlib.h>
765 main() {
766 #if _LFS64_LARGEFILE == 1
767        struct utsname uts;
768        char *release;
769        int major, minor;
771        /* Ensure this is glibc 2.2 or higher */
772 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
773        int libc_major = __GLIBC__;
774        int libc_minor = __GLIBC_MINOR__;
776        if (libc_major < 2)
777               exit(1);
778        if (libc_minor < 2)
779               exit(1);
780 #endif
782        /* Ensure this is kernel 2.4 or higher */
784        uname(&uts);
785        release = strdup(uts.release);
786        major = atoi(strsep(&release, "."));
787        minor = atoi(strsep(&release, "."));
789        if (major > 2 || (major == 2 && minor > 3))
790                exit(0);
791        exit(1);
792 #else
793        exit(1);
794 #endif
796 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
797         CPPFLAGS="$old_CPPFLAGS"
798         if test x$LINUX_LFS_SUPPORT = xyes ; then
799                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
800                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
801                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
802                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
803         fi
804         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
805         ;;
808 # MacOS X is the *only* system that uses compose character in utf8. This
809 # is so horribly broken....
811     *darwin*)
812         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
814 # Add a system specific charset module.
815         default_shared_modules="$default_shared_modules charset_macosxfs"
817         ;;
818     *hurd*)
819         AC_MSG_CHECKING([for LFS support])
820         old_CPPFLAGS="$CPPFLAGS"
821         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
822         AC_TRY_RUN([
823 #include <unistd.h>
824 main () {
825 #if _LFS64_LARGEFILE == 1
826 exit(0);
827 #else
828 exit(1);
829 #endif
830 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
831         CPPFLAGS="$old_CPPFLAGS"
832         if test x$GLIBC_LFS_SUPPORT = xyes ; then
833           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
834                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
835           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
836         fi
837       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
838     ;;
840 esac
842 AC_LIBREPLACE_BROKEN_CHECKS
844 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
846 LIBREPLACE_OBJS=""
847 for obj in ${LIBREPLACEOBJ}; do
848         LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
849 done
850 AC_SUBST(LIBREPLACE_OBJS)
852 # add -ldl to the global LIBS
853 LIBS="${LIBS} ${LIBDL}"
855 AC_CHECK_HEADERS(aio.h arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
856 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
857 AC_CHECK_HEADERS(limits.h float.h)
858 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
859 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
860 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
861 AC_CHECK_HEADERS(sys/un.h)
862 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
863 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
864 AC_CHECK_HEADERS(sys/sysmacros.h)
865 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
866 AC_CHECK_HEADERS(langinfo.h locale.h)
867 AC_CHECK_HEADERS(xfs/libxfs.h)
869 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
870 #if HAVE_RPC_RPC_H
871 #include <rpc/rpc.h>
872 #endif
875 ## These fail to compile on IRIX so just check for their presence
876 AC_CHECK_HEADERS(sys/mode.h,,,)
878 # Look for Darwin headers
879 old_CPPFLAGS="$CPPFLAGS"
880 CPPFLAGS="-Iinclude $CPPFLAGS"
881 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
882 CPPFLAGS="$old_CPPFLAGS"
884 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
885 # subdirectory of headers.
886 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
888 # check for linux on amd64 since valgrind is not quite there yet
889 case "$host_os" in
890         *linux*)
891                 case "$UNAME_P" in
892                         *x86_64*)
893                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
894                                 ;;
895                 esac
896                 ;;
897 esac
901 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
902 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
904 case "$host_os" in
905     *hpux*)
906                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
907                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
908                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
909                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
910                 fi
911         ;;
912 esac
913 AC_CHECK_HEADERS(shadow.h)
914 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
915 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
917 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
918 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
920 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
922 # For experimental utmp support (lastlog on some BSD-like systems)
923 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
925 AC_CHECK_SIZEOF(int,cross)
926 AC_CHECK_SIZEOF(long,cross)
927 AC_CHECK_SIZEOF(long long,cross)
928 AC_CHECK_SIZEOF(short,cross)
930 AC_C_CONST
931 AC_C_INLINE
932 AC_C_BIGENDIAN
933 AC_C_CHAR_UNSIGNED
935 AC_TYPE_SIGNAL
936 AC_TYPE_UID_T
937 AC_TYPE_MODE_T
938 AC_TYPE_OFF_T
939 AC_TYPE_SIZE_T
940 AC_TYPE_PID_T
941 AC_STRUCT_ST_RDEV
942 AC_DIRENT_D_OFF
943 AC_CHECK_TYPE(ino_t,unsigned)
944 AC_CHECK_TYPE(loff_t,off_t)
945 AC_CHECK_TYPE(offset_t,loff_t)
946 AC_CHECK_TYPE(ssize_t, int)
947 AC_CHECK_TYPE(wchar_t, unsigned short)
948 AC_CHECK_TYPE(comparison_fn_t,
949 [AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])])
951 ############################################
952 # for cups support we need libcups, and a handful of header files
954 AC_ARG_ENABLE(cups,
955 [  --enable-cups           Turn on CUPS support (default=auto)])
957 if test x$enable_cups != xno; then
958         AC_PATH_PROG(CUPS_CONFIG, cups-config)
960         if test "x$CUPS_CONFIG" != x; then
961                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
962                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
963                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
964                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
965         elif test x"$enable_cups" = x"yes"; then
966                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
967         fi
970 AC_ARG_ENABLE(iprint,
971 [  --enable-iprint         Turn on iPrint support (default=yes if cups is yes)])
973 if test x$enable_iprint != xno; then
974         if test "x$CUPS_CONFIG" != x; then
975                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
976         elif test x"$enable_iprint" = x"yes"; then
977                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
978         fi
981 ############################################
982 # check if the compiler will optimize out function calls
983 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
984     AC_TRY_LINK([
985 #include <stdio.h>],
987                 if (0) {
988                    this_function_does_not_exist();
989                 } else {
990                   return 1;
991                 }
994         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
995 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
996    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
999 ############################################
1000 # check for unix domain sockets
1001 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
1002     AC_TRY_COMPILE([
1003 #include <sys/types.h>
1004 #include <stdlib.h>
1005 #include <stddef.h>
1006 #include <sys/socket.h>
1007 #include <sys/un.h>],
1009   struct sockaddr_un sunaddr;
1010   sunaddr.sun_family = AF_UNIX;
1012         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1013 if test x"$samba_cv_unixsocket" = x"yes"; then
1014    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1018 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
1019     AC_TRY_COMPILE([
1020 #include <sys/types.h>
1021 #if STDC_HEADERS
1022 #include <stdlib.h>
1023 #include <stddef.h>
1024 #endif
1025 #include <sys/socket.h>],[socklen_t i = 0],
1026         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
1027 if test x"$samba_cv_socklen_t" = x"yes"; then
1028    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
1031 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
1032     AC_TRY_COMPILE([
1033 #include <sys/types.h>
1034 #if STDC_HEADERS
1035 #include <stdlib.h>
1036 #include <stddef.h>
1037 #endif
1038 #include <signal.h>],[sig_atomic_t i = 0],
1039         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
1040 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
1041    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
1044 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
1045     AC_TRY_COMPILE([
1046 #include <sys/types.h>
1047 #if STDC_HEADERS
1048 #include <stdlib.h>
1049 #include <stddef.h>
1050 #endif
1051 #if TIME_WITH_SYS_TIME
1052 # include <sys/time.h>
1053 # include <time.h>
1054 #else
1055 # if HAVE_SYS_TIME_H
1056 #  include <sys/time.h>
1057 # else
1058 #  include <time.h>
1059 # endif
1060 #endif
1061 ],[struct timespec ts;],
1062         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
1063 if test x"$samba_cv_struct_timespec" = x"yes"; then
1064    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1067 # stupid headers have the functions but no declaration. grrrr.
1068 AC_HAVE_DECL(errno, [#include <errno.h>])
1069 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1070 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1071 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1072 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1073 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1074 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1076 # and glibc has setresuid under linux but the function does
1077 # nothing until kernel 2.1.44! very dumb.
1078 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1079     AC_TRY_RUN([#include <errno.h>
1080 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
1081         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1082 if test x"$samba_cv_have_setresuid" = x"yes"; then
1083     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1086 # Do the same check for setresguid...
1088 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1089     AC_TRY_RUN([#include <unistd.h>
1090 #include <errno.h>
1091 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1092         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1093 if test x"$samba_cv_have_setresgid" = x"yes"; then
1094     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1097 AC_FUNC_MEMCMP
1099 ###############################################
1100 # Readline included by default unless explicitly asked not to
1101 test "${with_readline+set}" != "set" && with_readline=yes
1103 # test for where we get readline() from
1104 AC_MSG_CHECKING(whether to use readline)
1105 AC_ARG_WITH(readline,
1106 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
1107 [  case "$with_readline" in
1108   yes)
1109     AC_MSG_RESULT(yes)
1111     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1112     AC_CHECK_HEADERS(readline/history.h)
1114     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1115       for termlib in ncurses curses termcap terminfo termlib tinfo; do
1116        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1117       done
1118       AC_CHECK_LIB(readline, rl_callback_handler_install,
1119        [TERMLIBS="-lreadline $TERMLIBS"
1120        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1121        break], [TERMLIBS=], $TERMLIBS)])
1122     ;;
1123   no)
1124     AC_MSG_RESULT(no)
1125     ;;
1126   *)
1127     AC_MSG_RESULT(yes)
1129     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1130     # alternate readline path
1131     _ldflags=${LDFLAGS}
1132     _cppflags=${CPPFLAGS}
1134     # Add additional search path
1135     LDFLAGS="-L$with_readline/lib $LDFLAGS"
1136     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1138     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1139     AC_CHECK_HEADERS(readline/history.h)
1141     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1142       for termlib in ncurses curses termcap terminfo termlib; do
1143        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1144       done
1145       AC_CHECK_LIB(readline, rl_callback_handler_install,
1146        [TERMLDFLAGS="-L$with_readline/lib"
1147        TERMCPPFLAGS="-I$with_readline/include"
1148        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1149        TERMLIBS="-lreadline $TERMLIBS"
1150        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1151        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1153     LDFLAGS=$_ldflags
1154     ;;
1155   esac],
1156   AC_MSG_RESULT(no)
1158 AC_SUBST(TERMLIBS)
1159 AC_SUBST(TERMLDFLAGS)
1161 # The readline API changed slightly from readline3 to readline4, so
1162 # code will generate warnings on one of them unless we have a few
1163 # special cases.
1164 AC_CHECK_LIB(readline, rl_completion_matches,
1165              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1166                         [Do we have rl_completion_matches?])],
1167              [],
1168              [$TERMLIBS])
1170 # not all readline libs have rl_event_hook or history_list
1171 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1172 AC_CHECK_LIB(readline, history_list,
1173              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1174              [],
1175              [$TERMLIBS])
1177 # The following test taken from the cvs sources
1178 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1179 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1180 # libsocket.so which has a bad implementation of gethostbyname (it
1181 # only looks in /etc/hosts), so we only look for -lsocket if we need
1182 # it.
1183 AC_CHECK_FUNCS(connect)
1184 if test x"$ac_cv_func_connect" = x"no"; then
1185     case "$LIBS" in
1186     *-lnsl*) ;;
1187     *) AC_CHECK_LIB(nsl_s, connect) ;;
1188     esac
1189     case "$LIBS" in
1190     *-lnsl*) ;;
1191     *) AC_CHECK_LIB(nsl, connect) ;;
1192     esac
1193     case "$LIBS" in
1194     *-lsocket*) ;;
1195     *) AC_CHECK_LIB(socket, connect) ;;
1196     esac
1197     case "$LIBS" in
1198     *-linet*) ;;
1199     *) AC_CHECK_LIB(inet, connect) ;;
1200     esac
1201     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1202     dnl has been cached.
1203     if test x"$ac_cv_lib_socket_connect" = x"yes" ||
1204        test x"$ac_cv_lib_inet_connect" = x"yes"; then
1205         # ac_cv_func_connect=yes
1206         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
1207         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1208     fi
1211 ###############################################
1212 # test for where we get yp_get_default_domain() from
1213 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1214 AC_CHECK_FUNCS(yp_get_default_domain)
1216 # Check if we have execl, if not we need to compile smbrun.
1217 AC_CHECK_FUNCS(execl)
1218 if test x"$ac_cv_func_execl" = x"no"; then
1219     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1222 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown chmod fchmod chroot link mknod mknod64)
1223 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1224 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1225 AC_CHECK_FUNCS(getrlimit fsync memset strlcpy strlcat setpgid)
1226 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1227 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1228 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1229 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1230 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1231 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1232 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1233 AC_CHECK_FUNCS(getpwent_r)
1234 AC_CHECK_FUNCS(getdents getdents64)
1235 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1236 AC_CHECK_FUNCS(syslog vsyslog timegm)
1237 AC_CHECK_FUNCS(setlocale nl_langinfo)
1238 AC_CHECK_FUNCS(nanosleep)
1239 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1240 AC_CHECK_FUNCS(memalign posix_memalign)
1241 AC_CHECK_HEADERS(sys/mman.h)
1242 # setbuffer, shmget, shm_open are needed for smbtorture
1243 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1245 # Find a method of generating a stack trace
1246 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1247 AC_CHECK_FUNCS(backtrace_symbols)
1248 AC_CHECK_LIB(exc, trace_back_stack)
1250 echo -n "checking for GPFS GPL libs... "
1251 save_LIBS="$LIBS"
1252 LIBS="$LIBS -lgpfs_gpl"
1253 AC_TRY_LINK([#include <gpfs_gpl.h>],
1254           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1255           samba_cv_HAVE_GPFS=yes,
1256           samba_cv_HAVE_GPFS=no)
1257 echo $samba_cv_HAVE_GPFS
1258 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1259     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1260     default_shared_modules="$default_shared_modules vfs_gpfs"
1262 LIBS="$save_LIBS"
1264 # Note that all the libunwind symbols in the API are defined to internal
1265 # platform-specific version, so we must include libunwind.h before checking
1266 # any of them.
1267 AC_MSG_CHECKING([for libunwind])
1268 save_LIBS=$LIBS
1269 if test x"$UNAME_P" = xunknown ; then
1270     # This probably won't link without the platform-specific libunwind.
1271     LIBS="$LIBS -lunwind"
1272 else
1273     # Add the platform-specific libunwind module. uname -p seems the most
1274     # plausible option and works for ia64, where libunwind is most useful.
1275     LIBS="$LIBS -lunwind -lunwind-$UNAME_P"
1278 AC_TRY_LINK(
1279     [
1280 #ifdef HAVE_LIBUNWIND_H
1281 #include <libunwind.h>
1282 #endif
1283     ],
1284     [
1285         unw_context_t ctx; unw_cursor_t cur;
1286         char buf[256]; unw_word_t off;
1287         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1288         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1289     ],
1290     [
1291         AC_MSG_RESULT(yes)
1292         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1294         # If we have libunwind, test whether we also have libunwind-ptrace
1295         # which would let us unwind arbitrary processes.
1296         save_LIBS=$LIBS
1297         AC_CHECK_HEADERS(libunwind-ptrace.h)
1298         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1299             [
1300                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1301                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1302                     [Whether libunwind-ptrace.a is available.])
1303             ],
1304             [ LIBUNWIND_PTRACE="" ])
1306         LIBS=$save_LIBS
1307     ],
1308     [
1309         AC_MSG_RESULT(no)
1310         LIBS=$save_LIBS
1311     ])
1313 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1314 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1315     AC_CHECK_HEADERS(sys/ptrace.h)
1316     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1317     AC_TRY_LINK(
1318             [
1319 #if HAVE_SYS_TYPES_H
1320 #include <sys/types.h>
1321 #endif
1322 #if HAVE_SYS_PTRACE_H
1323 #include <sys/ptrace.h>
1324 #endif
1325             ],
1326             [
1327                 int main(int argc, const char ** argv)
1328                 {
1329                         pid_t me = (pid_t)-1;
1330                         ptrace(PTRACE_ATTACH, me, 0, 0);
1331                         ptrace(PTRACE_DETACH, me, 0, 0);
1332                         return 0;
1333                 }
1334             ],
1335             [
1336                 AC_MSG_RESULT(yes)
1337                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1338                     [Whether the Linux ptrace(2) interface is available.])
1339             ],
1340             [
1341                 AC_MSG_RESULT(no)
1342                 LIBUNWIND_PTRACE=""
1343             ])
1346 AC_SUBST(LIBUNWIND_PTRACE)
1348 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1349 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1350 AC_CHECK_FUNCS(__getcwd _getcwd)
1351 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1352 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1353 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1354 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1355 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1356 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1357 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1358 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1359 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1360 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1361 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1362 AC_CHECK_FUNCS(prctl)
1364 AC_TRY_COMPILE([
1365 #ifdef HAVE_SYS_PRCTL_H
1366 #include <sys/prctl.h>
1367 #endif
1369 [int i; i = prtcl(0); ],
1370 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1375 case "$host_os" in
1376     *linux*)
1377        # glibc <= 2.3.2 has a broken getgrouplist
1378        AC_TRY_RUN([
1379 #include <unistd.h>
1380 #include <sys/utsname.h>
1381 main() {
1382        /* glibc up to 2.3 has a broken getgrouplist */
1383 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1384        int libc_major = __GLIBC__;
1385        int libc_minor = __GLIBC_MINOR__;
1387        if (libc_major < 2)
1388               exit(1);
1389        if ((libc_major == 2) && (libc_minor <= 3))
1390               exit(1);
1391 #endif
1392        exit(0);
1394 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1395        if test x"$linux_getgrouplist_ok" = x"yes"; then
1396           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1397        fi
1398        ;;
1399     *)
1400        AC_CHECK_FUNCS(getgrouplist)
1401        ;;
1402 esac
1405 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1408 if test x$ac_cv_func_stat64 = xno ; then
1409   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1410   AC_TRY_LINK([
1411 #if defined(HAVE_UNISTD_H)
1412 #include <unistd.h>
1413 #endif
1414 #include <sys/stat.h>
1415 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1416   AC_MSG_RESULT([$ac_cv_func_stat64])
1417   if test x$ac_cv_func_stat64 = xyes ; then
1418     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1419   fi
1422 if test x$ac_cv_func_lstat64 = xno ; then
1423   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1424   AC_TRY_LINK([
1425 #if defined(HAVE_UNISTD_H)
1426 #include <unistd.h>
1427 #endif
1428 #include <sys/stat.h>
1429 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1430   AC_MSG_RESULT([$ac_cv_func_lstat64])
1431   if test x$ac_cv_func_lstat64 = xyes ; then
1432     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1433   fi
1436 if test x$ac_cv_func_fstat64 = xno ; then
1437   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1438   AC_TRY_LINK([
1439 #if defined(HAVE_UNISTD_H)
1440 #include <unistd.h>
1441 #endif
1442 #include <sys/stat.h>
1443 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1444   AC_MSG_RESULT([$ac_cv_func_fstat64])
1445   if test x$ac_cv_func_fstat64 = xyes ; then
1446     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1447   fi
1450 #################################################
1451 # Check whether struct stat has timestamps with sub-second resolution.
1452 # At least IRIX and Solaris have these.
1454 # We check that
1455 #       all of st_mtim, st_atim and st_ctim exist
1456 #       all of the members are in fact of type struct timespec
1458 # There is some conflicting standards weirdness about whether we should use
1459 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1460 # prefer struct timespec.
1462 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1463     [
1464         AC_TRY_COMPILE(
1465             [
1466 #if TIME_WITH_SYS_TIME
1467 # include <sys/time.h>
1468 # include <time.h>
1469 #else
1470 # if HAVE_SYS_TIME_H
1471 #  include <sys/time.h>
1472 # else
1473 #  include <time.h>
1474 # endif
1475 #endif
1476 #ifdef HAVE_SYS_STAT_H
1477 #include <sys/stat.h>
1478 #endif
1479             ],
1480             [
1481                 struct timespec t;
1482                 struct stat s = {0};
1483                 t.tv_sec = s.st_mtim.tv_sec;
1484                 t.tv_nsec = s.st_mtim.tv_nsec;
1485                 t.tv_sec = s.st_ctim.tv_sec;
1486                 t.tv_nsec = s.st_ctim.tv_nsec;
1487                 t.tv_sec = s.st_atim.tv_sec;
1488                 t.tv_nsec = s.st_atim.tv_nsec;
1489             ],
1490             samba_stat_hires=yes, samba_stat_hires=no)
1491     ])
1493 if test x"$samba_stat_hires" = x"yes" ; then
1494     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1495     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1496     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1497     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1498             [whether struct stat has sub-second timestamps])
1501 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1502     [
1503         AC_TRY_COMPILE(
1504             [
1505 #if TIME_WITH_SYS_TIME
1506 # include <sys/time.h>
1507 # include <time.h>
1508 #else
1509 # if HAVE_SYS_TIME_H
1510 #  include <sys/time.h>
1511 # else
1512 #  include <time.h>
1513 # endif
1514 #endif
1515 #ifdef HAVE_SYS_STAT_H
1516 #include <sys/stat.h>
1517 #endif
1518             ],
1519             [
1520                 struct timespec t;
1521                 struct stat s = {0};
1522                 t.tv_sec = s.st_mtime;
1523                 t.tv_nsec = s.st_mtimensec;
1524                 t.tv_sec = s.st_ctime;
1525                 t.tv_nsec = s.st_ctimensec;
1526                 t.tv_sec = s.st_atime;
1527                 t.tv_nsec = s.st_atimensec;
1528             ],
1529             samba_stat_hires=yes, samba_stat_hires=no)
1530     ])
1532 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1533     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1534     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1535     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1536     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1537             [whether struct stat has sub-second timestamps without struct timespec])
1540 #####################################
1541 # needed for SRV lookups
1542 AC_CHECK_LIB(resolv, dn_expand)
1543 AC_CHECK_LIB(resolv, _dn_expand)
1544 AC_CHECK_LIB(resolv, __dn_expand)
1547 # Check for the functions putprpwnam, set_auth_parameters,
1548 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1549 # Needed for OSF1 and HPUX.
1552 AC_LIBTESTFUNC(security, putprpwnam)
1553 AC_LIBTESTFUNC(sec, putprpwnam)
1555 AC_LIBTESTFUNC(security, set_auth_parameters)
1556 AC_LIBTESTFUNC(sec, set_auth_parameters)
1558 # UnixWare 7.x has its getspnam in -lgen
1559 AC_LIBTESTFUNC(gen, getspnam)
1561 AC_LIBTESTFUNC(security, getspnam)
1562 AC_LIBTESTFUNC(sec, getspnam)
1564 AC_LIBTESTFUNC(security, bigcrypt)
1565 AC_LIBTESTFUNC(sec, bigcrypt)
1567 AC_LIBTESTFUNC(security, getprpwnam)
1568 AC_LIBTESTFUNC(sec, getprpwnam)
1570 AC_CHECK_FUNCS(strsignal)
1572 ############################################
1573 # Check if we have libattr
1574 case "$host_os" in
1575   *osf*)
1576         AC_SEARCH_LIBS(getproplist, [proplist])
1577         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1578         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1579         AC_CHECK_FUNCS(sizeof_proplist_entry)
1580   ;;
1581   *)
1582         AC_SEARCH_LIBS(getxattr, [attr])
1583         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1584         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1585         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1586         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1587         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1588         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1589         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1590   ;;
1591 esac
1593 ########################################################
1594 # Do xattr functions take additional options like on Darwin?
1595 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1596         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1597                 old_LIBS=$LIBS
1598                 LIBS="$LIBS $ACL_LIBS"
1599                 AC_TRY_COMPILE([
1600                         #include <sys/types.h>
1601                         #if HAVE_ATTR_XATTR_H
1602                         #include <attr/xattr.h>
1603                         #elif HAVE_SYS_XATTR_H
1604                         #include <sys/xattr.h>
1605                         #endif
1606                 ],[
1607                         getxattr(0, 0, 0, 0, 0, 0);
1608                 ],
1609                 [smb_attr_cv_xattr_add_opt=yes],
1610                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1611         ])
1612         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1613                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1614         fi
1617 # Check if we have extattr
1618 case "$host_os" in
1619   *freebsd4* | *dragonfly* )
1620     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1621     ;;
1622   *)
1623     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1624     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1625     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1626     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1627     ;;
1628 esac
1630 # Set defaults
1631 PIE_CFLAGS=""
1632 PIE_LDFLAGS=""
1633 AC_ARG_ENABLE(pie, [  --enable-pie            Turn on pie support if available (default=yes)])
1635 if test "x$enable_pie" != xno
1636 then
1637         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1638         [
1639                 cat > conftest.c <<EOF
1640 int foo;
1641 main () { return 0;}
1643                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1644                 then
1645                         samba_cv_fpie=yes
1646                 else
1647                         samba_cv_fpie=no
1648                 fi
1649                 rm -f conftest*
1650         ])
1651         if test x"${samba_cv_fpie}" = x"yes"
1652         then
1653                 PIE_CFLAGS="-fPIE"
1654                 PIE_LDFLAGS="-pie"
1655         fi
1658 # Assume non-shared by default and override below
1659 BLDSHARED="false"
1661 # these are the defaults, good for lots of systems
1662 HOST_OS="$host_os"
1663 LDSHFLAGS="-shared"
1664 SONAMEFLAG="#"
1665 SHLD="\${CC} \${CFLAGS}"
1666 PICFLAG="${PIE_CFLAGS}"
1667 SHLIBEXT="so"
1669 # this bit needs to be modified for each OS that supports share libs
1670 # You need to specify how to create a shared library and
1671   # how to compile C code to produce PIC object files
1673   AC_MSG_CHECKING([ability to build shared libraries])
1675   # and these are for particular systems
1676   case "$host_os" in
1677                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1678                         BLDSHARED="true"
1679                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1680                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1681                         else
1682                                 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1683                         fi
1684                         DYNEXP="-Wl,--export-dynamic"
1685                         PICFLAG="-fPIC"
1686                         SONAMEFLAG="-Wl,-soname="
1687                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1688                         ;;
1689                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1690                         BLDSHARED="true"
1691                         LDSHFLAGS="-G"
1692                         SONAMEFLAG="-h "
1693                         if test "${GCC}" = "yes"; then
1694                                 PICFLAG="-fPIC"
1695                                 SONAMEFLAG="-Wl,-soname="
1696                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1697                                         DYNEXP="-Wl,-E"
1698                                 fi
1699                         else
1700                                 PICFLAG="-KPIC"
1701                                 ## ${CFLAGS} added for building 64-bit shared
1702                                 ## libs using Sun's Compiler
1703                                 LDSHFLAGS="-G \${CFLAGS}"
1704                         fi
1705                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1706                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1707                         ;;
1708                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1709                         BLDSHARED="true"
1710                         LDSHFLAGS="-G"
1711                         SONAMEFLAG="-Wl,-h,"
1712                         PICFLAG="-KPIC"   # Is this correct for SunOS
1713                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1714                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1715                         ;;
1716                 *netbsd* | *freebsd* | *dragonfly* )
1717                         BLDSHARED="true"
1718                         LDSHFLAGS="-shared"
1719                         DYNEXP="-Wl,--export-dynamic"
1720                         SONAMEFLAG="-Wl,-soname,"
1721                         PICFLAG="-fPIC -DPIC"
1722                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1723                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1724                         ;;
1725                 *openbsd*)  BLDSHARED="true"
1726                         LDSHFLAGS="-shared"
1727                         DYNEXP="-Wl,-Bdynamic"
1728                         SONAMEFLAG="-Wl,-soname,"
1729                         PICFLAG="-fPIC"
1730                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1731                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1732                         ;;
1733                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1734                         case "$host_os" in
1735                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1736                         ;;
1737                         esac
1738                         BLDSHARED="true"
1739                         LDSHFLAGS="-set_version sgi1.0 -shared"
1740                         SONAMEFLAG="-soname "
1741                         SHLD="\${LD}"
1742                         if test "${GCC}" = "yes"; then
1743                                 PICFLAG="-fPIC"
1744                         else
1745                                 PICFLAG="-KPIC"
1746                         fi
1747                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1748                         ;;
1749                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1750                         BLDSHARED="true"
1751                         LDSHFLAGS="-Wl,-G,-bexpall,-bbigtoc"
1752                         DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
1753                         PICFLAG="-O2"
1754                         # as AIX code is always position independent...
1755                         # .po will just create compile warnings, use po.o:
1756                         if test "${GCC}" != "yes"; then
1757                                 ## for funky AIX compiler using strncpy()
1758                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1759                         fi
1761                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1762                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1763                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1764                         ;;
1765                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1766                         # Use special PIC flags for the native HP-UX compiler.
1767                                 BLDSHARED="true"
1768                                 SHLD="cc"
1769                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1770                                 SONAMEFLAG="-Wl,+h "
1771                                 PICFLAG="+z"
1772                         if test "${GCC}" = "yes"; then
1773                                 PICFLAG="-fPIC"
1774                         else
1775                                 PICFLAG="+z"
1776                         fi
1777                         if test "$host_cpu" = "ia64"; then
1778                                 SHLIBEXT="so"
1779                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1780                         else
1781                                 SHLIBEXT="sl"
1782                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1783                         fi
1784                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1785                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1786                         ;;
1787                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1788                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1789                         ;;
1790                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1791                         BLDSHARED="true"
1792                         LDSHFLAGS="-shared"
1793                         SONAMEFLAG="-Wl,-soname,"
1794                         PICFLAG="-fPIC"
1795                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1796                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1797                         ;;
1798                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1799                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1800                         ;;
1801                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1802                         BLDSHARED="true"
1803                         LDSHFLAGS="-shared"
1804                         SONAMEFLAG="-Wl,-soname,"
1805                         PICFLAG="-KPIC"
1806                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1807                         ;;
1808                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1809                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1810                         ;;
1811                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1812                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1813                         ;;
1814                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1815                         case "$host" in
1816                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1817                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1818                                         fi
1819                                         LDSHFLAGS="-G"
1820                                         DYNEXP="-Bexport"
1821                                 ;;
1822                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1823                         esac
1824                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1825                         ;;
1827                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1828                         if [ test "$GCC" != yes ]; then
1829                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1830                         fi
1831                         LDSHFLAGS="-G"
1832                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1833                         ;;
1834                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1835                         BLDSHARED="false"
1836                         LDSHFLAGS=""
1837                         ;;
1839                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1840                         BLDSHARED="true"
1841                         LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1842                         SHLIBEXT="dylib"
1843                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1844                         ;;
1846                 *)
1847                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1848                         ;;
1849   esac
1851 if test "$enable_shared" != "yes"; then
1852         BLDSHARED=false
1855   AC_MSG_RESULT($BLDSHARED)
1857 AC_MSG_CHECKING([LDFLAGS])
1858 AC_MSG_RESULT([$LDFLAGS])
1859 AC_MSG_CHECKING([DYNEXP])
1860 AC_MSG_RESULT([$DYNEXP])
1862 #######################################################
1863 # test whether building a shared library actually works
1864 if test $BLDSHARED = true; then
1866 AC_MSG_CHECKING([SHLD])
1867 AC_MSG_RESULT([$SHLD])
1868 AC_MSG_CHECKING([LDSHFLAGS])
1869 AC_MSG_RESULT([$LDSHFLAGS])
1871 AC_MSG_CHECKING([SHLIBEXT])
1872 AC_MSG_RESULT([$SHLIBEXT])
1873 AC_MSG_CHECKING([SONAMEFLAG])
1874 AC_MSG_RESULT([$SONAMEFLAG])
1876 AC_MSG_CHECKING([PICFLAG])
1877 AC_MSG_RESULT([$PICFLAG])
1879 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1880 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1882 AC_CACHE_CHECK([whether building shared libraries actually works],
1883                [ac_cv_shlib_works],[
1884    # try building a trivial shared library
1885    ac_cv_shlib_works=no
1886    # The $SHLD and $LDSHFLAGS variables may contain references to other
1887    # variables so they need to be eval'ed.
1888    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1889         shlib.o ${srcdir-.}/tests/shlib.c && \
1890    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1891         shlib.o && ac_cv_shlib_works=yes
1892    rm -f "shlib.$SHLIBEXT" shlib.o
1895 if test $ac_cv_shlib_works = no; then
1896    BLDSHARED=false
1900 if test x"$BLDSHARED" != x"true"; then
1901         LDSHFLAGS="shared-libraries-disabled"
1902         SONAMEFLAG="shared-libraries-disabled"
1903         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1904         SHLD="shared-libraries-disabled"
1905         PICFLAG="${PIE_CFLAGS}"
1906         SHLIBEXT="shared_libraries_disabled"
1909 AC_MSG_CHECKING([used PICFLAG])
1910 AC_MSG_RESULT([$PICFLAG])
1912 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1914 ################
1916 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1917 AC_TRY_RUN([#include <stdio.h>
1918 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1919 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1920 if test x"$samba_cv_have_longlong" = x"yes"; then
1921     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1922     AC_CHECK_TYPE(intptr_t, unsigned long long)
1923 else
1924     AC_CHECK_TYPE(intptr_t, unsigned long)
1928 # Check if the compiler supports the LL prefix on long long integers.
1929 # AIX needs this.
1931 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1932     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1933         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1934 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1935    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1939 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
1940 AC_TRY_RUN([#include <time.h>
1941 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
1942 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
1943 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
1944     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
1947 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1948 AC_TRY_RUN([#include <stdio.h>
1949 #include <sys/stat.h>
1950 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1951 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1952 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1953     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1956 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1957 AC_TRY_RUN([
1958 #if defined(HAVE_UNISTD_H)
1959 #include <unistd.h>
1960 #endif
1961 #include <stdio.h>
1962 #include <sys/stat.h>
1963 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1964 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1965 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1966     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1969 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1970 AC_TRY_RUN([
1971 #if defined(HAVE_UNISTD_H)
1972 #include <unistd.h>
1973 #endif
1974 #include <stdio.h>
1975 #include <sys/stat.h>
1976 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1977 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1978 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1979     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1982 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1983 AC_TRY_RUN([
1984 #if defined(HAVE_UNISTD_H)
1985 #include <unistd.h>
1986 #endif
1987 #include <stdio.h>
1988 #include <sys/stat.h>
1989 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1990 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1991 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1992     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1995 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
1996 AC_TRY_RUN([
1997 #if defined(HAVE_UNISTD_H)
1998 #include <unistd.h>
1999 #endif
2000 #include <stdio.h>
2001 #include <sys/stat.h>
2002 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2003 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2004 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2005     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2008 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2009 AC_TRY_RUN([
2010 #if defined(HAVE_UNISTD_H)
2011 #include <unistd.h>
2012 #endif
2013 #include <stdio.h>
2014 #include <sys/stat.h>
2015 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2016 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2017 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2018     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2021 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2022 AC_TRY_COMPILE([
2023 #if defined(HAVE_UNISTD_H)
2024 #include <unistd.h>
2025 #endif
2026 #include <sys/types.h>
2027 #include <dirent.h>],
2028 [DIR64 de;],
2029 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2030 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2031     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2034 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2035 AC_TRY_COMPILE([
2036 #if defined(HAVE_UNISTD_H)
2037 #include <unistd.h>
2038 #endif
2039 #include <sys/types.h>
2040 #include <dirent.h>],
2041 [struct dirent64 de;],
2042 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2043 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2044     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2047 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2048 AC_TRY_RUN([
2049 #if defined(HAVE_UNISTD_H)
2050 #include <unistd.h>
2051 #endif
2052 #include <sys/types.h>
2053 main() { dev_t dev; int i = major(dev); return 0; }],
2054 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2055 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2056     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2059 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2060 AC_TRY_RUN([
2061 #if defined(HAVE_UNISTD_H)
2062 #include <unistd.h>
2063 #endif
2064 #include <sys/types.h>
2065 main() { dev_t dev; int i = minor(dev); return 0; }],
2066 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2067 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2068     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2071 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2072 AC_TRY_RUN([
2073 #if defined(HAVE_UNISTD_H)
2074 #include <unistd.h>
2075 #endif
2076 #include <sys/types.h>
2077 main() { dev_t dev = makedev(1,2); return 0; }],
2078 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2079 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2080     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2083 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2084 AC_TRY_RUN([#include <stdio.h>
2085 main() { char c; c=250; exit((c > 0)?0:1); }],
2086 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2087 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2088     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2091 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
2092 AC_TRY_COMPILE([#include <sys/types.h>
2093 #include <sys/socket.h>
2094 #include <netinet/in.h>],
2095 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
2096 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
2097 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
2098     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
2101 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2102 AC_TRY_COMPILE([#include <sys/types.h>
2103 #include <dirent.h>
2104 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2105 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2106 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2107     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2110 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2111 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2112 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2113 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2114     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2117 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2118 AC_TRY_LINK([
2119 #include <sys/time.h>
2120 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2121            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2122            samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2123 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2124     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2127 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2129     # On some systems (eg. Linux) librt can pull in libpthread. We
2130     # don't want this to happen because libpthreads changes signal delivery
2131     # semantics in ways we are not prepared for. This breaks Linux oplocks
2132     # which rely on signals.
2134     AC_LIBTESTFUNC(rt, clock_gettime,
2135             [
2136                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2137                                 [Whether clock_gettime is available])
2138                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2139                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2140                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2141                         ])
2145 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
2146 AC_TRY_LINK([#include <stdarg.h>
2147 va_list ap1,ap2;], [va_copy(ap1,ap2);],
2148 samba_cv_HAVE_VA_COPY=yes,
2149 samba_cv_HAVE_VA_COPY=no)])
2150 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
2151     AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
2152 else
2153     AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
2154     AC_TRY_LINK([#include <stdarg.h>
2155     va_list ap1,ap2;], [__va_copy(ap1,ap2);],
2156     samba_cv_HAVE___VA_COPY=yes,
2157     samba_cv_HAVE___VA_COPY=no)])
2158     if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
2159         AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
2160     fi
2163 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
2164 AC_TRY_RUN([
2165 #include <sys/types.h>
2166 #include <stdarg.h>
2167 void foo(const char *format, ...) {
2168        va_list ap;
2169        int len;
2170        char buf[5];
2172        va_start(ap, format);
2173        len = vsnprintf(buf, 0, format, ap);
2174        va_end(ap);
2175        if (len != 5) exit(1);
2177        va_start(ap, format);
2178        len = vsnprintf(0, 0, format, ap);
2179        va_end(ap);
2180        if (len != 5) exit(1);
2182        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
2184        exit(0);
2186 main() { foo("hello"); }
2188 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
2189 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
2190     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
2193 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2194 AC_TRY_RUN([#include <sys/types.h>
2195 #include <dirent.h>
2196 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2197 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2198 di->d_name[0] == 0) exit(0); exit(1);} ],
2199 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2200 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2201     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2204 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2205 AC_TRY_COMPILE([#include <sys/types.h>
2206 #include <utime.h>],
2207 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2208 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2209 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2210     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2213 ##############
2214 # Check utmp details, but only if our OS offers utmp.h
2215 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2216 dnl  utmp and utmpx come in many flavours
2217 dnl  We need to check for many of them
2218 dnl  But we don't need to do each and every one, because our code uses
2219 dnl  mostly just the utmp (not utmpx) fields.
2221 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2223 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2224 AC_TRY_COMPILE([#include <sys/types.h>
2225 #include <utmp.h>],
2226 [struct utmp ut;  ut.ut_name[0] = 'a';],
2227 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2228 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2229     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2232 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2233 AC_TRY_COMPILE([#include <sys/types.h>
2234 #include <utmp.h>],
2235 [struct utmp ut;  ut.ut_user[0] = 'a';],
2236 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2237 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2238     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2241 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2242 AC_TRY_COMPILE([#include <sys/types.h>
2243 #include <utmp.h>],
2244 [struct utmp ut;  ut.ut_id[0] = 'a';],
2245 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2246 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2247     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2250 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2251 AC_TRY_COMPILE([#include <sys/types.h>
2252 #include <utmp.h>],
2253 [struct utmp ut;  ut.ut_host[0] = 'a';],
2254 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2255 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2256     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2259 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2260 AC_TRY_COMPILE([#include <sys/types.h>
2261 #include <utmp.h>],
2262 [struct utmp ut;  time_t t; ut.ut_time = t;],
2263 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2264 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2265     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2268 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2269 AC_TRY_COMPILE([#include <sys/types.h>
2270 #include <utmp.h>],
2271 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2272 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2273 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2274     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2277 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2278 AC_TRY_COMPILE([#include <sys/types.h>
2279 #include <utmp.h>],
2280 [struct utmp ut;  ut.ut_type = 0;],
2281 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2282 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2283     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2286 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2287 AC_TRY_COMPILE([#include <sys/types.h>
2288 #include <utmp.h>],
2289 [struct utmp ut;  ut.ut_pid = 0;],
2290 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2291 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2292     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2295 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2296 AC_TRY_COMPILE([#include <sys/types.h>
2297 #include <utmp.h>],
2298 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2299 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2300 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2301     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2304 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2305 AC_TRY_COMPILE([#include <sys/types.h>
2306 #include <utmp.h>],
2307 [struct utmp ut;  ut.ut_addr = 0;],
2308 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2309 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2310     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2313 if test x$ac_cv_func_pututline = xyes ; then
2314   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2315   AC_TRY_COMPILE([#include <sys/types.h>
2316 #include <utmp.h>],
2317   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2318   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2319   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2320       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2321   fi
2324 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2325 AC_TRY_COMPILE([#include <sys/types.h>
2326 #include <utmpx.h>],
2327 [struct utmpx ux;  ux.ut_syslen = 0;],
2328 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2329 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2330     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2334 # end utmp details
2337 ICONV_LOCATION=standard
2338 LOOK_DIRS="/usr /usr/local /sw /opt"
2339 AC_ARG_WITH(libiconv,
2340 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
2342   if test "$withval" = "no" ; then
2343     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2344   else
2345      if test "$withval" != "yes" ; then
2346         ICONV_PATH_SPEC=yes
2347         LOOK_DIRS="$withval"
2348      fi
2349   fi
2352 for i in $LOOK_DIRS ; do
2353     save_LIBS=$LIBS
2354     save_LDFLAGS=$LDFLAGS
2355     save_CPPFLAGS=$CPPFLAGS
2356     ICONV_FOUND="no"
2357     unset libext
2358     CPPFLAGS="$CPPFLAGS -I$i/include"
2359 dnl This is here to handle -withval stuff for --with-libiconv
2360 dnl Perhaps we should always add a -L
2362 dnl Check lib and lib32 library variants to cater for IRIX ABI-specific
2363 dnl installation paths. This gets a little tricky since we might have iconv
2364 dnl in both libiconv and in libc. In this case the jm_ICONV test will always
2365 dnl succeed when the header is found. To counter this, make sure the
2366 dnl library directory is there and check the ABI directory first (which
2367 dnl should be harmless on other systems.
2368 dnl For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2369     for l in "lib32" "lib" "lib/hpux32"; do
2370         if test -d "$i/$l" ; then
2371                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2372         LIBS=
2373         export LDFLAGS LIBS CPPFLAGS
2374 dnl Try to find iconv(3)
2375                 jm_ICONV($i/$l)
2376                 if test x"$ICONV_FOUND" = "xyes" ; then
2377             libext="$l"
2378             break;
2379         fi
2380         fi
2381     done
2383     if test x"$ICONV_FOUND" = "xyes" ; then
2384         LDFLAGS=$save_LDFLAGS
2385         LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2386         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2387         LIBS="$save_LIBS"
2388         ICONV_LOCATION=$i
2389         export LDFLAGS LIBS CPPFLAGS
2390 dnl Now, check for a working iconv ... we want to do it here because
2391 dnl there might be a working iconv further down the list of LOOK_DIRS
2393         ############
2394         # check for iconv in libc
2395         ic_save_LIBS="$LIBS"
2396         if test x"$ICONV_PATH_SPEC" = "xyes" ; then
2397            LIBS="$LIBS -L$ICONV_LOCATION/$libext"
2398         fi
2399         if test x"$jm_cv_lib_iconv" != x; then
2400            LIBS="$LIBS -l$jm_cv_lib_iconv"
2401         fi
2402 dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
2403         default_dos_charset=no
2404         default_display_charset=no
2405         default_unix_charset=no
2407         # check for default dos charset name
2408         for j in CP850 IBM850 ; do
2409             rjs_CHARSET($j)
2410             if test x"$ICONV_CHARSET" = x"$j"; then
2411                 default_dos_charset="\"$j\""
2412                 break
2413             fi
2414         done
2415         # check for default display charset name
2416         for j in ASCII 646 ; do
2417             rjs_CHARSET($j)
2418             if test x"$ICONV_CHARSET" = x"$j"; then
2419                 default_display_charset="\"$j\""
2420                 break
2421             fi
2422         done
2423         # check for default unix charset name
2424         for j in UTF-8 UTF8 ; do
2425             rjs_CHARSET($j)
2426             if test x"$ICONV_CHARSET" = x"$j"; then
2427                 default_unix_charset="\"$j\""
2428                 break
2429             fi
2430         done
2431         
2432         if test "$default_dos_charset" != "no" -a \
2433                 "$default_dos_charset" != "cross" -a \
2434                 "$default_display_charset" != "no" -a \
2435                 "$default_display_charset" != "cross" -a \
2436                 "$default_unix_charset" != "no" -a \
2437                 "$default_unix_charset" != "cross"
2438         then
2439                 samba_cv_HAVE_NATIVE_ICONV=yes
2440         else if test "$default_dos_charset" = "cross" -o \
2441                      "$default_display_charset" = "cross" -o \
2442                      "$default_unix_charset" = "cross"
2443         then
2444                 samba_cv_HAVE_NATIVE_ICONV=cross
2445         else
2446                 samba_cv_HAVE_NATIVE_ICONV=no
2447         fi
2448         fi
2449 dnl ])
2451         LIBS="$ic_save_LIBS"
2452         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
2453            CPPFLAGS=$save_CPPFLAGS
2454            LDFLAGS=$save_LDFLAGS
2455            LIBS=$save_LIBS
2456            if test x"$jm_cv_lib_iconv" != x; then
2457               LIBS="$LIBS -l$jm_cv_lib_iconv"
2458            fi
2459            dnl Add the flags we need to CPPFLAGS and LDFLAGS
2460            CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2461            LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2462            export CPPFLAGS
2463            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2464            AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2465            AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2466            AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2467            break
2468         fi
2469 dnl We didn't find a working iconv, so keep going
2470     fi
2471 dnl We only need to clean these up here for the next pass through the loop
2472     CPPFLAGS=$save_CPPFLAGS
2473     LDFLAGS=$save_LDFLAGS
2474     LIBS=$save_LIBS
2475     export LDFLAGS LIBS CPPFLAGS
2476 done
2477 unset libext
2480 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2481     AC_MSG_WARN([Sufficient support for iconv function was not found.
2482     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2483    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2484    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2485    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2489 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2490 AC_TRY_RUN([
2491 #include <sys/types.h>
2492 #include <fcntl.h>
2493 #ifndef F_GETLEASE
2494 #define F_GETLEASE      1025
2495 #endif
2496 main() {
2497        int fd = open("/dev/null", O_RDONLY);
2498        return fcntl(fd, F_GETLEASE, 0) == -1;
2501 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2502 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2503     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2506 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2507 AC_TRY_RUN([
2508 #include <sys/types.h>
2509 #include <fcntl.h>
2510 #include <signal.h>
2511 #ifndef F_NOTIFY
2512 #define F_NOTIFY 1026
2513 #endif
2514 main() {
2515         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2518 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2519 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2520     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2523 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2524 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2525 AC_CHECK_FUNC(inotify_init)
2526 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2528 samba_cv_HAVE_INOTIFY=yes,
2529 samba_cv_HAVE_INOTIFY=no,
2530 samba_cv_HAVE_INOTIFY=cross)
2532 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2533     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2536 #################################################
2537 # Check if FAM notifications are available. For FAM info, see
2538 #       http://oss.sgi.com/projects/fam/
2539 #       http://savannah.nongnu.org/projects/fam/
2540 AC_ARG_ENABLE(fam,
2541 [  --enable-fam            Turn on FAM support (default=auto)])
2543 if test x$enable_fam != xno; then
2544     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2545     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2546         # On IRIX, libfam requires libC, but other FAM implementations
2547         # might not need it.
2548         AC_CHECK_LIB(fam, FAMOpen2,
2549             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2550             [samba_cv_HAVE_LIBFAM=no])
2552         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2553             samba_fam_xtra=-lC
2554             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2555                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2556                 [samba_cv_HAVE_LIBFAM=no])
2557             unset samba_fam_xtra
2558         fi
2559     fi
2561     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2562         default_shared_modules="$default_shared_modules vfs_notify_fam"
2563         AC_TRY_COMPILE([#include <fam.h>],
2564                     [FAMCodes code = FAMChanged;],
2565                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2566                         [Whether fam.h contains a typedef for enum FAMCodes]),
2567                     [])
2568     fi
2570     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2571         AC_MSG_ERROR(FAM support requested but FAM library not available )
2572     fi
2575 AC_SUBST(SMB_FAM_LIBS)
2577 #################################################
2578 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2580 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2582 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2583 AC_TRY_RUN([
2584 #include <sys/types.h>
2585 #include <fcntl.h>
2586 #include <signal.h>
2587 #include <sys/file.h>
2588 #ifndef LOCK_MAND
2589 #define LOCK_MAND       32
2590 #define LOCK_READ       64
2591 #endif
2592 main() {
2593         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2596 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2597 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2598     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2602 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2603 AC_TRY_COMPILE([#include <sys/types.h>
2604 #include <fcntl.h>],
2605 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2606 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2607 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2608     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2611 #################################################
2612 # Check for POSIX capability support
2614 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2615     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2616     [], [])
2618 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2620     ac_save_LIBS=$LIBS
2621     AC_LIBTESTFUNC(cap, cap_get_proc)
2623     AC_CACHE_CHECK([for POSIX capabilities],
2624             samba_cv_HAVE_POSIX_CAPABILITIES,
2625             [
2626                 AC_TRY_RUN([
2627 #include <sys/types.h>
2628 #include <sys/capability.h>
2629 main() {
2630  cap_t cap;
2631  cap_value_t vals[1];
2632  if (!(cap = cap_get_proc()))
2633    exit(1);
2634  vals[0] = CAP_CHOWN;
2635  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2636  cap_set_proc(cap);
2637  exit(0);
2639                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2640                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2641                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2642             ])
2644 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2645     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2646             [Whether POSIX capabilities are available])
2647 else
2648     LIBS=$ac_save_LIBS
2654 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2655 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2658 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2659 AC_TRY_COMPILE([#include <sys/types.h>
2660 #if defined(HAVE_RPC_RPC_H)
2661 #include <rpc/rpc.h>
2662 #endif],
2663 [int16 testvar;],
2664 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2665 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2666     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2669 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2670 AC_TRY_COMPILE([#include <sys/types.h>
2671 #if defined(HAVE_RPC_RPC_H)
2672 #include <rpc/rpc.h>
2673 #endif],
2674 [uint16 testvar;],
2675 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2676 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2677     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2680 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2681 AC_TRY_COMPILE([#include <sys/types.h>
2682 #if defined(HAVE_RPC_RPC_H)
2683 #include <rpc/rpc.h>
2684 #endif],
2685 [int32 testvar;],
2686 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2687 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2688     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2691 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2692 AC_TRY_COMPILE([#include <sys/types.h>
2693 #if defined(HAVE_RPC_RPC_H)
2694 #include <rpc/rpc.h>
2695 #endif],
2696 [uint32 testvar;],
2697 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2698 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2699     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2703 dnl Some systems (SCO) have a problem including
2704 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2705 dnl as a #define in <prot.h> and as part of an enum
2706 dnl in <rpc/rpc.h>.
2709 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2710 AC_TRY_COMPILE([#include <sys/types.h>
2711 #ifdef HAVE_SYS_SECURITY_H
2712 #include <sys/security.h>
2713 #include <prot.h>
2714 #endif  /* HAVE_SYS_SECURITY_H */
2715 #if defined(HAVE_RPC_RPC_H)
2716 #include <rpc/rpc.h>
2717 #endif],
2718 [int testvar;],
2719 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2720 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2721     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2724 AC_MSG_CHECKING([for test routines])
2725 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2726            AC_MSG_RESULT(yes),
2727            AC_MSG_ERROR([cant find test code. Aborting config]),
2728            AC_MSG_WARN([cannot run when cross-compiling]))
2730 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2731 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2732            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2733 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2734     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2737 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2738 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2739            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2740            samba_cv_HAVE_WORKING_AF_LOCAL=no,
2741            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2742 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2743 then
2744     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2747 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2748 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2749            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2750 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2751     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2754 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2755 AC_TRY_RUN([#include <stdlib.h>
2756 #include <sys/types.h>
2757 #include <sys/stat.h>
2758 #include <unistd.h>
2759 main() {
2760   struct stat st;
2761   char tpl[20]="/tmp/test.XXXXXX";
2762   int fd = mkstemp(tpl);
2763   if (fd == -1) exit(1);
2764   unlink(tpl);
2765   if (fstat(fd, &st) != 0) exit(1);
2766   if ((st.st_mode & 0777) != 0600) exit(1);
2767   exit(0);
2769 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2770 samba_cv_HAVE_SECURE_MKSTEMP=no,
2771 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2772 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2773     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2776 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
2777         AC_TRY_RUN([#include "${srcdir-.}/tests/os2_delete.c"],
2778                 [samba_cv_HAVE_BROKEN_READDIR=no],
2779                         [samba_cv_HAVE_BROKEN_READDIR=yes],
2780                         [samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
2782 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
2783 AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
2784         AC_TRY_RUN([
2785 #include "${srcdir-.}/lib/repdir.c"
2786 #include "${srcdir-.}/tests/os2_delete.c"],
2787         samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
2790 if test x"$samba_cv_REPLACE_READDIR" = x"yes"; then
2791         AC_DEFINE(REPLACE_READDIR,1,[replace readdir])
2794 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2795 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2796 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2797 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2798 AC_CHECK_FUNCS(getpagesize)
2800 ##################
2801 # look for a method of finding the list of network interfaces
2802 iface=no;
2803 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
2804 SAVE_CPPFLAGS="$CPPFLAGS"
2805 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2806 AC_TRY_RUN([
2807 #define HAVE_IFACE_AIX 1
2808 #define AUTOCONF_TEST 1
2809 #undef _XOPEN_SOURCE_EXTENDED
2810 #include "${srcdir-.}/lib/interfaces.c"],
2811            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
2812 CPPFLAGS="$SAVE_CPPFLAGS"
2813 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
2814     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
2817 if test $iface = no; then
2818 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
2819 SAVE_CPPFLAGS="$CPPFLAGS"
2820 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2821 AC_TRY_RUN([
2822 #define HAVE_IFACE_IFCONF 1
2823 #define AUTOCONF_TEST 1
2824 #include "${srcdir-.}/lib/interfaces.c"],
2825            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
2826 CPPFLAGS="$SAVE_CPPFLAGS"
2827 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
2828     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
2832 if test $iface = no; then
2833 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
2834 SAVE_CPPFLAGS="$CPPFLAGS"
2835 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2836 AC_TRY_RUN([
2837 #define HAVE_IFACE_IFREQ 1
2838 #define AUTOCONF_TEST 1
2839 #include "${srcdir-.}/lib/interfaces.c"],
2840            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
2841 CPPFLAGS="$SAVE_CPPFLAGS"
2842 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
2843     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
2848 ################################################
2849 # look for a method of setting the effective uid
2850 seteuid=no;
2851 if test $seteuid = no; then
2852 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2853 AC_TRY_RUN([
2854 #define AUTOCONF_TEST 1
2855 #define USE_SETRESUID 1
2856 #include "confdefs.h"
2857 #include "${srcdir-.}/lib/util_sec.c"],
2858            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2859 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2860     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2865 if test $seteuid = no; then
2866 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2867 AC_TRY_RUN([
2868 #define AUTOCONF_TEST 1
2869 #define USE_SETREUID 1
2870 #include "confdefs.h"
2871 #include "${srcdir-.}/lib/util_sec.c"],
2872            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2873 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2874     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2878 if test $seteuid = no; then
2879 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2880 AC_TRY_RUN([
2881 #define AUTOCONF_TEST 1
2882 #define USE_SETEUID 1
2883 #include "confdefs.h"
2884 #include "${srcdir-.}/lib/util_sec.c"],
2885            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2886 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2887     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2891 if test $seteuid = no; then
2892 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2893 AC_TRY_RUN([
2894 #define AUTOCONF_TEST 1
2895 #define USE_SETUIDX 1
2896 #include "confdefs.h"
2897 #include "${srcdir-.}/lib/util_sec.c"],
2898            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2899 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2900     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2905 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2906 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2907            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2908 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2909     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2912 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2913 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2914            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2915 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2916     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2919 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2920 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2921            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2922 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2923     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2925 else
2928 dnl Don't check for 64 bit fcntl locking if we know that the
2929 dnl glibc2.1 broken check has succeeded.
2932   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2933   AC_TRY_RUN([
2934 #if defined(HAVE_UNISTD_H)
2935 #include <unistd.h>
2936 #endif
2937 #include <stdio.h>
2938 #include <stdlib.h>
2940 #ifdef HAVE_FCNTL_H
2941 #include <fcntl.h>
2942 #endif
2944 #ifdef HAVE_SYS_FCNTL_H
2945 #include <sys/fcntl.h>
2946 #endif
2947 main() { struct flock64 fl64;
2948 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2949 exit(0);
2950 #else
2951 exit(1);
2952 #endif
2954        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2956   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2957       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2958   fi
2961 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2962 AC_TRY_COMPILE([#include <sys/types.h>
2963 #include <sys/stat.h>
2964 #include <unistd.h>],
2965 [struct stat st;  st.st_blocks = 0;],
2966 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2967 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2968     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2971 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2972 AC_TRY_COMPILE([#include <sys/types.h>
2973 #include <sys/stat.h>
2974 #include <unistd.h>],
2975 [struct stat st;  st.st_blksize = 0;],
2976 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2977 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2978     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2981 AC_CACHE_CHECK([for st_flags in struct stat],
2982         samba_cv_HAVE_STAT_ST_FLAGS,
2983         [
2984             AC_TRY_COMPILE([#include <sys/types.h>
2985 #include <sys/stat.h>
2986 #include <unistd.h>],
2987             [struct stat st;  st.st_flags = 0;],
2988             samba_cv_HAVE_STAT_ST_FLAGS=yes,
2989             samba_cv_HAVE_STAT_ST_FLAGS=no,
2990             samba_cv_HAVE_STAT_ST_FLAGS=cross)
2991         ])
2993 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2994     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
2995                 [Whether the stat struct has a st_flags member])
2998 case "$host_os" in
2999 *linux*)
3000 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
3001 AC_TRY_COMPILE([
3002 #ifdef HAVE_SYS_VFS_H
3003 #include <sys/vfs.h>
3004 #endif
3005 #ifdef HAVE_SYS_CAPABILITY_H
3006 #include <sys/capability.h>
3007 #endif
3008 ],[int i;],
3009    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
3010 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
3011    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
3014 esac
3016 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3017 AC_TRY_COMPILE([
3018 #include <sys/types.h>
3019 #include <sys/acl.h>
3020 #if defined(HAVE_RPCSVC_NIS_H)
3021 #include <rpcsvc/nis.h>
3022 #endif],
3023 [int i;],
3024 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3025 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3026         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3029 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3030 AC_TRY_RUN([
3031 #include <stdio.h>
3032 #include <limits.h>
3033 main() {
3034         char *newpath = realpath("/tmp", NULL);
3035         exit ((newpath != NULL) ? 0 : 1);
3038 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3039 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3040     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3043 #################################################
3044 # check for AFS clear-text auth support
3045 samba_cv_WITH_AFS=no
3046 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3047 AC_ARG_WITH(afs,
3048 [  --with-afs              Include AFS clear-text auth support (default=no) ],
3049 [ case "$withval" in
3050   yes|auto)
3051     AC_MSG_RESULT($withval)
3052     samba_cv_WITH_AFS=$withval
3053     ;;
3054   *)
3055     AC_MSG_RESULT(no)
3056     ;;
3057   esac ],
3058   AC_MSG_RESULT(no)
3061 ####################################################
3062 # check for Linux-specific AFS fake-kaserver support
3063 samba_cv_WITH_FAKE_KASERVER=no
3064 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3065 AC_ARG_WITH(fake-kaserver,
3066 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
3067 [ case "$withval" in
3068   yes|auto)
3069     AC_MSG_RESULT($withval)
3070     samba_cv_WITH_FAKE_KASERVER=$withval
3071     ;;
3072   *)
3073     AC_MSG_RESULT(no)
3074     ;;
3075   esac ],
3076   AC_MSG_RESULT(no)
3079 #################################################
3080 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3081 if test x"$samba_cv_WITH_AFS" != x"no" ||
3082    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3084     # see if this box has the afs-headers in /usr/include/afs
3085     AC_MSG_CHECKING(for /usr/include/afs)
3086     if test -d /usr/include/afs; then
3087           CFLAGS="$CFLAGS -I/usr/include/afs"
3088           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3089           AC_MSG_RESULT(yes)
3090     else
3091       AC_MSG_RESULT(no)
3092     fi
3094     # check for afs.h
3095     have_afs_headers=no
3096     AC_CHECK_HEADERS(afs.h afs/afs.h)
3097     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3098         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3099            test x"$samba_cv_WITH_AFS" = x"auto"; then
3100                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3101         else
3102                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3103         fi
3104     else
3105         have_afs_headers=yes
3106     fi
3109 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3110     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3113 #################################################
3114 # check whether to compile AFS/NT ACL mapping module
3115 samba_cv_WITH_VFS_AFSACL=no
3116 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3117 AC_ARG_WITH(vfs-afsacl,
3118 [  --with-vfs-afsacl       Include AFS to NT ACL mapping module (default=no) ],
3119 [ case "$withval" in
3120   yes|auto)
3121     AC_MSG_RESULT($withval)
3122     samba_cv_WITH_VFS_AFSACL=yes
3123     ;;
3124   *)
3125     AC_MSG_RESULT(no)
3126     ;;
3127   esac ],
3128   AC_MSG_RESULT(no)
3131 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3132    default_shared_modules="$default_shared_modules vfs_afsacl"
3134         
3135 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3136     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3139 #################################################
3140 # check for the DFS clear-text auth system
3141 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3142 AC_ARG_WITH(dfs,
3143 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
3144 [ case "$withval" in
3145   yes)
3146     AC_MSG_RESULT(yes)
3147     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3148     ;;
3149   *)
3150     AC_MSG_RESULT(no)
3151     ;;
3152   esac ],
3153   AC_MSG_RESULT(no)
3156 ########################################################
3157 # Compile with LDAP support?
3159 with_ldap_support=auto
3160 AC_MSG_CHECKING([for LDAP support])
3162 AC_ARG_WITH(ldap,
3163 [  --with-ldap             LDAP support (default yes)],
3164 [ case "$withval" in
3165     yes|no)
3166         with_ldap_support=$withval
3167         ;;
3168   esac ])
3170 AC_MSG_RESULT($with_ldap_support)
3172 SMBLDAP=""
3173 AC_SUBST(SMBLDAP)
3174 SMBLDAPUTIL=""
3175 AC_SUBST(SMBLDAPUTIL)
3176 LDBLDAP=""
3177 AC_SUBST(LDBLDAP)
3179 if test x"$with_ldap_support" != x"no"; then
3181   ##################################################################
3182   # first test for ldap.h and lber.h
3183   # (ldap.h is required for this test)
3184   AC_CHECK_HEADERS(ldap.h lber.h)
3186   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3187         if test x"$with_ldap_support" = x"yes"; then
3188          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3189         else
3190          AC_MSG_WARN(ldap.h is needed for LDAP support)
3191         fi
3192         
3193         with_ldap_support=no
3194   fi
3196   ##################################################################
3197   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3198   # unsigned int in include/includes.h
3199   case $host_os in
3200         *hpux*)
3201          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3202          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3203         with_ldap_support=yes
3204         ;;
3205         *)
3206         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3207         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3208                 if test x"$with_ldap_support" = x"yes"; then
3209                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3210                 else
3211                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3212                 fi
3213                 with_ldap_support=no
3214         fi
3215         ;;
3216   esac
3219 if test x"$with_ldap_support" != x"no"; then
3220   ac_save_LIBS=$LIBS
3222   ##################################################################
3223   # we might need the lber lib on some systems. To avoid link errors
3224   # this test must be before the libldap test
3225   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3227   ########################################################
3228   # now see if we can find the ldap libs in standard paths
3229   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3231   ########################################################
3232   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3233   # Check found in pam_ldap 145.
3234   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3236   LIBS="$LIBS $LDAP_LIBS"
3237   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3238     AC_TRY_COMPILE([
3239         #include <lber.h>
3240         #include <ldap.h>],
3241         [ldap_set_rebind_proc(0, 0, 0);],
3242         [smb_ldap_cv_ldap_set_rebind_proc=3],
3243         [smb_ldap_cv_ldap_set_rebind_proc=2]
3244     )
3245   ])
3247   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3249   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3251   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3252     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3253     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3254     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3255     default_shared_modules="$default_shared_modules";
3256     SMBLDAP="lib/smbldap.o"
3257     SMBLDAPUTIL="lib/smbldap_util.o"
3258     with_ldap_support=yes
3259     AC_MSG_CHECKING(whether LDAP support is used)
3260     AC_MSG_RESULT(yes)
3261   else
3262     if test x"$with_ldap_support" = x"yes"; then
3263         AC_MSG_ERROR(libldap is needed for LDAP support)
3264     else
3265         AC_MSG_WARN(libldap is needed for LDAP support)
3266     fi
3268     LDAP_LIBS=""
3269     with_ldap_support=no
3270   fi
3271   LIBS=$ac_save_LIBS
3275 #################################################
3276 # active directory support
3278 with_ads_support=auto
3279 AC_MSG_CHECKING([for Active Directory and krb5 support])
3281 AC_ARG_WITH(ads,
3282 [  --with-ads              Active Directory support (default auto)],
3283 [ case "$withval" in
3284     yes|no)
3285         with_ads_support="$withval"
3286         ;;
3287   esac ])
3289 AC_MSG_RESULT($with_ads_support)
3291 FOUND_KRB5=no
3292 KRB5_LIBS=""
3294 if test x"$with_ldap_support" != x"yes"; then
3296     if test x"$with_ads_support" = x"yes"; then
3297         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3298     elif test x"$with_ads_support" = x"auto"; then
3299         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3300         with_ads_support=no
3301     fi
3303 else
3305     # Check to see whether there is enough LDAP functionality to be able
3306     # to build AD support.
3308 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3309 case "$host_os" in
3310         *hpux*)
3311     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3313     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3314         if test x"$with_ads_support" = x"yes"; then
3315             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3316         elif test x"$with_ads_support" = x"auto"; then
3317             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3318             with_ads_support=no
3319         fi
3320     fi
3321     ;;
3322         *)
3323     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3325     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3326         if test x"$with_ads_support" = x"yes"; then
3327             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3328         elif test x"$with_ads_support" = x"auto"; then
3329             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3330             with_ads_support=no
3331         fi
3332     fi
3333     ;;
3334 esac
3337     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3339     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3340         if test x"$with_ads_support" = x"yes"; then
3341             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3342         elif test x"$with_ads_support" = x"auto"; then
3343             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3344             with_ads_support=no
3345         fi
3346     fi
3350 if test x"$with_ads_support" != x"no"; then
3352   # Do no harm to the values of CFLAGS and LIBS while testing for
3353   # Kerberos support.
3355   if test x$FOUND_KRB5 = x"no"; then
3356     #################################################
3357     # check for location of Kerberos 5 install
3358     AC_MSG_CHECKING(for kerberos 5 install path)
3359     AC_ARG_WITH(krb5,
3360     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
3361     [ case "$withval" in
3362       no)
3363         AC_MSG_RESULT(no krb5-path given)
3364         ;;
3365       yes)
3366         AC_MSG_RESULT(/usr)
3367         FOUND_KRB5=yes
3368         ;;
3369       *)
3370         AC_MSG_RESULT($withval)
3371         KRB5_CFLAGS="-I$withval/include"
3372         KRB5_CPPFLAGS="-I$withval/include"
3373         KRB5_LDFLAGS="-L$withval/lib"
3374         FOUND_KRB5=yes
3375         if test -x "$withval/bin/krb5-config"; then
3376                 KRB5CONFIG=$withval/bin/krb5-config
3377         fi
3378         ;;
3379       esac ],
3380       AC_MSG_RESULT(no krb5-path given)
3381     )
3382   fi
3384   #################################################
3385   # check for krb5-config from recent MIT and Heimdal kerberos 5
3386   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3387   AC_MSG_CHECKING(for working krb5-config)
3388   if test -x "$KRB5CONFIG"; then
3389     ac_save_CFLAGS=$CFLAGS
3390     CFLAGS="";export CFLAGS
3391     ac_save_LDFLAGS=$LDFLAGS
3392     LDFLAGS="";export LDFLAGS
3393     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3394     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3395     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3396     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3397     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3398     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3399     FOUND_KRB5=yes
3400     AC_MSG_RESULT(yes)
3401   else
3402     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3403   fi
3405   if test x$FOUND_KRB5 = x"no"; then
3406     #################################################
3407     # see if this box has the SuSE location for the heimdal krb implementation
3408     AC_MSG_CHECKING(for /usr/include/heimdal)
3409     if test -d /usr/include/heimdal; then
3410       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3411           KRB5_CFLAGS="-I/usr/include/heimdal"
3412           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3413           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3414           AC_MSG_RESULT(yes)
3415       else
3416           KRB5_CFLAGS="-I/usr/include/heimdal"
3417           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3418           AC_MSG_RESULT(yes)
3419       fi
3420     else
3421       AC_MSG_RESULT(no)
3422     fi
3423   fi
3425   if test x$FOUND_KRB5 = x"no"; then
3426     #################################################
3427     # see if this box has the RedHat location for kerberos
3428     AC_MSG_CHECKING(for /usr/kerberos)
3429     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3430       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3431       KRB5_CFLAGS="-I/usr/kerberos/include"
3432       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3433       AC_MSG_RESULT(yes)
3434     else
3435       AC_MSG_RESULT(no)
3436     fi
3437   fi
3439   ac_save_CFLAGS=$CFLAGS
3440   ac_save_CPPFLAGS=$CPPFLAGS
3441   ac_save_LDFLAGS=$LDFLAGS
3443   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3444   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3445   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3447   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3449   # now check for krb5.h. Some systems have the libraries without the headers!
3450   # note that this check is done here to allow for different kerberos
3451   # include paths
3452   AC_CHECK_HEADERS(krb5.h)
3454   if test x"$ac_cv_header_krb5_h" = x"no"; then
3456     # Give a warning if AD support was not explicitly requested,
3457     # i.e with_ads_support = auto, otherwise die with an error.
3459     if test x"$with_ads_support" = x"yes"; then
3460       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3461     else
3462       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3463     fi
3465     # Turn off AD support and restore CFLAGS and LIBS variables
3467     with_ads_support="no"
3469     CFLAGS=$ac_save_CFLAGS
3470     CPPFLAGS=$ac_save_CPPFLAGS
3471     LDFLAGS=$ac_save_LDFLAGS
3472   fi
3473   AC_CHECK_HEADERS(krb5/locate_plugin.h)
3476 # Now we have determined whether we really want ADS support
3477 use_ads=no
3478 if test x"$with_ads_support" != x"no"; then
3479   use_ads=yes
3480   have_gssapi=no
3481   ac_save_LIBS=$LIBS
3483   # now check for gssapi headers.  This is also done here to allow for
3484   # different kerberos include paths
3485   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3487   ##################################################################
3488   # we might need the k5crypto and com_err libraries on some systems
3489   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3490   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3492   # Heimdal checks.
3493   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3494   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3495   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3497   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3498   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3500   ########################################################
3501   # now see if we can find the krb5 libs in standard paths
3502   # or as specified above
3503   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3504   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3506   ########################################################
3507   # now see if we can find the gssapi libs in standard paths
3508   if test x"$have_gssapi" != x"yes"; then
3509      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3510   fi
3512   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3513   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3514   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3515   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3516   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3517   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3518   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3519   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3520   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3521   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3522   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3523   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3524   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3525   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3526   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3527   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3528   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3529   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3530   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3531   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3532   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3533   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3534   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3535   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3536   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3537   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3538   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3539   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3540   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3541   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3542   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3543   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3544   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3545   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3546   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3547   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3548   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3549   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3550   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3552   LIBS="$KRB5_LIBS $LIBS"
3554   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3555         smb_krb5_ticket_has_keyinfo,
3556         [
3557             AC_TRY_COMPILE(
3558             [
3559                 #include <krb5.h>
3560             ],
3561             [
3562                 krb5_ticket ticket;
3563                 krb5_kvno kvno;
3564                 krb5_enctype enctype;
3566                 enctype = ticket.enc_part.enctype;
3567                 kvno = ticket.enc_part.kvno;
3568             ],
3569             [ smb_krb5_ticket_has_keyinfo=yes ],
3570             [ smb_krb5_ticket_has_keyinfo=no ])
3571         ])
3573   if test x"$smb_krb5_ticket_has_keyinfo" = x"yes" ; then
3574         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3575             [Whether the krb5_ticket structure contains the kvno and enctype])
3576   fi
3578   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3579           smb_krb5_creds_opt_free_context,
3580           [
3581                 AC_TRY_COMPILE([
3582                     #include <krb5.h>],
3583                     [
3584                         krb5_context ctx;
3585                         krb5_get_init_creds_opt *opt = NULL;
3586                         krb5_get_init_creds_opt_free(ctx, opt);
3587                     ],
3588                     [smb_krb5_creds_opt_free_context=yes],
3589                     [smb_krb5_creds_opt_free_context=no]
3590                 )
3591           ])
3593   if test x"$smb_krb5_creds_opt_free_context" = x"yes" ; then
3594         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3595             [Whether krb5_get_init_creds_opt_free takes a context argument])
3596   fi
3598   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3599     AC_TRY_COMPILE([
3600         #include <krb5.h>],
3601         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3602         [smb_krb5_verify_checksum=7],
3603         [smb_krb5_verify_checksum=6],
3604     )
3605   ])
3606   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3608   AC_CACHE_CHECK([for checksum in krb5_checksum],
3609                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3610     AC_TRY_COMPILE([#include <krb5.h>],
3611       [krb5_checksum cksum; cksum.checksum.length = 0;],
3612       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3613       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3615   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3616     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3617                [Whether the krb5_checksum struct has a checksum property])
3618   fi
3620   AC_CACHE_CHECK([for etype in EncryptedData],
3621                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3622     AC_TRY_COMPILE([#include <krb5.h>],
3623       [EncryptedData edata; edata.etype = 0;],
3624       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3625       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3627   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3628     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3629                [Whether the EncryptedData struct has a etype property])
3630   fi
3632   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3633                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3634     AC_TRY_COMPILE([#include <krb5.h>],
3635       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3636       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3637       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3639   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3640     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3641                [Whether the krb5_ap_req struct has a ticket pointer])
3642   fi
3644   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3645                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3646     AC_TRY_COMPILE([#include <krb5.h>],
3647       [krb5_error err; err.e_data = NULL;],
3648       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3649       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3651   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3652     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3653                [Whether the krb5_error struct has a e_data pointer])
3654   fi
3656   AC_CACHE_CHECK([for krb5_crypto type],
3657                 samba_cv_HAVE_KRB5_CRYPTO,[
3658     AC_TRY_COMPILE([#include <krb5.h>],
3659       [krb5_crypto crypto;],
3660       samba_cv_HAVE_KRB5_CRYPTO=yes,
3661       samba_cv_HAVE_KRB5_CRYPTO=no)])
3663   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3664     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3665                [Whether the type krb5_crypto exists])
3666   fi
3668   AC_CACHE_CHECK([for krb5_encrypt_block type],
3669                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3670     AC_TRY_COMPILE([#include <krb5.h>],
3671       [krb5_encrypt_block block;],
3672       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3673       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3675   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3676     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3677                [Whether the type krb5_encrypt_block exists])
3678   fi
3680   AC_CACHE_CHECK([for addrtype in krb5_address],
3681                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3682     AC_TRY_COMPILE([#include <krb5.h>],
3683       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3684       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3685       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3687   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3688     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3689                [Whether the krb5_address struct has a addrtype property])
3690   fi
3692   AC_CACHE_CHECK([for addr_type in krb5_address],
3693                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3694     AC_TRY_COMPILE([#include <krb5.h>],
3695       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3696       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3697       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3699   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3700     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3701               [Whether the krb5_address struct has a addr_type property])
3702   fi
3704   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3705                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3706                  [AC_TRY_COMPILE([#include <krb5.h>],
3707     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3708     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3710   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3711     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3712               [Whether the krb5_ticket struct has a enc_part2 property])
3713   fi
3715   AC_CACHE_CHECK([for keyblock in krb5_creds],
3716                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3717     AC_TRY_COMPILE([#include <krb5.h>],
3718       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3719       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3720       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3722   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3723     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3724               [Whether the krb5_creds struct has a keyblock property])
3725   fi
3727   AC_CACHE_CHECK([for session in krb5_creds],
3728                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3729     AC_TRY_COMPILE([#include <krb5.h>],
3730       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3731       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3732       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3734   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3735     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3736               [Whether the krb5_creds struct has a session property])
3737   fi
3739   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3740                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3741     AC_TRY_COMPILE([#include <krb5.h>],
3742       [krb5_keyblock key; key.keyvalue.data = NULL;],
3743       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3744       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3746   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3747     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3748               [Whether the krb5_keyblock struct has a keyvalue property])
3749   fi
3751   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3752                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3753     AC_TRY_COMPILE([#include <krb5.h>],
3754       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3755       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3756       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3757   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3758                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3759     AC_TRY_COMPILE([#include <krb5.h>],
3760       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3761       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3762       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3763 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3764 # w.r.t. arcfour and windows, so we must not enable it here
3765   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3766           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3767     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3768               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3769   fi
3771   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3772                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3773     AC_TRY_COMPILE([#include <krb5.h>],
3774       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3775       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3776       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3778   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3779     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3780               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3781   fi
3783   AC_CACHE_CHECK([for KV5M_KEYTAB],
3784                  samba_cv_HAVE_KV5M_KEYTAB,[
3785     AC_TRY_COMPILE([#include <krb5.h>],
3786       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3787       samba_cv_HAVE_KV5M_KEYTAB=yes,
3788       samba_cv_HAVE_KV5M_KEYTAB=no)])
3790   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3791       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3792              [Whether the KV5M_KEYTAB option is available])
3793   fi
3795   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3796                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3797     AC_TRY_COMPILE([#include <krb5.h>],
3798       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3799       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3800       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3802   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3803     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3804               [Whether KRB5_KU_OTHER_CKSUM is available])
3805   fi
3807   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3808                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3809     AC_TRY_COMPILE([#include <krb5.h>],
3810       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3811       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3812       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3814   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3815     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3816               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3817   fi
3819   AC_CACHE_CHECK([for the krb5_princ_component macro],
3820                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3821     AC_TRY_LINK([#include <krb5.h>],
3822       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3823       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3824       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3826   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3827     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3828                [Whether krb5_princ_component is available])
3829   fi
3831   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3832                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3833     AC_TRY_COMPILE([#include <krb5.h>],
3834       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3835       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3836       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3838   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3839     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3840               [Whether krb5_keytab_entry has key member])
3841   fi
3843   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3844                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3845     AC_TRY_COMPILE([#include <krb5.h>],
3846       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3847       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3848       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3850   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3851     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3852               [Whether krb5_keytab_entry has keyblock member])
3853   fi
3855   AC_CACHE_CHECK([for magic in krb5_address],
3856                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3857     AC_TRY_COMPILE([#include <krb5.h>],
3858       [krb5_address addr; addr.magic = 0;],
3859       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3860       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3862   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3863     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3864               [Whether the krb5_address struct has a magic property])
3865   fi
3867   AC_CACHE_CHECK([for WRFILE: keytab support],
3868                 samba_cv_HAVE_WRFILE_KEYTAB,[
3869     AC_TRY_RUN([
3870 #include<krb5.h>
3871   main()
3872   {
3873     krb5_context context;
3874     krb5_keytab keytab;
3876     krb5_init_context(&context);
3877     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3878   }],
3879   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3880   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3882   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3883       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3884                [Whether the WRFILE:-keytab is supported])
3885   fi
3887   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3888                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3889     AC_TRY_COMPILE([#include <krb5.h>],
3890     [
3891     krb5_context context;
3892     krb5_principal principal;
3893     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3894     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3895     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3897   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3898     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3899               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3900   fi
3902   AC_CACHE_CHECK([for krb5_addresses type],
3903                 samba_cv_HAVE_KRB5_ADDRESSES,[
3904     AC_TRY_COMPILE([#include <krb5.h>],
3905       [krb5_addresses addr;],
3906       samba_cv_HAVE_KRB5_ADDRESSES=yes,
3907       samba_cv_HAVE_KRB5_ADDRESSES=no)])
3909   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3910     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3911                [Whether the type krb5_addresses type exists])
3912   fi
3914   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
3915                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
3916     AC_TRY_COMPILE([#include <krb5.h>],
3917     [
3918     krb5_mk_error(0,0,0);],
3919     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
3920     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
3922   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
3923     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
3924               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
3925   fi
3928   #
3929   #
3930   # Now the decisions whether we can support krb5
3931   #
3932   # NOTE: all tests should be done before this block!
3933   #
3934   #
3935   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
3936     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
3937     use_ads=no
3938   fi
3940   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
3941           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
3942   then
3943     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
3944     use_ads=no
3945   fi
3947   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
3948           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
3949   then
3950     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
3951     use_ads=no
3952   fi
3954   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
3955           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
3956   then
3957     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
3958     use_ads=no
3959   fi
3961   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
3962           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
3963   then
3964     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
3965     use_ads=no
3966   fi
3968   if test x"$smb_krb5_ticket_has_keyinfo" != x"yes" ; then
3970       # We only need the following functions if we can't get the enctype
3971       # and kvno out of the ticket directly (ie. on Heimdal).
3973       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
3974       then
3975         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
3976         use_ads=no
3977       fi
3979       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
3980       then
3981         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
3982         use_ads=no
3983       fi
3985   fi
3987   if test x"$use_ads" = x"yes"; then
3988     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3989     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3990     if test x"$have_gssapi" = x"yes"; then
3991       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
3992     fi
3993   else
3994     if test x"$with_ads_support" = x"yes"; then
3995         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
3996     else
3997         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
3998     fi
3999     AC_REMOVE_DEFINE(HAVE_KRB5_H)
4000     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4001     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4002     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4003     KRB5_LIBS=""
4004     with_ads_support=no
4005   fi
4006   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4007   AC_MSG_RESULT([$use_ads])
4009 LIBS="$ac_save_LIBS"
4012 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4013 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4016 ########################################################
4017 # Compile with DNS Updates support?
4019 with_dnsupdate_support=no
4020 AC_MSG_CHECKING([whether to enable DNS Updates support])
4022 AC_ARG_WITH(dnsupdate,
4023 [  --with-dnsupdate        Enable DNS Updates support (default no)],
4024 [ case "$withval" in
4025     yes|no)
4026         with_dnsupdate_support=$withval
4027         ;;
4028   esac ])
4030 AC_MSG_RESULT($with_dnsupdate_support)
4032 if test x"$with_dnsupdate_support" != x"no"; then
4034   ################################################################
4035   # first test for Active Directory support being enabled
4036   #if test x"$with_ads_support" = x"no"; then
4037   #             AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4038   #             with_dnsupdate_support=no
4039   #fi           
4040   ##################################################################
4041   # then test for uuid.h (necessary to generate unique DNS keynames
4042   # (uuid.h is required for this test)
4043   AC_CHECK_HEADERS(uuid/uuid.h)
4045   if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4046         if test x"$with_dnsupdate_support" = x"yes"; then
4047          AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4048         else
4049          AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4050         fi
4051         with_dnsupdate_support=no
4052   fi
4055 if test x"$with_dnsupdate_support" != x"no"; then
4057   ########################################################
4058   # Now see if we can find the uuid libs in standard paths
4059   # On some systems, the uuid API is in libc, so we have to
4060   # be careful not to insert a spurious -luuid.
4062   UUID_LIBS=""
4063   AC_LIBTESTFUNC(uuid, uuid_generate,
4064           [
4065             case " $LIBS " in
4066                 *\ -luuid\ *)
4067                 UUID_LIBS="-luuid"
4068                 SMB_REMOVE_LIB(uuid)
4069                 ;;
4070             esac
4072             with_dnsupdate_support=yes
4073             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4074         ],
4075         [
4076             if test x"$with_dnsupdate_support" = x"yes"; then
4077                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4078             else
4079                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4080             fi
4081             with_dnsupdate_support=no
4082         ])
4085 #################################################
4086 # check for automount support
4087 AC_MSG_CHECKING(whether to use automount)
4088 AC_ARG_WITH(automount,
4089 [  --with-automount        Include automount support (default=no)],
4090 [ case "$withval" in
4091   yes)
4092     AC_MSG_RESULT(yes)
4093     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4094     ;;
4095   *)
4096     AC_MSG_RESULT(no)
4097     ;;
4098   esac ],
4099   AC_MSG_RESULT(no)
4102 #################################################
4103 # check for smbmount support
4104 AC_MSG_CHECKING(whether to use smbmount)
4105 AC_ARG_WITH(smbmount,
4106 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
4107 [ case "$withval" in
4108   yes)
4109         case "$host_os" in
4110         *linux*)
4111                 AC_MSG_RESULT(yes)
4112                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
4113                 SMBMOUNT_PROGS="bin/smbmount bin/smbmnt bin/smbumount"
4114                 ;;
4115         *)
4116                 AC_MSG_ERROR(not on a linux system!)
4117                 ;;
4118         esac
4119     ;;
4120   *)
4121     AC_MSG_RESULT(no)
4122     ;;
4123   esac ],
4124   AC_MSG_RESULT(no)
4127 #################################################
4128 # check for mount- and umount.cifs support
4129 CIFSMOUNT_PROGS=""
4130 INSTALL_CIFSMOUNT=""
4131 UNINSTALL_CIFSMOUNT=""
4132 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4133 AC_ARG_WITH(cifsmount,
4134 [  --with-cifsmount        Include mount.cifs and umount.cifs (Linux only) support (default=yes)],
4135 [ case "$withval" in
4136   no)
4137         AC_MSG_RESULT(no)
4138         ;;
4139   *)
4140         case "$host_os" in
4141         *linux*)
4142                 AC_MSG_RESULT(yes)
4143                 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4144                 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4145                 INSTALL_CIFSMOUNT="installcifsmount"
4146                 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4147                 ;;
4148         *)
4149                 AC_MSG_ERROR(not on a linux system!)
4150                 ;;
4151         esac
4152     ;;
4153   esac ],
4154 [ case "$host_os" in
4155   *linux*)
4156         AC_MSG_RESULT(yes)
4157         AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4158         CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4159         INSTALL_CIFSMOUNT="installcifsmount"
4160         UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4161         ;;
4162   *)
4163         AC_MSG_RESULT(no)
4164         ;;
4165   esac ]
4169 #################################################
4170 # check for a PAM clear-text auth, accounts, password and session support
4171 with_pam_for_crypt=no
4172 try_pam=no
4173 AC_MSG_CHECKING(whether to try PAM support)
4174 AC_ARG_WITH(pam,
4175 [  --with-pam              Include PAM support (default=no)],
4176 [ case "$withval" in
4177   yes|no)
4178     try_pam=$withval
4179     ;;
4180   esac
4182 AC_MSG_RESULT([$try_pam])
4184 use_pam=no
4185 create_pam_modules=no
4186 if test x"${try_pam}" != x"no";then
4187         use_pam=yes
4188         create_pam_modules=yes
4190         AC_CHECK_HEADERS(security/pam_appl.h)
4191         if test x"$ac_cv_header_security_pam_appl_h" != x"yes"; then
4192                 if test x"${try_pam}" = x"yes";then
4193                         AC_MSG_ERROR([--with-pam=yes but security/pam_appl.h not found])
4194                 fi
4195                 use_pam=no
4196                 create_pam_modules=no
4197         fi
4199         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4200         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4201                 if test x"${try_pam}" = x"yes";then
4202                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4203                 fi
4204                 use_pam=no
4205                 create_pam_modules=no
4206         fi
4208         AC_CHECK_HEADERS(security/pam_modules.h,,,[[
4209                 #if HAVE_SECURITY_PAM_APPL_H
4210                 #include <security/pam_appl.h>
4211                 #endif
4212         ]])
4213        if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
4214                 if test x"${try_pam}" = x"yes";then
4215                         AC_MSG_ERROR([--with-pam=yes but security/pam_modules.h not found])
4216        fi
4217                 create_pam_modules=no
4218     fi
4220         if test x"$use_pam" = x"yes"; then
4221     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4222                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4223                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4224     with_pam_for_crypt=yes
4226                 if test x"$create_pam_modules" = x"yes"; then
4227                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4228                         # this checks are optional,
4229                         # we don't care about the results here
4230                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4231                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4232                 else
4233                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4234                 fi
4235         fi
4236         AC_MSG_CHECKING(whether to use PAM support)
4237         AC_MSG_RESULT([$use_pam])
4239         AC_MSG_CHECKING(whether to have PAM MODULES support)
4240         AC_MSG_RESULT([$create_pam_modules])
4241 fi # try_pam != no
4243 #################################################
4244 # check for pam_smbpass support
4245 PAM_MODULES=""
4246 INSTALL_PAM_MODULES=""
4247 UNINSTALL_PAM_MODULES=""
4248 AC_MSG_CHECKING(whether to use pam_smbpass)
4249 AC_ARG_WITH(pam_smbpass,
4250 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
4251 [ case "$withval" in
4252   yes)
4253     AC_MSG_RESULT(yes)
4255        # Conditions under which pam_smbpass should not be built.
4257        if test x"$BLDSHARED" != x"true"; then
4258           AC_MSG_ERROR([No support for shared modules])
4259        elif test x"$create_pam_modules" != x"yes"; then
4260           AC_MSG_ERROR([No support for PAM MODULES])
4261        else
4262           PAM_MODULES="pam_smbpass"
4263           INSTALL_PAM_MODULES="installpammodules"
4264           UNINSTALL_PAM_MODULES="uninstallpammodules"
4265        fi
4266     ;;
4267   *)
4268     AC_MSG_RESULT(no)
4269     ;;
4270   esac ],
4271   AC_MSG_RESULT(no)
4275 ###############################################
4276 # test for where we get crypt() from
4277 AC_SEARCH_LIBS(crypt, [crypt],
4278   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4279   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4282 ## moved after the check for -lcrypt in order to
4283 ## ensure that the necessary libraries are included
4284 ## check checking for truncated salt.  Wrapped by the
4285 ## $with_pam_for_crypt variable as above   --jerry
4287 if test $with_pam_for_crypt = no; then
4288 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4289 crypt_LIBS="$LIBS"
4290 LIBS="$AUTH_LIBS $LIBS"
4291 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4292         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4293 LIBS="$crypt_LIBS"])
4294 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4295         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4299 #################################################
4300 # check for a NISPLUS_HOME support
4301 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4302 AC_ARG_WITH(nisplus-home,
4303 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
4304 [ case "$withval" in
4305   yes)
4306     AC_MSG_RESULT(yes)
4307     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4308     ;;
4309   *)
4310     AC_MSG_RESULT(no)
4311     ;;
4312   esac ],
4313   AC_MSG_RESULT(no)
4316 #################################################
4317 # check for syslog logging
4318 AC_MSG_CHECKING(whether to use syslog logging)
4319 AC_ARG_WITH(syslog,
4320 [  --with-syslog           Include experimental SYSLOG support (default=no)],
4321 [ case "$withval" in
4322   yes)
4323     AC_MSG_RESULT(yes)
4324     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4325     ;;
4326   *)
4327     AC_MSG_RESULT(no)
4328     ;;
4329   esac ],
4330   AC_MSG_RESULT(no)
4333 #################################################
4334 # check for experimental disk-quotas support
4336 samba_cv_WITH_QUOTAS=auto
4337 samba_cv_TRY_QUOTAS=no
4338 samba_cv_RUN_QUOTA_TESTS=auto
4339 samba_cv_WITH_SYS_QUOTAS=auto
4340 samba_cv_TRY_SYS_QUOTAS=auto
4341 samba_cv_SYSQUOTA_FOUND=no
4343 AC_MSG_CHECKING(whether to try disk-quotas support)
4344 AC_ARG_WITH(quotas,
4345 [  --with-quotas           Include disk-quota support (default=no)],
4346 [ case "$withval" in
4347   yes)
4348     AC_MSG_RESULT(yes)
4349     samba_cv_WITH_QUOTAS=yes
4350     samba_cv_TRY_QUOTAS=yes
4351     samba_cv_RUN_QUOTA_TESTS=yes
4352     #set sys quotas to auto in this case
4353     samba_cv_TRY_SYS_QUOTAS=auto
4354     ;;
4355   auto)
4356     AC_MSG_RESULT(auto)
4357     samba_cv_WITH_QUOTAS=auto
4358     samba_cv_TRY_QUOTAS=auto
4359     samba_cv_RUN_QUOTA_TESTS=auto
4360     #set sys quotas to auto in this case
4361     samba_cv_TRY_SYS_QUOTAS=auto
4362     ;;
4363   no)
4364     AC_MSG_RESULT(no)
4365     samba_cv_WITH_QUOTAS=no
4366     samba_cv_TRY_QUOTAS=no
4367     samba_cv_RUN_QUOTA_TESTS=no
4368     ;;
4369   *)
4370     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4371     ;;
4372   esac ],
4373   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4376 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4377 AC_ARG_WITH(sys-quotas,
4378 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
4379 [ case "$withval" in
4380   yes)
4381     AC_MSG_RESULT(yes)
4382     samba_cv_WITH_SYS_QUOTAS=yes
4383     samba_cv_TRY_SYS_QUOTAS=yes
4384     samba_cv_RUN_QUOTA_TESTS=yes
4385     ;;
4386   auto)
4387     AC_MSG_RESULT(auto)
4388     samba_cv_WITH_SYS_QUOTAS=auto
4389     samba_cv_TRY_SYS_QUOTAS=auto
4390     samba_cv_RUN_QUOTA_TESTS=auto
4391     ;;
4392   no)
4393     AC_MSG_RESULT(no)
4394     samba_cv_WITH_SYS_QUOTAS=no
4395     samba_cv_TRY_SYS_QUOTAS=no
4396     ;;
4397   *)
4398     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4399     ;;
4400   esac ],
4401   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4404 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4405 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4406   case "$host_os" in
4407         *linux*)
4408             AC_MSG_RESULT(yes)
4409             samba_cv_TRY_SYS_QUOTAS=yes
4410             samba_cv_RUN_QUOTA_TESTS=yes
4411             ;;
4412         *)
4413             AC_MSG_RESULT(no)
4414             samba_cv_TRY_SYS_QUOTAS=no
4415             ;;
4416   esac
4419 #############################################
4420 # only check for quota stuff if --with-quotas
4421 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4423 case "$host_os" in
4424         # on linux we didn't need to test we have builtin support
4425         *linux*)
4426             samba_cv_SYSQUOTA_FOUND=yes
4427             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4428             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4429             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4430             AC_MSG_RESULT(yes)
4432             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4433             samba_cv_found_xfs_header=yes
4434             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4435             AC_MSG_RESULT(yes)
4436             ;;
4437         *solaris*)
4438             # need to set this define when using static linking (BUG 1473)
4439             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4440             ;;
4441         *)
4442             ;;
4443 esac
4445 # some broken header files need this
4446 AC_CHECK_HEADER(asm/types.h,[
4447             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4448             AC_ADD_INCLUDE(<asm/types.h>)
4449             ])
4451 # For quotas on Veritas VxFS filesystems
4452 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4454 # For sys/quota.h and linux/quota.h
4455 AC_CHECK_HEADERS(sys/quota.h)
4457 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4458 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4459 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4460 AC_TRY_COMPILE([
4461 #include "confdefs.h"
4462 #ifdef HAVE_SYS_TYPES_H
4463 #include <sys/types.h>
4464 #endif
4465 #ifdef HAVE_ASM_TYPES_H
4466 #include <asm/types.h>
4467 #endif
4468 #include <sys/quota.h>
4469 ],[int i = Q_XGETQUOTA;],
4470 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4471 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4472         samba_cv_found_xfs_header=yes
4476 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4477 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4478 AC_TRY_COMPILE([
4479 #include "confdefs.h"
4480 #ifdef HAVE_SYS_QUOTA_H
4481 #include <sys/quota.h>
4482 #endif
4484 struct dqblk D;
4485 D.dqb_fsoftlimit = 0;],
4486 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4487 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4488         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4491 ##################
4492 # look for a working quota system
4494 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4495 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4496 AC_TRY_RUN_STRICT([
4497 #define HAVE_QUOTACTL_4A 1
4498 #define AUTOCONF_TEST 1
4499 #include "confdefs.h"
4500 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4501            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4502 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4503     samba_cv_SYSQUOTA_FOUND=yes;
4504     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4505     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4509 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4510 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4511 AC_TRY_RUN_STRICT([
4512 #define HAVE_QUOTACTL_4B 1
4513 #define AUTOCONF_TEST 1
4514 #include "confdefs.h"
4515 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4516            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4517 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4518     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4519     samba_cv_SYSQUOTA_FOUND=yes;
4520     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4521     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4525 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4526 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4527 AC_TRY_RUN_STRICT([
4528 #define HAVE_QUOTACTL_3 1
4529 #define AUTOCONF_TEST 1
4530 #include "confdefs.h"
4531 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4532            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4533 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4534     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4535     samba_cv_SYSQUOTA_FOUND=yes;
4536     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4537     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4541 #################################################
4542 # check for mntent.h and struct mntent
4543 AC_CHECK_HEADERS(mntent.h)
4544 #################################################
4545 # check for setmntent,getmntent,endmntent
4546 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4548 #################################################
4549 # check for devnm.h and struct mntent
4550 AC_CHECK_HEADERS(devnm.h)
4551 #################################################
4552 # check for devnm
4553 AC_CHECK_FUNCS(devnm)
4555 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4556     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4557         # if --with-sys-quotas=yes then build it
4558         # you have can use the get/set quota command smb.conf
4559         # options then
4560         samba_cv_SYSQUOTA_FOUND=auto
4561     fi
4562     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4563         # if --with-sys-quotas=yes then build it
4564         # you have can use the get/set quota command smb.conf
4565         # options then
4566         samba_cv_TRY_SYS_QUOTAS=auto
4567     fi
4570 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4571 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4572 SAVE_CPPFLAGS="$CPPFLAGS"
4573 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4574 AC_TRY_COMPILE([
4575 #include "confdefs.h"
4576 #define NO_PROTO_H 1
4577 #define NO_CONFIG_H 1
4578 #define HAVE_SYS_QUOTAS 1
4579 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4580 #include "${srcdir-.}/lib/sysquotas.c"
4581 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4582 CPPFLAGS="$SAVE_CPPFLAGS"
4584 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4585 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4586     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4587         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4588         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4589         samba_cv_WE_USE_SYS_QUOTAS=yes
4590         AC_MSG_RESULT(yes)
4591     else
4592         AC_MSG_RESULT(no)
4593     fi
4597 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4598 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4599 SAVE_CPPFLAGS="$CPPFLAGS"
4600 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4601 AC_TRY_COMPILE([
4602 #include "confdefs.h"
4603 #define NO_PROTO_H 1
4604 #define NO_CONFIG_H 1
4605 #define HAVE_SYS_QUOTAS 1
4606 #define HAVE_XFS_QUOTAS 1
4607 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4608 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4609 CPPFLAGS="$SAVE_CPPFLAGS"
4611 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4612     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4613         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4614     fi
4618 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4619 SAVE_CPPFLAGS="$CPPFLAGS"
4620 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4621 AC_TRY_COMPILE([
4622 #include "confdefs.h"
4623 #define NO_PROTO_H 1
4624 #define NO_CONFIG_H 1
4625 #include "${srcdir-.}/smbd/quotas.c"
4626 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4627 CPPFLAGS="$SAVE_CPPFLAGS"
4629 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4630 AC_MSG_CHECKING(whether to use the old quota support)
4631     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4632       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4633         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4634         AC_MSG_RESULT(yes)
4635       else
4636         AC_MSG_RESULT(no)
4637       fi
4638     else
4639       AC_MSG_RESULT(no)
4640     fi
4643 ####################
4644 # End of quota check samba_cv_RUN_QUOTA_TESTS
4647 #################################################
4648 # check for experimental utmp accounting
4650 AC_MSG_CHECKING(whether to support utmp accounting)
4651 WITH_UTMP=yes
4652 AC_ARG_WITH(utmp,
4653 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
4654 [ case "$withval" in
4655   no)
4656                 WITH_UTMP=no
4657                 ;;
4658   *)
4659                 WITH_UTMP=yes
4660                 ;;
4661   esac ],
4664 # utmp requires utmp.h
4665 # Note similar check earlier, when checking utmp details.
4667 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4668         utmp_no_reason=", no utmp.h on $host_os"
4669         WITH_UTMP=no
4672 # Display test results
4674 if test x"$WITH_UTMP" = x"yes"; then
4675         AC_MSG_RESULT(yes)
4676         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4677 else
4678         AC_MSG_RESULT(no$utmp_no_reason)
4681 INSTALLLIBCMD_SH=:
4682 INSTALLLIBCMD_A=:
4683 UNINSTALLLIBCMD_SH=:
4684 UNINSTALLLIBCMD_A=:
4686 if test $BLDSHARED = true; then
4687         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4688         UNINSTALLLIBCMD_SH="rm -f"
4690 if test $enable_static = yes; then
4691         INSTALLLIBCMD_A="\$(INSTALLCMD)"
4692         UNINSTALLLIBCMD_A="rm -f"
4695 #################################################
4696 # should we build libmsrpc?
4697 INSTALL_LIBMSRPC=
4698 UNINSTALL_LIBMSRPC=
4699 LIBMSRPC_SHARED=
4700 LIBMSRPC=
4701 AC_MSG_CHECKING(whether to build the libmsrpc shared library)
4702 AC_ARG_WITH(libmsrpc,
4703 [  --with-libmsrpc         Build the libmsrpc shared library (default=yes if shared libs supported)],
4704 [ case "$withval" in
4705   no)
4706      AC_MSG_RESULT(no)
4707      ;;
4708   *)
4709      if test $BLDSHARED = true; then
4710         LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4711         LIBMSRPC=libmsrpc
4712         AC_MSG_RESULT(yes)
4713      else
4714         enable_static=yes
4715         AC_MSG_RESULT(no shared library support -- will supply static library)
4716      fi
4717      if test $enable_static = yes; then
4718         LIBMSRPC=libmsrpc
4719      fi
4720      INSTALL_LIBMSRPC=installlibmsrpc
4721      UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4722      ;;
4723   esac ],
4725 # if unspecified, default is to built it if possible.
4726   if test $BLDSHARED = true; then
4727      LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4728      LIBMSRPC=libmsrpc
4729      AC_MSG_RESULT(yes)
4730    else
4731      enable_static=yes
4732      AC_MSG_RESULT(no shared library support -- will supply static library)
4733    fi
4734    if test $enable_static = yes; then
4735      LIBMSRPC=libmsrpc
4736   fi]
4737   INSTALL_LIBMSRPC=installlibmsrpc
4738   UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4742 #################################################
4743 # should we build libaddns?
4744 INSTALL_LIBADDNS=
4745 UNINSTALL_LIBADDNS=
4746 LIBADDNS_SHARED=
4747 LIBADDNS=
4748 AC_MSG_CHECKING(whether to build the libaddns shared library)
4749 AC_ARG_WITH(libaddns,
4750 [  --with-libaddns         Build the libaddns shared library (default=yes if shared libs supported)],
4751 [ case "$withval" in
4752   no)
4753      AC_MSG_RESULT(no)
4754      ;;
4755   *)
4756      if test $BLDSHARED = true; then
4757         LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
4758         LIBADDNS=libaddns
4759         AC_MSG_RESULT(yes)
4760      else
4761         enable_static=yes
4762         AC_MSG_RESULT(no shared library support -- will supply static library)
4763      fi
4764      if test $enable_static = yes; then
4765         LIBADDNS=libaddns
4766      fi
4767      INSTALL_LIBADDNS=installlibaddns
4768      UNINSTALL_LIBADDNS=uninstalllibaddns
4769      ;;
4770   esac ],
4772 # if unspecified, default is to built it if possible.
4773   if test $BLDSHARED = true; then
4774      LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
4775      LIBADDNS=libaddns
4776      AC_MSG_RESULT(yes)
4777    else
4778      enable_static=yes
4779      AC_MSG_RESULT(no shared library support -- will supply static library)
4780    fi
4781    if test $enable_static = yes; then
4782      LIBADDNS=libaddns
4783   fi]
4784   INSTALL_LIBADDNS=installlibaddns
4785   UNINSTALL_LIBADDNS=uninstalllibaddns
4788 #################################################
4789 # should we build libsmbclient?
4790 INSTALL_LIBSMBCLIENT=
4791 UNINSTALL_LIBSMBCLIENT=
4792 LIBSMBCLIENT_SHARED=
4793 LIBSMBCLIENT=
4794 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
4795 AC_ARG_WITH(libsmbclient,
4796 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
4797 [ case "$withval" in
4798   no)
4799      AC_MSG_RESULT(no)
4800      ;;
4801   *)
4802      if test $BLDSHARED = true; then
4803         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4804         LIBSMBCLIENT=libsmbclient
4805         AC_MSG_RESULT(yes)
4806      else
4807         enable_static=yes
4808         AC_MSG_RESULT(no shared library support -- will supply static library)
4809      fi
4810      if test $enable_static = yes; then
4811         LIBSMBCLIENT=libsmbclient
4812      fi
4813      INSTALL_LIBSMBCLIENT=installclientlib
4814      UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4815      ;;
4816   esac ],
4818 # if unspecified, default is to built it if possible.
4819   if test $BLDSHARED = true; then
4820      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4821      LIBSMBCLIENT=libsmbclient
4822      AC_MSG_RESULT(yes)
4823    else
4824      enable_static=yes
4825      AC_MSG_RESULT(no shared library support -- will supply static library)
4826    fi
4827    if test $enable_static = yes; then
4828      LIBSMBCLIENT=libsmbclient
4829   fi]
4830   INSTALL_LIBSMBCLIENT=installclientlib
4831   UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4834 INSTALL_LIBSMBSHAREMODES=
4835 LIBSMBSHAREMODES_SHARED=
4836 LIBSMBSHAREMODES=
4837 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
4838 AC_ARG_WITH(libsmbsharemodes,
4839 [  --with-libsmbsharemodes     Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
4840 [ case "$withval" in
4841   no)
4842      AC_MSG_RESULT(no)
4843      ;;
4844   *)
4845      if test $BLDSHARED = true; then
4846         LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4847         LIBSMBSHAREMODES=libsmbsharemodes
4848         AC_MSG_RESULT(yes)
4849      else
4850         enable_static=yes
4851         AC_MSG_RESULT(no shared library support -- will supply static library)
4852      fi
4853      if test $enable_static = yes; then
4854         LIBSMBSHAREMODES=libsmbsharemodes
4855      fi
4856      INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4857      UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
4858      ;;
4859   esac ],
4861 # if unspecified, default is to built it if possible.
4862   if test $BLDSHARED = true; then
4863      LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4864      LIBSMBSHAREMODES=libsmbsharemodes
4865      AC_MSG_RESULT(yes)
4866    else
4867      enable_static=yes
4868      AC_MSG_RESULT(no shared library support -- will supply static library)
4869    fi
4870    if test $enable_static = yes; then
4871      LIBSMBSHAREMODES=libsmbsharemodes
4872   fi]
4873   INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4876 #################################################
4877 # these tests are taken from the GNU fileutils package
4878 AC_CHECKING(how to get filesystem space usage)
4879 space=no
4881 # Test for statvfs64.
4882 if test $space = no; then
4883   # SVR4
4884   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4885   [AC_TRY_RUN([
4886 #if defined(HAVE_UNISTD_H)
4887 #include <unistd.h>
4888 #endif
4889 #include <sys/types.h>
4890 #include <sys/statvfs.h>
4891   main ()
4892   {
4893     struct statvfs64 fsd;
4894     exit (statvfs64 (".", &fsd));
4895   }],
4896   fu_cv_sys_stat_statvfs64=yes,
4897   fu_cv_sys_stat_statvfs64=no,
4898   fu_cv_sys_stat_statvfs64=cross)])
4899   if test $fu_cv_sys_stat_statvfs64 = yes; then
4900     space=yes
4901     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4902   fi
4905 # Perform only the link test since it seems there are no variants of the
4906 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4907 # because that got a false positive on SCO OSR5.  Adding the declaration
4908 # of a `struct statvfs' causes this test to fail (as it should) on such
4909 # systems.  That system is reported to work fine with STAT_STATFS4 which
4910 # is what it gets when this test fails.
4911 if test $space = no; then
4912   # SVR4
4913   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4914                  [AC_TRY_LINK([#include <sys/types.h>
4915 #include <sys/statvfs.h>],
4916                               [struct statvfs fsd; statvfs (0, &fsd);],
4917                               fu_cv_sys_stat_statvfs=yes,
4918                               fu_cv_sys_stat_statvfs=no)])
4919   if test $fu_cv_sys_stat_statvfs = yes; then
4920     space=yes
4921     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4922   fi
4925 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4926 # This is not the case on ancient Linux systems.
4928 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4929     AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4930         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4931 if test x"$samba_cv_fsid_int" = x"yes"; then
4932     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4935 if test $space = no; then
4936   # DEC Alpha running OSF/1
4937   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4938   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4939   [AC_TRY_RUN([
4940 #include <sys/param.h>
4941 #include <sys/types.h>
4942 #include <sys/mount.h>
4943   main ()
4944   {
4945     struct statfs fsd;
4946     fsd.f_fsize = 0;
4947     exit (statfs (".", &fsd, sizeof (struct statfs)));
4948   }],
4949   fu_cv_sys_stat_statfs3_osf1=yes,
4950   fu_cv_sys_stat_statfs3_osf1=no,
4951   fu_cv_sys_stat_statfs3_osf1=no)])
4952   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4953   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4954     space=yes
4955     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4956   fi
4959 if test $space = no; then
4960 # AIX
4961   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4962 member (AIX, 4.3BSD)])
4963   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4964   [AC_TRY_RUN([
4965 #ifdef HAVE_SYS_PARAM_H
4966 #include <sys/param.h>
4967 #endif
4968 #ifdef HAVE_SYS_MOUNT_H
4969 #include <sys/mount.h>
4970 #endif
4971 #ifdef HAVE_SYS_VFS_H
4972 #include <sys/vfs.h>
4973 #endif
4974   main ()
4975   {
4976   struct statfs fsd;
4977   fsd.f_bsize = 0;
4978   exit (statfs (".", &fsd));
4979   }],
4980   fu_cv_sys_stat_statfs2_bsize=yes,
4981   fu_cv_sys_stat_statfs2_bsize=no,
4982   fu_cv_sys_stat_statfs2_bsize=no)])
4983   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4984   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4985     space=yes
4986     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4987   fi
4990 if test $space = no; then
4991 # SVR3
4992   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4993   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4994   [AC_TRY_RUN([#include <sys/types.h>
4995 #include <sys/statfs.h>
4996   main ()
4997   {
4998   struct statfs fsd;
4999   exit (statfs (".", &fsd, sizeof fsd, 0));
5000   }],
5001     fu_cv_sys_stat_statfs4=yes,
5002     fu_cv_sys_stat_statfs4=no,
5003     fu_cv_sys_stat_statfs4=no)])
5004   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5005   if test $fu_cv_sys_stat_statfs4 = yes; then
5006     space=yes
5007     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5008   fi
5011 if test $space = no; then
5012 # 4.4BSD and NetBSD
5013   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5014 member (4.4BSD and NetBSD)])
5015   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5016   [AC_TRY_RUN([#include <sys/types.h>
5017 #ifdef HAVE_SYS_PARAM_H
5018 #include <sys/param.h>
5019 #endif
5020 #ifdef HAVE_SYS_MOUNT_H
5021 #include <sys/mount.h>
5022 #endif
5023   main ()
5024   {
5025   struct statfs fsd;
5026   fsd.f_fsize = 0;
5027   exit (statfs (".", &fsd));
5028   }],
5029   fu_cv_sys_stat_statfs2_fsize=yes,
5030   fu_cv_sys_stat_statfs2_fsize=no,
5031   fu_cv_sys_stat_statfs2_fsize=no)])
5032   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5033   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5034     space=yes
5035         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5036   fi
5039 if test $space = no; then
5040   # Ultrix
5041   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5042   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5043   [AC_TRY_RUN([#include <sys/types.h>
5044 #ifdef HAVE_SYS_PARAM_H
5045 #include <sys/param.h>
5046 #endif
5047 #ifdef HAVE_SYS_MOUNT_H
5048 #include <sys/mount.h>
5049 #endif
5050 #ifdef HAVE_SYS_FS_TYPES_H
5051 #include <sys/fs_types.h>
5052 #endif
5053   main ()
5054   {
5055   struct fs_data fsd;
5056   /* Ultrix's statfs returns 1 for success,
5057      0 for not mounted, -1 for failure.  */
5058   exit (statfs (".", &fsd) != 1);
5059   }],
5060   fu_cv_sys_stat_fs_data=yes,
5061   fu_cv_sys_stat_fs_data=no,
5062   fu_cv_sys_stat_fs_data=no)])
5063   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5064   if test $fu_cv_sys_stat_fs_data = yes; then
5065     space=yes
5066     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5067   fi
5071 # As a gating factor for large file support, in order to
5072 # use <4GB files we must have the following minimal support
5073 # available.
5074 # long long, and a 64 bit off_t or off64_t.
5075 # If we don't have all of these then disable large
5076 # file support.
5078 AC_MSG_CHECKING([if large file support can be enabled])
5079 AC_TRY_COMPILE([
5080 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5081 #include <sys/types.h>
5082 #else
5083 __COMPILE_ERROR_
5084 #endif
5086 [int i],
5087 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5088 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5089         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5091 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5093 #################################################
5094 # check for cluster extensions
5096 AC_MSG_CHECKING(whether to include cluster support)
5097 AC_ARG_WITH(cluster-support,
5098 [  --with-cluster-support  Enable cluster extensions (default=no)])
5099 if test "x$with_cluster_support" = "xyes"; then
5100     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5101     AC_MSG_RESULT(yes)
5102 else
5103     AC_MSG_RESULT(no)
5107 #################################################
5108 # check for ACL support
5110 AC_MSG_CHECKING(whether to support ACLs)
5111 AC_ARG_WITH(acl-support,
5112 [  --with-acl-support      Include ACL support (default=no)],
5113 [ case "$withval" in
5114   yes)
5116         case "$host_os" in
5117         *sysv5*)
5118                 AC_MSG_RESULT(Using UnixWare ACLs)
5119                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5120                 default_static_modules="$default_static_modules vfs_solarisacl"
5121                 ;;
5122         *solaris*)
5123                 AC_MSG_RESULT(Using solaris ACLs)
5124                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5125                 ACL_LIBS="$ACL_LIBS -lsec"
5126                 default_static_modules="$default_static_modules vfs_solarisacl"
5127                 ;;
5128         *hpux*)
5129                 AC_MSG_RESULT(Using HPUX ACLs)
5130                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5131                 default_static_modules="$default_static_modules vfs_hpuxacl"
5132                 ;;
5133         *irix*)
5134                 AC_MSG_RESULT(Using IRIX ACLs)
5135                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5136                 default_static_modules="$default_static_modules vfs_irixacl"
5137                 ;;
5138         *aix*)
5139                 AC_MSG_RESULT(Using AIX ACLs)
5140                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5141                 default_static_modules="$default_static_modules vfs_aixacl"
5142                 ;;
5143         *osf*)
5144                 AC_MSG_RESULT(Using Tru64 ACLs)
5145                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5146                 ACL_LIBS="$ACL_LIBS -lpacl"
5147                 default_static_modules="$default_static_modules vfs_tru64acl"
5148                 ;;
5149         *freebsd[[5-9]]*)
5150                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
5151                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
5152                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5153                 default_static_modules="$default_static_modules vfs_posixacl"
5154                 ;;
5155         *linux*)
5156                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5157                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5158                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
5159                         acl_LIBS=$LIBS
5160                         LIBS="$LIBS -lacl"
5161                         AC_TRY_LINK([
5162                                 #include <sys/types.h>
5163                                 #include <sys/acl.h>
5164                         ],[
5165                                 acl_t acl;
5166                                 int entry_id;
5167                                 acl_entry_t *entry_p;
5168                                 return acl_get_entry(acl, entry_id, entry_p);
5169                         ],
5170                         [samba_cv_HAVE_POSIX_ACLS=yes],
5171                         [samba_cv_HAVE_POSIX_ACLS=no])
5172                         LIBS=$acl_LIBS
5173                 ])
5174                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5175                         AC_MSG_RESULT(Using posix ACLs)
5176                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5177                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5178                                 acl_LIBS=$LIBS
5179                                 LIBS="$LIBS -lacl"
5180                                 AC_TRY_LINK([
5181                                         #include <sys/types.h>
5182                                         #include <sys/acl.h>
5183                                 ],[
5184                                         acl_permset_t permset_d;
5185                                         acl_perm_t perm;
5186                                         return acl_get_perm_np(permset_d, perm);
5187                                 ],
5188                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5189                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5190                                 LIBS=$acl_LIBS
5191                         ])
5192                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5193                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5194                         fi
5195                 fi
5196             ;;
5197          *)
5198                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5199                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
5200                         acl_LIBS=$LIBS
5201                         LIBS="$LIBS -lacl"
5202                         AC_TRY_LINK([
5203                                 #include <sys/types.h>
5204                                 #include <sys/acl.h>
5205                         ],[
5206                                 acl_t acl;
5207                                 int entry_id;
5208                                 acl_entry_t *entry_p;
5209                                 return acl_get_entry( acl, entry_id, entry_p);
5210                         ],
5211                         [samba_cv_HAVE_POSIX_ACLS=yes],
5212                         [samba_cv_HAVE_POSIX_ACLS=no])
5213                         LIBS=$acl_LIBS
5214                 ])
5215                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5216                         AC_MSG_RESULT(Using posix ACLs)
5217                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5218                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5219                                 acl_LIBS=$LIBS
5220                                 LIBS="$LIBS -lacl"
5221                                 AC_TRY_LINK([
5222                                         #include <sys/types.h>
5223                                         #include <sys/acl.h>
5224                                 ],[
5225                                         acl_permset_t permset_d;
5226                                         acl_perm_t perm;
5227                                         return acl_get_perm_np( permset_d, perm);
5228                                 ],
5229                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5230                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5231                                 LIBS=$acl_LIBS
5232                         ])
5233                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5234                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5235                         fi
5236                 fi
5237             ;;
5238         esac
5239         ;;
5240   *)
5241     AC_MSG_RESULT(no)
5242     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5243     ;;
5244   esac ],
5245   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5246   AC_MSG_RESULT(no)
5249 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5250    default_static_modules="$default_static_modules vfs_posixacl"
5253 #################################################
5254 # check for AIO support
5256 AC_MSG_CHECKING(whether to support asynchronous io)
5257 AC_ARG_WITH(aio-support,
5258 [  --with-aio-support      Include asynchronous io support (default=no)],
5259 [ case "$withval" in
5260   yes)
5262         AC_MSG_RESULT(yes)
5263         case "$host_os" in
5264         *)
5265                 AIO_LIBS=$LIBS
5266                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5267                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5268                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5269                 aio_LIBS=$LIBS
5270                 LIBS=$AIO_LIBS
5271                 AC_TRY_LINK([#include <sys/types.h>
5272 #include <aio.h>],
5273 [ struct aiocb a; return aio_read(&a);],
5274 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5275                 LIBS=$aio_LIBS])
5276                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5277                 aio_LIBS=$LIBS
5278                 LIBS=$AIO_LIBS
5279                 AC_TRY_LINK([#include <sys/types.h>
5280 #include <aio.h>],
5281 [ struct aiocb64 a; return aio_read64(&a);],
5282 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5283                 LIBS=$aio_LIBS])
5284                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5285                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5286                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5287                         LIBS=$AIO_LIBS
5288                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5289                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5290                         LIBS=$AIO_LIBS
5291                 fi
5293                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5294                         AC_MSG_CHECKING(for aio_read)
5295                         AC_LINK_IFELSE([#include <aio.h>
5296 int main() { struct aiocb a; return aio_read(&a); }],
5297 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5298 [AC_MSG_RESULT(no)])
5300                         AC_MSG_CHECKING(for aio_write)
5301                         AC_LINK_IFELSE([#include <aio.h>
5302 int main() { struct aiocb a; return aio_write(&a); }],
5303 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5304 [AC_MSG_RESULT(no)])
5306                         AC_MSG_CHECKING(for aio_fsync)
5307                         AC_LINK_IFELSE([#include <aio.h>
5308 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5309 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5310 [AC_MSG_RESULT(no)])
5312                         AC_MSG_CHECKING(for aio_return)
5313                         AC_LINK_IFELSE([#include <aio.h>
5314 int main() { struct aiocb a; return aio_return(&a); }],
5315 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5316 [AC_MSG_RESULT(no)])
5318                         AC_MSG_CHECKING(for aio_error)
5319                         AC_LINK_IFELSE([#include <aio.h>
5320 int main() { struct aiocb a; return aio_error(&a); }],
5321 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5322 [AC_MSG_RESULT(no)])
5324                         AC_MSG_CHECKING(for aio_cancel)
5325                         AC_LINK_IFELSE([#include <aio.h>
5326 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5327 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5328 [AC_MSG_RESULT(no)])
5330                         AC_MSG_CHECKING(for aio_suspend)
5331                         AC_LINK_IFELSE([#include <aio.h>
5332 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5333 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5334 [AC_MSG_RESULT(no)])
5335                 fi
5337                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5338                         AC_MSG_CHECKING(for aio_read64)
5339                         AC_LINK_IFELSE([#include <aio.h>
5340 int main() { struct aiocb a; return aio_read64(&a); }],
5341 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5342 [AC_MSG_RESULT(no)])
5344                         AC_MSG_CHECKING(for aio_write64)
5345                         AC_LINK_IFELSE([#include <aio.h>
5346 int main() { struct aiocb a; return aio_write64(&a); }],
5347 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5348 [AC_MSG_RESULT(no)])
5350                         AC_MSG_CHECKING(for aio_fsync64)
5351                         AC_LINK_IFELSE([#include <aio.h>
5352 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5353 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5354 [AC_MSG_RESULT(no)])
5356                         AC_MSG_CHECKING(for aio_return64)
5357                         AC_LINK_IFELSE([#include <aio.h>
5358 int main() { struct aiocb a; return aio_return64(&a); }],
5359 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5360 [AC_MSG_RESULT(no)])
5362                         AC_MSG_CHECKING(for aio_error64)
5363                         AC_LINK_IFELSE([#include <aio.h>
5364 int main() { struct aiocb a; return aio_error64(&a); }],
5365 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5366 [AC_MSG_RESULT(no)])
5368                         AC_MSG_CHECKING(for aio_cancel64)
5369                         AC_LINK_IFELSE([#include <aio.h>
5370 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5371 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5372 [AC_MSG_RESULT(no)])
5374                         AC_MSG_CHECKING(for aio_suspend64)
5375                         AC_LINK_IFELSE([#include <aio.h>
5376 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5377 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5378 [AC_MSG_RESULT(no)])
5379                 fi
5380             ;;
5381         esac
5382         ;;
5383   *)
5384     AC_MSG_RESULT(no)
5385     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5386     ;;
5387   esac ],
5388   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5389   AC_MSG_RESULT(no)
5392 #################################################
5393 # check for sendfile support
5395 with_sendfile_support=yes
5396 AC_MSG_CHECKING(whether to check to support sendfile)
5397 AC_ARG_WITH(sendfile-support,
5398 [  --with-sendfile-support Check for sendfile support (default=yes)],
5399 [ case "$withval" in
5400   yes)
5402         AC_MSG_RESULT(yes);
5404         case "$host_os" in
5405         *linux*)
5406                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5407                 AC_TRY_LINK([#include <sys/sendfile.h>],
5409 int tofd, fromfd;
5410 off64_t offset;
5411 size_t total;
5412 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5414 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5416                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5417                 AC_TRY_LINK([#include <sys/sendfile.h>],
5419 int tofd, fromfd;
5420 off_t offset;
5421 size_t total;
5422 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5424 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5426 # Try and cope with broken Linux sendfile....
5427                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5428                 AC_TRY_LINK([\
5429 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5430 #undef _FILE_OFFSET_BITS
5431 #endif
5432 #include <sys/sendfile.h>],
5434 int tofd, fromfd;
5435 off_t offset;
5436 size_t total;
5437 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5439 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5441         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5442                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5443                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5444                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5445         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5446                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5447                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5448                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5449         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5450                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5451                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5452         else
5453                 AC_MSG_RESULT(no);
5454         fi
5456         ;;
5457         *freebsd* | *dragonfly* )
5458                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5459                 AC_TRY_LINK([\
5460 #include <sys/types.h>
5461 #include <unistd.h>
5462 #include <sys/socket.h>
5463 #include <sys/uio.h>],
5465         int fromfd, tofd, ret, total=0;
5466         off_t offset, nwritten;
5467         struct sf_hdtr hdr;
5468         struct iovec hdtrl;
5469         hdr.headers = &hdtrl;
5470         hdr.hdr_cnt = 1;
5471         hdr.trailers = NULL;
5472         hdr.trl_cnt = 0;
5473         hdtrl.iov_base = NULL;
5474         hdtrl.iov_len = 0;
5475         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5477 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5479         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5480                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5481                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5482                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5483         else
5484                 AC_MSG_RESULT(no);
5485         fi
5486         ;;
5488         *hpux*)
5489                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5490                 AC_TRY_LINK([\
5491 #include <sys/socket.h>
5492 #include <sys/uio.h>],
5494         int fromfd, tofd;
5495         size_t total=0;
5496         struct iovec hdtrl[2];
5497         ssize_t nwritten;
5498         off64_t offset;
5500         hdtrl[0].iov_base = 0;
5501         hdtrl[0].iov_len = 0;
5503         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5505 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5506         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5507                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5508                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5509                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5510         else
5511                 AC_MSG_RESULT(no);
5512         fi
5514                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5515                 AC_TRY_LINK([\
5516 #include <sys/socket.h>
5517 #include <sys/uio.h>],
5519         int fromfd, tofd;
5520         size_t total=0;
5521         struct iovec hdtrl[2];
5522         ssize_t nwritten;
5523         off_t offset;
5525         hdtrl[0].iov_base = 0;
5526         hdtrl[0].iov_len = 0;
5528         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5530 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5531         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5532                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5533                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5534                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5535         else
5536                 AC_MSG_RESULT(no);
5537         fi
5538         ;;
5540         *solaris*)
5541                 AC_CHECK_LIB(sendfile,sendfilev)
5542                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5543                 AC_TRY_LINK([\
5544 #include <sys/sendfile.h>],
5546         int sfvcnt;
5547         size_t xferred;
5548         struct sendfilevec vec[2];
5549         ssize_t nwritten;
5550         int tofd;
5552         sfvcnt = 2;
5554         vec[0].sfv_fd = SFV_FD_SELF;
5555         vec[0].sfv_flag = 0;
5556         vec[0].sfv_off = 0;
5557         vec[0].sfv_len = 0;
5559         vec[1].sfv_fd = 0;
5560         vec[1].sfv_flag = 0;
5561         vec[1].sfv_off = 0;
5562         vec[1].sfv_len = 0;
5563         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5565 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5567         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5568                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5569                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5570                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5571         else
5572                 AC_MSG_RESULT(no);
5573         fi
5575                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5576                 AC_TRY_LINK([\
5577 #include <sys/sendfile.h>],
5579         int sfvcnt;
5580         size_t xferred;
5581         struct sendfilevec vec[2];
5582         ssize_t nwritten;
5583         int tofd;
5585         sfvcnt = 2;
5587         vec[0].sfv_fd = SFV_FD_SELF;
5588         vec[0].sfv_flag = 0;
5589         vec[0].sfv_off = 0;
5590         vec[0].sfv_len = 0;
5592         vec[1].sfv_fd = 0;
5593         vec[1].sfv_flag = 0;
5594         vec[1].sfv_off = 0;
5595         vec[1].sfv_len = 0;
5596         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5598 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5600         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5601                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5602                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5603                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5604         else
5605                 AC_MSG_RESULT(no);
5606         fi
5607         ;;
5608         *aix*)
5609                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5610                 AC_TRY_LINK([\
5611 #include <sys/socket.h>],
5613         int fromfd, tofd;
5614         size_t total=0;
5615         struct sf_parms hdtrl;
5616         ssize_t nwritten;
5617         off64_t offset;
5619         hdtrl.header_data = 0;
5620         hdtrl.header_length = 0;
5621         hdtrl.file_descriptor = fromfd;
5622         hdtrl.file_offset = 0;
5623         hdtrl.file_bytes = 0;
5624         hdtrl.trailer_data = 0;
5625         hdtrl.trailer_length = 0;
5627         nwritten = send_file(&tofd, &hdtrl, 0);
5629 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5630         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5631                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5632                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5633                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5634         else
5635                 AC_MSG_RESULT(no);
5636         fi
5637         ;;
5638         *)
5639         ;;
5640         esac
5641         ;;
5642   *)
5643     AC_MSG_RESULT(no)
5644     ;;
5645   esac ],
5646   AC_MSG_RESULT(yes)
5649 ############################################
5650 # See if we have the Linux readahead syscall.
5652 AC_CACHE_CHECK([for Linux readahead],
5653                 samba_cv_HAVE_LINUX_READAHEAD,[
5654     AC_TRY_LINK([
5655 #if defined(HAVE_UNISTD_H)
5656 #include <unistd.h>
5657 #endif
5658 #include <fcntl.h>],
5659     [ssize_t err = readahead(0,0,0x80000);],
5660     samba_cv_HAVE_LINUX_READAHEAD=yes,
5661     samba_cv_HAVE_LINUX_READAHEAD=no)])
5663 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5664   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5665              [Whether Linux readahead is available])
5668 ############################################
5669 # See if we have the posix_fadvise syscall.
5671 AC_CACHE_CHECK([for posix_fadvise],
5672                 samba_cv_HAVE_POSIX_FADVISE,[
5673     AC_TRY_LINK([
5674 #if defined(HAVE_UNISTD_H)
5675 #include <unistd.h>
5676 #endif
5677 #include <fcntl.h>],
5678     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5679     samba_cv_HAVE_POSIX_FADVISE=yes,
5680     samba_cv_HAVE_POSIX_FADVISE=no)])
5682 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5683   AC_DEFINE(HAVE_POSIX_FADVISE,1,
5684              [Whether posix_fadvise is available])
5689 #################################################
5690 # Check whether winbind is supported on this platform.  If so we need to
5691 # build and install client programs, sbin programs and shared libraries
5693 AC_MSG_CHECKING(whether to build winbind)
5695 # Initially, the value of $host_os decides whether winbind is supported
5697 HAVE_WINBIND=yes
5699 # Define the winbind shared library name and any specific linker flags
5700 # it needs to be built with.
5702 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
5703 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
5704 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5705 NSSSONAMEVERSIONSUFFIX=""
5707 SMB_KRB5_LOCATOR="bin/smb_krb5_locator.$SHLIBEXT"
5709 case "$host_os" in
5710         *linux*)
5711                 NSSSONAMEVERSIONSUFFIX=".2"
5712                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
5713                 ;;
5714         *freebsd[[5-9]]*)
5715                 # FreeBSD winbind client is implemented as a wrapper around
5716                 # the Linux version.
5717                 NSSSONAMEVERSIONSUFFIX=".1"
5718                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
5719                     nsswitch/winbind_nss_linux.o"
5720                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5721                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5722                 ;;
5724         *netbsd*[[3-9]]*)
5725                 # NetBSD winbind client is implemented as a wrapper
5726                 # around the Linux version. It needs getpwent_r() to
5727                 # indicate libc's use of the correct nsdispatch API.
5728                 #
5729                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5730                         WINBIND_NSS_EXTRA_OBJS="\
5731                             nsswitch/winbind_nss_netbsd.o \
5732                             nsswitch/winbind_nss_linux.o"
5733                         WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5734                         WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5735                 else
5736                         HAVE_WINBIND=no
5737                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5738                 fi
5739                 ;;
5740         *irix*)
5741                 # IRIX has differently named shared libraries
5742                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
5743                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
5744                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
5745                 ;;
5746         *solaris*)
5747                 # Solaris winbind client is implemented as a wrapper around
5748                 # the Linux version.
5749                 NSSSONAMEVERSIONSUFFIX=".1"
5750                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
5751                     nsswitch/winbind_nss_linux.o"
5752                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
5753                 ;;
5754         *hpux11*)
5755                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
5756                 ;;
5757         *aix*)
5758                 # AIX has even differently named shared libraries.  No
5759                 # WINS support has been implemented yet.
5760                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
5761                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5762                 WINBIND_NSS="nsswitch/WINBIND"
5763                 WINBIND_WINS_NSS=""
5764                 ;;
5765         *)
5766                 HAVE_WINBIND=no
5767                 winbind_no_reason=", unsupported on $host_os"
5768                 ;;
5769 esac
5771 AC_SUBST(WINBIND_NSS)
5772 AC_SUBST(WINBIND_WINS_NSS)
5773 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5774 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5775 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5776 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5778 AC_SUBST(SMB_KRB5_LOCATOR)
5780 # Check the setting of --with-winbind
5782 AC_ARG_WITH(winbind,
5783 [  --with-winbind          Build winbind (default, if supported by OS)],
5785   case "$withval" in
5786         yes)
5787                 HAVE_WINBIND=yes
5788                 ;;
5789         no)
5790                 HAVE_WINBIND=no
5791                 winbind_reason=""
5792                 ;;
5793   esac ],
5796 # We need unix domain sockets for winbind
5798 if test x"$HAVE_WINBIND" = x"yes"; then
5799         if test x"$samba_cv_unixsocket" = x"no"; then
5800                 winbind_no_reason=", no unix domain socket support on $host_os"
5801                 HAVE_WINBIND=no
5802         fi
5805 # Display test results
5807 if test x"$HAVE_WINBIND" = x"no"; then
5808         WINBIND_NSS=""
5809         WINBIND_WINS_NSS=""
5812 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes"; then
5813         NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5816 if test x"$HAVE_WINBIND" = x"yes"; then
5817         AC_MSG_RESULT(yes)
5818         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5820         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5821         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5822         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5823                 PAM_MODULES="$PAM_MODULES pam_winbind"
5824                 INSTALL_PAM_MODULES="installpammodules"
5825                 UNINSTALL_PAM_MODULES="uninstallpammodules"
5826         fi
5827 else
5828         AC_MSG_RESULT(no$winbind_no_reason)
5831 # Solaris 10 does have new member in nss_XbyY_key
5832 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5833                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5834                 [#include <nss_dbdefs.h>])
5836 # Solaris has some extra fields in struct passwd that need to be
5837 # initialised otherwise nscd crashes.
5839 AC_CHECK_MEMBER(struct passwd.pw_comment,
5840                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5841                 [#include <pwd.h>])
5843 AC_CHECK_MEMBER(struct passwd.pw_age,
5844                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5845                 [#include <pwd.h>])
5847 # AIX 4.3.x and 5.1 do not have as many members in
5848 # struct secmethod_table as AIX 5.2
5849 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5850        [#include <usersec.h>])
5851 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5852        [#include <usersec.h>])
5854 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
5855 AC_TRY_COMPILE([#include <sys/types.h>
5856 #include <sys/socket.h>],
5857 [struct ucred cred;
5858  socklen_t cred_len;
5859  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
5861 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
5862 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
5863     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
5867 #################################################
5868 # Check to see if we should use the included popt
5870 AC_ARG_WITH(included-popt,
5871 [  --with-included-popt    use bundled popt library, not from system],
5873   case "$withval" in
5874         yes)
5875                 INCLUDED_POPT=yes
5876                 ;;
5877         no)
5878                 INCLUDED_POPT=no
5879                 ;;
5880   esac ],
5882 if test x"$INCLUDED_POPT" != x"yes"; then
5883     AC_CHECK_LIB(popt, poptGetContext,
5884                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
5887 AC_MSG_CHECKING(whether to use included popt)
5888 if test x"$INCLUDED_POPT" = x"yes"; then
5889     AC_MSG_RESULT(yes)
5890     BUILD_POPT='$(POPT_OBJ)'
5891     POPTLIBS='$(POPT_OBJ)'
5892     FLAGS1="-I\$(srcdir)/popt"
5893 else
5894     AC_MSG_RESULT(no)
5895         BUILD_POPT=""
5896     POPTLIBS="-lpopt"
5898 AC_SUBST(BUILD_POPT)
5899 AC_SUBST(POPTLIBS)
5900 AC_SUBST(FLAGS1)
5902 #################################################
5903 # Check to see if we should use the included iniparser
5905 AC_ARG_WITH(included-iniparser,
5906 [  --with-included-iniparser    use bundled iniparser library, not from system],
5908   case "$withval" in
5909         yes)
5910                 INCLUDED_INIPARSER=yes
5911                 ;;
5912         no)
5913                 INCLUDED_INIPARSER=no
5914                 ;;
5915   esac ],
5917 if test x"$INCLUDED_INIPARSER" != x"yes"; then
5918     AC_CHECK_LIB(iniparser, iniparser_load,
5919                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
5922 AC_MSG_CHECKING(whether to use included iniparser)
5923 if test x"$INCLUDED_INIPARSER" = x"yes"; then
5924     AC_MSG_RESULT(yes)
5925     BUILD_INIPARSER='$(INIPARSER_OBJ)'
5926         INIPARSERLIBS=""
5927     FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
5928 else
5929     AC_MSG_RESULT(no)
5930         BUILD_INIPARSER=""
5931     INIPARSERLIBS="-liniparser"
5933 AC_SUBST(BUILD_INIPARSER)
5934 AC_SUBST(INIPARSERLIBS)
5935 AC_SUBST(FLAGS1)
5939 #################################################
5940 # Check if the user wants Python
5942 # At the moment, you can use this to set which Python binary to link
5943 # against.  (Libraries built for Python2.2 can't be used by 2.1,
5944 # though they can coexist in different directories.)  In the future
5945 # this might make the Python stuff be built by default.
5947 # Defaulting python breaks the clean target if python isn't installed
5949 PYTHON=
5951 AC_ARG_WITH(python,
5952 [  --with-python=PYTHONNAME  build Python libraries],
5953 [ case "${withval-python}" in
5954   yes)
5955         PYTHON=python
5956         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
5957         ;;
5958   no)
5959         PYTHON=
5960         ;;
5961   *)
5962         PYTHON=${withval-python}
5963         ;;
5964   esac ])
5965 AC_SUBST(PYTHON)
5967 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
5969         eval MODULE_DEFAULT_$i=STATIC
5970 done
5972 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
5974         dnl Fall back to static if we cannot build shared libraries
5975         eval MODULE_DEFAULT_$i=STATIC
5977         if test $BLDSHARED = true; then
5978                 eval MODULE_DEFAULT_$i=SHARED
5979         fi
5980 done
5982 dnl Always built these modules static
5983 MODULE_rpc_spoolss=STATIC
5984 MODULE_rpc_srv=STATIC
5985 MODULE_idmap_tdb=STATIC
5986 MODULE_idmap_passdb=STATIC
5987 MODULE_idmap_nss=STATIC
5989 MODULE_nss_info_template=STATIC
5991 AC_ARG_WITH(static-modules,
5992 [  --with-static-modules=MODULES  Comma-separated list of names of modules to statically link in],
5993 [ if test $withval; then
5994         for i in `echo $withval | sed -e 's/,/ /g'`
5995         do
5996                 eval MODULE_$i=STATIC
5997         done
5998 fi ])
6000 AC_ARG_WITH(shared-modules,
6001 [  --with-shared-modules=MODULES  Comma-separated list of names of modules to build shared],
6002 [ if test $withval; then
6003         for i in `echo $withval | sed -e 's/,/ /g'`
6004         do
6005                         eval MODULE_$i=SHARED
6006         done
6007 fi ])
6009 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6010                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6011 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6012 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6013 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6016 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6017 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_reg.$SHLIBEXT", RPC)
6018 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
6019 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6020 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6021 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6022 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6023 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6024 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_svc.$SHLIBEXT", RPC)
6025 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6026 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6027 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6028 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
6029 SMB_SUBSYSTEM(RPC,smbd/server.o)
6031 SMB_MODULE(idmap_ldap, nsswitch/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6032 SMB_MODULE(idmap_tdb, nsswitch/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6033 SMB_MODULE(idmap_passdb, nsswitch/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6034 SMB_MODULE(idmap_nss, nsswitch/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6035 SMB_MODULE(idmap_rid, nsswitch/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6036 SMB_MODULE(idmap_ad, nsswitch/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6037 SMB_SUBSYSTEM(IDMAP, nsswitch/idmap.o)
6039 SMB_MODULE(nss_info_template, nsswitch/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6040 SMB_SUBSYSTEM(NSS_INFO, nsswitch/nss_info.o)
6042 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6043 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6044 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6045 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6046 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6048 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6049 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6050 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6051 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6052 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6053 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6054 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6055 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6057 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6058 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6059 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6060 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6061 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6062 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6063 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6064 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6065 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6066 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6067 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6068 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6069 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6070 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6071 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6072 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6073 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6074 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6075 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6076 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6077 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6078 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6079 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6080 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6081 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6082 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6084 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6086 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6088 #################################################
6089 # do extra things if we are running insure
6091 if test "${ac_cv_prog_CC}" = "insure"; then
6092         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6095 #################################################
6096 # If run from the build farm, enable NASTY hacks
6097 #################################################
6098 AC_MSG_CHECKING(whether to enable build farm hacks)
6099 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6100         AC_MSG_RESULT(yes)
6101         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6102 else
6103         AC_MSG_RESULT(no)
6106 #################################################
6107 # check for bad librt/libpthread interactions
6109 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6110     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6111     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6112     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6114 SMB_IF_RTSIGNAL_BUG(
6115         [
6116             # Have RT_SIGNAL bug, need to check whether the problem will
6117             # affect anything we have configured.
6119             rt_do_error=no
6120             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6121                 if test x"$rt_signal_lease_ok" = x"no" ; then
6122                     rt_do_error=yes
6123                 fi
6124             fi
6126             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6127                 if test x"$rt_signal_notify_ok" = x"no" ; then
6128                     rt_do_error=yes
6129                 fi
6130             fi
6132             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6133                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6134                 if test x"$rt_signal_aio_ok" = x"no" ; then
6135                     rt_do_error=yes
6136                 fi
6137             fi
6139             if test x"$rt_do_error" = x"yes" ; then
6140                 SMB_IS_LIBPTHREAD_LINKED(
6141                     [
6142                         cat<<MSG
6144 *** On this platforms, linking Samba against pthreads causes problems
6145 *** with the oplock and change notification mechanisms. You may be
6146 *** using pthreads as a side-effect of using the --with-aio-support
6147 *** or --with-profiling-data options. Please remove these and try again.
6150                     ],
6151                     [
6152                         cat<<MSG
6154 *** On this platform, the oplock and change notification mechanisms do not
6155 *** appear to work. Please report this problem to samba-technical@samba.org
6156 *** and attach the config.log file from this directory.
6159                     ])
6160                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6161             fi
6162         ],
6163         [
6164             # no RT_SIGNAL bug, we are golden
6165             SMB_IS_LIBPTHREAD_LINKED(
6166                 [
6167                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6168                 ])
6170         ],
6171         [
6172             # cross compiling, I hope you know what you are doing
6173             true
6174         ])
6178 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6179 LIB_REMOVE_USR_LIB(LDFLAGS)
6180 LIB_REMOVE_USR_LIB(LIBS)
6181 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6183 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6184 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6185 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6187 #################################################
6188 # Display summary of libraries detected
6190 AC_MSG_RESULT([Using libraries:])
6191 AC_MSG_RESULT([    LIBS = $LIBS])
6192 if test x"$with_ads_support" != x"no"; then
6193     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6195 if test x"$with_ldap_support" != x"no"; then
6196     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6198 if test x"$with_dnsupdate_support" != x"no"; then
6199     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6201 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6203 #################################################
6204 # final configure stuff
6206 AC_MSG_CHECKING([configure summary])
6207 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6208            AC_MSG_RESULT(yes),
6209            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6210            AC_MSG_WARN([cannot run when cross-compiling]))
6212 builddir=`pwd`
6213 AC_SUBST(builddir)
6215 # Stuff the smbd-only libraries at the end of the smbd link
6216 # path (if we have them).
6217 SMBD_LIBS="$samba_dmapi_libs"
6218 AC_SUBST(SMBD_LIBS)
6220 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh)
6222 #################################################
6223 # Print very concise instructions on building/use
6224 if test "x$enable_dmalloc" = xyes
6225 then
6226         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6227         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])