source: trunk/samba/source/configure.in @ 30

Last change on this file since 30 was 30, checked in by Paul Smedley, 14 years ago

Code updated to Samba 3.0.25rc2 level

File size: 201.3 KB
Line 
1dnl Process this file with autoconf to produce a configure script.
2
3dnl We must use autotools 2.53 or above
4AC_PREREQ(2.53)
5AC_INIT(include/includes.h)
6AC_CONFIG_HEADER(include/config.h)
7AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
8
9SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
10echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
11
12SAMBA_VERSION_SVN_REVISION=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_SVN_REVISION' | cut -d ' ' -f3-`
13if test -n "${SAMBA_VERSION_SVN_REVISION}";then
14        echo "BUILD REVISION: ${SAMBA_VERSION_SVN_REVISION}"
15fi
16
17AC_LIBREPLACE_LOCATION_CHECKS
18
19AC_DISABLE_STATIC
20AC_ENABLE_SHARED
21
22#################################################
23# Directory handling stuff to support both the
24# legacy SAMBA directories and FHS compliant
25# ones...
26AC_PREFIX_DEFAULT(/usr/local/samba)
27
28rootsbindir="\${SBINDIR}"
29lockdir="\${VARDIR}/locks"
30piddir="\${VARDIR}/locks"
31test "${mandir}" || mandir="\${prefix}/man"
32logfilebase="\${VARDIR}"
33privatedir="\${prefix}/private"
34test "${libdir}" || libdir="\${prefix}/lib"
35pammodulesdir="\${LIBDIR}/security"
36configdir="\${LIBDIR}"
37swatdir="\${prefix}/swat"
38
39AC_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])
53
54#################################################
55# set private directory location
56AC_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])
69
70#################################################
71# set root sbin directory location
72AC_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])
85
86#################################################
87# set lock directory location
88AC_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])
101
102#################################################
103# set pid directory location
104AC_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])
117
118#################################################
119# set SWAT directory location
120AC_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])
133
134#################################################
135# set configuration directory location
136AC_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])
149
150#################################################
151# set log directory location
152AC_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])
165
166#################################################
167# set lib directory location
168AC_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])
181
182#################################################
183# set PAM modules directory location
184AC_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])
197
198#################################################
199# set man directory location
200AC_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])
213
214AC_ARG_WITH(cfenc,
215[  --with-cfenc=HEADERDIR  Use internal CoreFoundation encoding API
216                          for optimization (Mac OS X/Darwin only)],
217[
218# May be in source $withval/CoreFoundation/StringEncodings.subproj.
219# Should have been in framework $withval/CoreFoundation.framework/Headers.
220for d in \
221    $withval/CoreFoundation/StringEncodings.subproj \
222    $withval/StringEncodings.subproj \
223    $withval/CoreFoundation.framework/Headers \
224    $withval/Headers \
225    $withval
226do
227    if test -r $d/CFStringEncodingConverter.h; then
228        ln -sfh $d include/CoreFoundation
229    fi
230done
231])
232
233SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include  -I. -I${srcdir-.}"
234SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
235SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/talloc"
236SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/tdb/include"
237SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
238SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
239
240SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/popt"
241
242## cleanup the $(srcdir) in the Makefile if we are outside of the tree
243if test "x${srcdir-.}" != "x."; then
244        SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
245fi
246
247AC_SUBST(configdir)
248AC_SUBST(lockdir)
249AC_SUBST(piddir)
250AC_SUBST(logfilebase)
251AC_SUBST(privatedir)
252AC_SUBST(swatdir)
253AC_SUBST(bindir)
254AC_SUBST(sbindir)
255AC_SUBST(rootsbindir)
256AC_SUBST(pammodulesdir)
257
258dnl Unique-to-Samba variables we'll be playing with.
259AC_SUBST(SAMBA_CPPFLAGS)
260AC_SUBST(SHELL)
261AC_SUBST(LDSHFLAGS)
262AC_SUBST(SONAMEFLAG)
263AC_SUBST(SHLD)
264AC_SUBST(HOST_OS)
265AC_SUBST(PICFLAG)
266AC_SUBST(PIE_CFLAGS)
267AC_SUBST(PIE_LDFLAGS)
268AC_SUBST(SHLIBEXT)
269AC_SUBST(INSTALLLIBCMD_SH)
270AC_SUBST(INSTALLLIBCMD_A)
271AC_SUBST(UNINSTALLLIBCMD_SH)
272AC_SUBST(UNINSTALLLIBCMD_A)
273AC_SUBST(INSTALL_LIBMSRPC)
274AC_SUBST(UNINSTALL_LIBMSRPC)
275AC_SUBST(LIBMSRPC_SHARED)
276AC_SUBST(LIBMSRPC)
277AC_SUBST(INSTALL_LIBADDNS)
278AC_SUBST(UNINSTALL_LIBADDNS)
279AC_SUBST(LIBADDNS_SHARED)
280AC_SUBST(LIBADDNS)
281AC_SUBST(INSTALL_LIBSMBCLIENT)
282AC_SUBST(UNINSTALL_LIBSMBCLIENT)
283AC_SUBST(LIBSMBCLIENT_SHARED)
284AC_SUBST(LIBSMBCLIENT)
285AC_SUBST(INSTALL_LIBSMBSHAREMODES)
286AC_SUBST(UNINSTALL_LIBSMBSHAREMODES)
287AC_SUBST(LIBSMBSHAREMODES_SHARED)
288AC_SUBST(LIBSMBSHAREMODES)
289AC_SUBST(PRINT_LIBS)
290AC_SUBST(AUTH_LIBS)
291AC_SUBST(ACL_LIBS)
292AC_SUBST(PASSDB_LIBS)
293AC_SUBST(IDMAP_LIBS)
294AC_SUBST(KRB5_LIBS)
295AC_SUBST(UUID_LIBS)
296AC_SUBST(LDAP_LIBS)
297AC_SUBST(PAM_MODULES)
298AC_SUBST(INSTALL_PAM_MODULES)
299AC_SUBST(UNINSTALL_PAM_MODULES)
300AC_SUBST(NSS_MODULES)
301AC_SUBST(EXTRA_BIN_PROGS)
302AC_SUBST(SMBMOUNT_PROGS)
303AC_SUBST(CIFSMOUNT_PROGS)
304AC_SUBST(INSTALL_CIFSMOUNT)
305AC_SUBST(UNINSTALL_CIFSMOUNT)
306AC_SUBST(EXTRA_SBIN_PROGS)
307AC_SUBST(EXTRA_ALL_TARGETS)
308AC_SUBST(CONFIG_LIBS)
309AC_SUBST(NSCD_LIBS)
310
311## check for --enable-debug first before checking CFLAGS before
312## so that we don't mix -O and -g
313AC_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])
318
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.
324if test "x$CFLAGS" = x; then
325  CFLAGS="-O"
326fi
327
328CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
329
330AC_LIBREPLACE_CC_CHECKS
331
332m4_include(lib/socket_wrapper/config.m4)
333
334#################################################
335# set prefix for 'make test'
336selftest_prefix="./"
337AC_SUBST(selftest_prefix)
338AC_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
348])
349
350#################################################
351# set path of samba4's smbtorture
352smbtorture4_path=""
353AC_SUBST(smbtorture4_path)
354AC_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
367])
368
369AC_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])
390
391AC_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])
396
397AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
398
399if test "x$enable_dmalloc" = xyes
400then
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" 
405fi
406
407#################################################
408# check for a shared memory profiling support
409AC_MSG_CHECKING(whether to use profiling)
410AC_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)
424)
425
426dnl Checks for programs.
427
428AC_PROG_INSTALL
429AC_PROG_AWK
430AC_PATH_PROG(PERL, perl)
431
432AC_CHECK_TOOL(AR, ar)
433
434dnl Check if we use GNU ld
435LD=ld
436AC_PROG_LD_GNU
437
438dnl Certain versions of GNU ld the default is not to have the
439dnl --allow-shlib-undefined flag defined.  This causes a stackload of
440dnl warnings when building modules.
441if 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
468fi
469
470dnl look for executable suffix
471AC_EXEEXT
472
473dnl Check if C compiler understands -c and -o at the same time
474AC_PROG_CC_C_O
475if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
476      BROKEN_CC=
477else
478      BROKEN_CC=#
479fi
480AC_SUBST(BROKEN_CC)
481
482dnl Check if the C compiler understands -Werror
483AC_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)])
490if test x"$samba_cv_HAVE_Werror" = x"yes"; then
491   Werror_FLAGS="-Werror"
492else
493dnl Check if the C compiler understands -w2
494AC_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)])
501if test x"$samba_cv_HAVE_w2" = x"yes"; then
502   Werror_FLAGS="-w2"
503fi
504fi
505
506dnl Check if the C compiler understands volatile (it should, being ANSI).
507AC_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)])
510if test x"$samba_cv_volatile" = x"yes"; then
511   AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
512fi
513
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
518AC_SUBST(PIDL_ARGS)
519AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
520    AC_TRY_RUN(
521[
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;
527
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                }
536
537                return 0;
538        }
539],
540        SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
541if 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"
544fi
545
546dnl Figure out the flags to support named structure initializers
547
548LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
549
550UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
551AC_MSG_CHECKING(uname -s)
552AC_MSG_RESULT(${UNAME_S})
553
554UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
555AC_MSG_CHECKING(uname -r)
556AC_MSG_RESULT(${UNAME_R})
557
558UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
559AC_MSG_CHECKING(uname -m)
560AC_MSG_RESULT(${UNAME_M})
561
562UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
563AC_MSG_CHECKING(uname -p)
564AC_MSG_RESULT(${UNAME_P})
565
566dnl 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        ;;
585esac
586
587DYNEXP=
588AC_SUBST(DYNEXP)
589
590dnl Add modules that have to be built by default here
591dnl These have to be built static:
592default_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"
593
594dnl These are preferably build shared, and static if dlopen() is not available
595default_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"
596
597if test "x$developer" = xyes; then
598   default_static_modules="$default_static_modules rpc_rpcecho"
599   default_shared_modules="$default_shared_modules charset_weird"
600fi
601
602#
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.
606#
607case "$host_os" in
608    *hpux*)
609#
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.
613#
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      ;;
635
636#
637# CRAY Unicos has broken const handling
638       *unicos*)
639          AC_MSG_RESULT([disabling const])
640          CPPFLAGS="$CPPFLAGS -Dconst="
641          ;;
642       
643#
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.
646#
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      ;;
652#
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.
659#
660# Solaris uses SYSV printing.  Make sure to set that here.  --jerry
661#
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                ;;
696#
697# IRIX uses SYSV printing.  Make sure to set that here
698#
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                ;;
705#
706# VOS may need to have POSIX support and System V compatibility enabled.
707#
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    ;;
725#
726# Tests needed for SINIX large file support.
727#
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>
735main () {
736#if _LFS64_LARGEFILE == 1
737exit(0);
738#else
739exit(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    ;;
753
754# Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
755#
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>
765main() {
766#if _LFS64_LARGEFILE == 1
767       struct utsname uts;
768       char *release;
769       int major, minor;
770
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__;
775
776       if (libc_major < 2)
777              exit(1);
778       if (libc_minor < 2)
779              exit(1);
780#endif
781
782       /* Ensure this is kernel 2.4 or higher */
783
784       uname(&uts);
785       release = strdup(uts.release);
786       major = atoi(strsep(&release, "."));
787       minor = atoi(strsep(&release, "."));
788
789       if (major > 2 || (major == 2 && minor > 3))
790               exit(0);
791       exit(1);
792#else
793       exit(1);
794#endif
795}
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        ;;
806
807#
808# MacOS X is the *only* system that uses compose character in utf8. This
809# is so horribly broken....
810#
811    *darwin*)
812        AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
813
814# Add a system specific charset module.
815        default_shared_modules="$default_shared_modules charset_macosxfs"
816
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>
824main () {
825#if _LFS64_LARGEFILE == 1
826exit(0);
827#else
828exit(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    ;;
839
840esac
841
842AC_LIBREPLACE_BROKEN_CHECKS
843
844LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
845
846LIBREPLACE_OBJS=""
847for obj in ${LIBREPLACEOBJ}; do
848        LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
849done
850AC_SUBST(LIBREPLACE_OBJS)
851
852# add -ldl to the global LIBS
853LIBS="${LIBS} ${LIBDL}"
854
855AC_CHECK_HEADERS(aio.h arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
856AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
857AC_CHECK_HEADERS(limits.h float.h)
858AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
859AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
860AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
861AC_CHECK_HEADERS(sys/un.h)
862AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
863AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
864AC_CHECK_HEADERS(sys/sysmacros.h)
865AC_CHECK_HEADERS(sys/syslog.h syslog.h)
866AC_CHECK_HEADERS(langinfo.h locale.h)
867AC_CHECK_HEADERS(xfs/libxfs.h)
868
869AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
870#if HAVE_RPC_RPC_H
871#include <rpc/rpc.h>
872#endif
873]])
874
875## These fail to compile on IRIX so just check for their presence
876AC_CHECK_HEADERS(sys/mode.h,,,)
877
878# Look for Darwin headers
879old_CPPFLAGS="$CPPFLAGS"
880CPPFLAGS="-Iinclude $CPPFLAGS"
881AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
882CPPFLAGS="$old_CPPFLAGS"
883
884# In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
885# subdirectory of headers.
886AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
887
888# check for linux on amd64 since valgrind is not quite there yet
889case "$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                ;;
897esac
898
899
900#
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.
903#
904case "$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        ;;
912esac
913AC_CHECK_HEADERS(shadow.h)
914AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
915AC_CHECK_HEADERS(syscall.h sys/syscall.h)
916
917AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
918AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
919
920AC_CHECK_HEADERS(sys/cdefs.h glob.h)
921
922# For experimental utmp support (lastlog on some BSD-like systems)
923AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
924
925AC_CHECK_SIZEOF(int,cross)
926AC_CHECK_SIZEOF(long,cross)
927AC_CHECK_SIZEOF(long long,cross)
928AC_CHECK_SIZEOF(short,cross)
929
930AC_C_CONST
931AC_C_INLINE
932AC_C_BIGENDIAN
933AC_C_CHAR_UNSIGNED
934
935AC_TYPE_SIGNAL
936AC_TYPE_UID_T
937AC_TYPE_MODE_T
938AC_TYPE_OFF_T
939AC_TYPE_SIZE_T
940AC_TYPE_PID_T
941AC_STRUCT_ST_RDEV
942AC_DIRENT_D_OFF
943AC_CHECK_TYPE(ino_t,unsigned)
944AC_CHECK_TYPE(loff_t,off_t)
945AC_CHECK_TYPE(offset_t,loff_t)
946AC_CHECK_TYPE(ssize_t, int)
947AC_CHECK_TYPE(wchar_t, unsigned short)
948AC_CHECK_TYPE(comparison_fn_t,
949[AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])])
950
951############################################
952# for cups support we need libcups, and a handful of header files
953
954AC_ARG_ENABLE(cups,
955[  --enable-cups           Turn on CUPS support (default=auto)])
956
957if test x$enable_cups != xno; then
958        AC_PATH_PROG(CUPS_CONFIG, cups-config)
959
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
968fi
969
970AC_ARG_ENABLE(iprint,
971[  --enable-iprint         Turn on iPrint support (default=yes if cups is yes)])
972
973if 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
979fi
980
981############################################
982# check if the compiler will optimize out function calls
983AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
984    AC_TRY_LINK([
985#include <stdio.h>],
986[
987                if (0) {
988                   this_function_does_not_exist();
989                } else {
990                  return 1;
991                }
992
993],
994        samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
995if 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])
997fi
998
999############################################
1000# check for unix domain sockets
1001AC_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>],
1008[
1009  struct sockaddr_un sunaddr;
1010  sunaddr.sun_family = AF_UNIX;
1011],
1012        samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1013if test x"$samba_cv_unixsocket" = x"yes"; then
1014   AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1015fi
1016
1017
1018AC_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)])
1027if 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])
1029fi
1030
1031AC_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)])
1040if 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])
1042fi
1043
1044AC_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)])
1063if test x"$samba_cv_struct_timespec" = x"yes"; then
1064   AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1065fi
1066
1067# stupid headers have the functions but no declaration. grrrr.
1068AC_HAVE_DECL(errno, [#include <errno.h>])
1069AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1070AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1071AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1072AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1073AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1074AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1075
1076# and glibc has setresuid under linux but the function does
1077# nothing until kernel 2.1.44! very dumb.
1078AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1079    AC_TRY_RUN([#include <errno.h>
1080main() { 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)])
1082if test x"$samba_cv_have_setresuid" = x"yes"; then
1083    AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1084fi
1085
1086# Do the same check for setresguid...
1087#
1088AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1089    AC_TRY_RUN([#include <unistd.h>
1090#include <errno.h>
1091main() { 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)])
1093if test x"$samba_cv_have_setresgid" = x"yes"; then
1094    AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1095fi
1096
1097AC_FUNC_MEMCMP
1098
1099###############################################
1100# Readline included by default unless explicitly asked not to
1101test "${with_readline+set}" != "set" && with_readline=yes
1102
1103# test for where we get readline() from
1104AC_MSG_CHECKING(whether to use readline)
1105AC_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)
1110
1111    AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1112    AC_CHECK_HEADERS(readline/history.h)
1113
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)
1128
1129    # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1130    # alternate readline path
1131    _ldflags=${LDFLAGS}
1132    _cppflags=${CPPFLAGS}
1133
1134    # Add additional search path
1135    LDFLAGS="-L$with_readline/lib $LDFLAGS"
1136    CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1137
1138    AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1139    AC_CHECK_HEADERS(readline/history.h)
1140
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)])
1152
1153    LDFLAGS=$_ldflags
1154    ;;
1155  esac],
1156  AC_MSG_RESULT(no)
1157)
1158AC_SUBST(TERMLIBS)
1159AC_SUBST(TERMLDFLAGS)
1160
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.
1164AC_CHECK_LIB(readline, rl_completion_matches,
1165             [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1166                        [Do we have rl_completion_matches?])],
1167             [],
1168             [$TERMLIBS])
1169
1170# not all readline libs have rl_event_hook or history_list
1171AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1172AC_CHECK_LIB(readline, history_list,
1173             [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1174             [],
1175             [$TERMLIBS])
1176
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.
1183AC_CHECK_FUNCS(connect)
1184if 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
1209fi
1210
1211###############################################
1212# test for where we get yp_get_default_domain() from
1213AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1214AC_CHECK_FUNCS(yp_get_default_domain)
1215
1216# Check if we have execl, if not we need to compile smbrun.
1217AC_CHECK_FUNCS(execl)
1218if test x"$ac_cv_func_execl" = x"no"; then
1219    EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1220fi
1221
1222AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown chmod fchmod chroot link mknod mknod64)
1223AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1224AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1225AC_CHECK_FUNCS(getrlimit fsync memset strlcpy strlcat setpgid)
1226AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1227AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1228AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1229AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1230AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1231AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1232AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1233AC_CHECK_FUNCS(getpwent_r)
1234AC_CHECK_FUNCS(getdents getdents64)
1235AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1236AC_CHECK_FUNCS(syslog vsyslog timegm)
1237AC_CHECK_FUNCS(setlocale nl_langinfo)
1238AC_CHECK_FUNCS(nanosleep)
1239AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1240AC_CHECK_FUNCS(memalign posix_memalign)
1241AC_CHECK_HEADERS(sys/mman.h)
1242# setbuffer, shmget, shm_open are needed for smbtorture
1243AC_CHECK_FUNCS(setbuffer shmget shm_open)
1244
1245# Find a method of generating a stack trace
1246AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1247AC_CHECK_FUNCS(backtrace_symbols)
1248AC_CHECK_LIB(exc, trace_back_stack)
1249
1250echo -n "checking for GPFS GPL libs... "
1251save_LIBS="$LIBS"
1252LIBS="$LIBS -lgpfs_gpl"
1253AC_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)
1257echo $samba_cv_HAVE_GPFS
1258if 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"
1261fi
1262LIBS="$save_LIBS"
1263
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.
1267AC_MSG_CHECKING([for libunwind])
1268save_LIBS=$LIBS
1269if test x"$UNAME_P" = xunknown ; then
1270    # This probably won't link without the platform-specific libunwind.
1271    LIBS="$LIBS -lunwind"
1272else
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"
1276fi
1277
1278AC_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])
1293
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="" ])
1305
1306        LIBS=$save_LIBS
1307    ],
1308    [
1309        AC_MSG_RESULT(no)
1310        LIBS=$save_LIBS
1311    ])
1312
1313# To use libunwind-ptrace, we also need to make some ptrace system calls.
1314if 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            ])
1344fi
1345
1346AC_SUBST(LIBUNWIND_PTRACE)
1347
1348AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1349AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1350AC_CHECK_FUNCS(__getcwd _getcwd)
1351AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1352AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1353AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1354AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1355AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1356AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1357AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1358AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1359AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1360AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1361AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1362AC_CHECK_FUNCS(prctl)
1363
1364AC_TRY_COMPILE([
1365#ifdef HAVE_SYS_PRCTL_H
1366#include <sys/prctl.h>
1367#endif
1368],
1369[int i; i = prtcl(0); ],
1370AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1371
1372#
1373#
1374#
1375case "$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>
1381main() {
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__;
1386
1387       if (libc_major < 2)
1388              exit(1);
1389       if ((libc_major == 2) && (libc_minor <= 3))
1390              exit(1);
1391#endif
1392       exit(0);
1393}
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       ;;
1402esac
1403
1404#
1405# stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1406#
1407
1408if 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
1420fi
1421
1422if 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
1434fi
1435
1436if 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
1448fi
1449
1450#################################################
1451# Check whether struct stat has timestamps with sub-second resolution.
1452# At least IRIX and Solaris have these.
1453#
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
1457#
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.
1461
1462AC_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    ])
1492
1493if 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])
1499fi
1500
1501AC_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    ])
1531
1532if 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])
1538fi
1539
1540#####################################
1541# needed for SRV lookups
1542AC_CHECK_LIB(resolv, dn_expand)
1543AC_CHECK_LIB(resolv, _dn_expand)
1544AC_CHECK_LIB(resolv, __dn_expand)
1545
1546#
1547# Check for the functions putprpwnam, set_auth_parameters,
1548# getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1549# Needed for OSF1 and HPUX.
1550#
1551
1552AC_LIBTESTFUNC(security, putprpwnam)
1553AC_LIBTESTFUNC(sec, putprpwnam)
1554
1555AC_LIBTESTFUNC(security, set_auth_parameters)
1556AC_LIBTESTFUNC(sec, set_auth_parameters)
1557
1558# UnixWare 7.x has its getspnam in -lgen
1559AC_LIBTESTFUNC(gen, getspnam)
1560
1561AC_LIBTESTFUNC(security, getspnam)
1562AC_LIBTESTFUNC(sec, getspnam)
1563
1564AC_LIBTESTFUNC(security, bigcrypt)
1565AC_LIBTESTFUNC(sec, bigcrypt)
1566
1567AC_LIBTESTFUNC(security, getprpwnam)
1568AC_LIBTESTFUNC(sec, getprpwnam)
1569
1570AC_CHECK_FUNCS(strsignal)
1571
1572############################################
1573# Check if we have libattr
1574case "$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  ;;
1591esac
1592
1593########################################################
1594# Do xattr functions take additional options like on Darwin?
1595if test x"$ac_cv_func_getxattr" = x"yes" ; then
1596        AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1597                old_LIBS=$LIBS
1598                LIBS="$LIBS $ACL_LIBS"
1599                AC_TRY_COMPILE([
1600                        #include <sys/types.h>
1601                        #if HAVE_ATTR_XATTR_H
1602                        #include <attr/xattr.h>
1603                        #elif HAVE_SYS_XATTR_H
1604                        #include <sys/xattr.h>
1605                        #endif
1606                ],[
1607                        getxattr(0, 0, 0, 0, 0, 0);
1608                ],
1609                [smb_attr_cv_xattr_add_opt=yes],
1610                [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1611        ])
1612        if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1613                AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1614        fi
1615fi
1616
1617# Check if we have extattr
1618case "$host_os" in
1619  *freebsd4* | *dragonfly* )
1620    AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1621    ;;
1622  *)
1623    AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1624    AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1625    AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1626    AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1627    ;;
1628esac
1629
1630# Set defaults
1631PIE_CFLAGS=""
1632PIE_LDFLAGS=""
1633AC_ARG_ENABLE(pie, [  --enable-pie            Turn on pie support if available (default=yes)])
1634
1635if test "x$enable_pie" != xno
1636then
1637        AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1638        [
1639                cat > conftest.c <<EOF
1640int foo;
1641main () { return 0;}
1642EOF
1643                if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1644                then
1645                        samba_cv_fpie=yes
1646                else
1647                        samba_cv_fpie=no
1648                fi
1649                rm -f conftest*
1650        ])
1651        if test x"${samba_cv_fpie}" = x"yes"
1652        then
1653                PIE_CFLAGS="-fPIE"
1654                PIE_LDFLAGS="-pie"
1655        fi
1656fi
1657
1658# Assume non-shared by default and override below
1659BLDSHARED="false"
1660
1661# these are the defaults, good for lots of systems
1662HOST_OS="$host_os"
1663LDSHFLAGS="-shared"
1664SONAMEFLAG="#"
1665SHLD="\${CC} \${CFLAGS}"
1666PICFLAG="${PIE_CFLAGS}"
1667SHLIBEXT="so"
1668
1669# this bit needs to be modified for each OS that supports share libs
1670# You need to specify how to create a shared library and
1671  # how to compile C code to produce PIC object files
1672
1673  AC_MSG_CHECKING([ability to build shared libraries])
1674
1675  # and these are for particular systems
1676  case "$host_os" in
1677                *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1678                        BLDSHARED="true"
1679                        if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1680                                LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1681                        else
1682                                LDSHFLAGS="-shared -Wl,-Bsymbolic"
1683                        fi
1684                        DYNEXP="-Wl,--export-dynamic"
1685                        PICFLAG="-fPIC"
1686                        SONAMEFLAG="-Wl,-soname="
1687                        AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1688                        ;;
1689                *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1690                        BLDSHARED="true"
1691                        LDSHFLAGS="-G"
1692                        SONAMEFLAG="-h "
1693                        if test "${GCC}" = "yes"; then
1694                                PICFLAG="-fPIC"
1695                                SONAMEFLAG="-Wl,-soname="
1696                                if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1697                                        DYNEXP="-Wl,-E"
1698                                fi
1699                        else
1700                                PICFLAG="-KPIC"
1701                                ## ${CFLAGS} added for building 64-bit shared
1702                                ## libs using Sun's Compiler
1703                                LDSHFLAGS="-G \${CFLAGS}"
1704                        fi
1705                        AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1706                        AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1707                        ;;
1708                *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1709                        BLDSHARED="true"
1710                        LDSHFLAGS="-G"
1711                        SONAMEFLAG="-Wl,-h,"
1712                        PICFLAG="-KPIC"   # Is this correct for SunOS
1713                        AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1714                        AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1715                        ;;
1716                *netbsd* | *freebsd* | *dragonfly* )
1717                        BLDSHARED="true"
1718                        LDSHFLAGS="-shared"
1719                        DYNEXP="-Wl,--export-dynamic"
1720                        SONAMEFLAG="-Wl,-soname,"
1721                        PICFLAG="-fPIC -DPIC"
1722                        AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1723                        AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1724                        ;;
1725                *openbsd*)  BLDSHARED="true"
1726                        LDSHFLAGS="-shared"
1727                        DYNEXP="-Wl,-Bdynamic"
1728                        SONAMEFLAG="-Wl,-soname,"
1729                        PICFLAG="-fPIC"
1730                        AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1731                        AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1732                        ;;
1733                *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1734                        case "$host_os" in
1735                        *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1736                        ;;
1737                        esac
1738                        BLDSHARED="true"
1739                        LDSHFLAGS="-set_version sgi1.0 -shared"
1740                        SONAMEFLAG="-soname "
1741                        SHLD="\${LD}"
1742                        if test "${GCC}" = "yes"; then
1743                                PICFLAG="-fPIC"
1744                        else
1745                                PICFLAG="-KPIC"
1746                        fi
1747                        AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1748                        ;;
1749                *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1750                        BLDSHARED="true"
1751                        LDSHFLAGS="-Wl,-G,-bexpall,-bbigtoc"
1752                        DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
1753                        PICFLAG="-O2"
1754                        # as AIX code is always position independent...
1755                        # .po will just create compile warnings, use po.o:
1756                        if test "${GCC}" != "yes"; then
1757                                ## for funky AIX compiler using strncpy()
1758                                CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1759                        fi
1760
1761                        AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1762                        AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1763                        AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1764                        ;;
1765                *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1766                        # Use special PIC flags for the native HP-UX compiler.
1767                                BLDSHARED="true"
1768                                SHLD="cc"
1769                                LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1770                                SONAMEFLAG="-Wl,+h "
1771                                PICFLAG="+z"
1772                        if test "${GCC}" = "yes"; then
1773                                PICFLAG="-fPIC"
1774                        else
1775                                PICFLAG="+z"
1776                        fi
1777                        if test "$host_cpu" = "ia64"; then
1778                                SHLIBEXT="so"
1779                                DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1780                        else
1781                                SHLIBEXT="sl"
1782                                DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1783                        fi
1784                        AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1785                        AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1786                        ;;
1787                *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1788                        AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1789                        ;;
1790                *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1791                        BLDSHARED="true"
1792                        LDSHFLAGS="-shared"
1793                        SONAMEFLAG="-Wl,-soname,"
1794                        PICFLAG="-fPIC"
1795                        AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1796                        AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1797                        ;;
1798                *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1799                        AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1800                        ;;
1801                *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1802                        BLDSHARED="true"
1803                        LDSHFLAGS="-shared"
1804                        SONAMEFLAG="-Wl,-soname,"
1805                        PICFLAG="-KPIC"
1806                        AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1807                        ;;
1808                *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1809                        AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1810                        ;;
1811                *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1812                        AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1813                        ;;
1814                *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1815                        case "$host" in
1816                                *-univel-*)     if [ test "$GCC" != yes ]; then
1817                                                AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1818                                        fi
1819                                        LDSHFLAGS="-G"
1820                                        DYNEXP="-Bexport"
1821                                ;;
1822                                *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1823                        esac
1824                        AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1825                        ;;
1826
1827                *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1828                        if [ test "$GCC" != yes ]; then
1829                                AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1830                        fi
1831                        LDSHFLAGS="-G"
1832                        AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1833                        ;;
1834                *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1835                        BLDSHARED="false"
1836                        LDSHFLAGS=""
1837                        ;;
1838
1839                *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1840                        BLDSHARED="true"
1841                        LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1842                        SHLIBEXT="dylib"
1843                        AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1844                        ;;
1845
1846                *)
1847                        AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1848                        ;;
1849  esac
1850
1851if test "$enable_shared" != "yes"; then
1852        BLDSHARED=false
1853fi
1854
1855  AC_MSG_RESULT($BLDSHARED)
1856
1857AC_MSG_CHECKING([LDFLAGS])
1858AC_MSG_RESULT([$LDFLAGS])
1859AC_MSG_CHECKING([DYNEXP])
1860AC_MSG_RESULT([$DYNEXP])
1861
1862#######################################################
1863# test whether building a shared library actually works
1864if test $BLDSHARED = true; then
1865
1866AC_MSG_CHECKING([SHLD])
1867AC_MSG_RESULT([$SHLD])
1868AC_MSG_CHECKING([LDSHFLAGS])
1869AC_MSG_RESULT([$LDSHFLAGS])
1870
1871AC_MSG_CHECKING([SHLIBEXT])
1872AC_MSG_RESULT([$SHLIBEXT])
1873AC_MSG_CHECKING([SONAMEFLAG])
1874AC_MSG_RESULT([$SONAMEFLAG])
1875
1876AC_MSG_CHECKING([PICFLAG])
1877AC_MSG_RESULT([$PICFLAG])
1878
1879AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1880AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1881
1882AC_CACHE_CHECK([whether building shared libraries actually works],
1883               [ac_cv_shlib_works],[
1884   # try building a trivial shared library
1885   ac_cv_shlib_works=no
1886   # The $SHLD and $LDSHFLAGS variables may contain references to other
1887   # variables so they need to be eval'ed.
1888   $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1889        shlib.o ${srcdir-.}/tests/shlib.c && \
1890   `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1891        shlib.o && ac_cv_shlib_works=yes
1892   rm -f "shlib.$SHLIBEXT" shlib.o
1893
1894])
1895if test $ac_cv_shlib_works = no; then
1896   BLDSHARED=false
1897fi
1898fi
1899
1900if test x"$BLDSHARED" != x"true"; then
1901        LDSHFLAGS="shared-libraries-disabled"
1902        SONAMEFLAG="shared-libraries-disabled"
1903        NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1904        SHLD="shared-libraries-disabled"
1905        PICFLAG="${PIE_CFLAGS}"
1906        SHLIBEXT="shared_libraries_disabled"
1907fi
1908
1909AC_MSG_CHECKING([used PICFLAG])
1910AC_MSG_RESULT([$PICFLAG])
1911
1912AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1913
1914################
1915
1916AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1917AC_TRY_RUN([#include <stdio.h>
1918main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1919samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1920if test x"$samba_cv_have_longlong" = x"yes"; then
1921    AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1922    AC_CHECK_TYPE(intptr_t, unsigned long long)
1923else
1924    AC_CHECK_TYPE(intptr_t, unsigned long)
1925fi
1926
1927#
1928# Check if the compiler supports the LL prefix on long long integers.
1929# AIX needs this.
1930
1931AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1932    AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1933        samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1934if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1935   AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1936fi
1937
1938
1939AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1940AC_TRY_RUN([#include <stdio.h>
1941#include <sys/stat.h>
1942main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1943samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1944if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1945    AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1946fi
1947
1948AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1949AC_TRY_RUN([
1950#if defined(HAVE_UNISTD_H)
1951#include <unistd.h>
1952#endif
1953#include <stdio.h>
1954#include <sys/stat.h>
1955main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1956samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1957if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1958    AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1959fi
1960
1961AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1962AC_TRY_RUN([
1963#if defined(HAVE_UNISTD_H)
1964#include <unistd.h>
1965#endif
1966#include <stdio.h>
1967#include <sys/stat.h>
1968main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1969samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1970if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1971    AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1972fi
1973
1974AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1975AC_TRY_RUN([
1976#if defined(HAVE_UNISTD_H)
1977#include <unistd.h>
1978#endif
1979#include <stdio.h>
1980#include <sys/stat.h>
1981main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1982samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1983if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1984    AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1985fi
1986
1987AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
1988AC_TRY_RUN([
1989#if defined(HAVE_UNISTD_H)
1990#include <unistd.h>
1991#endif
1992#include <stdio.h>
1993#include <sys/stat.h>
1994main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
1995samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
1996if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
1997    AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
1998fi
1999
2000AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2001AC_TRY_RUN([
2002#if defined(HAVE_UNISTD_H)
2003#include <unistd.h>
2004#endif
2005#include <stdio.h>
2006#include <sys/stat.h>
2007main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2008samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2009if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2010    AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2011fi
2012
2013AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2014AC_TRY_COMPILE([
2015#if defined(HAVE_UNISTD_H)
2016#include <unistd.h>
2017#endif
2018#include <sys/types.h>
2019#include <dirent.h>],
2020[DIR64 de;],
2021samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2022if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2023    AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2024fi
2025
2026AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2027AC_TRY_COMPILE([
2028#if defined(HAVE_UNISTD_H)
2029#include <unistd.h>
2030#endif
2031#include <sys/types.h>
2032#include <dirent.h>],
2033[struct dirent64 de;],
2034samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2035if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2036    AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2037fi
2038
2039AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2040AC_TRY_RUN([
2041#if defined(HAVE_UNISTD_H)
2042#include <unistd.h>
2043#endif
2044#include <sys/types.h>
2045main() { dev_t dev; int i = major(dev); return 0; }],
2046samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2047if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2048    AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2049fi
2050
2051AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2052AC_TRY_RUN([
2053#if defined(HAVE_UNISTD_H)
2054#include <unistd.h>
2055#endif
2056#include <sys/types.h>
2057main() { dev_t dev; int i = minor(dev); return 0; }],
2058samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2059if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2060    AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2061fi
2062
2063AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2064AC_TRY_RUN([
2065#if defined(HAVE_UNISTD_H)
2066#include <unistd.h>
2067#endif
2068#include <sys/types.h>
2069main() { dev_t dev = makedev(1,2); return 0; }],
2070samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2071if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2072    AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2073fi
2074
2075AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2076AC_TRY_RUN([#include <stdio.h>
2077main() { char c; c=250; exit((c > 0)?0:1); }],
2078samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2079if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2080    AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2081fi
2082
2083AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
2084AC_TRY_COMPILE([#include <sys/types.h>
2085#include <sys/socket.h>
2086#include <netinet/in.h>],
2087[struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
2088samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
2089if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
2090    AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
2091fi
2092
2093AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2094AC_TRY_COMPILE([#include <sys/types.h>
2095#include <dirent.h>
2096void seekdir(DIR *d, long loc) { return; }],[return 0;],
2097samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2098if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2099    AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2100fi
2101
2102AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2103AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2104samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2105if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2106    AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2107fi
2108
2109AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2110AC_TRY_RUN([
2111#include <sys/time.h>
2112#include <unistd.h>
2113main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
2114           samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
2115if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2116    AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
2117fi
2118
2119if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2120
2121    # On some systems (eg. Linux) librt can pull in libpthread. We
2122    # don't want this to happen because libpthreads changes signal delivery
2123    # semantics in ways we are not prepared for. This breaks Linux oplocks
2124    # which rely on signals.
2125
2126    AC_LIBTESTFUNC(rt, clock_gettime,
2127            [
2128                            AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2129                                [Whether clock_gettime is available])
2130                            SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2131                            SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2132                            SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2133                        ])
2134
2135fi
2136
2137AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
2138AC_TRY_LINK([#include <stdarg.h>
2139va_list ap1,ap2;], [va_copy(ap1,ap2);],
2140samba_cv_HAVE_VA_COPY=yes,
2141samba_cv_HAVE_VA_COPY=no)])
2142if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
2143    AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
2144else
2145    AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
2146    AC_TRY_LINK([#include <stdarg.h>
2147    va_list ap1,ap2;], [__va_copy(ap1,ap2);],
2148    samba_cv_HAVE___VA_COPY=yes,
2149    samba_cv_HAVE___VA_COPY=no)])
2150    if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
2151        AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
2152    fi
2153fi
2154
2155AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
2156AC_TRY_RUN([
2157#include <sys/types.h>
2158#include <stdarg.h>
2159void foo(const char *format, ...) {
2160       va_list ap;
2161       int len;
2162       char buf[5];
2163
2164       va_start(ap, format);
2165       len = vsnprintf(buf, 0, format, ap);
2166       va_end(ap);
2167       if (len != 5) exit(1);
2168
2169       va_start(ap, format);
2170       len = vsnprintf(0, 0, format, ap);
2171       va_end(ap);
2172       if (len != 5) exit(1);
2173
2174       if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
2175
2176       exit(0);
2177}
2178main() { foo("hello"); }
2179],
2180samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
2181if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
2182    AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
2183fi
2184
2185AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2186AC_TRY_RUN([#include <sys/types.h>
2187#include <dirent.h>
2188main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2189if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2190di->d_name[0] == 0) exit(0); exit(1);} ],
2191samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2192if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2193    AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2194fi
2195
2196AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2197AC_TRY_COMPILE([#include <sys/types.h>
2198#include <utime.h>],
2199[struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2200samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2201if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2202    AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2203fi
2204
2205##############
2206# Check utmp details, but only if our OS offers utmp.h
2207if test x"$ac_cv_header_utmp_h" = x"yes"; then
2208dnl  utmp and utmpx come in many flavours
2209dnl  We need to check for many of them
2210dnl  But we don't need to do each and every one, because our code uses
2211dnl  mostly just the utmp (not utmpx) fields.
2212
2213AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2214
2215AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2216AC_TRY_COMPILE([#include <sys/types.h>
2217#include <utmp.h>],
2218[struct utmp ut;  ut.ut_name[0] = 'a';],
2219samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2220if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2221    AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2222fi
2223
2224AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2225AC_TRY_COMPILE([#include <sys/types.h>
2226#include <utmp.h>],
2227[struct utmp ut;  ut.ut_user[0] = 'a';],
2228samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2229if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2230    AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2231fi
2232
2233AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2234AC_TRY_COMPILE([#include <sys/types.h>
2235#include <utmp.h>],
2236[struct utmp ut;  ut.ut_id[0] = 'a';],
2237samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2238if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2239    AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2240fi
2241
2242AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2243AC_TRY_COMPILE([#include <sys/types.h>
2244#include <utmp.h>],
2245[struct utmp ut;  ut.ut_host[0] = 'a';],
2246samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2247if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2248    AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2249fi
2250
2251AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2252AC_TRY_COMPILE([#include <sys/types.h>
2253#include <utmp.h>],
2254[struct utmp ut;  time_t t; ut.ut_time = t;],
2255samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2256if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2257    AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2258fi
2259
2260AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2261AC_TRY_COMPILE([#include <sys/types.h>
2262#include <utmp.h>],
2263[struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2264samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2265if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2266    AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2267fi
2268
2269AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2270AC_TRY_COMPILE([#include <sys/types.h>
2271#include <utmp.h>],
2272[struct utmp ut;  ut.ut_type = 0;],
2273samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2274if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2275    AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2276fi
2277
2278AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2279AC_TRY_COMPILE([#include <sys/types.h>
2280#include <utmp.h>],
2281[struct utmp ut;  ut.ut_pid = 0;],
2282samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2283if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2284    AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2285fi
2286
2287AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2288AC_TRY_COMPILE([#include <sys/types.h>
2289#include <utmp.h>],
2290[struct utmp ut;  ut.ut_exit.e_exit = 0;],
2291samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2292if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2293    AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2294fi
2295
2296AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2297AC_TRY_COMPILE([#include <sys/types.h>
2298#include <utmp.h>],
2299[struct utmp ut;  ut.ut_addr = 0;],
2300samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2301if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2302    AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2303fi
2304
2305if test x$ac_cv_func_pututline = xyes ; then
2306  AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2307  AC_TRY_COMPILE([#include <sys/types.h>
2308#include <utmp.h>],
2309  [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2310  samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2311  if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2312      AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2313  fi
2314fi
2315
2316AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2317AC_TRY_COMPILE([#include <sys/types.h>
2318#include <utmpx.h>],
2319[struct utmpx ux;  ux.ut_syslen = 0;],
2320samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2321if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2322    AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2323fi
2324
2325fi
2326# end utmp details
2327
2328
2329ICONV_LOCATION=standard
2330LOOK_DIRS="/usr /usr/local /sw /opt"
2331AC_ARG_WITH(libiconv,
2332[  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
2333[
2334  if test "$withval" = "no" ; then
2335    AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2336  else
2337     if test "$withval" != "yes" ; then
2338        ICONV_PATH_SPEC=yes
2339        LOOK_DIRS="$withval"
2340     fi
2341  fi
2342])
2343
2344for i in $LOOK_DIRS ; do
2345    save_LIBS=$LIBS
2346    save_LDFLAGS=$LDFLAGS
2347    save_CPPFLAGS=$CPPFLAGS
2348    ICONV_FOUND="no"
2349    unset libext
2350    CPPFLAGS="$CPPFLAGS -I$i/include"
2351dnl This is here to handle -withval stuff for --with-libiconv
2352dnl Perhaps we should always add a -L
2353
2354dnl Check lib and lib32 library variants to cater for IRIX ABI-specific
2355dnl installation paths. This gets a little tricky since we might have iconv
2356dnl in both libiconv and in libc. In this case the jm_ICONV test will always
2357dnl succeed when the header is found. To counter this, make sure the
2358dnl library directory is there and check the ABI directory first (which
2359dnl should be harmless on other systems.
2360dnl For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2361    for l in "lib32" "lib" "lib/hpux32"; do
2362        if test -d "$i/$l" ; then
2363                LDFLAGS="$save_LDFLAGS -L$i/$l"
2364        LIBS=
2365        export LDFLAGS LIBS CPPFLAGS
2366dnl Try to find iconv(3)
2367                jm_ICONV($i/$l)
2368                if test x"$ICONV_FOUND" = "xyes" ; then
2369            libext="$l"
2370            break;
2371        fi
2372        fi
2373    done
2374
2375    if test x"$ICONV_FOUND" = "xyes" ; then
2376        LDFLAGS=$save_LDFLAGS
2377        LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2378        CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2379        LIBS="$save_LIBS"
2380        ICONV_LOCATION=$i
2381        export LDFLAGS LIBS CPPFLAGS
2382dnl Now, check for a working iconv ... we want to do it here because
2383dnl there might be a working iconv further down the list of LOOK_DIRS
2384
2385        ############
2386        # check for iconv in libc
2387        ic_save_LIBS="$LIBS"
2388        if test x"$ICONV_PATH_SPEC" = "xyes" ; then
2389           LIBS="$LIBS -L$ICONV_LOCATION/$libext"
2390        fi
2391        if test x"$jm_cv_lib_iconv" != x; then
2392           LIBS="$LIBS -l$jm_cv_lib_iconv"
2393        fi
2394dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
2395        default_dos_charset=no
2396        default_display_charset=no
2397        default_unix_charset=no
2398
2399        # check for default dos charset name
2400        for j in CP850 IBM850 ; do
2401            rjs_CHARSET($j)
2402            if test x"$ICONV_CHARSET" = x"$j"; then
2403                default_dos_charset="\"$j\""
2404                break
2405            fi
2406        done
2407        # check for default display charset name
2408        for j in ASCII 646 ; do
2409            rjs_CHARSET($j)
2410            if test x"$ICONV_CHARSET" = x"$j"; then
2411                default_display_charset="\"$j\""
2412                break
2413            fi
2414        done
2415        # check for default unix charset name
2416        for j in UTF-8 UTF8 ; do
2417            rjs_CHARSET($j)
2418            if test x"$ICONV_CHARSET" = x"$j"; then
2419                default_unix_charset="\"$j\""
2420                break
2421            fi
2422        done
2423       
2424        if test "$default_dos_charset" != "no" -a \
2425                "$default_dos_charset" != "cross" -a \
2426                "$default_display_charset" != "no" -a \
2427                "$default_display_charset" != "cross" -a \
2428                "$default_unix_charset" != "no" -a \
2429                "$default_unix_charset" != "cross"
2430        then
2431                samba_cv_HAVE_NATIVE_ICONV=yes
2432        else if test "$default_dos_charset" = "cross" -o \
2433                     "$default_display_charset" = "cross" -o \
2434                     "$default_unix_charset" = "cross"
2435        then
2436                samba_cv_HAVE_NATIVE_ICONV=cross
2437        else
2438                samba_cv_HAVE_NATIVE_ICONV=no
2439        fi
2440        fi
2441dnl ])
2442
2443        LIBS="$ic_save_LIBS"
2444        if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
2445           CPPFLAGS=$save_CPPFLAGS
2446           LDFLAGS=$save_LDFLAGS
2447           LIBS=$save_LIBS
2448           if test x"$jm_cv_lib_iconv" != x; then
2449              LIBS="$LIBS -l$jm_cv_lib_iconv"
2450           fi
2451           dnl Add the flags we need to CPPFLAGS and LDFLAGS
2452           CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2453           LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2454           export CPPFLAGS
2455           AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2456           AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2457           AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2458           AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2459           break
2460        fi
2461dnl We didn't find a working iconv, so keep going
2462    fi
2463dnl We only need to clean these up here for the next pass through the loop
2464    CPPFLAGS=$save_CPPFLAGS
2465    LDFLAGS=$save_LDFLAGS
2466    LIBS=$save_LIBS
2467    export LDFLAGS LIBS CPPFLAGS
2468done
2469unset libext
2470
2471
2472if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2473    AC_MSG_WARN([Sufficient support for iconv function was not found.
2474    Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2475   AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2476   AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2477   AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2478fi
2479
2480
2481AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2482AC_TRY_RUN([
2483#include <sys/types.h>
2484#include <fcntl.h>
2485#ifndef F_GETLEASE
2486#define F_GETLEASE      1025
2487#endif
2488main() {
2489       int fd = open("/dev/null", O_RDONLY);
2490       return fcntl(fd, F_GETLEASE, 0) == -1;
2491}
2492],
2493samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2494if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2495    AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2496fi
2497
2498AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2499AC_TRY_RUN([
2500#include <sys/types.h>
2501#include <fcntl.h>
2502#include <signal.h>
2503#ifndef F_NOTIFY
2504#define F_NOTIFY 1026
2505#endif
2506main() {
2507        exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2508}
2509],
2510samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2511if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2512    AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2513fi
2514
2515AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2516AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2517AC_CHECK_FUNC(inotify_init)
2518AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2519],
2520samba_cv_HAVE_INOTIFY=yes,
2521samba_cv_HAVE_INOTIFY=no,
2522samba_cv_HAVE_INOTIFY=cross)
2523
2524if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2525    AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2526fi
2527
2528#################################################
2529# Check if FAM notifications are available. For FAM info, see
2530#       http://oss.sgi.com/projects/fam/
2531#       http://savannah.nongnu.org/projects/fam/
2532AC_ARG_ENABLE(fam,
2533[  --enable-fam            Turn on FAM support (default=auto)])
2534
2535if test x$enable_fam != xno; then
2536    AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2537    if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2538        # On IRIX, libfam requires libC, but other FAM implementations
2539        # might not need it.
2540        AC_CHECK_LIB(fam, FAMOpen2,
2541            [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam"],
2542            [samba_cv_HAVE_LIBFAM=no])
2543
2544        if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2545            samba_fam_xtra=-lC
2546            AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2547                [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam -lC"],
2548                [samba_cv_HAVE_LIBFAM=no])
2549            unset samba_fam_xtra
2550        fi
2551    fi
2552
2553    if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2554        default_shared_modules="$default_shared_modules vfs_notify_fam"
2555        AC_TRY_COMPILE([#include <fam.h>],
2556                    [FAMCodes code = FAMChanged;],
2557                    AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2558                        [Whether fam.h contains a typedef for enum FAMCodes]),
2559                    [])
2560    fi
2561
2562    if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2563        AC_MSG_ERROR(FAM support requested but FAM library not available )
2564    fi
2565fi
2566
2567#################################################
2568# Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2569
2570SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2571
2572AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2573AC_TRY_RUN([
2574#include <sys/types.h>
2575#include <fcntl.h>
2576#include <signal.h>
2577#include <sys/file.h>
2578#ifndef LOCK_MAND
2579#define LOCK_MAND       32
2580#define LOCK_READ       64
2581#endif
2582main() {
2583        exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2584}
2585],
2586samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2587if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2588    AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2589fi
2590
2591
2592AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2593AC_TRY_COMPILE([#include <sys/types.h>
2594#include <fcntl.h>],
2595[oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2596samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2597if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2598    AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2599fi
2600
2601#################################################
2602# Check for POSIX capability support
2603
2604AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2605    AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2606    [], [])
2607
2608if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2609
2610    ac_save_LIBS=$LIBS
2611    AC_LIBTESTFUNC(cap, cap_get_proc)
2612
2613    AC_CACHE_CHECK([for POSIX capabilities],
2614            samba_cv_HAVE_POSIX_CAPABILITIES,
2615            [
2616                AC_TRY_RUN([
2617#include <sys/types.h>
2618#include <sys/capability.h>
2619main() {
2620 cap_t cap;
2621 cap_value_t vals[1];
2622 if (!(cap = cap_get_proc()))
2623   exit(1);
2624 vals[0] = CAP_CHOWN;
2625 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2626 cap_set_proc(cap);
2627 exit(0);
2628}],
2629                samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2630                samba_cv_HAVE_POSIX_CAPABILITIES=no,
2631                samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2632            ])
2633
2634if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2635    AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2636            [Whether POSIX capabilities are available])
2637else
2638    LIBS=$ac_save_LIBS
2639fi
2640
2641fi
2642
2643#
2644# Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2645# This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2646#
2647
2648AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2649AC_TRY_COMPILE([#include <sys/types.h>
2650#if defined(HAVE_RPC_RPC_H)
2651#include <rpc/rpc.h>
2652#endif],
2653[int16 testvar;],
2654samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2655if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2656    AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2657fi
2658
2659AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2660AC_TRY_COMPILE([#include <sys/types.h>
2661#if defined(HAVE_RPC_RPC_H)
2662#include <rpc/rpc.h>
2663#endif],
2664[uint16 testvar;],
2665samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2666if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2667    AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2668fi
2669
2670AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2671AC_TRY_COMPILE([#include <sys/types.h>
2672#if defined(HAVE_RPC_RPC_H)
2673#include <rpc/rpc.h>
2674#endif],
2675[int32 testvar;],
2676samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2677if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2678    AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2679fi
2680
2681AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2682AC_TRY_COMPILE([#include <sys/types.h>
2683#if defined(HAVE_RPC_RPC_H)
2684#include <rpc/rpc.h>
2685#endif],
2686[uint32 testvar;],
2687samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2688if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2689    AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2690fi
2691
2692dnl
2693dnl Some systems (SCO) have a problem including
2694dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2695dnl as a #define in <prot.h> and as part of an enum
2696dnl in <rpc/rpc.h>.
2697dnl
2698
2699AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2700AC_TRY_COMPILE([#include <sys/types.h>
2701#ifdef HAVE_SYS_SECURITY_H
2702#include <sys/security.h>
2703#include <prot.h>
2704#endif  /* HAVE_SYS_SECURITY_H */
2705#if defined(HAVE_RPC_RPC_H)
2706#include <rpc/rpc.h>
2707#endif],
2708[int testvar;],
2709samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2710if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2711    AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2712fi
2713
2714AC_MSG_CHECKING([for test routines])
2715AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2716           AC_MSG_RESULT(yes),
2717           AC_MSG_ERROR([cant find test code. Aborting config]),
2718           AC_MSG_WARN([cannot run when cross-compiling]))
2719
2720AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2721AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2722           samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2723if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2724    AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2725fi
2726
2727AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2728AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2729           samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2730           samba_cv_HAVE_WORKING_AF_LOCAL=no,
2731           samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2732if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2733then
2734    AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2735fi
2736
2737AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2738AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2739           samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2740if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2741    AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2742fi
2743
2744AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2745AC_TRY_RUN([#include <stdlib.h>
2746#include <sys/types.h>
2747#include <sys/stat.h>
2748#include <unistd.h>
2749main() {
2750  struct stat st;
2751  char tpl[20]="/tmp/test.XXXXXX";
2752  int fd = mkstemp(tpl);
2753  if (fd == -1) exit(1);
2754  unlink(tpl);
2755  if (fstat(fd, &st) != 0) exit(1);
2756  if ((st.st_mode & 0777) != 0600) exit(1);
2757  exit(0);
2758}],
2759samba_cv_HAVE_SECURE_MKSTEMP=yes,
2760samba_cv_HAVE_SECURE_MKSTEMP=no,
2761samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2762if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2763    AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2764fi
2765
2766AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
2767        AC_TRY_RUN([#include "${srcdir-.}/tests/os2_delete.c"],
2768                [samba_cv_HAVE_BROKEN_READDIR=no],
2769                        [samba_cv_HAVE_BROKEN_READDIR=yes],
2770                        [samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
2771
2772if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
2773AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
2774        AC_TRY_RUN([
2775#include "${srcdir-.}/lib/repdir.c"
2776#include "${srcdir-.}/tests/os2_delete.c"],
2777        samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
2778fi
2779
2780if test x"$samba_cv_REPLACE_READDIR" = x"yes"; then
2781        AC_DEFINE(REPLACE_READDIR,1,[replace readdir])
2782fi
2783
2784SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2785SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2786SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2787SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2788AC_CHECK_FUNCS(getpagesize)
2789
2790##################
2791# look for a method of finding the list of network interfaces
2792iface=no;
2793AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
2794SAVE_CPPFLAGS="$CPPFLAGS"
2795CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2796AC_TRY_RUN([
2797#define HAVE_IFACE_AIX 1
2798#define AUTOCONF_TEST 1
2799#undef _XOPEN_SOURCE_EXTENDED
2800#include "${srcdir-.}/lib/interfaces.c"],
2801           samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
2802CPPFLAGS="$SAVE_CPPFLAGS"
2803if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
2804    iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
2805fi
2806
2807if test $iface = no; then
2808AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
2809SAVE_CPPFLAGS="$CPPFLAGS"
2810CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2811AC_TRY_RUN([
2812#define HAVE_IFACE_IFCONF 1
2813#define AUTOCONF_TEST 1
2814#include "${srcdir-.}/lib/interfaces.c"],
2815           samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
2816CPPFLAGS="$SAVE_CPPFLAGS"
2817if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
2818    iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
2819fi
2820fi
2821
2822if test $iface = no; then
2823AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
2824SAVE_CPPFLAGS="$CPPFLAGS"
2825CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2826AC_TRY_RUN([
2827#define HAVE_IFACE_IFREQ 1
2828#define AUTOCONF_TEST 1
2829#include "${srcdir-.}/lib/interfaces.c"],
2830           samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
2831CPPFLAGS="$SAVE_CPPFLAGS"
2832if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
2833    iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
2834fi
2835fi
2836
2837
2838################################################
2839# look for a method of setting the effective uid
2840seteuid=no;
2841if test $seteuid = no; then
2842AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2843AC_TRY_RUN([
2844#define AUTOCONF_TEST 1
2845#define USE_SETRESUID 1
2846#include "confdefs.h"
2847#include "${srcdir-.}/lib/util_sec.c"],
2848           samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2849if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2850    seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2851fi
2852fi
2853
2854
2855if test $seteuid = no; then
2856AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2857AC_TRY_RUN([
2858#define AUTOCONF_TEST 1
2859#define USE_SETREUID 1
2860#include "confdefs.h"
2861#include "${srcdir-.}/lib/util_sec.c"],
2862           samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2863if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2864    seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2865fi
2866fi
2867
2868if test $seteuid = no; then
2869AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2870AC_TRY_RUN([
2871#define AUTOCONF_TEST 1
2872#define USE_SETEUID 1
2873#include "confdefs.h"
2874#include "${srcdir-.}/lib/util_sec.c"],
2875           samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2876if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2877    seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2878fi
2879fi
2880
2881if test $seteuid = no; then
2882AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2883AC_TRY_RUN([
2884#define AUTOCONF_TEST 1
2885#define USE_SETUIDX 1
2886#include "confdefs.h"
2887#include "${srcdir-.}/lib/util_sec.c"],
2888           samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2889if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2890    seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2891fi
2892fi
2893
2894
2895AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2896AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2897           samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2898if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2899    AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2900fi
2901
2902AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2903AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2904           samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2905if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2906    AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2907fi
2908
2909AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2910AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2911           samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2912if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2913    AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2914
2915else
2916
2917dnl
2918dnl Don't check for 64 bit fcntl locking if we know that the
2919dnl glibc2.1 broken check has succeeded.
2920dnl
2921
2922  AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2923  AC_TRY_RUN([
2924#if defined(HAVE_UNISTD_H)
2925#include <unistd.h>
2926#endif
2927#include <stdio.h>
2928#include <stdlib.h>
2929
2930#ifdef HAVE_FCNTL_H
2931#include <fcntl.h>
2932#endif
2933
2934#ifdef HAVE_SYS_FCNTL_H
2935#include <sys/fcntl.h>
2936#endif
2937main() { struct flock64 fl64;
2938#if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2939exit(0);
2940#else
2941exit(1);
2942#endif
2943}],
2944       samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2945
2946  if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2947      AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2948  fi
2949fi
2950
2951AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2952AC_TRY_COMPILE([#include <sys/types.h>
2953#include <sys/stat.h>
2954#include <unistd.h>],
2955[struct stat st;  st.st_blocks = 0;],
2956samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2957if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2958    AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2959fi
2960
2961AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2962AC_TRY_COMPILE([#include <sys/types.h>
2963#include <sys/stat.h>
2964#include <unistd.h>],
2965[struct stat st;  st.st_blksize = 0;],
2966samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2967if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2968    AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2969fi
2970
2971AC_CACHE_CHECK([for st_flags in struct stat],
2972        samba_cv_HAVE_STAT_ST_FLAGS,
2973        [
2974            AC_TRY_COMPILE([#include <sys/types.h>
2975#include <sys/stat.h>
2976#include <unistd.h>],
2977            [struct stat st;  st.st_flags = 0;],
2978            samba_cv_HAVE_STAT_ST_FLAGS=yes,
2979            samba_cv_HAVE_STAT_ST_FLAGS=no,
2980            samba_cv_HAVE_STAT_ST_FLAGS=cross)
2981        ])
2982
2983if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2984    AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
2985                [Whether the stat struct has a st_flags member])
2986fi
2987
2988case "$host_os" in
2989*linux*)
2990AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
2991AC_TRY_COMPILE([
2992#ifdef HAVE_SYS_VFS_H
2993#include <sys/vfs.h>
2994#endif
2995#ifdef HAVE_SYS_CAPABILITY_H
2996#include <sys/capability.h>
2997#endif
2998],[int i;],
2999   samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
3000if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
3001   AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
3002fi
3003;;
3004esac
3005
3006AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3007AC_TRY_COMPILE([
3008#include <sys/types.h>
3009#include <sys/acl.h>
3010#if defined(HAVE_RPCSVC_NIS_H)
3011#include <rpcsvc/nis.h>
3012#endif],
3013[int i;],
3014samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3015if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3016        AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3017fi
3018
3019AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3020AC_TRY_RUN([
3021#include <stdio.h>
3022#include <limits.h>
3023main() {
3024        char *newpath = realpath("/tmp", NULL);
3025        exit ((newpath != NULL) ? 0 : 1);
3026}
3027],
3028samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3029if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3030    AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3031fi
3032
3033#################################################
3034# check for AFS clear-text auth support
3035samba_cv_WITH_AFS=no
3036AC_MSG_CHECKING(whether to use AFS clear-text auth)
3037AC_ARG_WITH(afs,
3038[  --with-afs              Include AFS clear-text auth support (default=no) ],
3039[ case "$withval" in
3040  yes|auto)
3041    AC_MSG_RESULT($withval)
3042    samba_cv_WITH_AFS=$withval
3043    ;;
3044  *)
3045    AC_MSG_RESULT(no)
3046    ;;
3047  esac ],
3048  AC_MSG_RESULT(no)
3049)
3050
3051####################################################
3052# check for Linux-specific AFS fake-kaserver support
3053samba_cv_WITH_FAKE_KASERVER=no
3054AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3055AC_ARG_WITH(fake-kaserver,
3056[  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
3057[ case "$withval" in
3058  yes|auto)
3059    AC_MSG_RESULT($withval)
3060    samba_cv_WITH_FAKE_KASERVER=$withval
3061    ;;
3062  *)
3063    AC_MSG_RESULT(no)
3064    ;;
3065  esac ],
3066  AC_MSG_RESULT(no)
3067)
3068
3069#################################################
3070# decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3071if test x"$samba_cv_WITH_AFS" != x"no" ||
3072   test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3073
3074    # see if this box has the afs-headers in /usr/include/afs
3075    AC_MSG_CHECKING(for /usr/include/afs)
3076    if test -d /usr/include/afs; then
3077          CFLAGS="$CFLAGS -I/usr/include/afs"
3078          CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3079          AC_MSG_RESULT(yes)
3080    else
3081      AC_MSG_RESULT(no)
3082    fi
3083
3084    # check for afs.h
3085    have_afs_headers=no
3086    AC_CHECK_HEADERS(afs.h afs/afs.h)
3087    if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3088        if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3089           test x"$samba_cv_WITH_AFS" = x"auto"; then
3090                AC_MSG_WARN([AFS cannot be supported without afs.h])
3091        else
3092                AC_MSG_ERROR([AFS cannot be supported without afs.h])
3093        fi
3094    else
3095        have_afs_headers=yes
3096    fi
3097fi
3098
3099if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3100    AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3101fi
3102
3103#################################################
3104# check whether to compile AFS/NT ACL mapping module
3105samba_cv_WITH_VFS_AFSACL=no
3106AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3107AC_ARG_WITH(vfs-afsacl,
3108[  --with-vfs-afsacl       Include AFS to NT ACL mapping module (default=no) ],
3109[ case "$withval" in
3110  yes|auto)
3111    AC_MSG_RESULT($withval)
3112    samba_cv_WITH_VFS_AFSACL=yes
3113    ;;
3114  *)
3115    AC_MSG_RESULT(no)
3116    ;;
3117  esac ],
3118  AC_MSG_RESULT(no)
3119)
3120
3121if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3122   default_shared_modules="$default_shared_modules vfs_afsacl"
3123fi
3124       
3125if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3126    AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3127fi
3128
3129#################################################
3130# check for the DFS clear-text auth system
3131AC_MSG_CHECKING(whether to use DFS clear-text auth)
3132AC_ARG_WITH(dfs,
3133[  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
3134[ case "$withval" in
3135  yes)
3136    AC_MSG_RESULT(yes)
3137    AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3138    ;;
3139  *)
3140    AC_MSG_RESULT(no)
3141    ;;
3142  esac ],
3143  AC_MSG_RESULT(no)
3144)
3145
3146########################################################
3147# Compile with LDAP support?
3148
3149with_ldap_support=auto
3150AC_MSG_CHECKING([for LDAP support])
3151
3152AC_ARG_WITH(ldap,
3153[  --with-ldap             LDAP support (default yes)],
3154[ case "$withval" in
3155    yes|no)
3156        with_ldap_support=$withval
3157        ;;
3158  esac ])
3159
3160AC_MSG_RESULT($with_ldap_support)
3161
3162SMBLDAP=""
3163AC_SUBST(SMBLDAP)
3164SMBLDAPUTIL=""
3165AC_SUBST(SMBLDAPUTIL)
3166LDBLDAP=""
3167AC_SUBST(LDBLDAP)
3168
3169if test x"$with_ldap_support" != x"no"; then
3170
3171  ##################################################################
3172  # first test for ldap.h and lber.h
3173  # (ldap.h is required for this test)
3174  AC_CHECK_HEADERS(ldap.h lber.h)
3175
3176  if test x"$ac_cv_header_ldap_h" != x"yes"; then
3177        if test x"$with_ldap_support" = x"yes"; then
3178         AC_MSG_ERROR(ldap.h is needed for LDAP support)
3179        else
3180         AC_MSG_WARN(ldap.h is needed for LDAP support)
3181        fi
3182       
3183        with_ldap_support=no
3184  fi
3185
3186  ##################################################################
3187  # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3188  # unsigned int in include/includes.h
3189  case $host_os in
3190        *hpux*)
3191         AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3192         AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3193        with_ldap_support=yes
3194        ;;
3195        *)
3196        AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3197        if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3198                if test x"$with_ldap_support" = x"yes"; then
3199                AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3200                else
3201                AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3202                fi
3203                with_ldap_support=no
3204        fi
3205        ;;
3206  esac
3207fi
3208
3209if test x"$with_ldap_support" != x"no"; then
3210  ac_save_LIBS=$LIBS
3211
3212  ##################################################################
3213  # we might need the lber lib on some systems. To avoid link errors
3214  # this test must be before the libldap test
3215  AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3216
3217  ########################################################
3218  # now see if we can find the ldap libs in standard paths
3219  AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3220
3221  ########################################################
3222  # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3223  # Check found in pam_ldap 145.
3224  AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3225
3226  LIBS="$LIBS $LDAP_LIBS"
3227  AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3228    AC_TRY_COMPILE([
3229        #include <lber.h>
3230        #include <ldap.h>],
3231        [ldap_set_rebind_proc(0, 0, 0);],
3232        [smb_ldap_cv_ldap_set_rebind_proc=3],
3233        [smb_ldap_cv_ldap_set_rebind_proc=2]
3234    )
3235  ])
3236
3237  AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3238
3239  AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3240
3241  if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3242    AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3243    CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3244    default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3245    default_shared_modules="$default_shared_modules";
3246    SMBLDAP="lib/smbldap.o"
3247    SMBLDAPUTIL="lib/smbldap_util.o"
3248    with_ldap_support=yes
3249    AC_MSG_CHECKING(whether LDAP support is used)
3250    AC_MSG_RESULT(yes)
3251  else
3252    if test x"$with_ldap_support" = x"yes"; then
3253        AC_MSG_ERROR(libldap is needed for LDAP support)
3254    else
3255        AC_MSG_WARN(libldap is needed for LDAP support)
3256    fi
3257
3258    LDAP_LIBS=""
3259    with_ldap_support=no
3260  fi
3261  LIBS=$ac_save_LIBS
3262fi
3263
3264
3265#################################################
3266# active directory support
3267
3268with_ads_support=auto
3269AC_MSG_CHECKING([for Active Directory and krb5 support])
3270
3271AC_ARG_WITH(ads,
3272[  --with-ads              Active Directory support (default auto)],
3273[ case "$withval" in
3274    yes|no)
3275        with_ads_support="$withval"
3276        ;;
3277  esac ])
3278
3279AC_MSG_RESULT($with_ads_support)
3280
3281FOUND_KRB5=no
3282KRB5_LIBS=""
3283
3284if test x"$with_ldap_support" != x"yes"; then
3285
3286    if test x"$with_ads_support" = x"yes"; then
3287        AC_MSG_ERROR(Active Directory Support requires LDAP support)
3288    elif test x"$with_ads_support" = x"auto"; then
3289        AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3290        with_ads_support=no
3291    fi
3292
3293else
3294
3295    # Check to see whether there is enough LDAP functionality to be able
3296    # to build AD support.
3297
3298# HPUX only has ldap_init; ok, we take care of this in smbldap.c
3299case "$host_os" in
3300        *hpux*)
3301    AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3302
3303    if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3304        if test x"$with_ads_support" = x"yes"; then
3305            AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3306        elif test x"$with_ads_support" = x"auto"; then
3307            AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3308            with_ads_support=no
3309        fi
3310    fi
3311    ;;
3312        *)
3313    AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3314
3315    if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3316        if test x"$with_ads_support" = x"yes"; then
3317            AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3318        elif test x"$with_ads_support" = x"auto"; then
3319            AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3320            with_ads_support=no
3321        fi
3322    fi
3323    ;;
3324esac
3325
3326
3327    AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3328
3329    if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3330        if test x"$with_ads_support" = x"yes"; then
3331            AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3332        elif test x"$with_ads_support" = x"auto"; then
3333            AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3334            with_ads_support=no
3335        fi
3336    fi
3337
3338fi
3339
3340if test x"$with_ads_support" != x"no"; then
3341
3342  # Do no harm to the values of CFLAGS and LIBS while testing for
3343  # Kerberos support.
3344
3345  if test x$FOUND_KRB5 = x"no"; then
3346    #################################################
3347    # check for location of Kerberos 5 install
3348    AC_MSG_CHECKING(for kerberos 5 install path)
3349    AC_ARG_WITH(krb5,
3350    [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
3351    [ case "$withval" in
3352      no)
3353        AC_MSG_RESULT(no krb5-path given)
3354        ;;
3355      yes)
3356        AC_MSG_RESULT(/usr)
3357        FOUND_KRB5=yes
3358        ;;
3359      *)
3360        AC_MSG_RESULT($withval)
3361        KRB5_CFLAGS="-I$withval/include"
3362        KRB5_CPPFLAGS="-I$withval/include"
3363        KRB5_LDFLAGS="-L$withval/lib"
3364        FOUND_KRB5=yes
3365        if test -x "$withval/bin/krb5-config"; then
3366                KRB5CONFIG=$withval/bin/krb5-config
3367        fi
3368        ;;
3369      esac ],
3370      AC_MSG_RESULT(no krb5-path given)
3371    )
3372  fi
3373
3374  #################################################
3375  # check for krb5-config from recent MIT and Heimdal kerberos 5
3376  AC_PATH_PROG(KRB5CONFIG, krb5-config)
3377  AC_MSG_CHECKING(for working krb5-config)
3378  if test -x "$KRB5CONFIG"; then
3379    ac_save_CFLAGS=$CFLAGS
3380    CFLAGS="";export CFLAGS
3381    ac_save_LDFLAGS=$LDFLAGS
3382    LDFLAGS="";export LDFLAGS
3383    KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3384    KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3385    KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3386    KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3387    CFLAGS=$ac_save_CFLAGS;export CFLAGS
3388    LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3389    FOUND_KRB5=yes
3390    AC_MSG_RESULT(yes)
3391  else
3392    AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3393  fi
3394
3395  if test x$FOUND_KRB5 = x"no"; then
3396    #################################################
3397    # see if this box has the SuSE location for the heimdal krb implementation
3398    AC_MSG_CHECKING(for /usr/include/heimdal)
3399    if test -d /usr/include/heimdal; then
3400      if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3401          KRB5_CFLAGS="-I/usr/include/heimdal"
3402          KRB5_CPPFLAGS="-I/usr/include/heimdal"
3403          KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3404          AC_MSG_RESULT(yes)
3405      else
3406          KRB5_CFLAGS="-I/usr/include/heimdal"
3407          KRB5_CPPFLAGS="-I/usr/include/heimdal"
3408          AC_MSG_RESULT(yes)
3409      fi
3410    else
3411      AC_MSG_RESULT(no)
3412    fi
3413  fi
3414
3415  if test x$FOUND_KRB5 = x"no"; then
3416    #################################################
3417    # see if this box has the RedHat location for kerberos
3418    AC_MSG_CHECKING(for /usr/kerberos)
3419    if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3420      KRB5_LDFLAGS="-L/usr/kerberos/lib"
3421      KRB5_CFLAGS="-I/usr/kerberos/include"
3422      KRB5_CPPFLAGS="-I/usr/kerberos/include"
3423      AC_MSG_RESULT(yes)
3424    else
3425      AC_MSG_RESULT(no)
3426    fi
3427  fi
3428
3429  ac_save_CFLAGS=$CFLAGS
3430  ac_save_CPPFLAGS=$CPPFLAGS
3431  ac_save_LDFLAGS=$LDFLAGS
3432
3433  CFLAGS="$KRB5_CFLAGS $CFLAGS"
3434  CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3435  LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3436
3437  KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3438
3439  # now check for krb5.h. Some systems have the libraries without the headers!
3440  # note that this check is done here to allow for different kerberos
3441  # include paths
3442  AC_CHECK_HEADERS(krb5.h)
3443
3444  if test x"$ac_cv_header_krb5_h" = x"no"; then
3445
3446    # Give a warning if AD support was not explicitly requested,
3447    # i.e with_ads_support = auto, otherwise die with an error.
3448
3449    if test x"$with_ads_support" = x"yes"; then
3450      AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3451    else
3452      AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3453    fi
3454
3455    # Turn off AD support and restore CFLAGS and LIBS variables
3456
3457    with_ads_support="no"
3458
3459    CFLAGS=$ac_save_CFLAGS
3460    CPPFLAGS=$ac_save_CPPFLAGS
3461    LDFLAGS=$ac_save_LDFLAGS
3462  fi
3463  AC_CHECK_HEADERS(krb5/locate_plugin.h)
3464fi
3465
3466# Now we have determined whether we really want ADS support
3467use_ads=no
3468if test x"$with_ads_support" != x"no"; then
3469  use_ads=yes
3470  have_gssapi=no
3471  ac_save_LIBS=$LIBS
3472
3473  # now check for gssapi headers.  This is also done here to allow for
3474  # different kerberos include paths
3475  AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3476
3477  ##################################################################
3478  # we might need the k5crypto and com_err libraries on some systems
3479  AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3480  AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3481
3482  # Heimdal checks.
3483  AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3484  AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3485  AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3486
3487  # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3488  AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3489
3490  ########################################################
3491  # now see if we can find the krb5 libs in standard paths
3492  # or as specified above
3493  AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3494  AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3495
3496  ########################################################
3497  # now see if we can find the gssapi libs in standard paths
3498  if test x"$have_gssapi" != x"yes"; then
3499     AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3500  fi
3501
3502  AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3503  AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3504  AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3505  AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3506  AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3507  AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3508  AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3509  AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3510  AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3511  AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3512  AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3513  AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3514  AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3515  AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3516  AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3517  AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3518  AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3519  AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3520  AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3521  AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3522  AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3523  AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3524  AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3525  AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3526  AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3527  AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3528  AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3529  AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3530  AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3531  AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3532  AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3533  AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3534  AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3535  AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3536  AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3537  AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3538  AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3539  AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3540  AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3541
3542  LIBS="$KRB5_LIBS $LIBS"
3543
3544  AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3545        smb_krb5_ticket_has_keyinfo,
3546        [
3547            AC_TRY_COMPILE(
3548            [
3549                #include <krb5.h>
3550            ],
3551            [
3552                krb5_ticket ticket;
3553                krb5_kvno kvno;
3554                krb5_enctype enctype;
3555
3556                enctype = ticket.enc_part.enctype;
3557                kvno = ticket.enc_part.kvno;
3558            ],
3559            [ smb_krb5_ticket_has_keyinfo=yes ],
3560            [ smb_krb5_ticket_has_keyinfo=no ])
3561        ])
3562
3563  if test x"$smb_krb5_ticket_has_keyinfo" = x"yes" ; then
3564        AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3565            [Whether the krb5_ticket structure contains the kvno and enctype])
3566  fi
3567
3568  AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3569          smb_krb5_creds_opt_free_context,
3570          [
3571                AC_TRY_COMPILE([
3572                    #include <krb5.h>],
3573                    [
3574                        krb5_context ctx;
3575                        krb5_get_init_creds_opt *opt = NULL;
3576                        krb5_get_init_creds_opt_free(ctx, opt);
3577                    ],
3578                    [smb_krb5_creds_opt_free_context=yes],
3579                    [smb_krb5_creds_opt_free_context=no]
3580                )
3581          ])
3582
3583  if test x"$smb_krb5_creds_opt_free_context" = x"yes" ; then
3584        AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3585            [Whether krb5_get_init_creds_opt_free takes a context argument])
3586  fi
3587
3588  AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3589    AC_TRY_COMPILE([
3590        #include <krb5.h>],
3591        [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3592        [smb_krb5_verify_checksum=7],
3593        [smb_krb5_verify_checksum=6],
3594    )
3595  ])
3596  AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3597
3598  AC_CACHE_CHECK([for checksum in krb5_checksum],
3599                samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3600    AC_TRY_COMPILE([#include <krb5.h>],
3601      [krb5_checksum cksum; cksum.checksum.length = 0;],
3602      samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3603      samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3604
3605  if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3606    AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3607               [Whether the krb5_checksum struct has a checksum property])
3608  fi
3609
3610  AC_CACHE_CHECK([for etype in EncryptedData],
3611                samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3612    AC_TRY_COMPILE([#include <krb5.h>],
3613      [EncryptedData edata; edata.etype = 0;],
3614      samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3615      samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3616
3617  if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3618    AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3619               [Whether the EncryptedData struct has a etype property])
3620  fi
3621
3622  AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3623                samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3624    AC_TRY_COMPILE([#include <krb5.h>],
3625      [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3626      samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3627      samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3628
3629  if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3630    AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3631               [Whether the krb5_ap_req struct has a ticket pointer])
3632  fi
3633
3634  AC_CACHE_CHECK([for e_data pointer in krb5_error],
3635                samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3636    AC_TRY_COMPILE([#include <krb5.h>],
3637      [krb5_error err; err.e_data = NULL;],
3638      samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3639      samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3640
3641  if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3642    AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3643               [Whether the krb5_error struct has a e_data pointer])
3644  fi
3645
3646  AC_CACHE_CHECK([for krb5_crypto type],
3647                samba_cv_HAVE_KRB5_CRYPTO,[
3648    AC_TRY_COMPILE([#include <krb5.h>],
3649      [krb5_crypto crypto;],
3650      samba_cv_HAVE_KRB5_CRYPTO=yes,
3651      samba_cv_HAVE_KRB5_CRYPTO=no)])
3652
3653  if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3654    AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3655               [Whether the type krb5_crypto exists])
3656  fi
3657
3658  AC_CACHE_CHECK([for krb5_encrypt_block type],
3659                samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3660    AC_TRY_COMPILE([#include <krb5.h>],
3661      [krb5_encrypt_block block;],
3662      samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3663      samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3664
3665  if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3666    AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3667               [Whether the type krb5_encrypt_block exists])
3668  fi
3669
3670  AC_CACHE_CHECK([for addrtype in krb5_address],
3671                samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3672    AC_TRY_COMPILE([#include <krb5.h>],
3673      [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3674      samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3675      samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3676
3677  if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3678    AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3679               [Whether the krb5_address struct has a addrtype property])
3680  fi
3681
3682  AC_CACHE_CHECK([for addr_type in krb5_address],
3683                 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3684    AC_TRY_COMPILE([#include <krb5.h>],
3685      [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3686      samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3687      samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3688
3689  if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3690    AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3691              [Whether the krb5_address struct has a addr_type property])
3692  fi
3693
3694  AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3695                 samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3696                 [AC_TRY_COMPILE([#include <krb5.h>],
3697    [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3698    samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3699
3700  if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3701    AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3702              [Whether the krb5_ticket struct has a enc_part2 property])
3703  fi
3704
3705  AC_CACHE_CHECK([for keyblock in krb5_creds],
3706                 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3707    AC_TRY_COMPILE([#include <krb5.h>],
3708      [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3709      samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3710      samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3711
3712  if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3713    AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3714              [Whether the krb5_creds struct has a keyblock property])
3715  fi
3716
3717  AC_CACHE_CHECK([for session in krb5_creds],
3718                 samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3719    AC_TRY_COMPILE([#include <krb5.h>],
3720      [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3721      samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3722      samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3723
3724  if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3725    AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3726              [Whether the krb5_creds struct has a session property])
3727  fi
3728
3729  AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3730                 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3731    AC_TRY_COMPILE([#include <krb5.h>],
3732      [krb5_keyblock key; key.keyvalue.data = NULL;],
3733      samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3734      samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3735
3736  if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3737    AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3738              [Whether the krb5_keyblock struct has a keyvalue property])
3739  fi
3740
3741  AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3742                 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3743    AC_TRY_COMPILE([#include <krb5.h>],
3744      [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3745      samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3746      samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3747  AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3748                 samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3749    AC_TRY_COMPILE([#include <krb5.h>],
3750      [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3751      samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3752      samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3753# Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3754# w.r.t. arcfour and windows, so we must not enable it here
3755  if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3756          x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3757    AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3758              [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3759  fi
3760
3761  AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3762                 samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3763    AC_TRY_COMPILE([#include <krb5.h>],
3764      [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3765      samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3766      samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3767
3768  if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3769    AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3770              [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3771  fi
3772
3773  AC_CACHE_CHECK([for KV5M_KEYTAB],
3774                 samba_cv_HAVE_KV5M_KEYTAB,[
3775    AC_TRY_COMPILE([#include <krb5.h>],
3776      [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3777      samba_cv_HAVE_KV5M_KEYTAB=yes,
3778      samba_cv_HAVE_KV5M_KEYTAB=no)])
3779
3780  if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3781      AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3782             [Whether the KV5M_KEYTAB option is available])
3783  fi
3784
3785  AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3786                 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3787    AC_TRY_COMPILE([#include <krb5.h>],
3788      [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3789      samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3790      samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3791
3792  if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3793    AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3794              [Whether KRB5_KU_OTHER_CKSUM is available])
3795  fi
3796
3797  AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3798                 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3799    AC_TRY_COMPILE([#include <krb5.h>],
3800      [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3801      samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3802      samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3803
3804  if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3805    AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3806              [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3807  fi
3808
3809  AC_CACHE_CHECK([for the krb5_princ_component macro],
3810                samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3811    AC_TRY_LINK([#include <krb5.h>],
3812      [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3813      samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3814      samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3815
3816  if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3817    AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3818               [Whether krb5_princ_component is available])
3819  fi
3820
3821  AC_CACHE_CHECK([for key in krb5_keytab_entry],
3822                 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3823    AC_TRY_COMPILE([#include <krb5.h>],
3824      [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3825      samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3826      samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3827
3828  if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3829    AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3830              [Whether krb5_keytab_entry has key member])
3831  fi
3832
3833  AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3834                 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3835    AC_TRY_COMPILE([#include <krb5.h>],
3836      [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3837      samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3838      samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3839
3840  if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3841    AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3842              [Whether krb5_keytab_entry has keyblock member])
3843  fi
3844
3845  AC_CACHE_CHECK([for magic in krb5_address],
3846                 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3847    AC_TRY_COMPILE([#include <krb5.h>],
3848      [krb5_address addr; addr.magic = 0;],
3849      samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3850      samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3851
3852  if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3853    AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3854              [Whether the krb5_address struct has a magic property])
3855  fi
3856
3857  AC_CACHE_CHECK([for WRFILE: keytab support],
3858                samba_cv_HAVE_WRFILE_KEYTAB,[
3859    AC_TRY_RUN([
3860#include<krb5.h>
3861  main()
3862  {
3863    krb5_context context;
3864    krb5_keytab keytab;
3865
3866    krb5_init_context(&context);
3867    return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3868  }],
3869  samba_cv_HAVE_WRFILE_KEYTAB=yes,
3870  samba_cv_HAVE_WRFILE_KEYTAB=no)])
3871
3872  if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3873      AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3874               [Whether the WRFILE:-keytab is supported])
3875  fi
3876
3877  AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3878               samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3879    AC_TRY_COMPILE([#include <krb5.h>],
3880    [
3881    krb5_context context;
3882    krb5_principal principal;
3883    krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3884    samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3885    samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3886
3887  if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3888    AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3889              [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3890  fi
3891
3892  AC_CACHE_CHECK([for krb5_addresses type],
3893                samba_cv_HAVE_KRB5_ADDRESSES,[
3894    AC_TRY_COMPILE([#include <krb5.h>],
3895      [krb5_addresses addr;],
3896      samba_cv_HAVE_KRB5_ADDRESSES=yes,
3897      samba_cv_HAVE_KRB5_ADDRESSES=no)])
3898
3899  if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3900    AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3901               [Whether the type krb5_addresses type exists])
3902  fi
3903
3904  AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
3905                samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
3906    AC_TRY_COMPILE([#include <krb5.h>],
3907    [
3908    krb5_mk_error(0,0,0);],
3909    samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
3910    samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
3911
3912  if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
3913    AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
3914              [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
3915  fi
3916
3917
3918  #
3919  #
3920  # Now the decisions whether we can support krb5
3921  #
3922  # NOTE: all tests should be done before this block!
3923  #
3924  #
3925  if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
3926    AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
3927    use_ads=no
3928  fi
3929
3930  if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
3931          x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
3932  then
3933    AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
3934    use_ads=no
3935  fi
3936
3937  if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
3938          x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
3939  then
3940    AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
3941    use_ads=no
3942  fi
3943
3944  if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
3945          x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
3946  then
3947    AC_MSG_WARN(no KT_FREE_FUNCTION detected)
3948    use_ads=no
3949  fi
3950
3951  if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
3952          x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
3953  then
3954    AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
3955    use_ads=no
3956  fi
3957
3958  if test x"$smb_krb5_ticket_has_keyinfo" != x"yes" ; then
3959
3960      # We only need the following functions if we can't get the enctype
3961      # and kvno out of the ticket directly (ie. on Heimdal).
3962
3963      if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
3964      then
3965        AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
3966        use_ads=no
3967      fi
3968
3969      if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
3970      then
3971        AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
3972        use_ads=no
3973      fi
3974
3975  fi
3976
3977  if test x"$use_ads" = x"yes"; then
3978    AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3979    AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3980    if test x"$have_gssapi" = x"yes"; then
3981      AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
3982    fi
3983  else
3984    if test x"$with_ads_support" = x"yes"; then
3985        AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
3986    else
3987        AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
3988    fi
3989    AC_REMOVE_DEFINE(HAVE_KRB5_H)
3990    AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
3991    AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
3992    AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
3993    KRB5_LIBS=""
3994    with_ads_support=no
3995  fi
3996  AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
3997  AC_MSG_RESULT([$use_ads])
3998
3999LIBS="$ac_save_LIBS"
4000fi
4001
4002AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4003PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4004
4005
4006########################################################
4007# Compile with DNS Updates support?
4008
4009with_dnsupdate_support=no
4010AC_MSG_CHECKING([whether to enable DNS Updates support])
4011
4012AC_ARG_WITH(dnsupdate,
4013[  --with-dnsupdate        Enable DNS Updates support (default no)],
4014[ case "$withval" in
4015    yes|no)
4016        with_dnsupdate_support=$withval
4017        ;;
4018  esac ])
4019
4020AC_MSG_RESULT($with_dnsupdate_support)
4021
4022if test x"$with_dnsupdate_support" != x"no"; then
4023
4024  ################################################################
4025  # first test for Active Directory support being enabled
4026  #if test x"$with_ads_support" = x"no"; then
4027  #             AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4028  #             with_dnsupdate_support=no
4029  #fi           
4030  ##################################################################
4031  # then test for uuid.h (necessary to generate unique DNS keynames
4032  # (uuid.h is required for this test)
4033  AC_CHECK_HEADERS(uuid/uuid.h)
4034
4035  if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4036        if test x"$with_dnsupdate_support" = x"yes"; then
4037         AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4038        else
4039         AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4040        fi
4041        with_dnsupdate_support=no
4042  fi
4043fi
4044
4045if test x"$with_dnsupdate_support" != x"no"; then
4046
4047  ########################################################
4048  # Now see if we can find the uuid libs in standard paths
4049  # On some systems, the uuid API is in libc, so we have to
4050  # be careful not to insert a spurious -luuid.
4051
4052  UUID_LIBS=""
4053  AC_LIBTESTFUNC(uuid, uuid_generate,
4054          [
4055            case " $LIBS " in
4056                *\ -luuid\ *)
4057                UUID_LIBS="-luuid"
4058                SMB_REMOVE_LIB(uuid)
4059                ;;
4060            esac
4061
4062            with_dnsupdate_support=yes
4063            AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4064        ],
4065        [
4066            if test x"$with_dnsupdate_support" = x"yes"; then
4067                AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4068            else
4069                AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4070            fi
4071            with_dnsupdate_support=no
4072        ])
4073fi
4074
4075#################################################
4076# check for automount support
4077AC_MSG_CHECKING(whether to use automount)
4078AC_ARG_WITH(automount,
4079[  --with-automount        Include automount support (default=no)],
4080[ case "$withval" in
4081  yes)
4082    AC_MSG_RESULT(yes)
4083    AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4084    ;;
4085  *)
4086    AC_MSG_RESULT(no)
4087    ;;
4088  esac ],
4089  AC_MSG_RESULT(no)
4090)
4091
4092#################################################
4093# check for smbmount support
4094AC_MSG_CHECKING(whether to use smbmount)
4095AC_ARG_WITH(smbmount,
4096[  --with-smbmount         Include smbmount (Linux only) support (default=no)],
4097[ case "$withval" in
4098  yes)
4099        case "$host_os" in
4100        *linux*)
4101                AC_MSG_RESULT(yes)
4102                AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
4103                SMBMOUNT_PROGS="bin/smbmount bin/smbmnt bin/smbumount"
4104                ;;
4105        *)
4106                AC_MSG_ERROR(not on a linux system!)
4107                ;;
4108        esac
4109    ;;
4110  *)
4111    AC_MSG_RESULT(no)
4112    ;;
4113  esac ],
4114  AC_MSG_RESULT(no)
4115)
4116
4117#################################################
4118# check for mount- and umount.cifs support
4119CIFSMOUNT_PROGS=""
4120INSTALL_CIFSMOUNT=""
4121UNINSTALL_CIFSMOUNT=""
4122AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4123AC_ARG_WITH(cifsmount,
4124[  --with-cifsmount        Include mount.cifs and umount.cifs (Linux only) support (default=yes)],
4125[ case "$withval" in
4126  no)
4127        AC_MSG_RESULT(no)
4128        ;;
4129  *)
4130        case "$host_os" in
4131        *linux*)
4132                AC_MSG_RESULT(yes)
4133                AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4134                CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4135                INSTALL_CIFSMOUNT="installcifsmount"
4136                UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4137                ;;
4138        *)
4139                AC_MSG_ERROR(not on a linux system!)
4140                ;;
4141        esac
4142    ;;
4143  esac ],
4144[ case "$host_os" in
4145  *linux*)
4146        AC_MSG_RESULT(yes)
4147        AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4148        CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4149        INSTALL_CIFSMOUNT="installcifsmount"
4150        UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4151        ;;
4152  *)
4153        AC_MSG_RESULT(no)
4154        ;;
4155  esac ]
4156)
4157
4158
4159#################################################
4160# check for a PAM clear-text auth, accounts, password and session support
4161with_pam_for_crypt=no
4162try_pam=no
4163AC_MSG_CHECKING(whether to try PAM support)
4164AC_ARG_WITH(pam,
4165[  --with-pam              Include PAM support (default=no)],
4166[ case "$withval" in
4167  yes|no)
4168    try_pam=$withval
4169    ;;
4170  esac
4171])
4172AC_MSG_RESULT([$try_pam])
4173
4174use_pam=no
4175create_pam_modules=no
4176if test x"${try_pam}" != x"no";then
4177        use_pam=yes
4178        create_pam_modules=yes
4179
4180        AC_CHECK_HEADERS(security/pam_appl.h)
4181        if test x"$ac_cv_header_security_pam_appl_h" != x"yes"; then
4182                if test x"${try_pam}" = x"yes";then
4183                        AC_MSG_ERROR([--with-pam=yes but security/pam_appl.h not found])
4184                fi
4185                use_pam=no
4186                create_pam_modules=no
4187        fi
4188
4189        AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4190        if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4191                if test x"${try_pam}" = x"yes";then
4192                        AC_MSG_ERROR([--with-pam=yes but libpam not found])
4193                fi
4194                use_pam=no
4195                create_pam_modules=no
4196        fi
4197
4198        AC_CHECK_HEADERS(security/pam_modules.h,,,[[
4199                #if HAVE_SECURITY_PAM_APPL_H
4200                #include <security/pam_appl.h>
4201                #endif
4202        ]])
4203       if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
4204                if test x"${try_pam}" = x"yes";then
4205                        AC_MSG_ERROR([--with-pam=yes but security/pam_modules.h not found])
4206       fi
4207                create_pam_modules=no
4208    fi
4209
4210        if test x"$use_pam" = x"yes"; then
4211    AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4212                AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4213                AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4214    with_pam_for_crypt=yes
4215
4216                if test x"$create_pam_modules" = x"yes"; then
4217                        AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4218                        # this checks are optional,
4219                        # we don't care about the results here
4220                        AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4221                        AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4222                else
4223                        AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])         
4224                fi
4225        fi
4226        AC_MSG_CHECKING(whether to use PAM support)
4227        AC_MSG_RESULT([$use_pam])
4228
4229        AC_MSG_CHECKING(whether to have PAM MODULES support)
4230        AC_MSG_RESULT([$create_pam_modules])
4231fi # try_pam != no
4232
4233#################################################
4234# check for pam_smbpass support
4235PAM_MODULES=""
4236INSTALL_PAM_MODULES=""
4237UNINSTALL_PAM_MODULES=""
4238AC_MSG_CHECKING(whether to use pam_smbpass)
4239AC_ARG_WITH(pam_smbpass,
4240[  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
4241[ case "$withval" in
4242  yes)
4243    AC_MSG_RESULT(yes)
4244
4245       # Conditions under which pam_smbpass should not be built.
4246
4247       if test x"$BLDSHARED" != x"true"; then
4248          AC_MSG_ERROR([No support for shared modules])
4249       elif test x"$create_pam_modules" != x"yes"; then
4250          AC_MSG_ERROR([No support for PAM MODULES])
4251       else
4252          PAM_MODULES="pam_smbpass"
4253          INSTALL_PAM_MODULES="installpammodules"
4254          UNINSTALL_PAM_MODULES="uninstallpammodules"
4255       fi
4256    ;;
4257  *)
4258    AC_MSG_RESULT(no)
4259    ;;
4260  esac ],
4261  AC_MSG_RESULT(no)
4262)
4263
4264
4265###############################################
4266# test for where we get crypt() from
4267AC_SEARCH_LIBS(crypt, [crypt],
4268  [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4269  AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4270
4271##
4272## moved after the check for -lcrypt in order to
4273## ensure that the necessary libraries are included
4274## check checking for truncated salt.  Wrapped by the
4275## $with_pam_for_crypt variable as above   --jerry
4276##
4277if test $with_pam_for_crypt = no; then
4278AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4279crypt_LIBS="$LIBS"
4280LIBS="$AUTH_LIBS $LIBS"
4281AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4282        samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4283LIBS="$crypt_LIBS"])
4284if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4285        AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4286fi
4287fi
4288
4289#################################################
4290# check for a NISPLUS_HOME support
4291AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4292AC_ARG_WITH(nisplus-home,
4293[  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
4294[ case "$withval" in
4295  yes)
4296    AC_MSG_RESULT(yes)
4297    AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4298    ;;
4299  *)
4300    AC_MSG_RESULT(no)
4301    ;;
4302  esac ],
4303  AC_MSG_RESULT(no)
4304)
4305
4306#################################################
4307# check for syslog logging
4308AC_MSG_CHECKING(whether to use syslog logging)
4309AC_ARG_WITH(syslog,
4310[  --with-syslog           Include experimental SYSLOG support (default=no)],
4311[ case "$withval" in
4312  yes)
4313    AC_MSG_RESULT(yes)
4314    AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4315    ;;
4316  *)
4317    AC_MSG_RESULT(no)
4318    ;;
4319  esac ],
4320  AC_MSG_RESULT(no)
4321)
4322
4323#################################################
4324# check for experimental disk-quotas support
4325
4326samba_cv_WITH_QUOTAS=auto
4327samba_cv_TRY_QUOTAS=no
4328samba_cv_RUN_QUOTA_TESTS=auto
4329samba_cv_WITH_SYS_QUOTAS=auto
4330samba_cv_TRY_SYS_QUOTAS=auto
4331samba_cv_SYSQUOTA_FOUND=no
4332
4333AC_MSG_CHECKING(whether to try disk-quotas support)
4334AC_ARG_WITH(quotas,
4335[  --with-quotas           Include disk-quota support (default=no)],
4336[ case "$withval" in
4337  yes)
4338    AC_MSG_RESULT(yes)
4339    samba_cv_WITH_QUOTAS=yes
4340    samba_cv_TRY_QUOTAS=yes
4341    samba_cv_RUN_QUOTA_TESTS=yes
4342    #set sys quotas to auto in this case
4343    samba_cv_TRY_SYS_QUOTAS=auto
4344    ;;
4345  auto)
4346    AC_MSG_RESULT(auto)
4347    samba_cv_WITH_QUOTAS=auto
4348    samba_cv_TRY_QUOTAS=auto
4349    samba_cv_RUN_QUOTA_TESTS=auto
4350    #set sys quotas to auto in this case
4351    samba_cv_TRY_SYS_QUOTAS=auto
4352    ;;
4353  no)
4354    AC_MSG_RESULT(no)
4355    samba_cv_WITH_QUOTAS=no
4356    samba_cv_TRY_QUOTAS=no
4357    samba_cv_RUN_QUOTA_TESTS=no
4358    ;;
4359  *)
4360    AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4361    ;;
4362  esac ],
4363  AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4364)
4365
4366AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4367AC_ARG_WITH(sys-quotas,
4368[  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
4369[ case "$withval" in
4370  yes)
4371    AC_MSG_RESULT(yes)
4372    samba_cv_WITH_SYS_QUOTAS=yes
4373    samba_cv_TRY_SYS_QUOTAS=yes
4374    samba_cv_RUN_QUOTA_TESTS=yes
4375    ;;
4376  auto)
4377    AC_MSG_RESULT(auto)
4378    samba_cv_WITH_SYS_QUOTAS=auto
4379    samba_cv_TRY_SYS_QUOTAS=auto
4380    samba_cv_RUN_QUOTA_TESTS=auto
4381    ;;
4382  no)
4383    AC_MSG_RESULT(no)
4384    samba_cv_WITH_SYS_QUOTAS=no
4385    samba_cv_TRY_SYS_QUOTAS=no
4386    ;;
4387  *)
4388    AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4389    ;;
4390  esac ],
4391  AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4392)
4393
4394if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4395AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4396  case "$host_os" in
4397        *linux*)
4398            AC_MSG_RESULT(yes)
4399            samba_cv_TRY_SYS_QUOTAS=yes
4400            samba_cv_RUN_QUOTA_TESTS=yes
4401            ;;
4402        *)
4403            AC_MSG_RESULT(no)
4404            samba_cv_TRY_SYS_QUOTAS=no
4405            ;;
4406  esac
4407fi
4408
4409#############################################
4410# only check for quota stuff if --with-quotas
4411if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4412
4413case "$host_os" in
4414        # on linux we didn't need to test we have builtin support
4415        *linux*)
4416            samba_cv_SYSQUOTA_FOUND=yes
4417            AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4418            samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4419            AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4420            AC_MSG_RESULT(yes)
4421
4422            AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4423            samba_cv_found_xfs_header=yes
4424            AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4425            AC_MSG_RESULT(yes)
4426            ;;
4427        *solaris*)
4428            # need to set this define when using static linking (BUG 1473)
4429            CPPFLAGS="$CPPFLAGS -DSUNOS5"
4430            ;;
4431        *)
4432            ;;
4433esac
4434
4435# some broken header files need this
4436AC_CHECK_HEADER(asm/types.h,[
4437            AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4438            AC_ADD_INCLUDE(<asm/types.h>)
4439            ])
4440
4441# For quotas on Veritas VxFS filesystems
4442AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4443
4444# For sys/quota.h and linux/quota.h
4445AC_CHECK_HEADERS(sys/quota.h)
4446
4447if test x"$samba_cv_found_xfs_header" != x"yes"; then
4448# if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4449AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4450AC_TRY_COMPILE([
4451#include "confdefs.h"
4452#ifdef HAVE_SYS_TYPES_H
4453#include <sys/types.h>
4454#endif
4455#ifdef HAVE_ASM_TYPES_H
4456#include <asm/types.h>
4457#endif
4458#include <sys/quota.h>
4459],[int i = Q_XGETQUOTA;],
4460samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4461if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4462        samba_cv_found_xfs_header=yes
4463fi
4464fi
4465
4466# if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4467AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4468AC_TRY_COMPILE([
4469#include "confdefs.h"
4470#ifdef HAVE_SYS_QUOTA_H
4471#include <sys/quota.h>
4472#endif
4473],[
4474struct dqblk D;
4475D.dqb_fsoftlimit = 0;],
4476samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4477if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4478        AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4479fi
4480
4481##################
4482# look for a working quota system
4483
4484if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4485AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4486AC_TRY_RUN_STRICT([
4487#define HAVE_QUOTACTL_4A 1
4488#define AUTOCONF_TEST 1
4489#include "confdefs.h"
4490#include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4491           samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4492if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4493    samba_cv_SYSQUOTA_FOUND=yes;
4494    AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4495    samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4496fi
4497fi
4498
4499if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4500AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4501AC_TRY_RUN_STRICT([
4502#define HAVE_QUOTACTL_4B 1
4503#define AUTOCONF_TEST 1
4504#include "confdefs.h"
4505#include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4506           samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4507if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4508    echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4509    samba_cv_SYSQUOTA_FOUND=yes;
4510    AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4511    samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4512fi
4513fi
4514
4515if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4516AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4517AC_TRY_RUN_STRICT([
4518#define HAVE_QUOTACTL_3 1
4519#define AUTOCONF_TEST 1
4520#include "confdefs.h"
4521#include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4522           samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4523if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4524    echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4525    samba_cv_SYSQUOTA_FOUND=yes;
4526    AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4527    samba_cv_sysquotas_file="lib/sysquotas_3.c"
4528fi
4529fi
4530
4531#################################################
4532# check for mntent.h and struct mntent
4533AC_CHECK_HEADERS(mntent.h)
4534#################################################
4535# check for setmntent,getmntent,endmntent
4536AC_CHECK_FUNCS(setmntent getmntent endmntent)
4537
4538#################################################
4539# check for devnm.h and struct mntent
4540AC_CHECK_HEADERS(devnm.h)
4541#################################################
4542# check for devnm
4543AC_CHECK_FUNCS(devnm)
4544
4545if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4546    if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4547        # if --with-sys-quotas=yes then build it
4548        # you have can use the get/set quota command smb.conf
4549        # options then
4550        samba_cv_SYSQUOTA_FOUND=auto
4551    fi
4552    if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4553        # if --with-sys-quotas=yes then build it
4554        # you have can use the get/set quota command smb.conf
4555        # options then
4556        samba_cv_TRY_SYS_QUOTAS=auto
4557    fi
4558fi
4559
4560if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4561AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4562SAVE_CPPFLAGS="$CPPFLAGS"
4563CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4564AC_TRY_COMPILE([
4565#include "confdefs.h"
4566#define NO_PROTO_H 1
4567#define NO_CONFIG_H 1
4568#define HAVE_SYS_QUOTAS 1
4569#include "${srcdir-.}/${samba_cv_sysquotas_file}"
4570#include "${srcdir-.}/lib/sysquotas.c"
4571],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4572CPPFLAGS="$SAVE_CPPFLAGS"
4573])
4574if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4575AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4576    if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4577        AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4578        AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4579        samba_cv_WE_USE_SYS_QUOTAS=yes
4580        AC_MSG_RESULT(yes)
4581    else
4582        AC_MSG_RESULT(no)
4583    fi
4584fi
4585fi
4586
4587if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4588AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4589SAVE_CPPFLAGS="$CPPFLAGS"
4590CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4591AC_TRY_COMPILE([
4592#include "confdefs.h"
4593#define NO_PROTO_H 1
4594#define NO_CONFIG_H 1
4595#define HAVE_SYS_QUOTAS 1
4596#define HAVE_XFS_QUOTAS 1
4597#include "${srcdir-.}/lib/sysquotas_xfs.c"
4598],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4599CPPFLAGS="$SAVE_CPPFLAGS"
4600])
4601if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4602    if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4603        AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4604    fi
4605fi
4606fi
4607
4608AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4609SAVE_CPPFLAGS="$CPPFLAGS"
4610CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4611AC_TRY_COMPILE([
4612#include "confdefs.h"
4613#define NO_PROTO_H 1
4614#define NO_CONFIG_H 1
4615#include "${srcdir-.}/smbd/quotas.c"
4616],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4617CPPFLAGS="$SAVE_CPPFLAGS"
4618])
4619if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4620AC_MSG_CHECKING(whether to use the old quota support)
4621    if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4622      if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4623        AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4624        AC_MSG_RESULT(yes)
4625      else
4626        AC_MSG_RESULT(no)
4627      fi
4628    else
4629      AC_MSG_RESULT(no)
4630    fi
4631fi
4632
4633####################
4634# End of quota check samba_cv_RUN_QUOTA_TESTS
4635fi
4636
4637#################################################
4638# check for experimental utmp accounting
4639
4640AC_MSG_CHECKING(whether to support utmp accounting)
4641WITH_UTMP=yes
4642AC_ARG_WITH(utmp,
4643[  --with-utmp             Include utmp accounting (default, if supported by OS)],
4644[ case "$withval" in
4645  no)
4646                WITH_UTMP=no
4647                ;;
4648  *)
4649                WITH_UTMP=yes
4650                ;;
4651  esac ],
4652)
4653
4654# utmp requires utmp.h
4655# Note similar check earlier, when checking utmp details.
4656
4657if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4658        utmp_no_reason=", no utmp.h on $host_os"
4659        WITH_UTMP=no
4660fi
4661
4662# Display test results
4663
4664if test x"$WITH_UTMP" = x"yes"; then
4665        AC_MSG_RESULT(yes)
4666        AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4667else
4668        AC_MSG_RESULT(no$utmp_no_reason)
4669fi
4670
4671INSTALLLIBCMD_SH=:
4672INSTALLLIBCMD_A=:
4673UNINSTALLLIBCMD_SH=:
4674UNINSTALLLIBCMD_A=:
4675
4676if test $BLDSHARED = true; then
4677        INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4678        UNINSTALLLIBCMD_SH="rm -f"
4679fi
4680if test $enable_static = yes; then
4681        INSTALLLIBCMD_A="\$(INSTALLCMD)"
4682        UNINSTALLLIBCMD_A="rm -f"
4683fi
4684
4685#################################################
4686# should we build libmsrpc?
4687INSTALL_LIBMSRPC=
4688UNINSTALL_LIBMSRPC=
4689LIBMSRPC_SHARED=
4690LIBMSRPC=
4691AC_MSG_CHECKING(whether to build the libmsrpc shared library)
4692AC_ARG_WITH(libmsrpc,
4693[  --with-libmsrpc         Build the libmsrpc shared library (default=yes if shared libs supported)],
4694[ case "$withval" in
4695  no)
4696     AC_MSG_RESULT(no)
4697     ;;
4698  *)
4699     if test $BLDSHARED = true; then
4700        LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4701        LIBMSRPC=libmsrpc
4702        AC_MSG_RESULT(yes)
4703     else
4704        enable_static=yes
4705        AC_MSG_RESULT(no shared library support -- will supply static library)
4706     fi
4707     if test $enable_static = yes; then
4708        LIBMSRPC=libmsrpc
4709     fi
4710     INSTALL_LIBMSRPC=installlibmsrpc
4711     UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4712     ;;
4713  esac ],
4714[
4715# if unspecified, default is to built it if possible.
4716  if test $BLDSHARED = true; then
4717     LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4718     LIBMSRPC=libmsrpc
4719     AC_MSG_RESULT(yes)
4720   else
4721     enable_static=yes
4722     AC_MSG_RESULT(no shared library support -- will supply static library)
4723   fi
4724   if test $enable_static = yes; then
4725     LIBMSRPC=libmsrpc
4726  fi]
4727  INSTALL_LIBMSRPC=installlibmsrpc
4728  UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4729)
4730
4731
4732#################################################
4733# should we build libaddns?
4734INSTALL_LIBADDNS=
4735UNINSTALL_LIBADDNS=
4736LIBADDNS_SHARED=
4737LIBADDNS=
4738AC_MSG_CHECKING(whether to build the libaddns shared library)
4739AC_ARG_WITH(libaddns,
4740[  --with-libaddns         Build the libaddns shared library (default=yes if shared libs supported)],
4741[ case "$withval" in
4742  no)
4743     AC_MSG_RESULT(no)
4744     ;;
4745  *)
4746     if test $BLDSHARED = true; then
4747        LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
4748        LIBADDNS=libaddns
4749        AC_MSG_RESULT(yes)
4750     else
4751        enable_static=yes
4752        AC_MSG_RESULT(no shared library support -- will supply static library)
4753     fi
4754     if test $enable_static = yes; then
4755        LIBADDNS=libaddns
4756     fi
4757     INSTALL_LIBADDNS=installlibaddns
4758     UNINSTALL_LIBADDNS=uninstalllibaddns
4759     ;;
4760  esac ],
4761[
4762# if unspecified, default is to built it if possible.
4763  if test $BLDSHARED = true; then
4764     LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
4765     LIBADDNS=libaddns
4766     AC_MSG_RESULT(yes)
4767   else
4768     enable_static=yes
4769     AC_MSG_RESULT(no shared library support -- will supply static library)
4770   fi
4771   if test $enable_static = yes; then
4772     LIBADDNS=libaddns
4773  fi]
4774  INSTALL_LIBADDNS=installlibaddns
4775  UNINSTALL_LIBADDNS=uninstalllibaddns
4776)
4777
4778#################################################
4779# should we build libsmbclient?
4780INSTALL_LIBSMBCLIENT=
4781UNINSTALL_LIBSMBCLIENT=
4782LIBSMBCLIENT_SHARED=
4783LIBSMBCLIENT=
4784AC_MSG_CHECKING(whether to build the libsmbclient shared library)
4785AC_ARG_WITH(libsmbclient,
4786[  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
4787[ case "$withval" in
4788  no)
4789     AC_MSG_RESULT(no)
4790     ;;
4791  *)
4792     if test $BLDSHARED = true; then
4793        LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4794        LIBSMBCLIENT=libsmbclient
4795        AC_MSG_RESULT(yes)
4796     else
4797        enable_static=yes
4798        AC_MSG_RESULT(no shared library support -- will supply static library)
4799     fi
4800     if test $enable_static = yes; then
4801        LIBSMBCLIENT=libsmbclient
4802     fi
4803     INSTALL_LIBSMBCLIENT=installclientlib
4804     UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4805     ;;
4806  esac ],
4807[
4808# if unspecified, default is to built it if possible.
4809  if test $BLDSHARED = true; then
4810     LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4811     LIBSMBCLIENT=libsmbclient
4812     AC_MSG_RESULT(yes)
4813   else
4814     enable_static=yes
4815     AC_MSG_RESULT(no shared library support -- will supply static library)
4816   fi
4817   if test $enable_static = yes; then
4818     LIBSMBCLIENT=libsmbclient
4819  fi]
4820  INSTALL_LIBSMBCLIENT=installclientlib
4821  UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4822)
4823
4824INSTALL_LIBSMBSHAREMODES=
4825LIBSMBSHAREMODES_SHARED=
4826LIBSMBSHAREMODES=
4827AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
4828AC_ARG_WITH(libsmbsharemodes,
4829[  --with-libsmbsharemodes     Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
4830[ case "$withval" in
4831  no)
4832     AC_MSG_RESULT(no)
4833     ;;
4834  *)
4835     if test $BLDSHARED = true; then
4836        LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4837        LIBSMBSHAREMODES=libsmbsharemodes
4838        AC_MSG_RESULT(yes)
4839     else
4840        enable_static=yes
4841        AC_MSG_RESULT(no shared library support -- will supply static library)
4842     fi
4843     if test $enable_static = yes; then
4844        LIBSMBSHAREMODES=libsmbsharemodes
4845     fi
4846     INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4847     UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
4848     ;;
4849  esac ],
4850[
4851# if unspecified, default is to built it if possible.
4852  if test $BLDSHARED = true; then
4853     LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4854     LIBSMBSHAREMODES=libsmbsharemodes
4855     AC_MSG_RESULT(yes)
4856   else
4857     enable_static=yes
4858     AC_MSG_RESULT(no shared library support -- will supply static library)
4859   fi
4860   if test $enable_static = yes; then
4861     LIBSMBSHAREMODES=libsmbsharemodes
4862  fi]
4863  INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4864)
4865
4866#################################################
4867# these tests are taken from the GNU fileutils package
4868AC_CHECKING(how to get filesystem space usage)
4869space=no
4870
4871# Test for statvfs64.
4872if test $space = no; then
4873  # SVR4
4874  AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4875  [AC_TRY_RUN([
4876#if defined(HAVE_UNISTD_H)
4877#include <unistd.h>
4878#endif
4879#include <sys/types.h>
4880#include <sys/statvfs.h>
4881  main ()
4882  {
4883    struct statvfs64 fsd;
4884    exit (statvfs64 (".", &fsd));
4885  }],
4886  fu_cv_sys_stat_statvfs64=yes,
4887  fu_cv_sys_stat_statvfs64=no,
4888  fu_cv_sys_stat_statvfs64=cross)])
4889  if test $fu_cv_sys_stat_statvfs64 = yes; then
4890    space=yes
4891    AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4892  fi
4893fi
4894
4895# Perform only the link test since it seems there are no variants of the
4896# statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4897# because that got a false positive on SCO OSR5.  Adding the declaration
4898# of a `struct statvfs' causes this test to fail (as it should) on such
4899# systems.  That system is reported to work fine with STAT_STATFS4 which
4900# is what it gets when this test fails.
4901if test $space = no; then
4902  # SVR4
4903  AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4904                 [AC_TRY_LINK([#include <sys/types.h>
4905#include <sys/statvfs.h>],
4906                              [struct statvfs fsd; statvfs (0, &fsd);],
4907                              fu_cv_sys_stat_statvfs=yes,
4908                              fu_cv_sys_stat_statvfs=no)])
4909  if test $fu_cv_sys_stat_statvfs = yes; then
4910    space=yes
4911    AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4912  fi
4913fi
4914
4915# smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4916# This is not the case on ancient Linux systems.
4917
4918AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4919    AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4920        samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4921if test x"$samba_cv_fsid_int" = x"yes"; then
4922    AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4923fi
4924
4925if test $space = no; then
4926  # DEC Alpha running OSF/1
4927  AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4928  AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4929  [AC_TRY_RUN([
4930#include <sys/param.h>
4931#include <sys/types.h>
4932#include <sys/mount.h>
4933  main ()
4934  {
4935    struct statfs fsd;
4936    fsd.f_fsize = 0;
4937    exit (statfs (".", &fsd, sizeof (struct statfs)));
4938  }],
4939  fu_cv_sys_stat_statfs3_osf1=yes,
4940  fu_cv_sys_stat_statfs3_osf1=no,
4941  fu_cv_sys_stat_statfs3_osf1=no)])
4942  AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4943  if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4944    space=yes
4945    AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4946  fi
4947fi
4948
4949if test $space = no; then
4950# AIX
4951  AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4952member (AIX, 4.3BSD)])
4953  AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4954  [AC_TRY_RUN([
4955#ifdef HAVE_SYS_PARAM_H
4956#include <sys/param.h>
4957#endif
4958#ifdef HAVE_SYS_MOUNT_H
4959#include <sys/mount.h>
4960#endif
4961#ifdef HAVE_SYS_VFS_H
4962#include <sys/vfs.h>
4963#endif
4964  main ()
4965  {
4966  struct statfs fsd;
4967  fsd.f_bsize = 0;
4968  exit (statfs (".", &fsd));
4969  }],
4970  fu_cv_sys_stat_statfs2_bsize=yes,
4971  fu_cv_sys_stat_statfs2_bsize=no,
4972  fu_cv_sys_stat_statfs2_bsize=no)])
4973  AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4974  if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4975    space=yes
4976    AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4977  fi
4978fi
4979
4980if test $space = no; then
4981# SVR3
4982  AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4983  AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4984  [AC_TRY_RUN([#include <sys/types.h>
4985#include <sys/statfs.h>
4986  main ()
4987  {
4988  struct statfs fsd;
4989  exit (statfs (".", &fsd, sizeof fsd, 0));
4990  }],
4991    fu_cv_sys_stat_statfs4=yes,
4992    fu_cv_sys_stat_statfs4=no,
4993    fu_cv_sys_stat_statfs4=no)])
4994  AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4995  if test $fu_cv_sys_stat_statfs4 = yes; then
4996    space=yes
4997    AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4998  fi
4999fi
5000
5001if test $space = no; then
5002# 4.4BSD and NetBSD
5003  AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5004member (4.4BSD and NetBSD)])
5005  AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5006  [AC_TRY_RUN([#include <sys/types.h>
5007#ifdef HAVE_SYS_PARAM_H
5008#include <sys/param.h>
5009#endif
5010#ifdef HAVE_SYS_MOUNT_H
5011#include <sys/mount.h>
5012#endif
5013  main ()
5014  {
5015  struct statfs fsd;
5016  fsd.f_fsize = 0;
5017  exit (statfs (".", &fsd));
5018  }],
5019  fu_cv_sys_stat_statfs2_fsize=yes,
5020  fu_cv_sys_stat_statfs2_fsize=no,
5021  fu_cv_sys_stat_statfs2_fsize=no)])
5022  AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5023  if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5024    space=yes
5025        AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5026  fi
5027fi
5028
5029if test $space = no; then
5030  # Ultrix
5031  AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5032  AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5033  [AC_TRY_RUN([#include <sys/types.h>
5034#ifdef HAVE_SYS_PARAM_H
5035#include <sys/param.h>
5036#endif
5037#ifdef HAVE_SYS_MOUNT_H
5038#include <sys/mount.h>
5039#endif
5040#ifdef HAVE_SYS_FS_TYPES_H
5041#include <sys/fs_types.h>
5042#endif
5043  main ()
5044  {
5045  struct fs_data fsd;
5046  /* Ultrix's statfs returns 1 for success,
5047     0 for not mounted, -1 for failure.  */
5048  exit (statfs (".", &fsd) != 1);
5049  }],
5050  fu_cv_sys_stat_fs_data=yes,
5051  fu_cv_sys_stat_fs_data=no,
5052  fu_cv_sys_stat_fs_data=no)])
5053  AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5054  if test $fu_cv_sys_stat_fs_data = yes; then
5055    space=yes
5056    AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5057  fi
5058fi
5059
5060#
5061# As a gating factor for large file support, in order to
5062# use <4GB files we must have the following minimal support
5063# available.
5064# long long, and a 64 bit off_t or off64_t.
5065# If we don't have all of these then disable large
5066# file support.
5067#
5068AC_MSG_CHECKING([if large file support can be enabled])
5069AC_TRY_COMPILE([
5070#if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5071#include <sys/types.h>
5072#else
5073__COMPILE_ERROR_
5074#endif
5075],
5076[int i],
5077samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5078if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5079        AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5080fi
5081AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5082
5083#################################################
5084# check for cluster extensions
5085
5086AC_MSG_CHECKING(whether to include cluster support)
5087AC_ARG_WITH(cluster-support,
5088[  --with-cluster-support  Enable cluster extensions (default=no)])
5089if test "x$with_cluster_support" = "xyes"; then
5090    AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5091    AC_MSG_RESULT(yes)
5092else
5093    AC_MSG_RESULT(no)
5094fi
5095
5096
5097#################################################
5098# check for ACL support
5099
5100AC_MSG_CHECKING(whether to support ACLs)
5101AC_ARG_WITH(acl-support,
5102[  --with-acl-support      Include ACL support (default=no)],
5103[ case "$withval" in
5104  yes)
5105
5106        case "$host_os" in
5107        *sysv5*)
5108                AC_MSG_RESULT(Using UnixWare ACLs)
5109                AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5110                default_static_modules="$default_static_modules vfs_solarisacl"
5111                ;;
5112        *solaris*)
5113                AC_MSG_RESULT(Using solaris ACLs)
5114                AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5115                ACL_LIBS="$ACL_LIBS -lsec"
5116                default_static_modules="$default_static_modules vfs_solarisacl"
5117                ;;
5118        *hpux*)
5119                AC_MSG_RESULT(Using HPUX ACLs)
5120                AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5121                default_static_modules="$default_static_modules vfs_hpuxacl"
5122                ;;
5123        *irix*)
5124                AC_MSG_RESULT(Using IRIX ACLs)
5125                AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5126                default_static_modules="$default_static_modules vfs_irixacl"
5127                ;;
5128        *aix*)
5129                AC_MSG_RESULT(Using AIX ACLs)
5130                AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5131                default_static_modules="$default_static_modules vfs_aixacl"
5132                ;;
5133        *osf*)
5134                AC_MSG_RESULT(Using Tru64 ACLs)
5135                AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5136                ACL_LIBS="$ACL_LIBS -lpacl"
5137                default_static_modules="$default_static_modules vfs_tru64acl"
5138                ;;
5139        *freebsd[[5-9]]*)
5140                AC_MSG_RESULT(Using FreeBSD posix ACLs)
5141                AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
5142                AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5143                ;;
5144        *linux*)
5145                AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5146                AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5147                AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
5148                        acl_LIBS=$LIBS
5149                        LIBS="$LIBS -lacl"
5150                        AC_TRY_LINK([
5151                                #include <sys/types.h>
5152                                #include <sys/acl.h>
5153                        ],[
5154                                acl_t acl;
5155                                int entry_id;
5156                                acl_entry_t *entry_p;
5157                                return acl_get_entry(acl, entry_id, entry_p);
5158                        ],
5159                        [samba_cv_HAVE_POSIX_ACLS=yes],
5160                        [samba_cv_HAVE_POSIX_ACLS=no])
5161                        LIBS=$acl_LIBS
5162                ])
5163                if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5164                        AC_MSG_RESULT(Using posix ACLs)
5165                        AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5166                        AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
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_permset_t permset_d;
5174                                        acl_perm_t perm;
5175                                        return acl_get_perm_np(permset_d, perm);
5176                                ],
5177                                [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5178                                [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5179                                LIBS=$acl_LIBS
5180                        ])
5181                        if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5182                                AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5183                        fi
5184                fi
5185            ;;
5186         *)
5187                AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5188                AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
5189                        acl_LIBS=$LIBS
5190                        LIBS="$LIBS -lacl"
5191                        AC_TRY_LINK([
5192                                #include <sys/types.h>
5193                                #include <sys/acl.h>
5194                        ],[
5195                                acl_t acl;
5196                                int entry_id;
5197                                acl_entry_t *entry_p;
5198                                return acl_get_entry( acl, entry_id, entry_p);
5199                        ],
5200                        [samba_cv_HAVE_POSIX_ACLS=yes],
5201                        [samba_cv_HAVE_POSIX_ACLS=no])
5202                        LIBS=$acl_LIBS
5203                ])
5204                if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5205                        AC_MSG_RESULT(Using posix ACLs)
5206                        AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5207                        AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
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_permset_t permset_d;
5215                                        acl_perm_t perm;
5216                                        return acl_get_perm_np( permset_d, perm);
5217                                ],
5218                                [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5219                                [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5220                                LIBS=$acl_LIBS
5221                        ])
5222                        if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5223                                AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5224                        fi
5225                fi
5226            ;;
5227        esac
5228        ;;
5229  *)
5230    AC_MSG_RESULT(no)
5231    AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5232    ;;
5233  esac ],
5234  AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5235  AC_MSG_RESULT(no)
5236)
5237
5238if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5239   default_static_modules="$default_static_modules vfs_posixacl"
5240fi
5241
5242#################################################
5243# check for AIO support
5244
5245AC_MSG_CHECKING(whether to support asynchronous io)
5246AC_ARG_WITH(aio-support,
5247[  --with-aio-support      Include asynchronous io support (default=no)],
5248[ case "$withval" in
5249  yes)
5250
5251        AC_MSG_RESULT(yes)
5252        case "$host_os" in
5253        *)
5254                AIO_LIBS=$LIBS
5255                AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5256                AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5257                AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5258                aio_LIBS=$LIBS
5259                LIBS=$AIO_LIBS
5260                AC_TRY_LINK([#include <sys/types.h>
5261#include <aio.h>],
5262[ struct aiocb a; return aio_read(&a);],
5263samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5264                LIBS=$aio_LIBS])
5265                AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5266                aio_LIBS=$LIBS
5267                LIBS=$AIO_LIBS
5268                AC_TRY_LINK([#include <sys/types.h>
5269#include <aio.h>],
5270[ struct aiocb64 a; return aio_read64(&a);],
5271samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5272                LIBS=$aio_LIBS])
5273                if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5274                        AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5275                        AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5276                        LIBS=$AIO_LIBS
5277                elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5278                        AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5279                        LIBS=$AIO_LIBS
5280                fi
5281
5282                if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5283                        AC_MSG_CHECKING(for aio_read)
5284                        AC_LINK_IFELSE([#include <aio.h>
5285int main() { struct aiocb a; return aio_read(&a); }],
5286[AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5287[AC_MSG_RESULT(no)])
5288
5289                        AC_MSG_CHECKING(for aio_write)
5290                        AC_LINK_IFELSE([#include <aio.h>
5291int main() { struct aiocb a; return aio_write(&a); }],
5292[AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5293[AC_MSG_RESULT(no)])
5294
5295                        AC_MSG_CHECKING(for aio_fsync)
5296                        AC_LINK_IFELSE([#include <aio.h>
5297int main() { struct aiocb a; return aio_fsync(1, &a); }],
5298[AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5299[AC_MSG_RESULT(no)])
5300
5301                        AC_MSG_CHECKING(for aio_return)
5302                        AC_LINK_IFELSE([#include <aio.h>
5303int main() { struct aiocb a; return aio_return(&a); }],
5304[AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5305[AC_MSG_RESULT(no)])
5306
5307                        AC_MSG_CHECKING(for aio_error)
5308                        AC_LINK_IFELSE([#include <aio.h>
5309int main() { struct aiocb a; return aio_error(&a); }],
5310[AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5311[AC_MSG_RESULT(no)])
5312
5313                        AC_MSG_CHECKING(for aio_cancel)
5314                        AC_LINK_IFELSE([#include <aio.h>
5315int main() { struct aiocb a; return aio_cancel(1, &a); }],
5316[AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5317[AC_MSG_RESULT(no)])
5318
5319                        AC_MSG_CHECKING(for aio_suspend)
5320                        AC_LINK_IFELSE([#include <aio.h>
5321int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5322[AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5323[AC_MSG_RESULT(no)])
5324                fi
5325
5326                if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5327                        AC_MSG_CHECKING(for aio_read64)
5328                        AC_LINK_IFELSE([#include <aio.h>
5329int main() { struct aiocb a; return aio_read64(&a); }],
5330[AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5331[AC_MSG_RESULT(no)])
5332
5333                        AC_MSG_CHECKING(for aio_write64)
5334                        AC_LINK_IFELSE([#include <aio.h>
5335int main() { struct aiocb a; return aio_write64(&a); }],
5336[AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5337[AC_MSG_RESULT(no)])
5338
5339                        AC_MSG_CHECKING(for aio_fsync64)
5340                        AC_LINK_IFELSE([#include <aio.h>
5341int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5342[AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5343[AC_MSG_RESULT(no)])
5344
5345                        AC_MSG_CHECKING(for aio_return64)
5346                        AC_LINK_IFELSE([#include <aio.h>
5347int main() { struct aiocb a; return aio_return64(&a); }],
5348[AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5349[AC_MSG_RESULT(no)])
5350
5351                        AC_MSG_CHECKING(for aio_error64)
5352                        AC_LINK_IFELSE([#include <aio.h>
5353int main() { struct aiocb a; return aio_error64(&a); }],
5354[AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5355[AC_MSG_RESULT(no)])
5356
5357                        AC_MSG_CHECKING(for aio_cancel64)
5358                        AC_LINK_IFELSE([#include <aio.h>
5359int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5360[AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5361[AC_MSG_RESULT(no)])
5362
5363                        AC_MSG_CHECKING(for aio_suspend64)
5364                        AC_LINK_IFELSE([#include <aio.h>
5365int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5366[AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5367[AC_MSG_RESULT(no)])
5368                fi
5369            ;;
5370        esac
5371        ;;
5372  *)
5373    AC_MSG_RESULT(no)
5374    AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5375    ;;
5376  esac ],
5377  AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5378  AC_MSG_RESULT(no)
5379)
5380
5381#################################################
5382# check for sendfile support
5383
5384with_sendfile_support=yes
5385AC_MSG_CHECKING(whether to check to support sendfile)
5386AC_ARG_WITH(sendfile-support,
5387[  --with-sendfile-support Check for sendfile support (default=yes)],
5388[ case "$withval" in
5389  yes)
5390
5391        AC_MSG_RESULT(yes);
5392
5393        case "$host_os" in
5394        *linux*)
5395                AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5396                AC_TRY_LINK([#include <sys/sendfile.h>],
5397[\
5398int tofd, fromfd;
5399off64_t offset;
5400size_t total;
5401ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5402],
5403samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5404
5405                AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5406                AC_TRY_LINK([#include <sys/sendfile.h>],
5407[\
5408int tofd, fromfd;
5409off_t offset;
5410size_t total;
5411ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5412],
5413samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5414
5415# Try and cope with broken Linux sendfile....
5416                AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5417                AC_TRY_LINK([\
5418#if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5419#undef _FILE_OFFSET_BITS
5420#endif
5421#include <sys/sendfile.h>],
5422[\
5423int tofd, fromfd;
5424off_t offset;
5425size_t total;
5426ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5427],
5428samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5429
5430        if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5431                AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5432                AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5433                AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5434        elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5435                AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5436                AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5437                AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5438        elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5439                AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5440                AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5441        else
5442                AC_MSG_RESULT(no);
5443        fi
5444
5445        ;;
5446        *freebsd* | *dragonfly* )
5447                AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5448                AC_TRY_LINK([\
5449#include <sys/types.h>
5450#include <unistd.h>
5451#include <sys/socket.h>
5452#include <sys/uio.h>],
5453[\
5454        int fromfd, tofd, ret, total=0;
5455        off_t offset, nwritten;
5456        struct sf_hdtr hdr;
5457        struct iovec hdtrl;
5458        hdr.headers = &hdtrl;
5459        hdr.hdr_cnt = 1;
5460        hdr.trailers = NULL;
5461        hdr.trl_cnt = 0;
5462        hdtrl.iov_base = NULL;
5463        hdtrl.iov_len = 0;
5464        ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5465],
5466samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5467
5468        if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5469                AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5470                AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5471                AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5472        else
5473                AC_MSG_RESULT(no);
5474        fi
5475        ;;
5476
5477        *hpux*)
5478                AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5479                AC_TRY_LINK([\
5480#include <sys/socket.h>
5481#include <sys/uio.h>],
5482[\
5483        int fromfd, tofd;
5484        size_t total=0;
5485        struct iovec hdtrl[2];
5486        ssize_t nwritten;
5487        off64_t offset;
5488
5489        hdtrl[0].iov_base = 0;
5490        hdtrl[0].iov_len = 0;
5491
5492        nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5493],
5494samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5495        if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5496                AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5497                AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5498                AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5499        else
5500                AC_MSG_RESULT(no);
5501        fi
5502
5503                AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5504                AC_TRY_LINK([\
5505#include <sys/socket.h>
5506#include <sys/uio.h>],
5507[\
5508        int fromfd, tofd;
5509        size_t total=0;
5510        struct iovec hdtrl[2];
5511        ssize_t nwritten;
5512        off_t offset;
5513
5514        hdtrl[0].iov_base = 0;
5515        hdtrl[0].iov_len = 0;
5516
5517        nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5518],
5519samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5520        if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5521                AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5522                AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5523                AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5524        else
5525                AC_MSG_RESULT(no);
5526        fi
5527        ;;
5528
5529        *solaris*)
5530                AC_CHECK_LIB(sendfile,sendfilev)
5531                AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5532                AC_TRY_LINK([\
5533#include <sys/sendfile.h>],
5534[\
5535        int sfvcnt;
5536        size_t xferred;
5537        struct sendfilevec vec[2];
5538        ssize_t nwritten;
5539        int tofd;
5540
5541        sfvcnt = 2;
5542
5543        vec[0].sfv_fd = SFV_FD_SELF;
5544        vec[0].sfv_flag = 0;
5545        vec[0].sfv_off = 0;
5546        vec[0].sfv_len = 0;
5547
5548        vec[1].sfv_fd = 0;
5549        vec[1].sfv_flag = 0;
5550        vec[1].sfv_off = 0;
5551        vec[1].sfv_len = 0;
5552        nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5553],
5554samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5555
5556        if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5557                AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5558                AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5559                AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5560        else
5561                AC_MSG_RESULT(no);
5562        fi
5563
5564                AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5565                AC_TRY_LINK([\
5566#include <sys/sendfile.h>],
5567[\
5568        int sfvcnt;
5569        size_t xferred;
5570        struct sendfilevec vec[2];
5571        ssize_t nwritten;
5572        int tofd;
5573
5574        sfvcnt = 2;
5575
5576        vec[0].sfv_fd = SFV_FD_SELF;
5577        vec[0].sfv_flag = 0;
5578        vec[0].sfv_off = 0;
5579        vec[0].sfv_len = 0;
5580
5581        vec[1].sfv_fd = 0;
5582        vec[1].sfv_flag = 0;
5583        vec[1].sfv_off = 0;
5584        vec[1].sfv_len = 0;
5585        nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5586],
5587samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5588
5589        if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5590                AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5591                AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5592                AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5593        else
5594                AC_MSG_RESULT(no);
5595        fi
5596        ;;
5597        *aix*)
5598                AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5599                AC_TRY_LINK([\
5600#include <sys/socket.h>],
5601[\
5602        int fromfd, tofd;
5603        size_t total=0;
5604        struct sf_parms hdtrl;
5605        ssize_t nwritten;
5606        off64_t offset;
5607
5608        hdtrl.header_data = 0;
5609        hdtrl.header_length = 0;
5610        hdtrl.file_descriptor = fromfd;
5611        hdtrl.file_offset = 0;
5612        hdtrl.file_bytes = 0;
5613        hdtrl.trailer_data = 0;
5614        hdtrl.trailer_length = 0;
5615
5616        nwritten = send_file(&tofd, &hdtrl, 0);
5617],
5618samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5619        if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5620                AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5621                AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5622                AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5623        else
5624                AC_MSG_RESULT(no);
5625        fi
5626        ;;
5627        *)
5628        ;;
5629        esac
5630        ;;
5631  *)
5632    AC_MSG_RESULT(no)
5633    ;;
5634  esac ],
5635  AC_MSG_RESULT(yes)
5636)
5637
5638############################################
5639# See if we have the Linux readahead syscall.
5640
5641AC_CACHE_CHECK([for Linux readahead],
5642                samba_cv_HAVE_LINUX_READAHEAD,[
5643    AC_TRY_LINK([
5644#if defined(HAVE_UNISTD_H)
5645#include <unistd.h>
5646#endif
5647#include <fcntl.h>],
5648    [ssize_t err = readahead(0,0,0x80000);],
5649    samba_cv_HAVE_LINUX_READAHEAD=yes,
5650    samba_cv_HAVE_LINUX_READAHEAD=no)])
5651
5652if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5653  AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5654             [Whether Linux readahead is available])
5655fi
5656
5657############################################
5658# See if we have the posix_fadvise syscall.
5659
5660AC_CACHE_CHECK([for posix_fadvise],
5661                samba_cv_HAVE_POSIX_FADVISE,[
5662    AC_TRY_LINK([
5663#if defined(HAVE_UNISTD_H)
5664#include <unistd.h>
5665#endif
5666#include <fcntl.h>],
5667    [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5668    samba_cv_HAVE_POSIX_FADVISE=yes,
5669    samba_cv_HAVE_POSIX_FADVISE=no)])
5670
5671if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5672  AC_DEFINE(HAVE_POSIX_FADVISE,1,
5673             [Whether posix_fadvise is available])
5674fi
5675
5676
5677
5678#################################################
5679# Check whether winbind is supported on this platform.  If so we need to
5680# build and install client programs, sbin programs and shared libraries
5681
5682AC_MSG_CHECKING(whether to build winbind)
5683
5684# Initially, the value of $host_os decides whether winbind is supported
5685
5686HAVE_WINBIND=yes
5687
5688# Define the winbind shared library name and any specific linker flags
5689# it needs to be built with.
5690
5691WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
5692WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
5693WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5694NSSSONAMEVERSIONSUFFIX=""
5695
5696SMB_KRB5_LOCATOR="bin/smb_krb5_locator.$SHLIBEXT"
5697
5698case "$host_os" in
5699        *linux*)
5700                NSSSONAMEVERSIONSUFFIX=".2"
5701                WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
5702                ;;
5703        *freebsd[[5-9]]*)
5704                # FreeBSD winbind client is implemented as a wrapper around
5705                # the Linux version.
5706                NSSSONAMEVERSIONSUFFIX=".1"
5707                WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
5708                    nsswitch/winbind_nss_linux.o"
5709                WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5710                WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5711                ;;
5712
5713        *netbsd*[[3-9]]*)
5714                # NetBSD winbind client is implemented as a wrapper
5715                # around the Linux version. It needs getpwent_r() to
5716                # indicate libc's use of the correct nsdispatch API.
5717                #
5718                if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5719                        WINBIND_NSS_EXTRA_OBJS="\
5720                            nsswitch/winbind_nss_netbsd.o \
5721                            nsswitch/winbind_nss_linux.o"
5722                        WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5723                        WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5724                else
5725                        HAVE_WINBIND=no
5726                        winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5727                fi
5728                ;;
5729        *irix*)
5730                # IRIX has differently named shared libraries
5731                WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
5732                WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
5733                WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
5734                ;;
5735        *solaris*)
5736                # Solaris winbind client is implemented as a wrapper around
5737                # the Linux version.
5738                NSSSONAMEVERSIONSUFFIX=".1"
5739                WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
5740                    nsswitch/winbind_nss_linux.o"
5741                WINBIND_NSS_EXTRA_LIBS="-lsocket"
5742                ;;
5743        *hpux11*)
5744                WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
5745                ;;
5746        *aix*)
5747                # AIX has even differently named shared libraries.  No
5748                # WINS support has been implemented yet.
5749                WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
5750                WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5751                WINBIND_NSS="nsswitch/WINBIND"
5752                WINBIND_WINS_NSS=""
5753                ;;
5754        *)
5755                HAVE_WINBIND=no
5756                winbind_no_reason=", unsupported on $host_os"
5757                ;;
5758esac
5759
5760AC_SUBST(WINBIND_NSS)
5761AC_SUBST(WINBIND_WINS_NSS)
5762AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5763AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5764AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5765AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5766
5767if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes"; then
5768        NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5769fi
5770
5771AC_SUBST(SMB_KRB5_LOCATOR)
5772
5773# Check the setting of --with-winbind
5774
5775AC_ARG_WITH(winbind,
5776[  --with-winbind          Build winbind (default, if supported by OS)],
5777[
5778  case "$withval" in
5779        yes)
5780                HAVE_WINBIND=yes
5781                ;;
5782        no)
5783                HAVE_WINBIND=no
5784                winbind_reason=""
5785                ;;
5786  esac ],
5787)
5788
5789# We need unix domain sockets for winbind
5790
5791if test x"$HAVE_WINBIND" = x"yes"; then
5792        if test x"$samba_cv_unixsocket" = x"no"; then
5793                winbind_no_reason=", no unix domain socket support on $host_os"
5794                HAVE_WINBIND=no
5795        fi
5796fi
5797
5798# Display test results
5799
5800if test x"$HAVE_WINBIND" = x"no"; then
5801        WINBIND_NSS=""
5802        WINBIND_WINS_NSS=""
5803fi
5804
5805if test x"$HAVE_WINBIND" = x"yes"; then
5806        AC_MSG_RESULT(yes)
5807        AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5808
5809        EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5810        EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5811        if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5812                PAM_MODULES="$PAM_MODULES pam_winbind"
5813                INSTALL_PAM_MODULES="installpammodules"
5814                UNINSTALL_PAM_MODULES="uninstallpammodules"
5815        fi
5816else
5817        AC_MSG_RESULT(no$winbind_no_reason)
5818fi
5819
5820# Solaris 10 does have new member in nss_XbyY_key
5821AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5822                AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5823                [#include <nss_dbdefs.h>])
5824
5825# Solaris has some extra fields in struct passwd that need to be
5826# initialised otherwise nscd crashes.
5827
5828AC_CHECK_MEMBER(struct passwd.pw_comment,
5829                AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5830                [#include <pwd.h>])
5831
5832AC_CHECK_MEMBER(struct passwd.pw_age,
5833                AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5834                [#include <pwd.h>])
5835
5836# AIX 4.3.x and 5.1 do not have as many members in
5837# struct secmethod_table as AIX 5.2
5838AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5839       [#include <usersec.h>])
5840AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5841       [#include <usersec.h>])
5842
5843AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
5844AC_TRY_COMPILE([#include <sys/types.h>
5845#include <sys/socket.h>],
5846[struct ucred cred;
5847 socklen_t cred_len;
5848 int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
5849],
5850samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
5851if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
5852    AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
5853fi
5854
5855
5856#################################################
5857# Check to see if we should use the included popt
5858
5859AC_ARG_WITH(included-popt,
5860[  --with-included-popt    use bundled popt library, not from system],
5861[
5862  case "$withval" in
5863        yes)
5864                INCLUDED_POPT=yes
5865                ;;
5866        no)
5867                INCLUDED_POPT=no
5868                ;;
5869  esac ],
5870)
5871if test x"$INCLUDED_POPT" != x"yes"; then
5872    AC_CHECK_LIB(popt, poptGetContext,
5873                 INCLUDED_POPT=no, INCLUDED_POPT=yes)
5874fi
5875
5876AC_MSG_CHECKING(whether to use included popt)
5877if test x"$INCLUDED_POPT" = x"yes"; then
5878    AC_MSG_RESULT(yes)
5879    BUILD_POPT='$(POPT_OBJ)'
5880    POPTLIBS='$(POPT_OBJ)'
5881    FLAGS1="-I\$(srcdir)/popt"
5882else
5883    AC_MSG_RESULT(no)
5884        BUILD_POPT=""
5885    POPTLIBS="-lpopt"
5886fi
5887AC_SUBST(BUILD_POPT)
5888AC_SUBST(POPTLIBS)
5889AC_SUBST(FLAGS1)
5890
5891#################################################
5892# Check to see if we should use the included iniparser
5893
5894AC_ARG_WITH(included-iniparser,
5895[  --with-included-iniparser    use bundled iniparser library, not from system],
5896[
5897  case "$withval" in
5898        yes)
5899                INCLUDED_INIPARSER=yes
5900                ;;
5901        no)
5902                INCLUDED_INIPARSER=no
5903                ;;
5904  esac ],
5905)
5906if test x"$INCLUDED_INIPARSER" != x"yes"; then
5907    AC_CHECK_LIB(iniparser, iniparser_load,
5908                 INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
5909fi
5910
5911AC_MSG_CHECKING(whether to use included iniparser)
5912if test x"$INCLUDED_INIPARSER" = x"yes"; then
5913    AC_MSG_RESULT(yes)
5914    BUILD_INIPARSER='$(INIPARSER_OBJ)'
5915        INIPARSERLIBS=""
5916    FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
5917else
5918    AC_MSG_RESULT(no)
5919        BUILD_INIPARSER=""
5920    INIPARSERLIBS="-liniparser"
5921fi
5922AC_SUBST(BUILD_INIPARSER)
5923AC_SUBST(INIPARSERLIBS)
5924AC_SUBST(FLAGS1)
5925
5926
5927
5928#################################################
5929# Check if the user wants Python
5930
5931# At the moment, you can use this to set which Python binary to link
5932# against.  (Libraries built for Python2.2 can't be used by 2.1,
5933# though they can coexist in different directories.)  In the future
5934# this might make the Python stuff be built by default.
5935
5936# Defaulting python breaks the clean target if python isn't installed
5937
5938PYTHON=
5939
5940AC_ARG_WITH(python,
5941[  --with-python=PYTHONNAME  build Python libraries],
5942[ case "${withval-python}" in
5943  yes)
5944        PYTHON=python
5945        EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
5946        ;;
5947  no)
5948        PYTHON=
5949        ;;
5950  *)
5951        PYTHON=${withval-python}
5952        ;;
5953  esac ])
5954AC_SUBST(PYTHON)
5955
5956for i in `echo $default_static_modules | sed -e 's/,/ /g'`
5957do
5958        eval MODULE_DEFAULT_$i=STATIC
5959done
5960
5961for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
5962do
5963        dnl Fall back to static if we cannot build shared libraries
5964        eval MODULE_DEFAULT_$i=STATIC
5965
5966        if test $BLDSHARED = true; then
5967                eval MODULE_DEFAULT_$i=SHARED
5968        fi
5969done
5970
5971dnl Always built these modules static
5972MODULE_rpc_spoolss=STATIC
5973MODULE_rpc_srv=STATIC
5974MODULE_idmap_tdb=STATIC
5975MODULE_idmap_passdb=STATIC
5976MODULE_idmap_nss=STATIC
5977
5978MODULE_nss_info_template=STATIC
5979
5980AC_ARG_WITH(static-modules,
5981[  --with-static-modules=MODULES  Comma-separated list of names of modules to statically link in],
5982[ if test $withval; then
5983        for i in `echo $withval | sed -e 's/,/ /g'`
5984        do
5985                eval MODULE_$i=STATIC
5986        done
5987fi ])
5988
5989AC_ARG_WITH(shared-modules,
5990[  --with-shared-modules=MODULES  Comma-separated list of names of modules to build shared],
5991[ if test $withval; then
5992        for i in `echo $withval | sed -e 's/,/ /g'`
5993        do
5994                        eval MODULE_$i=SHARED
5995        done
5996fi ])
5997
5998SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
5999                   [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6000SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6001SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6002SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6003
6004
6005SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6006SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_reg.$SHLIBEXT", RPC)
6007SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
6008SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6009SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6010SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6011SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6012SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6013SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_svc.$SHLIBEXT", RPC)
6014SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6015SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6016SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6017SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
6018SMB_SUBSYSTEM(RPC,smbd/server.o)
6019
6020SMB_MODULE(idmap_ldap, nsswitch/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6021SMB_MODULE(idmap_tdb, nsswitch/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6022SMB_MODULE(idmap_passdb, nsswitch/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6023SMB_MODULE(idmap_nss, nsswitch/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6024SMB_MODULE(idmap_rid, nsswitch/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6025SMB_MODULE(idmap_ad, nsswitch/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6026SMB_SUBSYSTEM(IDMAP, nsswitch/idmap.o)
6027
6028SMB_MODULE(nss_info_template, nsswitch/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6029SMB_SUBSYSTEM(NSS_INFO, nsswitch/nss_info.o)
6030
6031SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6032SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6033SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6034SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6035SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6036
6037SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6038SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6039SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6040SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6041SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6042SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6043SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6044SMB_SUBSYSTEM(AUTH,auth/auth.o)
6045
6046SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6047SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6048SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6049SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6050SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6051SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6052SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6053SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6054SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6055SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6056SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6057SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6058SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6059SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6060SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6061SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6062SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6063SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6064SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6065SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6066SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6067SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6068SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6069SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6070SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6071SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6072
6073SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6074
6075AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6076
6077#################################################
6078# do extra things if we are running insure
6079
6080if test "${ac_cv_prog_CC}" = "insure"; then
6081        CPPFLAGS="$CPPFLAGS -D__INSURE__"
6082fi
6083
6084#################################################
6085# If run from the build farm, enable NASTY hacks
6086#################################################
6087AC_MSG_CHECKING(whether to enable build farm hacks)
6088if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6089        AC_MSG_RESULT(yes)
6090        AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6091else
6092        AC_MSG_RESULT(no)
6093fi
6094
6095#################################################
6096# check for bad librt/libpthread interactions
6097
6098if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6099    x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6100    x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6101    x"$samba_cv_HAVE_AIO" = x"yes" ; then
6102
6103SMB_IF_RTSIGNAL_BUG(
6104        [
6105            # Have RT_SIGNAL bug, need to check whether the problem will
6106            # affect anything we have configured.
6107
6108            rt_do_error=no
6109            if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6110                if test x"$rt_signal_lease_ok" = x"no" ; then
6111                    rt_do_error=yes
6112                fi
6113            fi
6114
6115            if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6116                if test x"$rt_signal_notify_ok" = x"no" ; then
6117                    rt_do_error=yes
6118                fi
6119            fi
6120
6121            if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6122                    x"$samba_cv_HAVE_AIO" = x"yes" ; then
6123                if test x"$rt_signal_aio_ok" = x"no" ; then
6124                    rt_do_error=yes
6125                fi
6126            fi
6127
6128            if test x"$rt_do_error" = x"yes" ; then
6129                SMB_IS_LIBPTHREAD_LINKED(
6130                    [
6131                        cat<<MSG
6132
6133*** On this platforms, linking Samba against pthreads causes problems
6134*** with the oplock and change notification mechanisms. You may be
6135*** using pthreads as a side-effect of using the --with-aio-support
6136*** or --with-profiling-data options. Please remove these and try again.
6137
6138MSG
6139                    ],
6140                    [
6141                        cat<<MSG
6142
6143*** On this platform, the oplock and change notification mechanisms do not
6144*** appear to work. Please report this problem to samba-technical@samba.org
6145*** and attach the config.log file from this directory.
6146
6147MSG
6148                    ])
6149                AC_MSG_ERROR(unable to use realtime signals on this platform)
6150            fi
6151        ],
6152        [
6153            # no RT_SIGNAL bug, we are golden
6154            SMB_IS_LIBPTHREAD_LINKED(
6155                [
6156                    AC_MSG_WARN(using libpthreads - this may degrade performance)
6157                ])
6158
6159        ],
6160        [
6161            # cross compiling, I hope you know what you are doing
6162            true
6163        ])
6164
6165fi
6166
6167dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6168LIB_REMOVE_USR_LIB(LDFLAGS)
6169LIB_REMOVE_USR_LIB(LIBS)
6170LIB_REMOVE_USR_LIB(KRB5_LIBS)
6171
6172dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6173CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6174CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6175
6176#################################################
6177# Display summary of libraries detected
6178
6179AC_MSG_RESULT([Using libraries:])
6180AC_MSG_RESULT([    LIBS = $LIBS])
6181if test x"$with_ads_support" != x"no"; then
6182    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6183fi
6184if test x"$with_ldap_support" != x"no"; then
6185    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6186fi
6187if test x"$with_dnsupdate_support" != x"no"; then
6188    AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6189fi
6190AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6191
6192#################################################
6193# final configure stuff
6194
6195AC_MSG_CHECKING([configure summary])
6196AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6197           AC_MSG_RESULT(yes),
6198           AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6199           AC_MSG_WARN([cannot run when cross-compiling]))
6200
6201builddir=`pwd`
6202AC_SUBST(builddir)
6203
6204# Stuff the smbd-only libraries at the end of the smbd link
6205# path (if we have them).
6206SMBD_LIBS="$samba_fam_libs $samba_dmapi_libs"
6207AC_SUBST(SMBD_LIBS)
6208
6209AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh)
6210
6211#################################################
6212# Print very concise instructions on building/use
6213if test "x$enable_dmalloc" = xyes
6214then
6215        AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6216        AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])
6217fi
Note: See TracBrowser for help on using the repository browser.