[GLUE] Rsync SAMBA_3_0 SVN r25598 in order to create the v3-0-test branch.
[Samba.git] / source / configure.in
blob74fc8732f09d99abba62229e02b616bd2c07cfbf
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 # Check if attropen() is present if this is Solaris
1595 case "$host_os" in
1596   *solaris*)
1597         AC_CHECK_FUNCS(attropen)
1598   ;;
1599 esac
1601 ########################################################
1602 # Do xattr functions take additional options like on Darwin?
1603 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1604         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1605                 old_LIBS=$LIBS
1606                 LIBS="$LIBS $ACL_LIBS"
1607                 AC_TRY_COMPILE([
1608                         #include <sys/types.h>
1609                         #if HAVE_ATTR_XATTR_H
1610                         #include <attr/xattr.h>
1611                         #elif HAVE_SYS_XATTR_H
1612                         #include <sys/xattr.h>
1613                         #endif
1614                 ],[
1615                         getxattr(0, 0, 0, 0, 0, 0);
1616                 ],
1617                 [smb_attr_cv_xattr_add_opt=yes],
1618                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1619         ])
1620         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1621                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1622         fi
1625 # Check if we have extattr
1626 case "$host_os" in
1627   *freebsd4* | *dragonfly* )
1628     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1629     ;;
1630   *)
1631     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1632     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1633     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1634     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1635     ;;
1636 esac
1638 # Set defaults
1639 PIE_CFLAGS=""
1640 PIE_LDFLAGS=""
1641 AC_ARG_ENABLE(pie, [  --enable-pie            Turn on pie support if available (default=yes)])
1643 if test "x$enable_pie" != xno
1644 then
1645         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1646         [
1647                 cat > conftest.c <<EOF
1648 int foo;
1649 main () { return 0;}
1651                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1652                 then
1653                         samba_cv_fpie=yes
1654                 else
1655                         samba_cv_fpie=no
1656                 fi
1657                 rm -f conftest*
1658         ])
1659         if test x"${samba_cv_fpie}" = x"yes"
1660         then
1661                 PIE_CFLAGS="-fPIE"
1662                 PIE_LDFLAGS="-pie"
1663         fi
1666 # Assume non-shared by default and override below
1667 BLDSHARED="false"
1669 # these are the defaults, good for lots of systems
1670 HOST_OS="$host_os"
1671 LDSHFLAGS="-shared"
1672 SONAMEFLAG="#"
1673 SHLD="\${CC} \${CFLAGS}"
1674 PICFLAG="${PIE_CFLAGS}"
1675 SHLIBEXT="so"
1677 # this bit needs to be modified for each OS that supports share libs
1678 # You need to specify how to create a shared library and
1679   # how to compile C code to produce PIC object files
1681   AC_MSG_CHECKING([ability to build shared libraries])
1683   # and these are for particular systems
1684   case "$host_os" in
1685                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1686                         BLDSHARED="true"
1687                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1688                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1689                         else
1690                                 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1691                         fi
1692                         DYNEXP="-Wl,--export-dynamic"
1693                         PICFLAG="-fPIC"
1694                         SONAMEFLAG="-Wl,-soname="
1695                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1696                         ;;
1697                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1698                         BLDSHARED="true"
1699                         LDSHFLAGS="-G"
1700                         SONAMEFLAG="-h "
1701                         if test "${GCC}" = "yes"; then
1702                                 PICFLAG="-fPIC"
1703                                 SONAMEFLAG="-Wl,-soname="
1704                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1705                                         DYNEXP="-Wl,-E"
1706                                 fi
1707                         else
1708                                 PICFLAG="-KPIC"
1709                                 ## ${CFLAGS} added for building 64-bit shared
1710                                 ## libs using Sun's Compiler
1711                                 LDSHFLAGS="-G \${CFLAGS}"
1712                         fi
1713                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1714                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1715                         ;;
1716                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1717                         BLDSHARED="true"
1718                         LDSHFLAGS="-G"
1719                         SONAMEFLAG="-Wl,-h,"
1720                         PICFLAG="-KPIC"   # Is this correct for SunOS
1721                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1722                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1723                         ;;
1724                 *netbsd* | *freebsd* | *dragonfly* )
1725                         BLDSHARED="true"
1726                         LDSHFLAGS="-shared"
1727                         DYNEXP="-Wl,--export-dynamic"
1728                         SONAMEFLAG="-Wl,-soname,"
1729                         PICFLAG="-fPIC -DPIC"
1730                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1731                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1732                         ;;
1733                 *openbsd*)  BLDSHARED="true"
1734                         LDSHFLAGS="-shared"
1735                         DYNEXP="-Wl,-Bdynamic"
1736                         SONAMEFLAG="-Wl,-soname,"
1737                         PICFLAG="-fPIC"
1738                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1739                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1740                         ;;
1741                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1742                         case "$host_os" in
1743                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1744                         ;;
1745                         esac
1746                         BLDSHARED="true"
1747                         LDSHFLAGS="-set_version sgi1.0 -shared"
1748                         SONAMEFLAG="-soname "
1749                         SHLD="\${LD}"
1750                         if test "${GCC}" = "yes"; then
1751                                 PICFLAG="-fPIC"
1752                         else
1753                                 PICFLAG="-KPIC"
1754                         fi
1755                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1756                         ;;
1757                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1758                         BLDSHARED="true"
1759                         LDSHFLAGS="-Wl,-G,-bexpall,-bbigtoc"
1760                         DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
1761                         PICFLAG="-O2"
1762                         # as AIX code is always position independent...
1763                         # .po will just create compile warnings, use po.o:
1764                         if test "${GCC}" != "yes"; then
1765                                 ## for funky AIX compiler using strncpy()
1766                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1767                         fi
1769                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1770                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1771                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1772                         ;;
1773                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1774                         # Use special PIC flags for the native HP-UX compiler.
1775                                 BLDSHARED="true"
1776                                 SHLD="cc"
1777                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1778                                 SONAMEFLAG="-Wl,+h "
1779                                 PICFLAG="+z"
1780                         if test "${GCC}" = "yes"; then
1781                                 PICFLAG="-fPIC"
1782                         else
1783                                 PICFLAG="+z"
1784                         fi
1785                         if test "$host_cpu" = "ia64"; then
1786                                 SHLIBEXT="so"
1787                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1788                         else
1789                                 SHLIBEXT="sl"
1790                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1791                         fi
1792                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1793                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1794                         ;;
1795                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1796                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1797                         ;;
1798                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1799                         BLDSHARED="true"
1800                         LDSHFLAGS="-shared"
1801                         SONAMEFLAG="-Wl,-soname,"
1802                         PICFLAG="-fPIC"
1803                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1804                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1805                         ;;
1806                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1807                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1808                         ;;
1809                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1810                         BLDSHARED="true"
1811                         LDSHFLAGS="-shared"
1812                         SONAMEFLAG="-Wl,-soname,"
1813                         PICFLAG="-KPIC"
1814                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1815                         ;;
1816                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1817                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1818                         ;;
1819                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1820                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1821                         ;;
1822                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1823                         case "$host" in
1824                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1825                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1826                                         fi
1827                                         LDSHFLAGS="-G"
1828                                         DYNEXP="-Bexport"
1829                                 ;;
1830                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1831                         esac
1832                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1833                         ;;
1835                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1836                         if [ test "$GCC" != yes ]; then
1837                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1838                         fi
1839                         LDSHFLAGS="-G"
1840                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1841                         ;;
1842                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1843                         BLDSHARED="false"
1844                         LDSHFLAGS=""
1845                         ;;
1847                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1848                         BLDSHARED="true"
1849                         LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1850                         SHLIBEXT="dylib"
1851                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1852                         ;;
1854                 *)
1855                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1856                         ;;
1857   esac
1859 if test "$enable_shared" != "yes"; then
1860         BLDSHARED=false
1863   AC_MSG_RESULT($BLDSHARED)
1865 AC_MSG_CHECKING([LDFLAGS])
1866 AC_MSG_RESULT([$LDFLAGS])
1867 AC_MSG_CHECKING([DYNEXP])
1868 AC_MSG_RESULT([$DYNEXP])
1870 #######################################################
1871 # test whether building a shared library actually works
1872 if test $BLDSHARED = true; then
1874 AC_MSG_CHECKING([SHLD])
1875 AC_MSG_RESULT([$SHLD])
1876 AC_MSG_CHECKING([LDSHFLAGS])
1877 AC_MSG_RESULT([$LDSHFLAGS])
1879 AC_MSG_CHECKING([SHLIBEXT])
1880 AC_MSG_RESULT([$SHLIBEXT])
1881 AC_MSG_CHECKING([SONAMEFLAG])
1882 AC_MSG_RESULT([$SONAMEFLAG])
1884 AC_MSG_CHECKING([PICFLAG])
1885 AC_MSG_RESULT([$PICFLAG])
1887 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1888 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1890 AC_CACHE_CHECK([whether building shared libraries actually works],
1891                [ac_cv_shlib_works],[
1892    # try building a trivial shared library
1893    ac_cv_shlib_works=no
1894    # The $SHLD and $LDSHFLAGS variables may contain references to other
1895    # variables so they need to be eval'ed.
1896    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1897         shlib.o ${srcdir-.}/tests/shlib.c && \
1898    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1899         shlib.o && ac_cv_shlib_works=yes
1900    rm -f "shlib.$SHLIBEXT" shlib.o
1903 if test $ac_cv_shlib_works = no; then
1904    BLDSHARED=false
1908 if test x"$BLDSHARED" != x"true"; then
1909         LDSHFLAGS="shared-libraries-disabled"
1910         SONAMEFLAG="shared-libraries-disabled"
1911         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1912         SHLD="shared-libraries-disabled"
1913         PICFLAG="${PIE_CFLAGS}"
1914         SHLIBEXT="shared_libraries_disabled"
1917 AC_MSG_CHECKING([used PICFLAG])
1918 AC_MSG_RESULT([$PICFLAG])
1920 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1922 ################
1924 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1925 AC_TRY_RUN([#include <stdio.h>
1926 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1927 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1928 if test x"$samba_cv_have_longlong" = x"yes"; then
1929     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1930     AC_CHECK_TYPE(intptr_t, unsigned long long)
1931 else
1932     AC_CHECK_TYPE(intptr_t, unsigned long)
1936 # Check if the compiler supports the LL prefix on long long integers.
1937 # AIX needs this.
1939 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1940     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1941         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1942 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1943    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1947 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
1948 AC_TRY_RUN([#include <time.h>
1949 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
1950 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
1951 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
1952     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
1955 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1956 AC_TRY_RUN([#include <stdio.h>
1957 #include <sys/stat.h>
1958 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1959 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1960 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1961     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1964 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1965 AC_TRY_RUN([
1966 #if defined(HAVE_UNISTD_H)
1967 #include <unistd.h>
1968 #endif
1969 #include <stdio.h>
1970 #include <sys/stat.h>
1971 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1972 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1973 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1974     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1977 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1978 AC_TRY_RUN([
1979 #if defined(HAVE_UNISTD_H)
1980 #include <unistd.h>
1981 #endif
1982 #include <stdio.h>
1983 #include <sys/stat.h>
1984 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1985 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1986 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1987     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1990 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1991 AC_TRY_RUN([
1992 #if defined(HAVE_UNISTD_H)
1993 #include <unistd.h>
1994 #endif
1995 #include <stdio.h>
1996 #include <sys/stat.h>
1997 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1998 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1999 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2000     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2003 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2004 AC_TRY_RUN([
2005 #if defined(HAVE_UNISTD_H)
2006 #include <unistd.h>
2007 #endif
2008 #include <stdio.h>
2009 #include <sys/stat.h>
2010 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2011 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2012 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2013     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2016 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2017 AC_TRY_RUN([
2018 #if defined(HAVE_UNISTD_H)
2019 #include <unistd.h>
2020 #endif
2021 #include <stdio.h>
2022 #include <sys/stat.h>
2023 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2024 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2025 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2026     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2029 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2030 AC_TRY_COMPILE([
2031 #if defined(HAVE_UNISTD_H)
2032 #include <unistd.h>
2033 #endif
2034 #include <sys/types.h>
2035 #include <dirent.h>],
2036 [DIR64 de;],
2037 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2038 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2039     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2042 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2043 AC_TRY_COMPILE([
2044 #if defined(HAVE_UNISTD_H)
2045 #include <unistd.h>
2046 #endif
2047 #include <sys/types.h>
2048 #include <dirent.h>],
2049 [struct dirent64 de;],
2050 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2051 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2052     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2055 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2056 AC_TRY_RUN([
2057 #if defined(HAVE_UNISTD_H)
2058 #include <unistd.h>
2059 #endif
2060 #include <sys/types.h>
2061 main() { dev_t dev; int i = major(dev); return 0; }],
2062 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2063 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2064     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2067 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2068 AC_TRY_RUN([
2069 #if defined(HAVE_UNISTD_H)
2070 #include <unistd.h>
2071 #endif
2072 #include <sys/types.h>
2073 main() { dev_t dev; int i = minor(dev); return 0; }],
2074 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2075 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2076     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2079 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2080 AC_TRY_RUN([
2081 #if defined(HAVE_UNISTD_H)
2082 #include <unistd.h>
2083 #endif
2084 #include <sys/types.h>
2085 main() { dev_t dev = makedev(1,2); return 0; }],
2086 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2087 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2088     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2091 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2092 AC_TRY_RUN([#include <stdio.h>
2093 main() { char c; c=250; exit((c > 0)?0:1); }],
2094 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2095 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2096     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2099 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
2100 AC_TRY_COMPILE([#include <sys/types.h>
2101 #include <sys/socket.h>
2102 #include <netinet/in.h>],
2103 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
2104 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
2105 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
2106     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
2109 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2110 AC_TRY_COMPILE([#include <sys/types.h>
2111 #include <dirent.h>
2112 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2113 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2114 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2115     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2118 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2119 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2120 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2121 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2122     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2125 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2126 AC_TRY_LINK([
2127 #include <sys/time.h>
2128 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2129            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2130            samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2131 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2132     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2135 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2137     # On some systems (eg. Linux) librt can pull in libpthread. We
2138     # don't want this to happen because libpthreads changes signal delivery
2139     # semantics in ways we are not prepared for. This breaks Linux oplocks
2140     # which rely on signals.
2142     AC_LIBTESTFUNC(rt, clock_gettime,
2143             [
2144                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2145                                 [Whether clock_gettime is available])
2146                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2147                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2148                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2149                         ])
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 else
2161     AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
2162     AC_TRY_LINK([#include <stdarg.h>
2163     va_list ap1,ap2;], [__va_copy(ap1,ap2);],
2164     samba_cv_HAVE___VA_COPY=yes,
2165     samba_cv_HAVE___VA_COPY=no)])
2166     if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
2167         AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
2168     fi
2171 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
2172 AC_TRY_RUN([
2173 #include <sys/types.h>
2174 #include <stdarg.h>
2175 void foo(const char *format, ...) {
2176        va_list ap;
2177        int len;
2178        char buf[5];
2180        va_start(ap, format);
2181        len = vsnprintf(buf, 0, format, ap);
2182        va_end(ap);
2183        if (len != 5) exit(1);
2185        va_start(ap, format);
2186        len = vsnprintf(0, 0, format, ap);
2187        va_end(ap);
2188        if (len != 5) exit(1);
2190        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
2192        exit(0);
2194 main() { foo("hello"); }
2196 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
2197 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
2198     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
2201 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2202 AC_TRY_RUN([#include <sys/types.h>
2203 #include <dirent.h>
2204 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2205 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2206 di->d_name[0] == 0) exit(0); exit(1);} ],
2207 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2208 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2209     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2212 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2213 AC_TRY_COMPILE([#include <sys/types.h>
2214 #include <utime.h>],
2215 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2216 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2217 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2218     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2221 ##############
2222 # Check utmp details, but only if our OS offers utmp.h
2223 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2224 dnl  utmp and utmpx come in many flavours
2225 dnl  We need to check for many of them
2226 dnl  But we don't need to do each and every one, because our code uses
2227 dnl  mostly just the utmp (not utmpx) fields.
2229 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2231 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2232 AC_TRY_COMPILE([#include <sys/types.h>
2233 #include <utmp.h>],
2234 [struct utmp ut;  ut.ut_name[0] = 'a';],
2235 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2236 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2237     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2240 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2241 AC_TRY_COMPILE([#include <sys/types.h>
2242 #include <utmp.h>],
2243 [struct utmp ut;  ut.ut_user[0] = 'a';],
2244 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2245 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2246     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2249 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2250 AC_TRY_COMPILE([#include <sys/types.h>
2251 #include <utmp.h>],
2252 [struct utmp ut;  ut.ut_id[0] = 'a';],
2253 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2254 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2255     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2258 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2259 AC_TRY_COMPILE([#include <sys/types.h>
2260 #include <utmp.h>],
2261 [struct utmp ut;  ut.ut_host[0] = 'a';],
2262 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2263 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2264     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2267 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2268 AC_TRY_COMPILE([#include <sys/types.h>
2269 #include <utmp.h>],
2270 [struct utmp ut;  time_t t; ut.ut_time = t;],
2271 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2272 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2273     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2276 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2277 AC_TRY_COMPILE([#include <sys/types.h>
2278 #include <utmp.h>],
2279 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2280 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2281 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2282     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2285 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2286 AC_TRY_COMPILE([#include <sys/types.h>
2287 #include <utmp.h>],
2288 [struct utmp ut;  ut.ut_type = 0;],
2289 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2290 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2291     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2294 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2295 AC_TRY_COMPILE([#include <sys/types.h>
2296 #include <utmp.h>],
2297 [struct utmp ut;  ut.ut_pid = 0;],
2298 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2299 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2300     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2303 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2304 AC_TRY_COMPILE([#include <sys/types.h>
2305 #include <utmp.h>],
2306 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2307 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2308 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2309     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2312 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2313 AC_TRY_COMPILE([#include <sys/types.h>
2314 #include <utmp.h>],
2315 [struct utmp ut;  ut.ut_addr = 0;],
2316 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2317 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2318     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2321 if test x$ac_cv_func_pututline = xyes ; then
2322   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2323   AC_TRY_COMPILE([#include <sys/types.h>
2324 #include <utmp.h>],
2325   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2326   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2327   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2328       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2329   fi
2332 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2333 AC_TRY_COMPILE([#include <sys/types.h>
2334 #include <utmpx.h>],
2335 [struct utmpx ux;  ux.ut_syslen = 0;],
2336 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2337 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2338     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2342 # end utmp details
2345 ICONV_LOCATION=standard
2346 LOOK_DIRS="/usr /usr/local /sw /opt"
2347 AC_ARG_WITH(libiconv,
2348 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
2350   if test "$withval" = "no" ; then
2351     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2352   else
2353      if test "$withval" != "yes" ; then
2354         ICONV_PATH_SPEC=yes
2355         LOOK_DIRS="$withval"
2356      fi
2357   fi
2360 for i in $LOOK_DIRS ; do
2361     save_LIBS=$LIBS
2362     save_LDFLAGS=$LDFLAGS
2363     save_CPPFLAGS=$CPPFLAGS
2364     ICONV_FOUND="no"
2365     unset libext
2366     CPPFLAGS="$CPPFLAGS -I$i/include"
2367 dnl This is here to handle -withval stuff for --with-libiconv
2368 dnl Perhaps we should always add a -L
2370 dnl Check lib and lib32 library variants to cater for IRIX ABI-specific
2371 dnl installation paths. This gets a little tricky since we might have iconv
2372 dnl in both libiconv and in libc. In this case the jm_ICONV test will always
2373 dnl succeed when the header is found. To counter this, make sure the
2374 dnl library directory is there and check the ABI directory first (which
2375 dnl should be harmless on other systems.
2376 dnl For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2377     for l in "lib32" "lib" "lib/hpux32"; do
2378         if test -d "$i/$l" ; then
2379                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2380         LIBS=
2381         export LDFLAGS LIBS CPPFLAGS
2382 dnl Try to find iconv(3)
2383                 jm_ICONV($i/$l)
2384                 if test x"$ICONV_FOUND" = "xyes" ; then
2385             libext="$l"
2386             break;
2387         fi
2388         fi
2389     done
2391     if test x"$ICONV_FOUND" = "xyes" ; then
2392         LDFLAGS=$save_LDFLAGS
2393         LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2394         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2395         LIBS="$save_LIBS"
2396         ICONV_LOCATION=$i
2397         export LDFLAGS LIBS CPPFLAGS
2398 dnl Now, check for a working iconv ... we want to do it here because
2399 dnl there might be a working iconv further down the list of LOOK_DIRS
2401         ############
2402         # check for iconv in libc
2403         ic_save_LIBS="$LIBS"
2404         if test x"$ICONV_PATH_SPEC" = "xyes" ; then
2405            LIBS="$LIBS -L$ICONV_LOCATION/$libext"
2406         fi
2407         if test x"$jm_cv_lib_iconv" != x; then
2408            LIBS="$LIBS -l$jm_cv_lib_iconv"
2409         fi
2410 dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
2411         default_dos_charset=no
2412         default_display_charset=no
2413         default_unix_charset=no
2415         # check for default dos charset name
2416         for j in CP850 IBM850 ; do
2417             rjs_CHARSET($j)
2418             if test x"$ICONV_CHARSET" = x"$j"; then
2419                 default_dos_charset="\"$j\""
2420                 break
2421             fi
2422         done
2423         # check for default display charset name
2424         for j in ASCII 646 ; do
2425             rjs_CHARSET($j)
2426             if test x"$ICONV_CHARSET" = x"$j"; then
2427                 default_display_charset="\"$j\""
2428                 break
2429             fi
2430         done
2431         # check for default unix charset name
2432         for j in UTF-8 UTF8 ; do
2433             rjs_CHARSET($j)
2434             if test x"$ICONV_CHARSET" = x"$j"; then
2435                 default_unix_charset="\"$j\""
2436                 break
2437             fi
2438         done
2439         
2440         if test "$default_dos_charset" != "no" -a \
2441                 "$default_dos_charset" != "cross" -a \
2442                 "$default_display_charset" != "no" -a \
2443                 "$default_display_charset" != "cross" -a \
2444                 "$default_unix_charset" != "no" -a \
2445                 "$default_unix_charset" != "cross"
2446         then
2447                 samba_cv_HAVE_NATIVE_ICONV=yes
2448         else if test "$default_dos_charset" = "cross" -o \
2449                      "$default_display_charset" = "cross" -o \
2450                      "$default_unix_charset" = "cross"
2451         then
2452                 samba_cv_HAVE_NATIVE_ICONV=cross
2453         else
2454                 samba_cv_HAVE_NATIVE_ICONV=no
2455         fi
2456         fi
2457 dnl ])
2459         LIBS="$ic_save_LIBS"
2460         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
2461            CPPFLAGS=$save_CPPFLAGS
2462            LDFLAGS=$save_LDFLAGS
2463            LIBS=$save_LIBS
2464            if test x"$jm_cv_lib_iconv" != x; then
2465               LIBS="$LIBS -l$jm_cv_lib_iconv"
2466            fi
2467            dnl Add the flags we need to CPPFLAGS and LDFLAGS
2468            CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2469            LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2470            export CPPFLAGS
2471            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2472            AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2473            AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2474            AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2475            break
2476         fi
2477 dnl We didn't find a working iconv, so keep going
2478     fi
2479 dnl We only need to clean these up here for the next pass through the loop
2480     CPPFLAGS=$save_CPPFLAGS
2481     LDFLAGS=$save_LDFLAGS
2482     LIBS=$save_LIBS
2483     export LDFLAGS LIBS CPPFLAGS
2484 done
2485 unset libext
2488 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2489     AC_MSG_WARN([Sufficient support for iconv function was not found.
2490     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2491    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2492    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2493    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2497 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2498 AC_TRY_RUN([
2499 #include <sys/types.h>
2500 #include <fcntl.h>
2501 #ifndef F_GETLEASE
2502 #define F_GETLEASE      1025
2503 #endif
2504 main() {
2505        int fd = open("/dev/null", O_RDONLY);
2506        return fcntl(fd, F_GETLEASE, 0) == -1;
2509 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2510 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2511     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2514 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2515 AC_TRY_RUN([
2516 #include <sys/types.h>
2517 #include <fcntl.h>
2518 #include <signal.h>
2519 #ifndef F_NOTIFY
2520 #define F_NOTIFY 1026
2521 #endif
2522 main() {
2523         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2526 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2527 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2528     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2531 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2532 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2533 AC_CHECK_FUNC(inotify_init)
2534 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2536 samba_cv_HAVE_INOTIFY=yes,
2537 samba_cv_HAVE_INOTIFY=no,
2538 samba_cv_HAVE_INOTIFY=cross)
2540 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2541     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2544 #################################################
2545 # Check if FAM notifications are available. For FAM info, see
2546 #       http://oss.sgi.com/projects/fam/
2547 #       http://savannah.nongnu.org/projects/fam/
2548 AC_ARG_ENABLE(fam,
2549 [  --enable-fam            Turn on FAM support (default=auto)])
2551 if test x$enable_fam != xno; then
2552     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2553     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2554         # On IRIX, libfam requires libC, but other FAM implementations
2555         # might not need it.
2556         AC_CHECK_LIB(fam, FAMOpen2,
2557             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2558             [samba_cv_HAVE_LIBFAM=no])
2560         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2561             samba_fam_xtra=-lC
2562             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2563                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2564                 [samba_cv_HAVE_LIBFAM=no])
2565             unset samba_fam_xtra
2566         fi
2567     fi
2569     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2570         default_shared_modules="$default_shared_modules vfs_notify_fam"
2571         AC_TRY_COMPILE([#include <fam.h>],
2572                     [FAMCodes code = FAMChanged;],
2573                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2574                         [Whether fam.h contains a typedef for enum FAMCodes]),
2575                     [])
2576     fi
2578     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2579         AC_MSG_ERROR(FAM support requested but FAM library not available )
2580     fi
2583 AC_SUBST(SMB_FAM_LIBS)
2585 #################################################
2586 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2588 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2590 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2591 AC_TRY_RUN([
2592 #include <sys/types.h>
2593 #include <fcntl.h>
2594 #include <signal.h>
2595 #include <sys/file.h>
2596 #ifndef LOCK_MAND
2597 #define LOCK_MAND       32
2598 #define LOCK_READ       64
2599 #endif
2600 main() {
2601         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2604 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2605 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2606     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2610 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2611 AC_TRY_COMPILE([#include <sys/types.h>
2612 #include <fcntl.h>],
2613 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2614 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2615 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2616     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2619 #################################################
2620 # Check for POSIX capability support
2622 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2623     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2624     [], [])
2626 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2628     ac_save_LIBS=$LIBS
2629     AC_LIBTESTFUNC(cap, cap_get_proc)
2631     AC_CACHE_CHECK([for POSIX capabilities],
2632             samba_cv_HAVE_POSIX_CAPABILITIES,
2633             [
2634                 AC_TRY_RUN([
2635 #include <sys/types.h>
2636 #include <sys/capability.h>
2637 main() {
2638  cap_t cap;
2639  cap_value_t vals[1];
2640  if (!(cap = cap_get_proc()))
2641    exit(1);
2642  vals[0] = CAP_CHOWN;
2643  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2644  cap_set_proc(cap);
2645  exit(0);
2647                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2648                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2649                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2650             ])
2652 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2653     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2654             [Whether POSIX capabilities are available])
2655 else
2656     LIBS=$ac_save_LIBS
2662 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2663 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2666 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2667 AC_TRY_COMPILE([#include <sys/types.h>
2668 #if defined(HAVE_RPC_RPC_H)
2669 #include <rpc/rpc.h>
2670 #endif],
2671 [int16 testvar;],
2672 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2673 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2674     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2677 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2678 AC_TRY_COMPILE([#include <sys/types.h>
2679 #if defined(HAVE_RPC_RPC_H)
2680 #include <rpc/rpc.h>
2681 #endif],
2682 [uint16 testvar;],
2683 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2684 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2685     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2688 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2689 AC_TRY_COMPILE([#include <sys/types.h>
2690 #if defined(HAVE_RPC_RPC_H)
2691 #include <rpc/rpc.h>
2692 #endif],
2693 [int32 testvar;],
2694 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2695 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2696     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2699 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2700 AC_TRY_COMPILE([#include <sys/types.h>
2701 #if defined(HAVE_RPC_RPC_H)
2702 #include <rpc/rpc.h>
2703 #endif],
2704 [uint32 testvar;],
2705 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2706 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2707     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2711 dnl Some systems (SCO) have a problem including
2712 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2713 dnl as a #define in <prot.h> and as part of an enum
2714 dnl in <rpc/rpc.h>.
2717 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2718 AC_TRY_COMPILE([#include <sys/types.h>
2719 #ifdef HAVE_SYS_SECURITY_H
2720 #include <sys/security.h>
2721 #include <prot.h>
2722 #endif  /* HAVE_SYS_SECURITY_H */
2723 #if defined(HAVE_RPC_RPC_H)
2724 #include <rpc/rpc.h>
2725 #endif],
2726 [int testvar;],
2727 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2728 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2729     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2732 AC_MSG_CHECKING([for test routines])
2733 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2734            AC_MSG_RESULT(yes),
2735            AC_MSG_ERROR([cant find test code. Aborting config]),
2736            AC_MSG_WARN([cannot run when cross-compiling]))
2738 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2739 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2740            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2741 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2742     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2745 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2746 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2747            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2748            samba_cv_HAVE_WORKING_AF_LOCAL=no,
2749            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2750 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2751 then
2752     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2755 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2756 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2757            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2758 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2759     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2762 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2763 AC_TRY_RUN([#include <stdlib.h>
2764 #include <sys/types.h>
2765 #include <sys/stat.h>
2766 #include <unistd.h>
2767 main() {
2768   struct stat st;
2769   char tpl[20]="/tmp/test.XXXXXX";
2770   int fd = mkstemp(tpl);
2771   if (fd == -1) exit(1);
2772   unlink(tpl);
2773   if (fstat(fd, &st) != 0) exit(1);
2774   if ((st.st_mode & 0777) != 0600) exit(1);
2775   exit(0);
2777 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2778 samba_cv_HAVE_SECURE_MKSTEMP=no,
2779 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2780 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2781     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2784 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
2785         AC_TRY_RUN([#include "${srcdir-.}/tests/os2_delete.c"],
2786                 [samba_cv_HAVE_BROKEN_READDIR=no],
2787                         [samba_cv_HAVE_BROKEN_READDIR=yes],
2788                         [samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
2790 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
2791 AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
2792         AC_TRY_RUN([
2793 #include "${srcdir-.}/lib/repdir.c"
2794 #include "${srcdir-.}/tests/os2_delete.c"],
2795         samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
2798 if test x"$samba_cv_REPLACE_READDIR" = x"yes"; then
2799         AC_DEFINE(REPLACE_READDIR,1,[replace readdir])
2802 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2803 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2804 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2805 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2806 AC_CHECK_FUNCS(getpagesize)
2808 ##################
2809 # look for a method of finding the list of network interfaces
2810 iface=no;
2811 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
2812 SAVE_CPPFLAGS="$CPPFLAGS"
2813 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2814 AC_TRY_RUN([
2815 #define HAVE_IFACE_AIX 1
2816 #define AUTOCONF_TEST 1
2817 #undef _XOPEN_SOURCE_EXTENDED
2818 #include "${srcdir-.}/lib/interfaces.c"],
2819            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
2820 CPPFLAGS="$SAVE_CPPFLAGS"
2821 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
2822     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
2825 if test $iface = no; then
2826 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
2827 SAVE_CPPFLAGS="$CPPFLAGS"
2828 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2829 AC_TRY_RUN([
2830 #define HAVE_IFACE_IFCONF 1
2831 #define AUTOCONF_TEST 1
2832 #include "${srcdir-.}/lib/interfaces.c"],
2833            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
2834 CPPFLAGS="$SAVE_CPPFLAGS"
2835 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
2836     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
2840 if test $iface = no; then
2841 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
2842 SAVE_CPPFLAGS="$CPPFLAGS"
2843 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2844 AC_TRY_RUN([
2845 #define HAVE_IFACE_IFREQ 1
2846 #define AUTOCONF_TEST 1
2847 #include "${srcdir-.}/lib/interfaces.c"],
2848            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
2849 CPPFLAGS="$SAVE_CPPFLAGS"
2850 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
2851     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
2856 ################################################
2857 # look for a method of setting the effective uid
2858 seteuid=no;
2859 if test $seteuid = no; then
2860 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2861 AC_TRY_RUN([
2862 #define AUTOCONF_TEST 1
2863 #define USE_SETRESUID 1
2864 #include "confdefs.h"
2865 #include "${srcdir-.}/lib/util_sec.c"],
2866            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2867 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2868     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2873 if test $seteuid = no; then
2874 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2875 AC_TRY_RUN([
2876 #define AUTOCONF_TEST 1
2877 #define USE_SETREUID 1
2878 #include "confdefs.h"
2879 #include "${srcdir-.}/lib/util_sec.c"],
2880            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2881 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2882     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2886 if test $seteuid = no; then
2887 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2888 AC_TRY_RUN([
2889 #define AUTOCONF_TEST 1
2890 #define USE_SETEUID 1
2891 #include "confdefs.h"
2892 #include "${srcdir-.}/lib/util_sec.c"],
2893            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2894 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2895     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2899 if test $seteuid = no; then
2900 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2901 AC_TRY_RUN([
2902 #define AUTOCONF_TEST 1
2903 #define USE_SETUIDX 1
2904 #include "confdefs.h"
2905 #include "${srcdir-.}/lib/util_sec.c"],
2906            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2907 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2908     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2913 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2914 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2915            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2916 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2917     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2920 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2921 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2922            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2923 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2924     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2927 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2928 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2929            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2930 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2931     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2933 else
2936 dnl Don't check for 64 bit fcntl locking if we know that the
2937 dnl glibc2.1 broken check has succeeded.
2940   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2941   AC_TRY_RUN([
2942 #if defined(HAVE_UNISTD_H)
2943 #include <unistd.h>
2944 #endif
2945 #include <stdio.h>
2946 #include <stdlib.h>
2948 #ifdef HAVE_FCNTL_H
2949 #include <fcntl.h>
2950 #endif
2952 #ifdef HAVE_SYS_FCNTL_H
2953 #include <sys/fcntl.h>
2954 #endif
2955 main() { struct flock64 fl64;
2956 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2957 exit(0);
2958 #else
2959 exit(1);
2960 #endif
2962        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2964   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2965       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2966   fi
2969 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2970 AC_TRY_COMPILE([#include <sys/types.h>
2971 #include <sys/stat.h>
2972 #include <unistd.h>],
2973 [struct stat st;  st.st_blocks = 0;],
2974 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2975 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2976     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2979 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2980 AC_TRY_COMPILE([#include <sys/types.h>
2981 #include <sys/stat.h>
2982 #include <unistd.h>],
2983 [struct stat st;  st.st_blksize = 0;],
2984 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2985 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2986     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2989 AC_CACHE_CHECK([for st_flags in struct stat],
2990         samba_cv_HAVE_STAT_ST_FLAGS,
2991         [
2992             AC_TRY_COMPILE([#include <sys/types.h>
2993 #include <sys/stat.h>
2994 #include <unistd.h>],
2995             [struct stat st;  st.st_flags = 0;],
2996             samba_cv_HAVE_STAT_ST_FLAGS=yes,
2997             samba_cv_HAVE_STAT_ST_FLAGS=no,
2998             samba_cv_HAVE_STAT_ST_FLAGS=cross)
2999         ])
3001 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3002     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3003                 [Whether the stat struct has a st_flags member])
3006 case "$host_os" in
3007 *linux*)
3008 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
3009 AC_TRY_COMPILE([
3010 #ifdef HAVE_SYS_VFS_H
3011 #include <sys/vfs.h>
3012 #endif
3013 #ifdef HAVE_SYS_CAPABILITY_H
3014 #include <sys/capability.h>
3015 #endif
3016 ],[int i;],
3017    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
3018 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
3019    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
3022 esac
3024 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3025 AC_TRY_COMPILE([
3026 #include <sys/types.h>
3027 #include <sys/acl.h>
3028 #if defined(HAVE_RPCSVC_NIS_H)
3029 #include <rpcsvc/nis.h>
3030 #endif],
3031 [int i;],
3032 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3033 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3034         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3037 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3038 AC_TRY_RUN([
3039 #include <stdio.h>
3040 #include <limits.h>
3041 main() {
3042         char *newpath = realpath("/tmp", NULL);
3043         exit ((newpath != NULL) ? 0 : 1);
3046 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3047 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3048     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3051 #################################################
3052 # check for AFS clear-text auth support
3053 samba_cv_WITH_AFS=no
3054 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3055 AC_ARG_WITH(afs,
3056 [  --with-afs              Include AFS clear-text auth support (default=no) ],
3057 [ case "$withval" in
3058   yes|auto)
3059     AC_MSG_RESULT($withval)
3060     samba_cv_WITH_AFS=$withval
3061     ;;
3062   *)
3063     AC_MSG_RESULT(no)
3064     ;;
3065   esac ],
3066   AC_MSG_RESULT(no)
3069 ####################################################
3070 # check for Linux-specific AFS fake-kaserver support
3071 samba_cv_WITH_FAKE_KASERVER=no
3072 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3073 AC_ARG_WITH(fake-kaserver,
3074 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
3075 [ case "$withval" in
3076   yes|auto)
3077     AC_MSG_RESULT($withval)
3078     samba_cv_WITH_FAKE_KASERVER=$withval
3079     ;;
3080   *)
3081     AC_MSG_RESULT(no)
3082     ;;
3083   esac ],
3084   AC_MSG_RESULT(no)
3087 #################################################
3088 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3089 if test x"$samba_cv_WITH_AFS" != x"no" ||
3090    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3092     # see if this box has the afs-headers in /usr/include/afs
3093     AC_MSG_CHECKING(for /usr/include/afs)
3094     if test -d /usr/include/afs; then
3095           CFLAGS="$CFLAGS -I/usr/include/afs"
3096           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3097           AC_MSG_RESULT(yes)
3098     else
3099       AC_MSG_RESULT(no)
3100     fi
3102     # check for afs.h
3103     have_afs_headers=no
3104     AC_CHECK_HEADERS(afs.h afs/afs.h)
3105     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3106         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3107            test x"$samba_cv_WITH_AFS" = x"auto"; then
3108                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3109         else
3110                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3111         fi
3112     else
3113         have_afs_headers=yes
3114     fi
3117 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3118     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3121 #################################################
3122 # check whether to compile AFS/NT ACL mapping module
3123 samba_cv_WITH_VFS_AFSACL=no
3124 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3125 AC_ARG_WITH(vfs-afsacl,
3126 [  --with-vfs-afsacl       Include AFS to NT ACL mapping module (default=no) ],
3127 [ case "$withval" in
3128   yes|auto)
3129     AC_MSG_RESULT($withval)
3130     samba_cv_WITH_VFS_AFSACL=yes
3131     ;;
3132   *)
3133     AC_MSG_RESULT(no)
3134     ;;
3135   esac ],
3136   AC_MSG_RESULT(no)
3139 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3140    default_shared_modules="$default_shared_modules vfs_afsacl"
3142         
3143 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3144     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3147 #################################################
3148 # check for the DFS clear-text auth system
3149 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3150 AC_ARG_WITH(dfs,
3151 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
3152 [ case "$withval" in
3153   yes)
3154     AC_MSG_RESULT(yes)
3155     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3156     ;;
3157   *)
3158     AC_MSG_RESULT(no)
3159     ;;
3160   esac ],
3161   AC_MSG_RESULT(no)
3164 ########################################################
3165 # Compile with LDAP support?
3167 with_ldap_support=auto
3168 AC_MSG_CHECKING([for LDAP support])
3170 AC_ARG_WITH(ldap,
3171 [  --with-ldap             LDAP support (default yes)],
3172 [ case "$withval" in
3173     yes|no)
3174         with_ldap_support=$withval
3175         ;;
3176   esac ])
3178 AC_MSG_RESULT($with_ldap_support)
3180 SMBLDAP=""
3181 AC_SUBST(SMBLDAP)
3182 SMBLDAPUTIL=""
3183 AC_SUBST(SMBLDAPUTIL)
3184 LDBLDAP=""
3185 AC_SUBST(LDBLDAP)
3187 if test x"$with_ldap_support" != x"no"; then
3189   ##################################################################
3190   # first test for ldap.h and lber.h
3191   # (ldap.h is required for this test)
3192   AC_CHECK_HEADERS(ldap.h lber.h)
3194   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3195         if test x"$with_ldap_support" = x"yes"; then
3196          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3197         else
3198          AC_MSG_WARN(ldap.h is needed for LDAP support)
3199         fi
3200         
3201         with_ldap_support=no
3202   fi
3204   ##################################################################
3205   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3206   # unsigned int in include/includes.h
3207   case $host_os in
3208         *hpux*)
3209          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3210          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3211         with_ldap_support=yes
3212         ;;
3213         *)
3214         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3215         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3216                 if test x"$with_ldap_support" = x"yes"; then
3217                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3218                 else
3219                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3220                 fi
3221                 with_ldap_support=no
3222         fi
3223         ;;
3224   esac
3227 if test x"$with_ldap_support" != x"no"; then
3228   ac_save_LIBS=$LIBS
3230   ##################################################################
3231   # we might need the lber lib on some systems. To avoid link errors
3232   # this test must be before the libldap test
3233   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3235   ########################################################
3236   # now see if we can find the ldap libs in standard paths
3237   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3239   ########################################################
3240   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3241   # Check found in pam_ldap 145.
3242   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3244   LIBS="$LIBS $LDAP_LIBS"
3245   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3246     AC_TRY_COMPILE([
3247         #include <lber.h>
3248         #include <ldap.h>],
3249         [ldap_set_rebind_proc(0, 0, 0);],
3250         [smb_ldap_cv_ldap_set_rebind_proc=3],
3251         [smb_ldap_cv_ldap_set_rebind_proc=2]
3252     )
3253   ])
3255   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3257   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3259   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3260     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3261     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3262     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3263     default_shared_modules="$default_shared_modules";
3264     SMBLDAP="lib/smbldap.o"
3265     SMBLDAPUTIL="lib/smbldap_util.o"
3266     with_ldap_support=yes
3267     AC_MSG_CHECKING(whether LDAP support is used)
3268     AC_MSG_RESULT(yes)
3269   else
3270     if test x"$with_ldap_support" = x"yes"; then
3271         AC_MSG_ERROR(libldap is needed for LDAP support)
3272     else
3273         AC_MSG_WARN(libldap is needed for LDAP support)
3274     fi
3276     LDAP_LIBS=""
3277     with_ldap_support=no
3278   fi
3279   LIBS=$ac_save_LIBS
3283 #################################################
3284 # active directory support
3286 with_ads_support=auto
3287 AC_MSG_CHECKING([for Active Directory and krb5 support])
3289 AC_ARG_WITH(ads,
3290 [  --with-ads              Active Directory support (default auto)],
3291 [ case "$withval" in
3292     yes|no)
3293         with_ads_support="$withval"
3294         ;;
3295   esac ])
3297 AC_MSG_RESULT($with_ads_support)
3299 FOUND_KRB5=no
3300 KRB5_LIBS=""
3302 if test x"$with_ldap_support" != x"yes"; then
3304     if test x"$with_ads_support" = x"yes"; then
3305         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3306     elif test x"$with_ads_support" = x"auto"; then
3307         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3308         with_ads_support=no
3309     fi
3311 else
3313     # Check to see whether there is enough LDAP functionality to be able
3314     # to build AD support.
3316 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3317 case "$host_os" in
3318         *hpux*)
3319     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3321     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3322         if test x"$with_ads_support" = x"yes"; then
3323             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3324         elif test x"$with_ads_support" = x"auto"; then
3325             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3326             with_ads_support=no
3327         fi
3328     fi
3329     ;;
3330         *)
3331     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3333     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3334         if test x"$with_ads_support" = x"yes"; then
3335             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3336         elif test x"$with_ads_support" = x"auto"; then
3337             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3338             with_ads_support=no
3339         fi
3340     fi
3341     ;;
3342 esac
3345     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3347     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3348         if test x"$with_ads_support" = x"yes"; then
3349             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3350         elif test x"$with_ads_support" = x"auto"; then
3351             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3352             with_ads_support=no
3353         fi
3354     fi
3358 if test x"$with_ads_support" != x"no"; then
3360   # Do no harm to the values of CFLAGS and LIBS while testing for
3361   # Kerberos support.
3363   if test x$FOUND_KRB5 = x"no"; then
3364     #################################################
3365     # check for location of Kerberos 5 install
3366     AC_MSG_CHECKING(for kerberos 5 install path)
3367     AC_ARG_WITH(krb5,
3368     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
3369     [ case "$withval" in
3370       no)
3371         AC_MSG_RESULT(no krb5-path given)
3372         ;;
3373       yes)
3374         AC_MSG_RESULT(/usr)
3375         FOUND_KRB5=yes
3376         ;;
3377       *)
3378         AC_MSG_RESULT($withval)
3379         KRB5_CFLAGS="-I$withval/include"
3380         KRB5_CPPFLAGS="-I$withval/include"
3381         KRB5_LDFLAGS="-L$withval/lib"
3382         FOUND_KRB5=yes
3383         if test -x "$withval/bin/krb5-config"; then
3384                 KRB5CONFIG=$withval/bin/krb5-config
3385         fi
3386         ;;
3387       esac ],
3388       AC_MSG_RESULT(no krb5-path given)
3389     )
3390   fi
3392   #################################################
3393   # check for krb5-config from recent MIT and Heimdal kerberos 5
3394   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3395   AC_MSG_CHECKING(for working krb5-config)
3396   if test -x "$KRB5CONFIG"; then
3397     ac_save_CFLAGS=$CFLAGS
3398     CFLAGS="";export CFLAGS
3399     ac_save_LDFLAGS=$LDFLAGS
3400     LDFLAGS="";export LDFLAGS
3401     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3402     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3403     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3404     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3405     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3406     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3407     FOUND_KRB5=yes
3408     AC_MSG_RESULT(yes)
3409   else
3410     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3411   fi
3413   if test x$FOUND_KRB5 = x"no"; then
3414     #################################################
3415     # see if this box has the SuSE location for the heimdal krb implementation
3416     AC_MSG_CHECKING(for /usr/include/heimdal)
3417     if test -d /usr/include/heimdal; then
3418       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3419           KRB5_CFLAGS="-I/usr/include/heimdal"
3420           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3421           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3422           AC_MSG_RESULT(yes)
3423       else
3424           KRB5_CFLAGS="-I/usr/include/heimdal"
3425           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3426           AC_MSG_RESULT(yes)
3427       fi
3428     else
3429       AC_MSG_RESULT(no)
3430     fi
3431   fi
3433   if test x$FOUND_KRB5 = x"no"; then
3434     #################################################
3435     # see if this box has the RedHat location for kerberos
3436     AC_MSG_CHECKING(for /usr/kerberos)
3437     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3438       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3439       KRB5_CFLAGS="-I/usr/kerberos/include"
3440       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3441       AC_MSG_RESULT(yes)
3442     else
3443       AC_MSG_RESULT(no)
3444     fi
3445   fi
3447   ac_save_CFLAGS=$CFLAGS
3448   ac_save_CPPFLAGS=$CPPFLAGS
3449   ac_save_LDFLAGS=$LDFLAGS
3451   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3452   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3453   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3455   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3457   # now check for krb5.h. Some systems have the libraries without the headers!
3458   # note that this check is done here to allow for different kerberos
3459   # include paths
3460   AC_CHECK_HEADERS(krb5.h)
3462   if test x"$ac_cv_header_krb5_h" = x"no"; then
3464     # Give a warning if AD support was not explicitly requested,
3465     # i.e with_ads_support = auto, otherwise die with an error.
3467     if test x"$with_ads_support" = x"yes"; then
3468       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3469     else
3470       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3471     fi
3473     # Turn off AD support and restore CFLAGS and LIBS variables
3475     with_ads_support="no"
3477     CFLAGS=$ac_save_CFLAGS
3478     CPPFLAGS=$ac_save_CPPFLAGS
3479     LDFLAGS=$ac_save_LDFLAGS
3480   fi
3481   AC_CHECK_HEADERS(krb5/locate_plugin.h)
3484 # Now we have determined whether we really want ADS support
3485 use_ads=no
3486 if test x"$with_ads_support" != x"no"; then
3487   use_ads=yes
3488   have_gssapi=no
3489   ac_save_LIBS=$LIBS
3491   # now check for gssapi headers.  This is also done here to allow for
3492   # different kerberos include paths
3493   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3495   ##################################################################
3496   # we might need the k5crypto and com_err libraries on some systems
3497   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3498   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3500   # Heimdal checks.
3501   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3502   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3503   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3505   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3506   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3508   ########################################################
3509   # now see if we can find the krb5 libs in standard paths
3510   # or as specified above
3511   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3512   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3514   ########################################################
3515   # now see if we can find the gssapi libs in standard paths
3516   if test x"$have_gssapi" != x"yes"; then
3517      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3518   fi
3520   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3521   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3522   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3523   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3524   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3525   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3526   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3527   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3528   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3529   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3530   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3531   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3532   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3533   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3534   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3535   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3536   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3537   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3538   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3539   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3540   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3541   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3542   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3543   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3544   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3545   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3546   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3547   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3548   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3549   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3550   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3551   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3552   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3553   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3554   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3555   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3556   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3557   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3558   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3560   LIBS="$KRB5_LIBS $LIBS"
3562   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3563         smb_krb5_ticket_has_keyinfo,
3564         [
3565             AC_TRY_COMPILE(
3566             [
3567                 #include <krb5.h>
3568             ],
3569             [
3570                 krb5_ticket ticket;
3571                 krb5_kvno kvno;
3572                 krb5_enctype enctype;
3574                 enctype = ticket.enc_part.enctype;
3575                 kvno = ticket.enc_part.kvno;
3576             ],
3577             [ smb_krb5_ticket_has_keyinfo=yes ],
3578             [ smb_krb5_ticket_has_keyinfo=no ])
3579         ])
3581   if test x"$smb_krb5_ticket_has_keyinfo" = x"yes" ; then
3582         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3583             [Whether the krb5_ticket structure contains the kvno and enctype])
3584   fi
3586   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3587           smb_krb5_creds_opt_free_context,
3588           [
3589                 AC_TRY_COMPILE([
3590                     #include <krb5.h>],
3591                     [
3592                         krb5_context ctx;
3593                         krb5_get_init_creds_opt *opt = NULL;
3594                         krb5_get_init_creds_opt_free(ctx, opt);
3595                     ],
3596                     [smb_krb5_creds_opt_free_context=yes],
3597                     [smb_krb5_creds_opt_free_context=no]
3598                 )
3599           ])
3601   if test x"$smb_krb5_creds_opt_free_context" = x"yes" ; then
3602         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3603             [Whether krb5_get_init_creds_opt_free takes a context argument])
3604   fi
3606   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3607     AC_TRY_COMPILE([
3608         #include <krb5.h>],
3609         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3610         [smb_krb5_verify_checksum=7],
3611         [smb_krb5_verify_checksum=6],
3612     )
3613   ])
3614   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3616   AC_CACHE_CHECK([for checksum in krb5_checksum],
3617                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3618     AC_TRY_COMPILE([#include <krb5.h>],
3619       [krb5_checksum cksum; cksum.checksum.length = 0;],
3620       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3621       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3623   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3624     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3625                [Whether the krb5_checksum struct has a checksum property])
3626   fi
3628   AC_CACHE_CHECK([for etype in EncryptedData],
3629                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3630     AC_TRY_COMPILE([#include <krb5.h>],
3631       [EncryptedData edata; edata.etype = 0;],
3632       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3633       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3635   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3636     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3637                [Whether the EncryptedData struct has a etype property])
3638   fi
3640   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3641                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3642     AC_TRY_COMPILE([#include <krb5.h>],
3643       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3644       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3645       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3647   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3648     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3649                [Whether the krb5_ap_req struct has a ticket pointer])
3650   fi
3652   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3653                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3654     AC_TRY_COMPILE([#include <krb5.h>],
3655       [krb5_error err; err.e_data = NULL;],
3656       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3657       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3659   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3660     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3661                [Whether the krb5_error struct has a e_data pointer])
3662   fi
3664   AC_CACHE_CHECK([for krb5_crypto type],
3665                 samba_cv_HAVE_KRB5_CRYPTO,[
3666     AC_TRY_COMPILE([#include <krb5.h>],
3667       [krb5_crypto crypto;],
3668       samba_cv_HAVE_KRB5_CRYPTO=yes,
3669       samba_cv_HAVE_KRB5_CRYPTO=no)])
3671   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3672     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3673                [Whether the type krb5_crypto exists])
3674   fi
3676   AC_CACHE_CHECK([for krb5_encrypt_block type],
3677                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3678     AC_TRY_COMPILE([#include <krb5.h>],
3679       [krb5_encrypt_block block;],
3680       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3681       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3683   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3684     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3685                [Whether the type krb5_encrypt_block exists])
3686   fi
3688   AC_CACHE_CHECK([for addrtype in krb5_address],
3689                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3690     AC_TRY_COMPILE([#include <krb5.h>],
3691       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3692       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3693       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3695   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3696     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3697                [Whether the krb5_address struct has a addrtype property])
3698   fi
3700   AC_CACHE_CHECK([for addr_type in krb5_address],
3701                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3702     AC_TRY_COMPILE([#include <krb5.h>],
3703       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3704       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3705       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3707   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3708     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3709               [Whether the krb5_address struct has a addr_type property])
3710   fi
3712   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3713                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3714                  [AC_TRY_COMPILE([#include <krb5.h>],
3715     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3716     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3718   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3719     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3720               [Whether the krb5_ticket struct has a enc_part2 property])
3721   fi
3723   AC_CACHE_CHECK([for keyblock in krb5_creds],
3724                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3725     AC_TRY_COMPILE([#include <krb5.h>],
3726       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3727       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3728       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3730   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3731     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3732               [Whether the krb5_creds struct has a keyblock property])
3733   fi
3735   AC_CACHE_CHECK([for session in krb5_creds],
3736                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3737     AC_TRY_COMPILE([#include <krb5.h>],
3738       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3739       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3740       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3742   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3743     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3744               [Whether the krb5_creds struct has a session property])
3745   fi
3747   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3748                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3749     AC_TRY_COMPILE([#include <krb5.h>],
3750       [krb5_keyblock key; key.keyvalue.data = NULL;],
3751       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3752       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3754   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3755     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3756               [Whether the krb5_keyblock struct has a keyvalue property])
3757   fi
3759   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3760                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3761     AC_TRY_COMPILE([#include <krb5.h>],
3762       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3763       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3764       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3765   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3766                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3767     AC_TRY_COMPILE([#include <krb5.h>],
3768       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3769       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3770       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3771 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3772 # w.r.t. arcfour and windows, so we must not enable it here
3773   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3774           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3775     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3776               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3777   fi
3779   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3780                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3781     AC_TRY_COMPILE([#include <krb5.h>],
3782       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3783       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3784       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3786   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3787     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3788               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3789   fi
3791   AC_CACHE_CHECK([for KV5M_KEYTAB],
3792                  samba_cv_HAVE_KV5M_KEYTAB,[
3793     AC_TRY_COMPILE([#include <krb5.h>],
3794       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3795       samba_cv_HAVE_KV5M_KEYTAB=yes,
3796       samba_cv_HAVE_KV5M_KEYTAB=no)])
3798   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3799       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3800              [Whether the KV5M_KEYTAB option is available])
3801   fi
3803   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3804                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3805     AC_TRY_COMPILE([#include <krb5.h>],
3806       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3807       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3808       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3810   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3811     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3812               [Whether KRB5_KU_OTHER_CKSUM is available])
3813   fi
3815   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3816                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3817     AC_TRY_COMPILE([#include <krb5.h>],
3818       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3819       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3820       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3822   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3823     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3824               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3825   fi
3827   AC_CACHE_CHECK([for the krb5_princ_component macro],
3828                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3829     AC_TRY_LINK([#include <krb5.h>],
3830       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3831       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3832       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3834   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3835     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3836                [Whether krb5_princ_component is available])
3837   fi
3839   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3840                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3841     AC_TRY_COMPILE([#include <krb5.h>],
3842       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3843       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3844       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3846   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3847     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3848               [Whether krb5_keytab_entry has key member])
3849   fi
3851   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3852                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3853     AC_TRY_COMPILE([#include <krb5.h>],
3854       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3855       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3856       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3858   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3859     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3860               [Whether krb5_keytab_entry has keyblock member])
3861   fi
3863   AC_CACHE_CHECK([for magic in krb5_address],
3864                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3865     AC_TRY_COMPILE([#include <krb5.h>],
3866       [krb5_address addr; addr.magic = 0;],
3867       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3868       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3870   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3871     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3872               [Whether the krb5_address struct has a magic property])
3873   fi
3875   AC_CACHE_CHECK([for WRFILE: keytab support],
3876                 samba_cv_HAVE_WRFILE_KEYTAB,[
3877     AC_TRY_RUN([
3878 #include<krb5.h>
3879   main()
3880   {
3881     krb5_context context;
3882     krb5_keytab keytab;
3884     krb5_init_context(&context);
3885     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3886   }],
3887   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3888   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3890   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3891       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3892                [Whether the WRFILE:-keytab is supported])
3893   fi
3895   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3896                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3897     AC_TRY_COMPILE([#include <krb5.h>],
3898     [
3899     krb5_context context;
3900     krb5_principal principal;
3901     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3902     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3903     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3905   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3906     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3907               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3908   fi
3910   AC_CACHE_CHECK([for krb5_addresses type],
3911                 samba_cv_HAVE_KRB5_ADDRESSES,[
3912     AC_TRY_COMPILE([#include <krb5.h>],
3913       [krb5_addresses addr;],
3914       samba_cv_HAVE_KRB5_ADDRESSES=yes,
3915       samba_cv_HAVE_KRB5_ADDRESSES=no)])
3917   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3918     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3919                [Whether the type krb5_addresses type exists])
3920   fi
3922   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
3923                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
3924     AC_TRY_COMPILE([#include <krb5.h>],
3925     [
3926     krb5_mk_error(0,0,0);],
3927     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
3928     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
3930   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
3931     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
3932               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
3933   fi
3936   #
3937   #
3938   # Now the decisions whether we can support krb5
3939   #
3940   # NOTE: all tests should be done before this block!
3941   #
3942   #
3943   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
3944     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
3945     use_ads=no
3946   fi
3948   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
3949           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
3950   then
3951     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
3952     use_ads=no
3953   fi
3955   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
3956           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
3957   then
3958     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
3959     use_ads=no
3960   fi
3962   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
3963           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
3964   then
3965     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
3966     use_ads=no
3967   fi
3969   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
3970           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
3971   then
3972     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
3973     use_ads=no
3974   fi
3976   if test x"$smb_krb5_ticket_has_keyinfo" != x"yes" ; then
3978       # We only need the following functions if we can't get the enctype
3979       # and kvno out of the ticket directly (ie. on Heimdal).
3981       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
3982       then
3983         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
3984         use_ads=no
3985       fi
3987       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
3988       then
3989         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
3990         use_ads=no
3991       fi
3993   fi
3995   if test x"$use_ads" = x"yes"; then
3996     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3997     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3998     if test x"$have_gssapi" = x"yes"; then
3999       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4000     fi
4001   else
4002     if test x"$with_ads_support" = x"yes"; then
4003         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4004     else
4005         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4006     fi
4007     AC_REMOVE_DEFINE(HAVE_KRB5_H)
4008     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4009     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4010     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4011     KRB5_LIBS=""
4012     with_ads_support=no
4013   fi
4014   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4015   AC_MSG_RESULT([$use_ads])
4017 LIBS="$ac_save_LIBS"
4020 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4021 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4024 ########################################################
4025 # Compile with DNS Updates support?
4027 with_dnsupdate_support=no
4028 AC_MSG_CHECKING([whether to enable DNS Updates support])
4030 AC_ARG_WITH(dnsupdate,
4031 [  --with-dnsupdate        Enable DNS Updates support (default no)],
4032 [ case "$withval" in
4033     yes|no)
4034         with_dnsupdate_support=$withval
4035         ;;
4036   esac ])
4038 AC_MSG_RESULT($with_dnsupdate_support)
4040 if test x"$with_dnsupdate_support" != x"no"; then
4042   ################################################################
4043   # first test for Active Directory support being enabled
4044   #if test x"$with_ads_support" = x"no"; then
4045   #             AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4046   #             with_dnsupdate_support=no
4047   #fi           
4048   ##################################################################
4049   # then test for uuid.h (necessary to generate unique DNS keynames
4050   # (uuid.h is required for this test)
4051   AC_CHECK_HEADERS(uuid/uuid.h)
4053   if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4054         if test x"$with_dnsupdate_support" = x"yes"; then
4055          AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4056         else
4057          AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4058         fi
4059         with_dnsupdate_support=no
4060   fi
4063 if test x"$with_dnsupdate_support" != x"no"; then
4065   ########################################################
4066   # Now see if we can find the uuid libs in standard paths
4067   # On some systems, the uuid API is in libc, so we have to
4068   # be careful not to insert a spurious -luuid.
4070   UUID_LIBS=""
4071   AC_LIBTESTFUNC(uuid, uuid_generate,
4072           [
4073             case " $LIBS " in
4074                 *\ -luuid\ *)
4075                 UUID_LIBS="-luuid"
4076                 SMB_REMOVE_LIB(uuid)
4077                 ;;
4078             esac
4080             with_dnsupdate_support=yes
4081             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4082         ],
4083         [
4084             if test x"$with_dnsupdate_support" = x"yes"; then
4085                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4086             else
4087                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4088             fi
4089             with_dnsupdate_support=no
4090         ])
4093 #################################################
4094 # check for automount support
4095 AC_MSG_CHECKING(whether to use automount)
4096 AC_ARG_WITH(automount,
4097 [  --with-automount        Include automount support (default=no)],
4098 [ case "$withval" in
4099   yes)
4100     AC_MSG_RESULT(yes)
4101     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4102     ;;
4103   *)
4104     AC_MSG_RESULT(no)
4105     ;;
4106   esac ],
4107   AC_MSG_RESULT(no)
4110 #################################################
4111 # check for smbmount support
4112 AC_MSG_CHECKING(whether to use smbmount)
4113 AC_ARG_WITH(smbmount,
4114 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
4115 [ case "$withval" in
4116   yes)
4117         case "$host_os" in
4118         *linux*)
4119                 AC_MSG_RESULT(yes)
4120                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
4121                 SMBMOUNT_PROGS="bin/smbmount bin/smbmnt bin/smbumount"
4122                 ;;
4123         *)
4124                 AC_MSG_ERROR(not on a linux system!)
4125                 ;;
4126         esac
4127     ;;
4128   *)
4129     AC_MSG_RESULT(no)
4130     ;;
4131   esac ],
4132   AC_MSG_RESULT(no)
4135 #################################################
4136 # check for mount- and umount.cifs support
4137 CIFSMOUNT_PROGS=""
4138 INSTALL_CIFSMOUNT=""
4139 UNINSTALL_CIFSMOUNT=""
4140 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4141 AC_ARG_WITH(cifsmount,
4142 [  --with-cifsmount        Include mount.cifs and umount.cifs (Linux only) support (default=yes)],
4143 [ case "$withval" in
4144   no)
4145         AC_MSG_RESULT(no)
4146         ;;
4147   *)
4148         case "$host_os" in
4149         *linux*)
4150                 AC_MSG_RESULT(yes)
4151                 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4152                 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4153                 INSTALL_CIFSMOUNT="installcifsmount"
4154                 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4155                 ;;
4156         *)
4157                 AC_MSG_ERROR(not on a linux system!)
4158                 ;;
4159         esac
4160     ;;
4161   esac ],
4162 [ case "$host_os" in
4163   *linux*)
4164         AC_MSG_RESULT(yes)
4165         AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4166         CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4167         INSTALL_CIFSMOUNT="installcifsmount"
4168         UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4169         ;;
4170   *)
4171         AC_MSG_RESULT(no)
4172         ;;
4173   esac ]
4177 #################################################
4178 # check for a PAM clear-text auth, accounts, password and session support
4179 with_pam_for_crypt=no
4180 try_pam=no
4181 AC_MSG_CHECKING(whether to try PAM support)
4182 AC_ARG_WITH(pam,
4183 [  --with-pam              Include PAM support (default=no)],
4184 [ case "$withval" in
4185   yes|no)
4186     try_pam=$withval
4187     ;;
4188   esac
4190 AC_MSG_RESULT([$try_pam])
4192 use_pam=no
4193 create_pam_modules=no
4194 if test x"${try_pam}" != x"no";then
4195         use_pam=yes
4196         create_pam_modules=yes
4198         AC_CHECK_HEADERS(security/pam_appl.h)
4199         if test x"$ac_cv_header_security_pam_appl_h" != x"yes"; then
4200                 if test x"${try_pam}" = x"yes";then
4201                         AC_MSG_ERROR([--with-pam=yes but security/pam_appl.h not found])
4202                 fi
4203                 use_pam=no
4204                 create_pam_modules=no
4205         fi
4207         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4208         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4209                 if test x"${try_pam}" = x"yes";then
4210                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4211                 fi
4212                 use_pam=no
4213                 create_pam_modules=no
4214         fi
4216         AC_CHECK_HEADERS(security/pam_modules.h,,,[[
4217                 #if HAVE_SECURITY_PAM_APPL_H
4218                 #include <security/pam_appl.h>
4219                 #endif
4220         ]])
4221        if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
4222                 if test x"${try_pam}" = x"yes";then
4223                         AC_MSG_ERROR([--with-pam=yes but security/pam_modules.h not found])
4224        fi
4225                 create_pam_modules=no
4226     fi
4228         if test x"$use_pam" = x"yes"; then
4229     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4230                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4231                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4232     with_pam_for_crypt=yes
4234                 if test x"$create_pam_modules" = x"yes"; then
4235                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4236                         # this checks are optional,
4237                         # we don't care about the results here
4238                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4239                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4240                 else
4241                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4242                 fi
4243         fi
4244         AC_MSG_CHECKING(whether to use PAM support)
4245         AC_MSG_RESULT([$use_pam])
4247         AC_MSG_CHECKING(whether to have PAM MODULES support)
4248         AC_MSG_RESULT([$create_pam_modules])
4249 fi # try_pam != no
4251 #################################################
4252 # check for pam_smbpass support
4253 PAM_MODULES=""
4254 INSTALL_PAM_MODULES=""
4255 UNINSTALL_PAM_MODULES=""
4256 AC_MSG_CHECKING(whether to use pam_smbpass)
4257 AC_ARG_WITH(pam_smbpass,
4258 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
4259 [ case "$withval" in
4260   yes)
4261     AC_MSG_RESULT(yes)
4263        # Conditions under which pam_smbpass should not be built.
4265        if test x"$BLDSHARED" != x"true"; then
4266           AC_MSG_ERROR([No support for shared modules])
4267        elif test x"$create_pam_modules" != x"yes"; then
4268           AC_MSG_ERROR([No support for PAM MODULES])
4269        else
4270           PAM_MODULES="pam_smbpass"
4271           INSTALL_PAM_MODULES="installpammodules"
4272           UNINSTALL_PAM_MODULES="uninstallpammodules"
4273        fi
4274     ;;
4275   *)
4276     AC_MSG_RESULT(no)
4277     ;;
4278   esac ],
4279   AC_MSG_RESULT(no)
4283 ###############################################
4284 # test for where we get crypt() from
4285 AC_SEARCH_LIBS(crypt, [crypt],
4286   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4287   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4290 ## moved after the check for -lcrypt in order to
4291 ## ensure that the necessary libraries are included
4292 ## check checking for truncated salt.  Wrapped by the
4293 ## $with_pam_for_crypt variable as above   --jerry
4295 if test $with_pam_for_crypt = no; then
4296 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4297 crypt_LIBS="$LIBS"
4298 LIBS="$AUTH_LIBS $LIBS"
4299 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4300         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4301 LIBS="$crypt_LIBS"])
4302 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4303         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4307 #################################################
4308 # check for a NISPLUS_HOME support
4309 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4310 AC_ARG_WITH(nisplus-home,
4311 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
4312 [ case "$withval" in
4313   yes)
4314     AC_MSG_RESULT(yes)
4315     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4316     ;;
4317   *)
4318     AC_MSG_RESULT(no)
4319     ;;
4320   esac ],
4321   AC_MSG_RESULT(no)
4324 #################################################
4325 # check for syslog logging
4326 AC_MSG_CHECKING(whether to use syslog logging)
4327 AC_ARG_WITH(syslog,
4328 [  --with-syslog           Include experimental SYSLOG support (default=no)],
4329 [ case "$withval" in
4330   yes)
4331     AC_MSG_RESULT(yes)
4332     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4333     ;;
4334   *)
4335     AC_MSG_RESULT(no)
4336     ;;
4337   esac ],
4338   AC_MSG_RESULT(no)
4341 #################################################
4342 # check for experimental disk-quotas support
4344 samba_cv_WITH_QUOTAS=auto
4345 samba_cv_TRY_QUOTAS=no
4346 samba_cv_RUN_QUOTA_TESTS=auto
4347 samba_cv_WITH_SYS_QUOTAS=auto
4348 samba_cv_TRY_SYS_QUOTAS=auto
4349 samba_cv_SYSQUOTA_FOUND=no
4351 AC_MSG_CHECKING(whether to try disk-quotas support)
4352 AC_ARG_WITH(quotas,
4353 [  --with-quotas           Include disk-quota support (default=no)],
4354 [ case "$withval" in
4355   yes)
4356     AC_MSG_RESULT(yes)
4357     samba_cv_WITH_QUOTAS=yes
4358     samba_cv_TRY_QUOTAS=yes
4359     samba_cv_RUN_QUOTA_TESTS=yes
4360     #set sys quotas to auto in this case
4361     samba_cv_TRY_SYS_QUOTAS=auto
4362     ;;
4363   auto)
4364     AC_MSG_RESULT(auto)
4365     samba_cv_WITH_QUOTAS=auto
4366     samba_cv_TRY_QUOTAS=auto
4367     samba_cv_RUN_QUOTA_TESTS=auto
4368     #set sys quotas to auto in this case
4369     samba_cv_TRY_SYS_QUOTAS=auto
4370     ;;
4371   no)
4372     AC_MSG_RESULT(no)
4373     samba_cv_WITH_QUOTAS=no
4374     samba_cv_TRY_QUOTAS=no
4375     samba_cv_RUN_QUOTA_TESTS=no
4376     ;;
4377   *)
4378     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4379     ;;
4380   esac ],
4381   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4384 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4385 AC_ARG_WITH(sys-quotas,
4386 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
4387 [ case "$withval" in
4388   yes)
4389     AC_MSG_RESULT(yes)
4390     samba_cv_WITH_SYS_QUOTAS=yes
4391     samba_cv_TRY_SYS_QUOTAS=yes
4392     samba_cv_RUN_QUOTA_TESTS=yes
4393     ;;
4394   auto)
4395     AC_MSG_RESULT(auto)
4396     samba_cv_WITH_SYS_QUOTAS=auto
4397     samba_cv_TRY_SYS_QUOTAS=auto
4398     samba_cv_RUN_QUOTA_TESTS=auto
4399     ;;
4400   no)
4401     AC_MSG_RESULT(no)
4402     samba_cv_WITH_SYS_QUOTAS=no
4403     samba_cv_TRY_SYS_QUOTAS=no
4404     ;;
4405   *)
4406     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4407     ;;
4408   esac ],
4409   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4412 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4413 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4414   case "$host_os" in
4415         *linux*)
4416             AC_MSG_RESULT(yes)
4417             samba_cv_TRY_SYS_QUOTAS=yes
4418             samba_cv_RUN_QUOTA_TESTS=yes
4419             ;;
4420         *)
4421             AC_MSG_RESULT(no)
4422             samba_cv_TRY_SYS_QUOTAS=no
4423             ;;
4424   esac
4427 #############################################
4428 # only check for quota stuff if --with-quotas
4429 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4431 case "$host_os" in
4432         # on linux we didn't need to test we have builtin support
4433         *linux*)
4434             samba_cv_SYSQUOTA_FOUND=yes
4435             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4436             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4437             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4438             AC_MSG_RESULT(yes)
4440             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4441             samba_cv_found_xfs_header=yes
4442             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4443             AC_MSG_RESULT(yes)
4444             ;;
4445         *solaris*)
4446             # need to set this define when using static linking (BUG 1473)
4447             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4448             ;;
4449         *)
4450             ;;
4451 esac
4453 # some broken header files need this
4454 AC_CHECK_HEADER(asm/types.h,[
4455             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4456             AC_ADD_INCLUDE(<asm/types.h>)
4457             ])
4459 # For quotas on Veritas VxFS filesystems
4460 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4462 # For sys/quota.h and linux/quota.h
4463 AC_CHECK_HEADERS(sys/quota.h)
4465 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4466 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4467 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4468 AC_TRY_COMPILE([
4469 #include "confdefs.h"
4470 #ifdef HAVE_SYS_TYPES_H
4471 #include <sys/types.h>
4472 #endif
4473 #ifdef HAVE_ASM_TYPES_H
4474 #include <asm/types.h>
4475 #endif
4476 #include <sys/quota.h>
4477 ],[int i = Q_XGETQUOTA;],
4478 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4479 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4480         samba_cv_found_xfs_header=yes
4484 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4485 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4486 AC_TRY_COMPILE([
4487 #include "confdefs.h"
4488 #ifdef HAVE_SYS_QUOTA_H
4489 #include <sys/quota.h>
4490 #endif
4492 struct dqblk D;
4493 D.dqb_fsoftlimit = 0;],
4494 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4495 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4496         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4499 ##################
4500 # look for a working quota system
4502 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4503 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4504 AC_TRY_RUN_STRICT([
4505 #define HAVE_QUOTACTL_4A 1
4506 #define AUTOCONF_TEST 1
4507 #include "confdefs.h"
4508 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4509            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4510 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4511     samba_cv_SYSQUOTA_FOUND=yes;
4512     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4513     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4517 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4518 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4519 AC_TRY_RUN_STRICT([
4520 #define HAVE_QUOTACTL_4B 1
4521 #define AUTOCONF_TEST 1
4522 #include "confdefs.h"
4523 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4524            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4525 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4526     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4527     samba_cv_SYSQUOTA_FOUND=yes;
4528     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4529     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4533 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4534 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4535 AC_TRY_RUN_STRICT([
4536 #define HAVE_QUOTACTL_3 1
4537 #define AUTOCONF_TEST 1
4538 #include "confdefs.h"
4539 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4540            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4541 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4542     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4543     samba_cv_SYSQUOTA_FOUND=yes;
4544     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4545     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4549 #################################################
4550 # check for mntent.h and struct mntent
4551 AC_CHECK_HEADERS(mntent.h)
4552 #################################################
4553 # check for setmntent,getmntent,endmntent
4554 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4556 #################################################
4557 # check for devnm.h and struct mntent
4558 AC_CHECK_HEADERS(devnm.h)
4559 #################################################
4560 # check for devnm
4561 AC_CHECK_FUNCS(devnm)
4563 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4564     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4565         # if --with-sys-quotas=yes then build it
4566         # you have can use the get/set quota command smb.conf
4567         # options then
4568         samba_cv_SYSQUOTA_FOUND=auto
4569     fi
4570     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4571         # if --with-sys-quotas=yes then build it
4572         # you have can use the get/set quota command smb.conf
4573         # options then
4574         samba_cv_TRY_SYS_QUOTAS=auto
4575     fi
4578 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4579 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4580 SAVE_CPPFLAGS="$CPPFLAGS"
4581 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4582 AC_TRY_COMPILE([
4583 #include "confdefs.h"
4584 #define NO_PROTO_H 1
4585 #define NO_CONFIG_H 1
4586 #define HAVE_SYS_QUOTAS 1
4587 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4588 #include "${srcdir-.}/lib/sysquotas.c"
4589 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4590 CPPFLAGS="$SAVE_CPPFLAGS"
4592 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4593 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4594     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4595         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4596         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4597         samba_cv_WE_USE_SYS_QUOTAS=yes
4598         AC_MSG_RESULT(yes)
4599     else
4600         AC_MSG_RESULT(no)
4601     fi
4605 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4606 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4607 SAVE_CPPFLAGS="$CPPFLAGS"
4608 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4609 AC_TRY_COMPILE([
4610 #include "confdefs.h"
4611 #define NO_PROTO_H 1
4612 #define NO_CONFIG_H 1
4613 #define HAVE_SYS_QUOTAS 1
4614 #define HAVE_XFS_QUOTAS 1
4615 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4616 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4617 CPPFLAGS="$SAVE_CPPFLAGS"
4619 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4620     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4621         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4622     fi
4626 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4627 SAVE_CPPFLAGS="$CPPFLAGS"
4628 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4629 AC_TRY_COMPILE([
4630 #include "confdefs.h"
4631 #define NO_PROTO_H 1
4632 #define NO_CONFIG_H 1
4633 #include "${srcdir-.}/smbd/quotas.c"
4634 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4635 CPPFLAGS="$SAVE_CPPFLAGS"
4637 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4638 AC_MSG_CHECKING(whether to use the old quota support)
4639     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4640       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4641         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4642         AC_MSG_RESULT(yes)
4643       else
4644         AC_MSG_RESULT(no)
4645       fi
4646     else
4647       AC_MSG_RESULT(no)
4648     fi
4651 ####################
4652 # End of quota check samba_cv_RUN_QUOTA_TESTS
4655 #################################################
4656 # check for experimental utmp accounting
4658 AC_MSG_CHECKING(whether to support utmp accounting)
4659 WITH_UTMP=yes
4660 AC_ARG_WITH(utmp,
4661 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
4662 [ case "$withval" in
4663   no)
4664                 WITH_UTMP=no
4665                 ;;
4666   *)
4667                 WITH_UTMP=yes
4668                 ;;
4669   esac ],
4672 # utmp requires utmp.h
4673 # Note similar check earlier, when checking utmp details.
4675 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4676         utmp_no_reason=", no utmp.h on $host_os"
4677         WITH_UTMP=no
4680 # Display test results
4682 if test x"$WITH_UTMP" = x"yes"; then
4683         AC_MSG_RESULT(yes)
4684         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4685 else
4686         AC_MSG_RESULT(no$utmp_no_reason)
4689 INSTALLLIBCMD_SH=:
4690 INSTALLLIBCMD_A=:
4691 UNINSTALLLIBCMD_SH=:
4692 UNINSTALLLIBCMD_A=:
4694 if test $BLDSHARED = true; then
4695         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4696         UNINSTALLLIBCMD_SH="rm -f"
4698 if test $enable_static = yes; then
4699         INSTALLLIBCMD_A="\$(INSTALLCMD)"
4700         UNINSTALLLIBCMD_A="rm -f"
4703 #################################################
4704 # should we build libmsrpc?
4705 INSTALL_LIBMSRPC=
4706 UNINSTALL_LIBMSRPC=
4707 LIBMSRPC_SHARED=
4708 LIBMSRPC=
4709 AC_MSG_CHECKING(whether to build the libmsrpc shared library)
4710 AC_ARG_WITH(libmsrpc,
4711 [  --with-libmsrpc         Build the libmsrpc shared library (default=yes if shared libs supported)],
4712 [ case "$withval" in
4713   no)
4714      AC_MSG_RESULT(no)
4715      ;;
4716   *)
4717      if test $BLDSHARED = true; then
4718         LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4719         LIBMSRPC=libmsrpc
4720         AC_MSG_RESULT(yes)
4721      else
4722         enable_static=yes
4723         AC_MSG_RESULT(no shared library support -- will supply static library)
4724      fi
4725      if test $enable_static = yes; then
4726         LIBMSRPC=libmsrpc
4727      fi
4728      INSTALL_LIBMSRPC=installlibmsrpc
4729      UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4730      ;;
4731   esac ],
4733 # if unspecified, default is to built it if possible.
4734   if test $BLDSHARED = true; then
4735      LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4736      LIBMSRPC=libmsrpc
4737      AC_MSG_RESULT(yes)
4738    else
4739      enable_static=yes
4740      AC_MSG_RESULT(no shared library support -- will supply static library)
4741    fi
4742    if test $enable_static = yes; then
4743      LIBMSRPC=libmsrpc
4744   fi]
4745   INSTALL_LIBMSRPC=installlibmsrpc
4746   UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4750 #################################################
4751 # should we build libaddns?
4752 INSTALL_LIBADDNS=
4753 UNINSTALL_LIBADDNS=
4754 LIBADDNS_SHARED=
4755 LIBADDNS=
4756 AC_MSG_CHECKING(whether to build the libaddns shared library)
4757 AC_ARG_WITH(libaddns,
4758 [  --with-libaddns         Build the libaddns shared library (default=yes if shared libs supported)],
4759 [ case "$withval" in
4760   no)
4761      AC_MSG_RESULT(no)
4762      ;;
4763   *)
4764      if test $BLDSHARED = true; then
4765         LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
4766         LIBADDNS=libaddns
4767         AC_MSG_RESULT(yes)
4768      else
4769         enable_static=yes
4770         AC_MSG_RESULT(no shared library support -- will supply static library)
4771      fi
4772      if test $enable_static = yes; then
4773         LIBADDNS=libaddns
4774      fi
4775      INSTALL_LIBADDNS=installlibaddns
4776      UNINSTALL_LIBADDNS=uninstalllibaddns
4777      ;;
4778   esac ],
4780 # if unspecified, default is to built it if possible.
4781   if test $BLDSHARED = true; then
4782      LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
4783      LIBADDNS=libaddns
4784      AC_MSG_RESULT(yes)
4785    else
4786      enable_static=yes
4787      AC_MSG_RESULT(no shared library support -- will supply static library)
4788    fi
4789    if test $enable_static = yes; then
4790      LIBADDNS=libaddns
4791   fi]
4792   INSTALL_LIBADDNS=installlibaddns
4793   UNINSTALL_LIBADDNS=uninstalllibaddns
4796 #################################################
4797 # should we build libsmbclient?
4798 INSTALL_LIBSMBCLIENT=
4799 UNINSTALL_LIBSMBCLIENT=
4800 LIBSMBCLIENT_SHARED=
4801 LIBSMBCLIENT=
4802 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
4803 AC_ARG_WITH(libsmbclient,
4804 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
4805 [ case "$withval" in
4806   no)
4807      AC_MSG_RESULT(no)
4808      ;;
4809   *)
4810      if test $BLDSHARED = true; then
4811         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4812         LIBSMBCLIENT=libsmbclient
4813         AC_MSG_RESULT(yes)
4814      else
4815         enable_static=yes
4816         AC_MSG_RESULT(no shared library support -- will supply static library)
4817      fi
4818      if test $enable_static = yes; then
4819         LIBSMBCLIENT=libsmbclient
4820      fi
4821      INSTALL_LIBSMBCLIENT=installclientlib
4822      UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4823      ;;
4824   esac ],
4826 # if unspecified, default is to built it if possible.
4827   if test $BLDSHARED = true; then
4828      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4829      LIBSMBCLIENT=libsmbclient
4830      AC_MSG_RESULT(yes)
4831    else
4832      enable_static=yes
4833      AC_MSG_RESULT(no shared library support -- will supply static library)
4834    fi
4835    if test $enable_static = yes; then
4836      LIBSMBCLIENT=libsmbclient
4837   fi]
4838   INSTALL_LIBSMBCLIENT=installclientlib
4839   UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4842 INSTALL_LIBSMBSHAREMODES=
4843 LIBSMBSHAREMODES_SHARED=
4844 LIBSMBSHAREMODES=
4845 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
4846 AC_ARG_WITH(libsmbsharemodes,
4847 [  --with-libsmbsharemodes     Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
4848 [ case "$withval" in
4849   no)
4850      AC_MSG_RESULT(no)
4851      ;;
4852   *)
4853      if test $BLDSHARED = true; then
4854         LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4855         LIBSMBSHAREMODES=libsmbsharemodes
4856         AC_MSG_RESULT(yes)
4857      else
4858         enable_static=yes
4859         AC_MSG_RESULT(no shared library support -- will supply static library)
4860      fi
4861      if test $enable_static = yes; then
4862         LIBSMBSHAREMODES=libsmbsharemodes
4863      fi
4864      INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4865      UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
4866      ;;
4867   esac ],
4869 # if unspecified, default is to built it if possible.
4870   if test $BLDSHARED = true; then
4871      LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4872      LIBSMBSHAREMODES=libsmbsharemodes
4873      AC_MSG_RESULT(yes)
4874    else
4875      enable_static=yes
4876      AC_MSG_RESULT(no shared library support -- will supply static library)
4877    fi
4878    if test $enable_static = yes; then
4879      LIBSMBSHAREMODES=libsmbsharemodes
4880   fi]
4881   INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4884 #################################################
4885 # these tests are taken from the GNU fileutils package
4886 AC_CHECKING(how to get filesystem space usage)
4887 space=no
4889 # Test for statvfs64.
4890 if test $space = no; then
4891   # SVR4
4892   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4893   [AC_TRY_RUN([
4894 #if defined(HAVE_UNISTD_H)
4895 #include <unistd.h>
4896 #endif
4897 #include <sys/types.h>
4898 #include <sys/statvfs.h>
4899   main ()
4900   {
4901     struct statvfs64 fsd;
4902     exit (statvfs64 (".", &fsd));
4903   }],
4904   fu_cv_sys_stat_statvfs64=yes,
4905   fu_cv_sys_stat_statvfs64=no,
4906   fu_cv_sys_stat_statvfs64=cross)])
4907   if test $fu_cv_sys_stat_statvfs64 = yes; then
4908     space=yes
4909     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4910   fi
4913 # Perform only the link test since it seems there are no variants of the
4914 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4915 # because that got a false positive on SCO OSR5.  Adding the declaration
4916 # of a `struct statvfs' causes this test to fail (as it should) on such
4917 # systems.  That system is reported to work fine with STAT_STATFS4 which
4918 # is what it gets when this test fails.
4919 if test $space = no; then
4920   # SVR4
4921   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4922                  [AC_TRY_LINK([#include <sys/types.h>
4923 #include <sys/statvfs.h>],
4924                               [struct statvfs fsd; statvfs (0, &fsd);],
4925                               fu_cv_sys_stat_statvfs=yes,
4926                               fu_cv_sys_stat_statvfs=no)])
4927   if test $fu_cv_sys_stat_statvfs = yes; then
4928     space=yes
4929     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4930   fi
4933 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4934 # This is not the case on ancient Linux systems.
4936 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4937     AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4938         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4939 if test x"$samba_cv_fsid_int" = x"yes"; then
4940     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4943 if test $space = no; then
4944   # DEC Alpha running OSF/1
4945   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4946   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4947   [AC_TRY_RUN([
4948 #include <sys/param.h>
4949 #include <sys/types.h>
4950 #include <sys/mount.h>
4951   main ()
4952   {
4953     struct statfs fsd;
4954     fsd.f_fsize = 0;
4955     exit (statfs (".", &fsd, sizeof (struct statfs)));
4956   }],
4957   fu_cv_sys_stat_statfs3_osf1=yes,
4958   fu_cv_sys_stat_statfs3_osf1=no,
4959   fu_cv_sys_stat_statfs3_osf1=no)])
4960   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4961   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4962     space=yes
4963     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4964   fi
4967 if test $space = no; then
4968 # AIX
4969   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4970 member (AIX, 4.3BSD)])
4971   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4972   [AC_TRY_RUN([
4973 #ifdef HAVE_SYS_PARAM_H
4974 #include <sys/param.h>
4975 #endif
4976 #ifdef HAVE_SYS_MOUNT_H
4977 #include <sys/mount.h>
4978 #endif
4979 #ifdef HAVE_SYS_VFS_H
4980 #include <sys/vfs.h>
4981 #endif
4982   main ()
4983   {
4984   struct statfs fsd;
4985   fsd.f_bsize = 0;
4986   exit (statfs (".", &fsd));
4987   }],
4988   fu_cv_sys_stat_statfs2_bsize=yes,
4989   fu_cv_sys_stat_statfs2_bsize=no,
4990   fu_cv_sys_stat_statfs2_bsize=no)])
4991   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4992   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4993     space=yes
4994     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4995   fi
4998 if test $space = no; then
4999 # SVR3
5000   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5001   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5002   [AC_TRY_RUN([#include <sys/types.h>
5003 #include <sys/statfs.h>
5004   main ()
5005   {
5006   struct statfs fsd;
5007   exit (statfs (".", &fsd, sizeof fsd, 0));
5008   }],
5009     fu_cv_sys_stat_statfs4=yes,
5010     fu_cv_sys_stat_statfs4=no,
5011     fu_cv_sys_stat_statfs4=no)])
5012   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5013   if test $fu_cv_sys_stat_statfs4 = yes; then
5014     space=yes
5015     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5016   fi
5019 if test $space = no; then
5020 # 4.4BSD and NetBSD
5021   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5022 member (4.4BSD and NetBSD)])
5023   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5024   [AC_TRY_RUN([#include <sys/types.h>
5025 #ifdef HAVE_SYS_PARAM_H
5026 #include <sys/param.h>
5027 #endif
5028 #ifdef HAVE_SYS_MOUNT_H
5029 #include <sys/mount.h>
5030 #endif
5031   main ()
5032   {
5033   struct statfs fsd;
5034   fsd.f_fsize = 0;
5035   exit (statfs (".", &fsd));
5036   }],
5037   fu_cv_sys_stat_statfs2_fsize=yes,
5038   fu_cv_sys_stat_statfs2_fsize=no,
5039   fu_cv_sys_stat_statfs2_fsize=no)])
5040   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5041   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5042     space=yes
5043         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5044   fi
5047 if test $space = no; then
5048   # Ultrix
5049   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5050   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5051   [AC_TRY_RUN([#include <sys/types.h>
5052 #ifdef HAVE_SYS_PARAM_H
5053 #include <sys/param.h>
5054 #endif
5055 #ifdef HAVE_SYS_MOUNT_H
5056 #include <sys/mount.h>
5057 #endif
5058 #ifdef HAVE_SYS_FS_TYPES_H
5059 #include <sys/fs_types.h>
5060 #endif
5061   main ()
5062   {
5063   struct fs_data fsd;
5064   /* Ultrix's statfs returns 1 for success,
5065      0 for not mounted, -1 for failure.  */
5066   exit (statfs (".", &fsd) != 1);
5067   }],
5068   fu_cv_sys_stat_fs_data=yes,
5069   fu_cv_sys_stat_fs_data=no,
5070   fu_cv_sys_stat_fs_data=no)])
5071   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5072   if test $fu_cv_sys_stat_fs_data = yes; then
5073     space=yes
5074     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5075   fi
5079 # As a gating factor for large file support, in order to
5080 # use <4GB files we must have the following minimal support
5081 # available.
5082 # long long, and a 64 bit off_t or off64_t.
5083 # If we don't have all of these then disable large
5084 # file support.
5086 AC_MSG_CHECKING([if large file support can be enabled])
5087 AC_TRY_COMPILE([
5088 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5089 #include <sys/types.h>
5090 #else
5091 __COMPILE_ERROR_
5092 #endif
5094 [int i],
5095 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5096 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5097         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5099 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5101 #################################################
5102 # check for cluster extensions
5104 AC_MSG_CHECKING(whether to include cluster support)
5105 AC_ARG_WITH(cluster-support,
5106 [  --with-cluster-support  Enable cluster extensions (default=no)])
5107 if test "x$with_cluster_support" = "xyes"; then
5108     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5109     AC_MSG_RESULT(yes)
5110 else
5111     AC_MSG_RESULT(no)
5115 #################################################
5116 # check for ACL support
5118 AC_MSG_CHECKING(whether to support ACLs)
5119 AC_ARG_WITH(acl-support,
5120 [  --with-acl-support      Include ACL support (default=no)],
5121 [ case "$withval" in
5122   yes)
5124         case "$host_os" in
5125         *sysv5*)
5126                 AC_MSG_RESULT(Using UnixWare ACLs)
5127                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5128                 default_static_modules="$default_static_modules vfs_solarisacl"
5129                 ;;
5130         *solaris*)
5131                 AC_MSG_RESULT(Using solaris ACLs)
5132                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5133                 ACL_LIBS="$ACL_LIBS -lsec"
5134                 default_static_modules="$default_static_modules vfs_solarisacl"
5135                 ;;
5136         *hpux*)
5137                 AC_MSG_RESULT(Using HPUX ACLs)
5138                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5139                 default_static_modules="$default_static_modules vfs_hpuxacl"
5140                 ;;
5141         *irix*)
5142                 AC_MSG_RESULT(Using IRIX ACLs)
5143                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5144                 default_static_modules="$default_static_modules vfs_irixacl"
5145                 ;;
5146         *aix*)
5147                 AC_MSG_RESULT(Using AIX ACLs)
5148                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5149                 default_static_modules="$default_static_modules vfs_aixacl"
5150                 ;;
5151         *osf*)
5152                 AC_MSG_RESULT(Using Tru64 ACLs)
5153                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5154                 ACL_LIBS="$ACL_LIBS -lpacl"
5155                 default_static_modules="$default_static_modules vfs_tru64acl"
5156                 ;;
5157         *freebsd[[5-9]]*)
5158                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
5159                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
5160                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5161                 default_static_modules="$default_static_modules vfs_posixacl"
5162                 ;;
5163         *linux*)
5164                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5165                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5166                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
5167                         acl_LIBS=$LIBS
5168                         LIBS="$LIBS -lacl"
5169                         AC_TRY_LINK([
5170                                 #include <sys/types.h>
5171                                 #include <sys/acl.h>
5172                         ],[
5173                                 acl_t acl;
5174                                 int entry_id;
5175                                 acl_entry_t *entry_p;
5176                                 return acl_get_entry(acl, entry_id, entry_p);
5177                         ],
5178                         [samba_cv_HAVE_POSIX_ACLS=yes],
5179                         [samba_cv_HAVE_POSIX_ACLS=no])
5180                         LIBS=$acl_LIBS
5181                 ])
5182                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5183                         AC_MSG_RESULT(Using posix ACLs)
5184                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5185                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5186                                 acl_LIBS=$LIBS
5187                                 LIBS="$LIBS -lacl"
5188                                 AC_TRY_LINK([
5189                                         #include <sys/types.h>
5190                                         #include <sys/acl.h>
5191                                 ],[
5192                                         acl_permset_t permset_d;
5193                                         acl_perm_t perm;
5194                                         return acl_get_perm_np(permset_d, perm);
5195                                 ],
5196                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5197                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5198                                 LIBS=$acl_LIBS
5199                         ])
5200                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5201                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5202                         fi
5203                 fi
5204             ;;
5205          *)
5206                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5207                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
5208                         acl_LIBS=$LIBS
5209                         LIBS="$LIBS -lacl"
5210                         AC_TRY_LINK([
5211                                 #include <sys/types.h>
5212                                 #include <sys/acl.h>
5213                         ],[
5214                                 acl_t acl;
5215                                 int entry_id;
5216                                 acl_entry_t *entry_p;
5217                                 return acl_get_entry( acl, entry_id, entry_p);
5218                         ],
5219                         [samba_cv_HAVE_POSIX_ACLS=yes],
5220                         [samba_cv_HAVE_POSIX_ACLS=no])
5221                         LIBS=$acl_LIBS
5222                 ])
5223                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5224                         AC_MSG_RESULT(Using posix ACLs)
5225                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5226                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5227                                 acl_LIBS=$LIBS
5228                                 LIBS="$LIBS -lacl"
5229                                 AC_TRY_LINK([
5230                                         #include <sys/types.h>
5231                                         #include <sys/acl.h>
5232                                 ],[
5233                                         acl_permset_t permset_d;
5234                                         acl_perm_t perm;
5235                                         return acl_get_perm_np( permset_d, perm);
5236                                 ],
5237                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5238                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5239                                 LIBS=$acl_LIBS
5240                         ])
5241                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5242                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5243                         fi
5244                 fi
5245             ;;
5246         esac
5247         ;;
5248   *)
5249     AC_MSG_RESULT(no)
5250     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5251     ;;
5252   esac ],
5253   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5254   AC_MSG_RESULT(no)
5257 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5258    default_static_modules="$default_static_modules vfs_posixacl"
5261 #################################################
5262 # check for AIO support
5264 AC_MSG_CHECKING(whether to support asynchronous io)
5265 AC_ARG_WITH(aio-support,
5266 [  --with-aio-support      Include asynchronous io support (default=no)],
5267 [ case "$withval" in
5268   yes)
5270         AC_MSG_RESULT(yes)
5271         case "$host_os" in
5272         *)
5273                 AIO_LIBS=$LIBS
5274                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5275                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5276                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5277                 aio_LIBS=$LIBS
5278                 LIBS=$AIO_LIBS
5279                 AC_TRY_LINK([#include <sys/types.h>
5280 #include <aio.h>],
5281 [ struct aiocb a; return aio_read(&a);],
5282 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5283                 LIBS=$aio_LIBS])
5284                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5285                 aio_LIBS=$LIBS
5286                 LIBS=$AIO_LIBS
5287                 AC_TRY_LINK([#include <sys/types.h>
5288 #include <aio.h>],
5289 [ struct aiocb64 a; return aio_read64(&a);],
5290 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5291                 LIBS=$aio_LIBS])
5292                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5293                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5294                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5295                         LIBS=$AIO_LIBS
5296                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5297                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5298                         LIBS=$AIO_LIBS
5299                 fi
5301                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5302                         AC_MSG_CHECKING(for aio_read)
5303                         AC_LINK_IFELSE([#include <aio.h>
5304 int main() { struct aiocb a; return aio_read(&a); }],
5305 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5306 [AC_MSG_RESULT(no)])
5308                         AC_MSG_CHECKING(for aio_write)
5309                         AC_LINK_IFELSE([#include <aio.h>
5310 int main() { struct aiocb a; return aio_write(&a); }],
5311 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5312 [AC_MSG_RESULT(no)])
5314                         AC_MSG_CHECKING(for aio_fsync)
5315                         AC_LINK_IFELSE([#include <aio.h>
5316 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5317 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5318 [AC_MSG_RESULT(no)])
5320                         AC_MSG_CHECKING(for aio_return)
5321                         AC_LINK_IFELSE([#include <aio.h>
5322 int main() { struct aiocb a; return aio_return(&a); }],
5323 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5324 [AC_MSG_RESULT(no)])
5326                         AC_MSG_CHECKING(for aio_error)
5327                         AC_LINK_IFELSE([#include <aio.h>
5328 int main() { struct aiocb a; return aio_error(&a); }],
5329 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5330 [AC_MSG_RESULT(no)])
5332                         AC_MSG_CHECKING(for aio_cancel)
5333                         AC_LINK_IFELSE([#include <aio.h>
5334 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5335 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5336 [AC_MSG_RESULT(no)])
5338                         AC_MSG_CHECKING(for aio_suspend)
5339                         AC_LINK_IFELSE([#include <aio.h>
5340 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5341 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5342 [AC_MSG_RESULT(no)])
5343                 fi
5345                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5346                         AC_MSG_CHECKING(for aio_read64)
5347                         AC_LINK_IFELSE([#include <aio.h>
5348 int main() { struct aiocb a; return aio_read64(&a); }],
5349 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5350 [AC_MSG_RESULT(no)])
5352                         AC_MSG_CHECKING(for aio_write64)
5353                         AC_LINK_IFELSE([#include <aio.h>
5354 int main() { struct aiocb a; return aio_write64(&a); }],
5355 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5356 [AC_MSG_RESULT(no)])
5358                         AC_MSG_CHECKING(for aio_fsync64)
5359                         AC_LINK_IFELSE([#include <aio.h>
5360 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5361 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5362 [AC_MSG_RESULT(no)])
5364                         AC_MSG_CHECKING(for aio_return64)
5365                         AC_LINK_IFELSE([#include <aio.h>
5366 int main() { struct aiocb a; return aio_return64(&a); }],
5367 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5368 [AC_MSG_RESULT(no)])
5370                         AC_MSG_CHECKING(for aio_error64)
5371                         AC_LINK_IFELSE([#include <aio.h>
5372 int main() { struct aiocb a; return aio_error64(&a); }],
5373 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5374 [AC_MSG_RESULT(no)])
5376                         AC_MSG_CHECKING(for aio_cancel64)
5377                         AC_LINK_IFELSE([#include <aio.h>
5378 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5379 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5380 [AC_MSG_RESULT(no)])
5382                         AC_MSG_CHECKING(for aio_suspend64)
5383                         AC_LINK_IFELSE([#include <aio.h>
5384 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5385 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5386 [AC_MSG_RESULT(no)])
5387                 fi
5388             ;;
5389         esac
5390         ;;
5391   *)
5392     AC_MSG_RESULT(no)
5393     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5394     ;;
5395   esac ],
5396   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5397   AC_MSG_RESULT(no)
5400 #################################################
5401 # check for sendfile support
5403 with_sendfile_support=yes
5404 AC_MSG_CHECKING(whether to check to support sendfile)
5405 AC_ARG_WITH(sendfile-support,
5406 [  --with-sendfile-support Check for sendfile support (default=yes)],
5407 [ case "$withval" in
5408   yes)
5410         AC_MSG_RESULT(yes);
5412         case "$host_os" in
5413         *linux*)
5414                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5415                 AC_TRY_LINK([#include <sys/sendfile.h>],
5417 int tofd, fromfd;
5418 off64_t offset;
5419 size_t total;
5420 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5422 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5424                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5425                 AC_TRY_LINK([#include <sys/sendfile.h>],
5427 int tofd, fromfd;
5428 off_t offset;
5429 size_t total;
5430 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5432 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5434 # Try and cope with broken Linux sendfile....
5435                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5436                 AC_TRY_LINK([\
5437 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5438 #undef _FILE_OFFSET_BITS
5439 #endif
5440 #include <sys/sendfile.h>],
5442 int tofd, fromfd;
5443 off_t offset;
5444 size_t total;
5445 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5447 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5449         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5450                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5451                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5452                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5453         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5454                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5455                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5456                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5457         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5458                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5459                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5460         else
5461                 AC_MSG_RESULT(no);
5462         fi
5464         ;;
5465         *freebsd* | *dragonfly* )
5466                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5467                 AC_TRY_LINK([\
5468 #include <sys/types.h>
5469 #include <unistd.h>
5470 #include <sys/socket.h>
5471 #include <sys/uio.h>],
5473         int fromfd, tofd, ret, total=0;
5474         off_t offset, nwritten;
5475         struct sf_hdtr hdr;
5476         struct iovec hdtrl;
5477         hdr.headers = &hdtrl;
5478         hdr.hdr_cnt = 1;
5479         hdr.trailers = NULL;
5480         hdr.trl_cnt = 0;
5481         hdtrl.iov_base = NULL;
5482         hdtrl.iov_len = 0;
5483         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5485 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5487         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5488                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5489                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5490                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5491         else
5492                 AC_MSG_RESULT(no);
5493         fi
5494         ;;
5496         *hpux*)
5497                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5498                 AC_TRY_LINK([\
5499 #include <sys/socket.h>
5500 #include <sys/uio.h>],
5502         int fromfd, tofd;
5503         size_t total=0;
5504         struct iovec hdtrl[2];
5505         ssize_t nwritten;
5506         off64_t offset;
5508         hdtrl[0].iov_base = 0;
5509         hdtrl[0].iov_len = 0;
5511         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5513 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5514         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5515                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5516                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5517                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5518         else
5519                 AC_MSG_RESULT(no);
5520         fi
5522                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5523                 AC_TRY_LINK([\
5524 #include <sys/socket.h>
5525 #include <sys/uio.h>],
5527         int fromfd, tofd;
5528         size_t total=0;
5529         struct iovec hdtrl[2];
5530         ssize_t nwritten;
5531         off_t offset;
5533         hdtrl[0].iov_base = 0;
5534         hdtrl[0].iov_len = 0;
5536         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5538 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5539         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5540                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5541                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5542                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5543         else
5544                 AC_MSG_RESULT(no);
5545         fi
5546         ;;
5548         *solaris*)
5549                 AC_CHECK_LIB(sendfile,sendfilev)
5550                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5551                 AC_TRY_LINK([\
5552 #include <sys/sendfile.h>],
5554         int sfvcnt;
5555         size_t xferred;
5556         struct sendfilevec vec[2];
5557         ssize_t nwritten;
5558         int tofd;
5560         sfvcnt = 2;
5562         vec[0].sfv_fd = SFV_FD_SELF;
5563         vec[0].sfv_flag = 0;
5564         vec[0].sfv_off = 0;
5565         vec[0].sfv_len = 0;
5567         vec[1].sfv_fd = 0;
5568         vec[1].sfv_flag = 0;
5569         vec[1].sfv_off = 0;
5570         vec[1].sfv_len = 0;
5571         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5573 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5575         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5576                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5577                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5578                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5579         else
5580                 AC_MSG_RESULT(no);
5581         fi
5583                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5584                 AC_TRY_LINK([\
5585 #include <sys/sendfile.h>],
5587         int sfvcnt;
5588         size_t xferred;
5589         struct sendfilevec vec[2];
5590         ssize_t nwritten;
5591         int tofd;
5593         sfvcnt = 2;
5595         vec[0].sfv_fd = SFV_FD_SELF;
5596         vec[0].sfv_flag = 0;
5597         vec[0].sfv_off = 0;
5598         vec[0].sfv_len = 0;
5600         vec[1].sfv_fd = 0;
5601         vec[1].sfv_flag = 0;
5602         vec[1].sfv_off = 0;
5603         vec[1].sfv_len = 0;
5604         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5606 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5608         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5609                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5610                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5611                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5612         else
5613                 AC_MSG_RESULT(no);
5614         fi
5615         ;;
5616         *aix*)
5617                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5618                 AC_TRY_LINK([\
5619 #include <sys/socket.h>],
5621         int fromfd, tofd;
5622         size_t total=0;
5623         struct sf_parms hdtrl;
5624         ssize_t nwritten;
5625         off64_t offset;
5627         hdtrl.header_data = 0;
5628         hdtrl.header_length = 0;
5629         hdtrl.file_descriptor = fromfd;
5630         hdtrl.file_offset = 0;
5631         hdtrl.file_bytes = 0;
5632         hdtrl.trailer_data = 0;
5633         hdtrl.trailer_length = 0;
5635         nwritten = send_file(&tofd, &hdtrl, 0);
5637 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5638         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5639                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5640                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5641                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5642         else
5643                 AC_MSG_RESULT(no);
5644         fi
5645         ;;
5646         *)
5647         ;;
5648         esac
5649         ;;
5650   *)
5651     AC_MSG_RESULT(no)
5652     ;;
5653   esac ],
5654   AC_MSG_RESULT(yes)
5657 ############################################
5658 # See if we have the Linux readahead syscall.
5660 AC_CACHE_CHECK([for Linux readahead],
5661                 samba_cv_HAVE_LINUX_READAHEAD,[
5662     AC_TRY_LINK([
5663 #if defined(HAVE_UNISTD_H)
5664 #include <unistd.h>
5665 #endif
5666 #include <fcntl.h>],
5667     [ssize_t err = readahead(0,0,0x80000);],
5668     samba_cv_HAVE_LINUX_READAHEAD=yes,
5669     samba_cv_HAVE_LINUX_READAHEAD=no)])
5671 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5672   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5673              [Whether Linux readahead is available])
5676 ############################################
5677 # See if we have the posix_fadvise syscall.
5679 AC_CACHE_CHECK([for posix_fadvise],
5680                 samba_cv_HAVE_POSIX_FADVISE,[
5681     AC_TRY_LINK([
5682 #if defined(HAVE_UNISTD_H)
5683 #include <unistd.h>
5684 #endif
5685 #include <fcntl.h>],
5686     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5687     samba_cv_HAVE_POSIX_FADVISE=yes,
5688     samba_cv_HAVE_POSIX_FADVISE=no)])
5690 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5691   AC_DEFINE(HAVE_POSIX_FADVISE,1,
5692              [Whether posix_fadvise is available])
5697 #################################################
5698 # Check whether winbind is supported on this platform.  If so we need to
5699 # build and install client programs, sbin programs and shared libraries
5701 AC_MSG_CHECKING(whether to build winbind)
5703 # Initially, the value of $host_os decides whether winbind is supported
5705 HAVE_WINBIND=yes
5707 # Define the winbind shared library name and any specific linker flags
5708 # it needs to be built with.
5710 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
5711 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
5712 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5713 NSSSONAMEVERSIONSUFFIX=""
5715 SMB_KRB5_LOCATOR="bin/smb_krb5_locator.$SHLIBEXT"
5717 case "$host_os" in
5718         *linux*)
5719                 NSSSONAMEVERSIONSUFFIX=".2"
5720                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
5721                 ;;
5722         *freebsd[[5-9]]*)
5723                 # FreeBSD winbind client is implemented as a wrapper around
5724                 # the Linux version.
5725                 NSSSONAMEVERSIONSUFFIX=".1"
5726                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
5727                     nsswitch/winbind_nss_linux.o"
5728                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5729                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5730                 ;;
5732         *netbsd*[[3-9]]*)
5733                 # NetBSD winbind client is implemented as a wrapper
5734                 # around the Linux version. It needs getpwent_r() to
5735                 # indicate libc's use of the correct nsdispatch API.
5736                 #
5737                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5738                         WINBIND_NSS_EXTRA_OBJS="\
5739                             nsswitch/winbind_nss_netbsd.o \
5740                             nsswitch/winbind_nss_linux.o"
5741                         WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5742                         WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5743                 else
5744                         HAVE_WINBIND=no
5745                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5746                 fi
5747                 ;;
5748         *irix*)
5749                 # IRIX has differently named shared libraries
5750                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
5751                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
5752                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
5753                 ;;
5754         *solaris*)
5755                 # Solaris winbind client is implemented as a wrapper around
5756                 # the Linux version.
5757                 NSSSONAMEVERSIONSUFFIX=".1"
5758                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
5759                     nsswitch/winbind_nss_linux.o"
5760                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
5761                 ;;
5762         *hpux11*)
5763                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
5764                 ;;
5765         *aix*)
5766                 # AIX has even differently named shared libraries.  No
5767                 # WINS support has been implemented yet.
5768                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
5769                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5770                 WINBIND_NSS="nsswitch/WINBIND"
5771                 WINBIND_WINS_NSS=""
5772                 ;;
5773         *)
5774                 HAVE_WINBIND=no
5775                 winbind_no_reason=", unsupported on $host_os"
5776                 ;;
5777 esac
5779 AC_SUBST(WINBIND_NSS)
5780 AC_SUBST(WINBIND_WINS_NSS)
5781 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5782 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5783 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5784 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5786 AC_SUBST(SMB_KRB5_LOCATOR)
5788 # Check the setting of --with-winbind
5790 AC_ARG_WITH(winbind,
5791 [  --with-winbind          Build winbind (default, if supported by OS)],
5793   case "$withval" in
5794         yes)
5795                 HAVE_WINBIND=yes
5796                 ;;
5797         no)
5798                 HAVE_WINBIND=no
5799                 winbind_reason=""
5800                 ;;
5801   esac ],
5804 # We need unix domain sockets for winbind
5806 if test x"$HAVE_WINBIND" = x"yes"; then
5807         if test x"$samba_cv_unixsocket" = x"no"; then
5808                 winbind_no_reason=", no unix domain socket support on $host_os"
5809                 HAVE_WINBIND=no
5810         fi
5813 # Display test results
5815 if test x"$HAVE_WINBIND" = x"no"; then
5816         WINBIND_NSS=""
5817         WINBIND_WINS_NSS=""
5820 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes"; then
5821         NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5824 if test x"$HAVE_WINBIND" = x"yes"; then
5825         AC_MSG_RESULT(yes)
5826         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5828         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5829         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5830         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5831                 PAM_MODULES="$PAM_MODULES pam_winbind"
5832                 INSTALL_PAM_MODULES="installpammodules"
5833                 UNINSTALL_PAM_MODULES="uninstallpammodules"
5834         fi
5835 else
5836         AC_MSG_RESULT(no$winbind_no_reason)
5839 # Solaris 10 does have new member in nss_XbyY_key
5840 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5841                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5842                 [#include <nss_dbdefs.h>])
5844 # Solaris has some extra fields in struct passwd that need to be
5845 # initialised otherwise nscd crashes.
5847 AC_CHECK_MEMBER(struct passwd.pw_comment,
5848                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5849                 [#include <pwd.h>])
5851 AC_CHECK_MEMBER(struct passwd.pw_age,
5852                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5853                 [#include <pwd.h>])
5855 # AIX 4.3.x and 5.1 do not have as many members in
5856 # struct secmethod_table as AIX 5.2
5857 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5858        [#include <usersec.h>])
5859 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5860        [#include <usersec.h>])
5862 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
5863 AC_TRY_COMPILE([#include <sys/types.h>
5864 #include <sys/socket.h>],
5865 [struct ucred cred;
5866  socklen_t cred_len;
5867  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
5869 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
5870 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
5871     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
5875 #################################################
5876 # Check to see if we should use the included popt
5878 AC_ARG_WITH(included-popt,
5879 [  --with-included-popt    use bundled popt library, not from system],
5881   case "$withval" in
5882         yes)
5883                 INCLUDED_POPT=yes
5884                 ;;
5885         no)
5886                 INCLUDED_POPT=no
5887                 ;;
5888   esac ],
5890 if test x"$INCLUDED_POPT" != x"yes"; then
5891     AC_CHECK_LIB(popt, poptGetContext,
5892                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
5895 AC_MSG_CHECKING(whether to use included popt)
5896 if test x"$INCLUDED_POPT" = x"yes"; then
5897     AC_MSG_RESULT(yes)
5898     BUILD_POPT='$(POPT_OBJ)'
5899     POPTLIBS='$(POPT_OBJ)'
5900     FLAGS1="-I\$(srcdir)/popt"
5901 else
5902     AC_MSG_RESULT(no)
5903         BUILD_POPT=""
5904     POPTLIBS="-lpopt"
5906 AC_SUBST(BUILD_POPT)
5907 AC_SUBST(POPTLIBS)
5908 AC_SUBST(FLAGS1)
5910 #################################################
5911 # Check to see if we should use the included iniparser
5913 AC_ARG_WITH(included-iniparser,
5914 [  --with-included-iniparser    use bundled iniparser library, not from system],
5916   case "$withval" in
5917         yes)
5918                 INCLUDED_INIPARSER=yes
5919                 ;;
5920         no)
5921                 INCLUDED_INIPARSER=no
5922                 ;;
5923   esac ],
5925 if test x"$INCLUDED_INIPARSER" != x"yes"; then
5926     AC_CHECK_LIB(iniparser, iniparser_load,
5927                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
5930 AC_MSG_CHECKING(whether to use included iniparser)
5931 if test x"$INCLUDED_INIPARSER" = x"yes"; then
5932     AC_MSG_RESULT(yes)
5933     BUILD_INIPARSER='$(INIPARSER_OBJ)'
5934         INIPARSERLIBS=""
5935     FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
5936 else
5937     AC_MSG_RESULT(no)
5938         BUILD_INIPARSER=""
5939     INIPARSERLIBS="-liniparser"
5941 AC_SUBST(BUILD_INIPARSER)
5942 AC_SUBST(INIPARSERLIBS)
5943 AC_SUBST(FLAGS1)
5947 #################################################
5948 # Check if the user wants Python
5950 # At the moment, you can use this to set which Python binary to link
5951 # against.  (Libraries built for Python2.2 can't be used by 2.1,
5952 # though they can coexist in different directories.)  In the future
5953 # this might make the Python stuff be built by default.
5955 # Defaulting python breaks the clean target if python isn't installed
5957 PYTHON=
5959 AC_ARG_WITH(python,
5960 [  --with-python=PYTHONNAME  build Python libraries],
5961 [ case "${withval-python}" in
5962   yes)
5963         PYTHON=python
5964         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
5965         ;;
5966   no)
5967         PYTHON=
5968         ;;
5969   *)
5970         PYTHON=${withval-python}
5971         ;;
5972   esac ])
5973 AC_SUBST(PYTHON)
5975 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
5977         eval MODULE_DEFAULT_$i=STATIC
5978 done
5980 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
5982         dnl Fall back to static if we cannot build shared libraries
5983         eval MODULE_DEFAULT_$i=STATIC
5985         if test $BLDSHARED = true; then
5986                 eval MODULE_DEFAULT_$i=SHARED
5987         fi
5988 done
5990 dnl Always built these modules static
5991 MODULE_rpc_spoolss=STATIC
5992 MODULE_rpc_srv=STATIC
5993 MODULE_idmap_tdb=STATIC
5994 MODULE_idmap_passdb=STATIC
5995 MODULE_idmap_nss=STATIC
5997 MODULE_nss_info_template=STATIC
5999 AC_ARG_WITH(static-modules,
6000 [  --with-static-modules=MODULES  Comma-separated list of names of modules to statically link in],
6001 [ if test $withval; then
6002         for i in `echo $withval | sed -e 's/,/ /g'`
6003         do
6004                 eval MODULE_$i=STATIC
6005         done
6006 fi ])
6008 AC_ARG_WITH(shared-modules,
6009 [  --with-shared-modules=MODULES  Comma-separated list of names of modules to build shared],
6010 [ if test $withval; then
6011         for i in `echo $withval | sed -e 's/,/ /g'`
6012         do
6013                         eval MODULE_$i=SHARED
6014         done
6015 fi ])
6017 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6018                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6019 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6020 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6021 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6024 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6025 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_reg.$SHLIBEXT", RPC)
6026 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
6027 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6028 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6029 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6030 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6031 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6032 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_svc.$SHLIBEXT", RPC)
6033 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6034 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6035 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6036 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
6037 SMB_SUBSYSTEM(RPC,smbd/server.o)
6039 SMB_MODULE(idmap_ldap, nsswitch/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6040 SMB_MODULE(idmap_tdb, nsswitch/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6041 SMB_MODULE(idmap_passdb, nsswitch/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6042 SMB_MODULE(idmap_nss, nsswitch/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6043 SMB_MODULE(idmap_rid, nsswitch/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6044 SMB_MODULE(idmap_ad, nsswitch/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6045 SMB_SUBSYSTEM(IDMAP, nsswitch/idmap.o)
6047 SMB_MODULE(nss_info_template, nsswitch/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6048 SMB_SUBSYSTEM(NSS_INFO, nsswitch/nss_info.o)
6050 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6051 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6052 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6053 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6054 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6056 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6057 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6058 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6059 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6060 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6061 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6062 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6063 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6065 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6066 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6067 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6068 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6069 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6070 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6071 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6072 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6073 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6074 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6075 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6076 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6077 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6078 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6079 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6080 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6081 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6082 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6083 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6084 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6085 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6086 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6087 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6088 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6089 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6090 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6092 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6094 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6096 #################################################
6097 # do extra things if we are running insure
6099 if test "${ac_cv_prog_CC}" = "insure"; then
6100         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6103 #################################################
6104 # If run from the build farm, enable NASTY hacks
6105 #################################################
6106 AC_MSG_CHECKING(whether to enable build farm hacks)
6107 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6108         AC_MSG_RESULT(yes)
6109         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6110 else
6111         AC_MSG_RESULT(no)
6114 #################################################
6115 # check for bad librt/libpthread interactions
6117 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6118     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6119     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6120     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6122 SMB_IF_RTSIGNAL_BUG(
6123         [
6124             # Have RT_SIGNAL bug, need to check whether the problem will
6125             # affect anything we have configured.
6127             rt_do_error=no
6128             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6129                 if test x"$rt_signal_lease_ok" = x"no" ; then
6130                     rt_do_error=yes
6131                 fi
6132             fi
6134             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6135                 if test x"$rt_signal_notify_ok" = x"no" ; then
6136                     rt_do_error=yes
6137                 fi
6138             fi
6140             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6141                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6142                 if test x"$rt_signal_aio_ok" = x"no" ; then
6143                     rt_do_error=yes
6144                 fi
6145             fi
6147             if test x"$rt_do_error" = x"yes" ; then
6148                 SMB_IS_LIBPTHREAD_LINKED(
6149                     [
6150                         cat<<MSG
6152 *** On this platforms, linking Samba against pthreads causes problems
6153 *** with the oplock and change notification mechanisms. You may be
6154 *** using pthreads as a side-effect of using the --with-aio-support
6155 *** or --with-profiling-data options. Please remove these and try again.
6158                     ],
6159                     [
6160                         cat<<MSG
6162 *** On this platform, the oplock and change notification mechanisms do not
6163 *** appear to work. Please report this problem to samba-technical@samba.org
6164 *** and attach the config.log file from this directory.
6167                     ])
6168                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6169             fi
6170         ],
6171         [
6172             # no RT_SIGNAL bug, we are golden
6173             SMB_IS_LIBPTHREAD_LINKED(
6174                 [
6175                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6176                 ])
6178         ],
6179         [
6180             # cross compiling, I hope you know what you are doing
6181             true
6182         ])
6186 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6187 LIB_REMOVE_USR_LIB(LDFLAGS)
6188 LIB_REMOVE_USR_LIB(LIBS)
6189 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6191 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6192 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6193 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6195 #################################################
6196 # Display summary of libraries detected
6198 AC_MSG_RESULT([Using libraries:])
6199 AC_MSG_RESULT([    LIBS = $LIBS])
6200 if test x"$with_ads_support" != x"no"; then
6201     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6203 if test x"$with_ldap_support" != x"no"; then
6204     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6206 if test x"$with_dnsupdate_support" != x"no"; then
6207     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6209 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6211 #################################################
6212 # final configure stuff
6214 AC_MSG_CHECKING([configure summary])
6215 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6216            AC_MSG_RESULT(yes),
6217            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6218            AC_MSG_WARN([cannot run when cross-compiling]))
6220 builddir=`pwd`
6221 AC_SUBST(builddir)
6223 # Stuff the smbd-only libraries at the end of the smbd link
6224 # path (if we have them).
6225 SMBD_LIBS="$samba_dmapi_libs"
6226 AC_SUBST(SMBD_LIBS)
6228 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh)
6230 #################################################
6231 # Print very concise instructions on building/use
6232 if test "x$enable_dmalloc" = xyes
6233 then
6234         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6235         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])