s3:librpc/ndr: use new strlen_m_ext_term() in ndr_charset_length(): fix bug #7594
[Samba.git] / source3 / configure.in
blob3dc9da77ce220ceabb4ef430ff2dc60bafc420bf
1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.54 or above
4 AC_PREREQ(2.54)
6 AC_INIT([Samba],[3],[samba-technical@samba.org])
8 AC_CONFIG_SRCDIR([include/includes.h])
9 AC_CONFIG_HEADER(include/config.h)
10 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
12 case "$PATH" in
13     */usr/ucb*)
14         AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
15         ;;
16 esac 
18 builddir=`pwd`
19 AC_SUBST(builddir)
21 m4_include(m4/samba_version.m4)
22 m4_include(m4/check_path.m4)
23 m4_include(pkg.m4)
25 AC_LIBREPLACE_CC_CHECKS
27 m4_include(../lib/tevent/libtevent.m4)
29 LIBTEVENT_OBJ0=""
30 for obj in ${TEVENT_OBJ}; do
31         LIBTEVENT_OBJ0="${LIBTEVENT_OBJ0} ${teventdir}/${obj}"
32 done
33 AC_SUBST(LIBTEVENT_OBJ0)
34 LIBS="${LIBS} ${TEVENT_LIBS}"
36 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include  -I. -I${srcdir-.}"
37 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace"
38 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TEVENT_CFLAGS}"
39 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
40 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
41 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/.."
43 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt"
45 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
46 if test "x${srcdir-.}" != "x."; then
47         SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
50 dnl Unique-to-Samba variables we'll be playing with.
51 AC_SUBST(SAMBA_CPPFLAGS)
52 AC_SUBST(SHELL)
53 AC_SUBST(LDSHFLAGS)
54 AC_SUBST(SONAMEFLAG)
55 AC_SUBST(SHLD)
56 AC_SUBST(MODULE_EXPORTS)
57 AC_SUBST(DSO_EXPORTS)
58 AC_SUBST(HOST_OS)
59 AC_SUBST(PICFLAG)
60 AC_SUBST(PIE_CFLAGS)
61 AC_SUBST(PIE_LDFLAGS)
62 AC_SUBST(RELRO_LDFLAGS)
63 AC_SUBST(SHLIBEXT)
64 AC_SUBST(INSTALLLIBCMD_SH)
65 AC_SUBST(INSTALLLIBCMD_A)
66 AC_SUBST(UNINSTALLLIBCMD_SH)
67 AC_SUBST(UNINSTALLLIBCMD_A)
69 AC_SUBST(INSTALL_LIBWBCLIENT)
70 AC_SUBST(UNINSTALL_LIBWBCLIENT)
71 AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
72 AC_SUBST(LIBWBCLIENT_SHARED)
73 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
74 AC_SUBST(LIBWBCLIENT_STATIC)
75 AC_SUBST(LIBWBCLIENT_SOVER)
76 AC_SUBST(LIBWBCLIENT)
77 AC_SUBST(LIBWBCLIENT_LIBS)
79 AC_SUBST(LIBSAMBAUTIL_SHARED)
81 AC_SUBST(PRINT_LIBS)
82 AC_SUBST(AUTH_LIBS)
83 AC_SUBST(ACL_LIBS)
84 AC_SUBST(PASSDB_LIBS)
85 AC_SUBST(IDMAP_LIBS)
86 AC_SUBST(KRB5_LIBS)
87 AC_SUBST(UUID_LIBS)
88 AC_SUBST(LDAP_LIBS)
89 AC_SUBST(GPEXT_LIBS)
90 AC_SUBST(PAM_MODULES)
91 AC_SUBST(INSTALL_PAM_MODULES)
92 AC_SUBST(UNINSTALL_PAM_MODULES)
93 AC_SUBST(NSS_MODULES)
94 AC_SUBST(EXTRA_BIN_PROGS)
95 AC_SUBST(CIFSMOUNT_PROGS)
96 AC_SUBST(INSTALL_CIFSMOUNT)
97 AC_SUBST(UNINSTALL_CIFSMOUNT)
98 AC_SUBST(CIFSUMOUNT_PROGS)
99 AC_SUBST(INSTALL_CIFSUMOUNT)
100 AC_SUBST(UNINSTALL_CIFSUMOUNT)
101 AC_SUBST(CIFSUPCALL_PROGS)
102 AC_SUBST(INSTALL_CIFSUPCALL)
103 AC_SUBST(UNINSTALL_CIFSUPCALL)
104 AC_SUBST(EXTRA_SBIN_PROGS)
105 AC_SUBST(EXTRA_ALL_TARGETS)
106 AC_SUBST(CONFIG_LIBS)
107 AC_SUBST(NSCD_LIBS)
109 # compile with optimization and without debugging by default, but
110 # allow people to set their own preference.
111 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
112 # if it has no value.  This prevent *very* large debug binaries from occurring
113 # by default.
114 if test "x$debug" = "xyes" ; then
115         CFLAGS="${CFLAGS} -g"
117 if test "x$CFLAGS" = x; then
118   CFLAGS="-O"
121 m4_include(../lib/socket_wrapper/config.m4)
122 m4_include(../lib/nss_wrapper/config.m4)
124 m4_include(m4/swat.m4)
126 # Probe the gcc version for extra CFLAGS. We always stash these in
127 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
128 # Makefile edit, avoiding the need to re-run configure.
129 if test x"$ac_cv_prog_gcc" = x"yes" ; then
130         DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
131         # Add -Wdeclaration-after-statement if compiler supports it
132         AC_CACHE_CHECK(
133           [that the C compiler understands -Wdeclaration-after-statement],
134           samba_cv_HAVE_Wdeclaration_after_statement, [
135           AC_TRY_RUN_STRICT([
136             int main(void)
137             {
138                 return 0;
139             }],[$CFLAGS -Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
140             samba_cv_HAVE_Wdeclaration_after_statement=yes,
141             samba_cv_HAVE_Wdeclaration_after_statement=no,
142             samba_cv_HAVE_Wdeclaration_after_statement=cross)
143        ])
145         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
146             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
147         fi
149         #-Werror-implicit-function-declaration
150         AC_CACHE_CHECK(
151           [that the C compiler understands -Werror-implicit-function-declaration],
152           samba_cv_HAVE_Werror_implicit_function_declaration, [
153           AC_TRY_RUN_STRICT([
154             int main(void)
155             {
156                 return 0;
157             }],[$CFLAGS -Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
158             samba_cv_HAVE_Werror_implicit_function_declaration=yes,
159             samba_cv_HAVE_Werror_implicit_function_declaration=no,
160             samba_cv_HAVE_Werror_implicit_function_declaration=cross)
161        ])
162        if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
163             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
164        fi
166         # krb5developer is like developer, except we don't get
167         # -Wstrict-prototypes.
168        if test x"$krb5_developer" != x"$yes" ; then
169             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
170        fi
172        if test x"$picky_developer" = x"yes"; then
173             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
174        fi
177 #################################################
178 # check for a shared memory profiling support
179 AC_MSG_CHECKING(whether to use profiling)
180 AC_ARG_WITH(profiling-data,
181 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
182 [ case "$withval" in
183   yes)
184     AC_MSG_RESULT(yes)
185     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
186     samba_cv_WITH_PROFILE=yes
187     ;;
188   *)
189     AC_MSG_RESULT(no)
190     samba_cv_WITH_PROFILE=no
191     ;;
192   esac ],
193   AC_MSG_RESULT(no)
196 dnl Checks for programs.
197 merged_build_possible=yes
199 AC_PROG_INSTALL
200 AC_PROG_AWK
201 # Check for GNU make
202 m4_include(../m4/check_make.m4)
203 AC_SAMBA_GNU_MAKE([true], [merged_build_possible=no])
205 # Check for perl
206 m4_include(../m4/check_perl.m4)
207 AC_SAMBA_PERL([true], [merged_build_possible=no])
209 AC_CHECK_TOOL(AR, ar)
211 dnl Check if we (actually our C compiler!) use GNU ld
212 AC_PROG_LD_GNU
214 dnl Certain versions of GNU ld the default is not to have the
215 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
216 dnl warnings when building modules.
217 if test "$ac_cv_prog_gnu_ld" = "yes"; then
218         ac_cv_gnu_ld_version=`$CC -Wl,-v /dev/null 2>/dev/null | head -1`
219         AC_MSG_CHECKING(GNU ld release date)
220         changequote(,)dnl
221         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'`
222         changequote([,])dnl
223         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
224         if test -n "$ac_cv_gnu_ld_date"; then
225         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
226                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
227         fi
228         if test "$ac_cv_gnu_ld_date" -gt 20030101; then
229                 ac_cv_gnu_ld_version_script=yes
230         fi
231         else
232            AC_MSG_CHECKING(GNU ld release version)
233            changequote(,)dnl
234            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^[^0-9]*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
235            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
236            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
237            changequote([,])dnl
238            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
239            AC_MSG_CHECKING(GNU ld release version major)
240            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
241            AC_MSG_CHECKING(GNU ld release version minor)
242            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
243            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
244              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
245            fi
246            if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_ld_vernr_major" = 2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then
247              ac_cv_gnu_ld_version_script=yes
248            fi
249         fi
252 dnl look for executable suffix
253 AC_EXEEXT
255 dnl Check if C compiler understands -c and -o at the same time
256 AC_PROG_CC_C_O
257 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
258       BROKEN_CC=
259 else
260       BROKEN_CC=#
262 AC_SUBST(BROKEN_CC)
264 dnl Check if the C compiler understands -Werror (GNU)
265 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
266  AC_TRY_RUN_STRICT([
267   int main(void)
268   {
269         return 0;
270   }],[$CFLAGS -Werror],[$CPPFLAGS],[$LDFLAGS],
271   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
272 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
273    Werror_FLAGS="-Werror"
274 else
275 dnl Check if the C compiler understands -w2
276 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
277  AC_TRY_RUN_STRICT([
278   int main(void)
279   {
280         return 0;
281   }],[$CFLAGS -w2],[$CPPFLAGS],[$LDFLAGS],
282   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
283 if test x"$samba_cv_HAVE_w2" = x"yes"; then
284    Werror_FLAGS="-w2"
285 else
286 dnl Check if the C compiler understands -errwarn (Sun)
287 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
288   AC_TRY_RUN_STRICT([
289    int main(void)
290    {
291         return 0;
292    }],[$CFLAGS -errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
293    samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
294 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
295    Werror_FLAGS="-errwarn=%all"
296 else
297 dnl Check if the C compiler understands -qhalt (IBM)
298 AC_CACHE_CHECK([that the C compiler understands -qhalt],samba_cv_HAVE_qhalt, [
299   AC_TRY_RUN_STRICT([
300    int main(void)
301    {
302         return 0;
303    }],[$CFLAGS -qhalt=w],[$CPPFLAGS],[$LDFLAGS],
304    samba_cv_HAVE_qhalt=yes,samba_cv_HAVE_qhalt=no,samba_cv_HAVE_qhalt=cross)])
305 if test x"$samba_cv_HAVE_qhalt" = x"yes"; then
306    Werror_FLAGS="-qhalt=w"
312 ############################################
313 # check if the compiler can handle negative enum values
314 # and don't truncate the values to INT_MAX
315 # a runtime test is needed here
316 AC_SUBST(PIDL_ARGS)
317 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
318     AC_TRY_RUN(
320         #include <stdio.h>
321         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
322         int main(void) {
323                 enum negative_values v1 = NEGATIVE_VALUE;
324                 unsigned v2 = NEGATIVE_VALUE;
326                 if (v1 != 0xFFFFFFFF) {
327                         printf("%u != 0xFFFFFFFF\n", v1);
328                         return 1;
329                 }
330                 if (v2 != 0xFFFFFFFF) {
331                         printf("%u != 0xFFFFFFFF\n", v2);
332                         return 1;
333                 }
335                 return 0;
336         }
338         samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv__CC_NEGATIVE_ENUM_VALUES=no)])
339 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
340         AC_MSG_WARN([using --uint-enums for pidl])
341         PIDL_ARGS="$PIDL_ARGS --uint-enums"
344 dnl Figure out the flags to support named structure initializers
346 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
348 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
349 AC_MSG_CHECKING(uname -s)
350 AC_MSG_RESULT(${UNAME_S})
352 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
353 AC_MSG_CHECKING(uname -r)
354 AC_MSG_RESULT(${UNAME_R})
356 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
357 AC_MSG_CHECKING(uname -m)
358 AC_MSG_RESULT(${UNAME_M})
360 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
361 AC_MSG_CHECKING(uname -p)
362 AC_MSG_RESULT(${UNAME_P})
364 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
365 AC_MSG_CHECKING(uname -i)
366 AC_MSG_RESULT(${UNAME_I})
368 dnl Add #include for broken IRIX header files
369   case "$host_os" in
370         *irix6*)
371                 #TODO add to libreplace
372                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
373                         dnl Fix sensible defaults for MIPSPro compilers. The
374                         dnl error numbers are valid for the 7.3 compilers,
375                         dnl hopefully also valid for the 7.4 series.
376                         dnl
377                         dnl Bugzilla 3801. Force an error on warning 1035
378                         dnl so we don't incorrectly detect stdint.h. This
379                         dnl warning is emitted for #error directives.
380                         CFLAGS="$CFLAGS -diag_error 1035"
381                         dnl 1209: Controlling expression is constant
382                         dnl 1174: Function foo declared but never referenced
383                         dnl 3201: Parameter foo was never referenced
384                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
385                 fi
386         ;;
387 esac
389 DYNEXP=
390 AC_SUBST(DYNEXP)
391 LDSHFLAGS_Z_DEFS=
392 AC_SUBST(LDSHFLAGS_Z_DEFS)
393 LDSHFLAGS_Z_NODEFS=
394 AC_SUBST(LDSHFLAGS_Z_NODEFS)
396 dnl Add modules that have to be built by default here
397 dnl These have to be built static:
398 default_static_modules="pdb_smbpasswd pdb_tdbsam pdb_wbc_sam rpc_lsarpc rpc_samr rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl rpc_ntsvcs rpc_netlogon rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog auth_sam auth_unix auth_winbind auth_wbc auth_server auth_domain auth_builtin auth_netlogond vfs_default nss_info_template"
400 dnl These are preferably build shared, and static if dlopen() is not available
401 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_xattr_tdb vfs_streams_xattr vfs_streams_depot vfs_acl_xattr vfs_acl_tdb vfs_smb_traffic_analyzer vfs_preopen vfs_catia vfs_scannedonly"
403 if test "x$developer" = xyes; then
404    default_static_modules="$default_static_modules rpc_rpcecho pdb_ads"
405    default_shared_modules="$default_shared_modules charset_weird perfcount_test"
409 # Config CPPFLAG settings for strange OS's that must be set
410 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
411 # case statement; its first reference must be unconditional.
413 case "$host_os" in
414     *hpux*)
416 # Defines needed for HPUX support.
417 # HPUX has bigcrypt but (sometimes?) doesn't use it for
418 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
420       case `uname -r` in
421                 *9*|*10*|*11)
422                         AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
423                 ;;
424       esac
425       ;;
428 # CRAY Unicos has broken const handling
429        *unicos*)
430           AC_MSG_RESULT([disabling const])
431           CPPFLAGS="$CPPFLAGS -Dconst="
432           ;;
433         
435 # AIX4.x doesn't even admit to having large
436 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
438     *aix4*)
439           AC_MSG_RESULT([enabling large file support])
440       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
441           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
442       ;;
444 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
445 # to the existance of large files..
446 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
447 # recommendations on large file support, however it makes the
448 # compile work using gcc 2.7 and 2.8, whereas using the Sun
449 # recommendation makes the compile fail on gcc2.7. JRA.
451 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
453         *solaris*)
454                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
455                 case `uname -r` in
456                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
457                                 AC_MSG_RESULT([no large file support])
458                                 ;;
459                         5.*)
460                         AC_MSG_RESULT([enabling large file support])
461                         if test "$ac_cv_prog_gcc" = yes; then
462                                 ${CC-cc} -v >conftest.c 2>&1
463                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
464                                 rm -fr conftest.c
465                                 case "$ac_cv_gcc_compiler_version_number" in
466                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
467                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
468                                                 LDFLAGS="$LDFLAGS -lthread"
469                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
470                                                 ;;
471                                         *)
472                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
473                                                 LDFLAGS="$LDFLAGS -lthread"
474                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
475                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
476                                                 ;;
477                                 esac
478                         else
479                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
480                                 LDFLAGS="$LDFLAGS -lthread"
481                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
482                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
483                         fi
484                         ;;
485                 esac
486                 ;;
488 # IRIX uses SYSV printing.  Make sure to set that here
490         *irix*)
491                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
492                 ;;
493         *freebsd*|*dragonfly*)
494                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
495                 ;;
497 # VOS may need to have POSIX support and System V compatibility enabled.
499     *vos*)
500     case "$CPPFLAGS" in
501           *-D_POSIX_C_SOURCE*)
502                 ;;
503           *)
504                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
505                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
506                 ;;
507     esac
508     case "$CPPFLAGS" in
509           *-D_SYSV*|*-D_SVID_SOURCE*)
510                 ;;
511           *)
512                 CPPFLAGS="$CPPFLAGS -D_SYSV"
513                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
514     esac
515     ;;
517 # Tests needed for SINIX large file support.
519     *sysv4*)
520       if test $host = mips-sni-sysv4 ; then
521         AC_MSG_CHECKING([for LFS support])
522         old_CPPFLAGS="$CPPFLAGS"
523         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
524         AC_TRY_RUN([
525 #include <unistd.h>
526 main () {
527 #if _LFS64_LARGEFILE == 1
528 exit(0);
529 #else
530 exit(1);
531 #endif
532 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
533         CPPFLAGS="$old_CPPFLAGS"
534         if test x$SINIX_LFS_SUPPORT = xyes ; then
535           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
536                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
537           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
538           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
539           LIBS="`getconf LFS64_LIBS` $LIBS"
540         fi
541       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
542       fi
543     ;;
545 # Systems with LFS support.
547     gnu* | k*bsd*-gnu | kopensolaris*-gnu)
548         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
549         AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
550         AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
551         AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
552         ;;
554 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
556     *linux*)
557         AC_MSG_CHECKING([for LFS support])
558         old_CPPFLAGS="$CPPFLAGS"
559         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
560        AC_TRY_RUN([
561 #include <unistd.h>
562 #include <sys/utsname.h>
563 #include <string.h>
564 #include <stdlib.h>
565 main() {
566 #if _LFS64_LARGEFILE == 1
567        struct utsname uts;
568        char *release;
569        int major, minor;
571        /* Ensure this is glibc 2.2 or higher */
572 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
573        int libc_major = __GLIBC__;
574        int libc_minor = __GLIBC_MINOR__;
576        if (libc_major < 2)
577               exit(1);
578        if (libc_minor < 2)
579               exit(1);
580 #endif
582        /* Ensure this is kernel 2.4 or higher */
584        uname(&uts);
585        release = strdup(uts.release);
586        major = atoi(strsep(&release, "."));
587        minor = atoi(strsep(&release, "."));
589        if (major > 2 || (major == 2 && minor > 3))
590                exit(0);
591        exit(1);
592 #else
593        exit(1);
594 #endif
596 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
597         CPPFLAGS="$old_CPPFLAGS"
598         if test x$LINUX_LFS_SUPPORT = xyes ; then
599                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
600                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
601                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
602                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
603         fi
604         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
605         ;;
608 # MacOS X is the *only* system that uses compose character in utf8. This
609 # is so horribly broken....
611     *darwin*)
612         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
614 # Add a system specific charset module.
615         default_shared_modules="$default_shared_modules charset_macosxfs"
617         ;;
618     *hurd*)
619         AC_MSG_CHECKING([for LFS support])
620         old_CPPFLAGS="$CPPFLAGS"
621         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
622         AC_TRY_RUN([
623 #include <unistd.h>
624 main () {
625 #if _LFS64_LARGEFILE == 1
626 exit(0);
627 #else
628 exit(1);
629 #endif
630 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
631         CPPFLAGS="$old_CPPFLAGS"
632         if test x$GLIBC_LFS_SUPPORT = xyes ; then
633           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
634                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
635           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
636         fi
637       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
638     ;;
639     *qnx*)
640         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
641         AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
642         ;;
644 esac
646 SAVE_CPPFLAGS="${CPPFLAGS}"
647 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
649 AC_LIBREPLACE_BROKEN_CHECKS
650 AC_CHECK_FUNCS([syslog],[],[AC_MSG_ERROR([Required function not found])])
651 AC_LIBREPLACE_NETWORK_CHECKS
653 CPPFLAGS="${SAVE_CPPFLAGS}"
655 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
657 LIBREPLACE_OBJS="${LIBREPLACEOBJ}"
658 AC_SUBST(LIBREPLACE_OBJS)
660 LIBREPLACE_LIBS="${LIBREPLACE_NETWORK_LIBS}"
661 AC_SUBST(LIBREPLACE_LIBS)
664 # add -ldl to the global LIBS
665 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
666 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
669 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
670 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
671 AC_CHECK_HEADERS(limits.h float.h libintl.h)
672 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
673 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h sys/sysctl.h)
674 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
675 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
676 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
677 AC_CHECK_HEADERS(sys/sysmacros.h)
678 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
679 AC_CHECK_HEADERS(langinfo.h locale.h)
680 AC_CHECK_HEADERS(xfs/libxfs.h)
681 AC_CHECK_HEADERS(netgroup.h)
683 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
684 #if HAVE_RPC_RPC_H
685 #include <rpc/rpc.h>
686 #endif
689 ## These fail to compile on IRIX so just check for their presence
690 AC_CHECK_HEADERS(sys/mode.h,,,)
692 # Look for Darwin headers
693 old_CPPFLAGS="$CPPFLAGS"
694 CPPFLAGS="-Iinclude $CPPFLAGS"
695 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
696 CPPFLAGS="$old_CPPFLAGS"
698 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
699 # subdirectory of headers.
700 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
703 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
704 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
706 case "$host_os" in
707     *hpux*)
708                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
709                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
710                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
711                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
712                 fi
713         ;;
714 esac
715 AC_CHECK_HEADERS(shadow.h)
716 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
717 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
719 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
720 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
722 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
724 # For experimental utmp support (lastlog on some BSD-like systems)
725 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
727 AC_CHECK_SIZEOF(int,cross)
728 AC_CHECK_SIZEOF(long,cross)
729 AC_CHECK_SIZEOF(long long,cross)
730 AC_CHECK_SIZEOF(short,cross)
732 AC_C_CONST
733 AC_C_INLINE
734 AC_C_BIGENDIAN
735 AC_C_CHAR_UNSIGNED
737 AC_TYPE_SIGNAL
738 AC_TYPE_UID_T
739 AC_TYPE_MODE_T
740 AC_TYPE_OFF_T
741 AC_TYPE_SIZE_T
742 AC_TYPE_PID_T
743 AC_STRUCT_ST_RDEV
744 AC_DIRENT_D_OFF
745 AC_CHECK_TYPE(ssize_t, int)
746 AC_CHECK_TYPE(wchar_t, unsigned short)
748 ############################################
749 # for cups support we need libcups, and a handful of header files
751 AC_ARG_ENABLE(cups,
752 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
754 if test x$enable_cups != xno; then
755         AC_PATH_PROG(CUPS_CONFIG, cups-config)
757         if test "x$CUPS_CONFIG" != x; then
759                 ac_save_LDFLAGS=$LDFLAGS
760                 ac_save_PRINT_LIBS=$PRINT_LIBS
761                 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
763                 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
764                         x"$ac_cv_header_cups_language_h" = xyes; then
765                         # try linking with -lcups alone first. That should work unless libcups is
766                         # underlinked. With cups-config --libs we pull in unwanted and unneeded
767                         # dendencies including thread libraries - use cups-config only if really
768                         # required. 
769                         AC_CHECK_LIB_EXT(cups, ac_save_PRINT_LIBS , httpConnect,
770                                 [PRINT_LIBS"$ac_save_PRINT_LIBS -lcups"],
771                                 [AC_MSG_WARN([your cups library doesn't link with -lcups alone, it might be underlinked.]) ;
772                                  PRINT_LIBS="$ac_save_PRINT_LIBS `$CUPS_CONFIG --libs`"])
774                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
775                         samba_cv_HAVE_CUPS=yes
776                         AC_CHECK_LIB_EXT(cups, PRINT_LIBS, httpConnectEncrypt)
777                 else
778                         AC_MSG_WARN([cups-config around but cups-devel not installed])
779                         CFLAGS=$ac_save_CFLAGS
780                         LDFLAGS=$ac_save_LDFLAGS
781                         PRINT_LIBS=$ac_save_PRINT_LIBS
782                 fi
784         elif test x"$enable_cups" = x"yes"; then
785                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
786         fi
789 AC_ARG_ENABLE(iprint,
790 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
792 if test x$enable_iprint != xno; then
793         if test x"$samba_cv_HAVE_CUPS" = xyes; then
794                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
795         elif test x"$enable_iprint" = x"yes"; then
796                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
797         fi
800 ############################################
801 # check if the compiler will optimize out function calls
802 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
803     AC_TRY_LINK([
804 #include <stdio.h>],
806                 if (0) {
807                    this_function_does_not_exist();
808                 } else {
809                   return 1;
810                 }
813         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
814 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
815    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
818 #############################################
819 # check for fd passing struct via msg_control
820 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
821     AC_TRY_COMPILE([
822 #include <sys/types.h>
823 #include <stdlib.h>
824 #include <stddef.h>
825 #include <sys/socket.h>
826 #include <sys/un.h>],
828         struct msghdr msg;
829         union {
830               struct cmsghdr cm;
831               char control[CMSG_SPACE(sizeof(int))];
832         } control_un;
833         msg.msg_control = control_un.control;
834         msg.msg_controllen = sizeof(control_un.control);
836         samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
837 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
838    AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
839              [If we can use msg_control for passing file descriptors])
842 #############################################
843 # check for fd passing struct via msg_acctrights
844 AC_CACHE_CHECK([for fd passing via msg_acctrights],
845                 samba_cv_msghdr_msg_acctrights, [
846     AC_TRY_COMPILE([
847 #include <sys/types.h>
848 #include <stdlib.h>
849 #include <stddef.h>
850 #include <sys/socket.h>
851 #include <sys/un.h>],
853         struct msghdr msg;
854         int fd;
855         msg.msg_acctrights = (caddr_t) &fd;
856         msg.msg_acctrightslen = sizeof(fd);
858         samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
859 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
860    AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
861              [If we can use msg_acctrights for passing file descriptors])
864 AC_CHECK_FUNCS(dirfd)
865 if test x"$ac_cv_func_dirfd" = x"yes"; then
866         default_shared_modules="$default_shared_modules vfs_syncops vfs_dirsort"
869 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
870     AC_TRY_COMPILE([
871 #include <sys/types.h>
872 #if STDC_HEADERS
873 #include <stdlib.h>
874 #include <stddef.h>
875 #endif
876 #include <signal.h>],[struct sigevent s;],
877         samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
878 if test x"$samba_cv_struct_sigevent" = x"yes"; then
879    AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
880    AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
881         [#include <signal.h>])
884 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
885     AC_TRY_COMPILE([
886 #include <sys/types.h>
887 #if STDC_HEADERS
888 #include <stdlib.h>
889 #include <stddef.h>
890 #endif
891 #if TIME_WITH_SYS_TIME
892 # include <sys/time.h>
893 # include <time.h>
894 #else
895 # if HAVE_SYS_TIME_H
896 #  include <sys/time.h>
897 # else
898 #  include <time.h>
899 # endif
900 #endif
901 ],[struct timespec ts;],
902         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
903 if test x"$samba_cv_struct_timespec" = x"yes"; then
904    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
907 # and glibc has setresuid under linux but the function does
908 # nothing until kernel 2.1.44! very dumb.
909 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
910     AC_TRY_RUN([#include <errno.h>
911 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
912         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
913 if test x"$samba_cv_have_setresuid" = x"yes"; then
914     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
917 # Do the same check for setresguid...
919 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
920     AC_TRY_RUN([#include <unistd.h>
921 #include <errno.h>
922 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
923         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
924 if test x"$samba_cv_have_setresgid" = x"yes"; then
925     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
928 AC_FUNC_MEMCMP
930 ###############################################
931 # Readline included by default unless explicitly asked not to
932 test "${with_readline+set}" != "set" && with_readline=yes
934 # test for where we get readline() from
935 AC_MSG_CHECKING(whether to use readline)
936 AC_ARG_WITH(readline,
937 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
938 [  case "$with_readline" in
939   yes)
940     AC_MSG_RESULT(yes)
942     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
943     AC_CHECK_HEADERS(readline/history.h)
945     AC_CHECK_HEADERS(readline.h readline/readline.h,[
946       for termlib in ncurses curses termcap terminfo termlib tinfo; do
947        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
948       done
949       AC_CHECK_LIB(readline, rl_callback_handler_install,
950        [TERMLIBS="-lreadline $TERMLIBS"
951        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
952        break], [TERMLIBS=], $TERMLIBS)])
953     ;;
954   no)
955     AC_MSG_RESULT(no)
956     ;;
957   *)
958     AC_MSG_RESULT(yes)
960     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
961     # alternate readline path
962     _ldflags=${LDFLAGS}
963     _cppflags=${CPPFLAGS}
965     # Add additional search path
966     LDFLAGS="-L$with_readline/lib $LDFLAGS"
967     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
969     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
970     AC_CHECK_HEADERS(readline/history.h)
972     AC_CHECK_HEADERS(readline.h readline/readline.h,[
973       for termlib in ncurses curses termcap terminfo termlib; do
974        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
975       done
976       AC_CHECK_LIB(readline, rl_callback_handler_install,
977        [TERMLDFLAGS="-L$with_readline/lib"
978        TERMCPPFLAGS="-I$with_readline/include"
979        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
980        TERMLIBS="-lreadline $TERMLIBS"
981        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
982        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
984     LDFLAGS=$_ldflags
985     ;;
986   esac],
987   AC_MSG_RESULT(no)
989 AC_SUBST(TERMLIBS)
990 AC_SUBST(TERMLDFLAGS)
992 # The readline API changed slightly from readline3 to readline4, so
993 # code will generate warnings on one of them unless we have a few
994 # special cases.
995 AC_CHECK_LIB(readline, rl_completion_matches,
996              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
997                         [Do we have rl_completion_matches?])],
998              [],
999              [$TERMLIBS])
1001 # not all readline libs have rl_event_hook or history_list
1002 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1003 AC_CHECK_LIB(readline, history_list,
1004              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1005              [],
1006              [$TERMLIBS])
1008 ###############################################
1009 # test for where we get yp_get_default_domain() from
1010 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1011 AC_CHECK_FUNCS(yp_get_default_domain)
1013 # Check if we have execl, if not we need to compile smbrun.
1014 AC_CHECK_FUNCS(execl)
1015 if test x"$ac_cv_func_execl" = x"no"; then
1016     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1019 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
1020 AC_CHECK_FUNCS(strtol)
1021 AC_CHECK_FUNCS(strchr chflags)
1022 AC_CHECK_FUNCS(getrlimit fsync fdatasync setpgid)
1023 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
1024 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1025 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
1026 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
1027 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64 posix_fallocate posix_fallocate64)
1028 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
1029 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1030 AC_CHECK_FUNCS(getpwent_r)
1031 AC_CHECK_FUNCS(getdents64)
1032 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
1033 AC_CHECK_FUNCS(syslog vsyslog timegm)
1034 AC_CHECK_FUNCS(setlocale nl_langinfo)
1035 AC_CHECK_FUNCS(nanosleep,,[AC_CHECK_LIB_EXT(rt, LIBS, nanosleep)])
1036 AC_CHECK_FUNCS(utimensat)
1037 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1038 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1039 AC_CHECK_HEADERS(sys/mman.h)
1040 # setbuffer, shmget, shm_open are needed for smbtorture
1041 AC_CHECK_FUNCS(shmget shm_open)
1042 AC_CHECK_FUNCS(gettext dgettext)
1043 AC_CHECK_FUNCS(bindtextdomain textdomain)
1044 AC_CHECK_FUNCS(strupr)
1046 # Find a method of generating a stack trace
1047 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1048 # libexecinfo provides backtrace_symbols on FreeBSD
1049 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1050 AC_CHECK_FUNCS(backtrace_symbols)
1051 AC_CHECK_LIB(exc, trace_back_stack)
1053 # check for sysctlbyname for BSD systems
1054 AC_CHECK_FUNCS(sysctlbyname)
1056 #############################
1057 # check if building with gpfs
1058 AC_CHECK_HEADERS(gpfs_gpl.h)
1059 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes"; then
1060     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL headers are available])
1061     default_shared_modules="$default_shared_modules vfs_gpfs"
1064 #############################################
1065 # check if building on Isilon OneFS
1066 printf "%s" "checking for Isilon OneFS... "
1067 save_LIBS="$LIBS"
1068 LIBS="$LIBS -lisi_version"
1069 AC_TRY_LINK([#include <isi_version/isi_version.h>],
1070           [get_isilon_copyright()],
1071           samba_cv_HAVE_ONEFS=yes,
1072           samba_cv_HAVE_ONEFS=no)
1073 echo $samba_cv_HAVE_ONEFS
1074 if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then
1075     AC_DEFINE(HAVE_ONEFS,1,[Whether building on Isilon OneFS])
1076     default_shared_modules="$default_shared_modules vfs_onefs vfs_onefs_shadow_copy perfcount_onefs"
1077     default_static_modules="$default_static_modules"
1078     ONEFS_LIBS="-lisi_acl -lisi_ecs -lisi_event -lisi_util"
1079     # Need to also add general libs for oplocks support
1080     save_LIBS="$save_LIBS -lisi_ecs -lisi_event -lisi_util -ldevstat"
1082 AC_SUBST(ONEFS_LIBS)
1083 LIBS="$save_LIBS"
1085 # Note that all the libunwind symbols in the API are defined to internal
1086 # platform-specific version, so we must include libunwind.h before checking
1087 # any of them.
1088 AC_MSG_CHECKING([for libunwind])
1089 save_LIBS=$LIBS
1091 UNWIND_ARCH="unknown"
1092 if test x"$UNAME_I" != x"unknown"; then
1093         UNWIND_ARCH="$UNAME_I"
1094 elif test x"$UNAME_M" != x"unknown"; then
1095         UNWIND_ARCH="$UNAME_M"
1096 elif test x"$UNAME_P" != x"unknown"; then
1097         UNWIND_ARCH="$UNAME_P"
1100 case "$UNWIND_ARCH" in
1101         unknown)
1102                 # This probably won't link without
1103                 # the platform-specific libunwind.
1104                 LIBS="$LIBS -lunwind"
1105                 ;;
1106         i386|i586|i686)
1107                 # Add the platform-specific libunwind module.
1108                 LIBS="$LIBS -lunwind -lunwind-x86"
1109                 ;;
1110         *)
1111                 # Add the platform-specific libunwind module.
1112                 # based on uname -i, uname -m or uname -p
1113                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1114                 ;;
1115 esac
1117 AC_TRY_LINK(
1118     [
1119 #ifdef HAVE_LIBUNWIND_H
1120 #include <libunwind.h>
1121 #endif
1122     ],
1123     [
1124         unw_context_t ctx; unw_cursor_t cur;
1125         char buf[256]; unw_word_t off;
1126         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1127         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1128     ],
1129     [
1130         AC_MSG_RESULT(yes)
1131         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1133         # If we have libunwind, test whether we also have libunwind-ptrace
1134         # which would let us unwind arbitrary processes.
1135         save_LIBS=$LIBS
1136         AC_CHECK_HEADERS(libunwind-ptrace.h)
1137         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1138             [
1139                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1140                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1141                     [Whether libunwind-ptrace.a is available.])
1142             ],
1143             [ LIBUNWIND_PTRACE="" ])
1145         LIBS=$save_LIBS
1146     ],
1147     [
1148         AC_MSG_RESULT(no)
1149         LIBS=$save_LIBS
1150     ])
1152 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1153 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1154     AC_CHECK_HEADERS(sys/ptrace.h)
1155     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1156     AC_TRY_LINK(
1157             [
1158 #if HAVE_SYS_TYPES_H
1159 #include <sys/types.h>
1160 #endif
1161 #if HAVE_SYS_PTRACE_H
1162 #include <sys/ptrace.h>
1163 #endif
1164             ],
1165             [
1166                 pid_t me = (pid_t)-1;
1167                 ptrace(PTRACE_ATTACH, me, 0, 0);
1168                 ptrace(PTRACE_DETACH, me, 0, 0);
1169                 return 0;
1170             ],
1171             [
1172                 AC_MSG_RESULT(yes)
1173                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1174                     [Whether the Linux ptrace(2) interface is available.])
1175             ],
1176             [
1177                 AC_MSG_RESULT(no)
1178                 LIBUNWIND_PTRACE=""
1179             ])
1182 AC_SUBST(LIBUNWIND_PTRACE)
1184 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1185 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1186 AC_CHECK_FUNCS(__getcwd _getcwd)
1187 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1188 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1189 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1190 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1191 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1192 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1193 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1194 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1195 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1196 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1197 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1198 AC_CHECK_FUNCS(prctl)
1200 AC_TRY_COMPILE([
1201 #ifdef HAVE_SYS_PRCTL_H
1202 #include <sys/prctl.h>
1203 #endif
1205 [int i; i = prtcl(0); ],
1206 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1211 case "$host_os" in
1212     *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
1213        # glibc <= 2.3.2 has a broken getgrouplist
1214        AC_CACHE_CHECK([for good getgrouplist],samba_cv_linux_getgrouplist_ok,[AC_TRY_RUN([
1215 #include <unistd.h>
1216 #include <sys/utsname.h>
1217 main() {
1218        /* glibc up to 2.3 has a broken getgrouplist */
1219 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1220        int libc_major = __GLIBC__;
1221        int libc_minor = __GLIBC_MINOR__;
1223        if (libc_major < 2)
1224               exit(1);
1225        if ((libc_major == 2) && (libc_minor <= 3))
1226               exit(1);
1227 #endif
1228        exit(0);
1230 ], [samba_cv_linux_getgrouplist_ok=yes],
1231    [samba_cv_linux_getgrouplist_ok=no],
1232    [samba_cv_linux_getgrouplist_ok=cross])])
1233        if test x"$samba_cv_linux_getgrouplist_ok" = x"yes"; then
1234           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1235        fi
1236        ;;
1237     *)
1238        AC_CHECK_FUNCS(getgrouplist)
1239        ;;
1240 esac
1243 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1246 if test x$ac_cv_func_stat64 = xno ; then
1247   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1248   AC_TRY_LINK([
1249 #if defined(HAVE_UNISTD_H)
1250 #include <unistd.h>
1251 #endif
1252 #include <sys/stat.h>
1253 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1254   AC_MSG_RESULT([$ac_cv_func_stat64])
1255   if test x$ac_cv_func_stat64 = xyes ; then
1256     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1257   fi
1260 if test x$ac_cv_func_lstat64 = xno ; then
1261   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1262   AC_TRY_LINK([
1263 #if defined(HAVE_UNISTD_H)
1264 #include <unistd.h>
1265 #endif
1266 #include <sys/stat.h>
1267 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1268   AC_MSG_RESULT([$ac_cv_func_lstat64])
1269   if test x$ac_cv_func_lstat64 = xyes ; then
1270     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1271   fi
1274 if test x$ac_cv_func_fstat64 = xno ; then
1275   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1276   AC_TRY_LINK([
1277 #if defined(HAVE_UNISTD_H)
1278 #include <unistd.h>
1279 #endif
1280 #include <sys/stat.h>
1281 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1282   AC_MSG_RESULT([$ac_cv_func_fstat64])
1283   if test x$ac_cv_func_fstat64 = xyes ; then
1284     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1285   fi
1288 #################################################
1289 # Check whether struct stat has timestamps with sub-second resolution.
1292 samba_cv_stat_hires=no
1293 AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec], # Linux, Solaris
1294         [samba_cv_stat_hires=yes])
1295 AC_CHECK_MEMBERS([struct stat.st_mtimensec], # BSD, if defined _POSIX_SOURCE
1296         [samba_cv_stat_hires=yes])
1297 AC_CHECK_MEMBERS([struct stat.st_mtimespec.tv_nsec], # BSD, if not defined _POSIX_SOURCE
1298         [samba_cv_stat_hires=yes])
1299 AC_CHECK_MEMBERS([struct stat.st_mtime_n], # AIX
1300         [samba_cv_stat_hires=yes])
1301 AC_CHECK_MEMBERS([struct stat.st_umtime], # Tru64
1302         [samba_cv_stat_hires=yes])
1304 if test x"$samba_cv_stat_hires" = x"yes" ; then
1305     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1306             [whether struct stat has sub-second timestamps])
1309 # recent FreeBSD, NetBSD have creation timestamps called birthtime:
1310 AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec])
1311 AC_CHECK_MEMBERS([struct stat.st_birthtime], AC_CHECK_MEMBERS([struct stat.st_birthtimensec]))
1314 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1315     [
1316         AC_TRY_COMPILE(
1317             [#include <sys/stat.h>],
1318             [
1319                 int a = UF_DOS_ARCHIVE;
1320                 int h = UF_DOS_HIDDEN;
1321                 int r = UF_DOS_RO;
1322                 int s = UF_DOS_SYSTEM;
1323                 int i = UF_DOS_NOINDEX;
1324                 int f = UF_DOS_FLAGS;
1325             ],
1326             samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1327     ])
1329 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1330     AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1333 #####################################
1334 # needed for SRV lookups
1335 AC_CHECK_LIB(resolv, dn_expand)
1336 AC_CHECK_LIB(resolv, _dn_expand)
1337 AC_CHECK_LIB(resolv, __dn_expand)
1340 # Check for the functions putprpwnam, set_auth_parameters,
1341 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1342 # Needed for OSF1 and HPUX.
1345 AC_LIBTESTFUNC(security, putprpwnam)
1346 AC_LIBTESTFUNC(sec, putprpwnam)
1348 AC_LIBTESTFUNC(security, set_auth_parameters)
1349 AC_LIBTESTFUNC(sec, set_auth_parameters)
1351 # UnixWare 7.x has its getspnam in -lgen
1352 AC_LIBTESTFUNC(gen, getspnam)
1354 AC_LIBTESTFUNC(security, getspnam)
1355 AC_LIBTESTFUNC(sec, getspnam)
1357 AC_LIBTESTFUNC(security, bigcrypt)
1358 AC_LIBTESTFUNC(sec, bigcrypt)
1360 AC_LIBTESTFUNC(security, getprpwnam)
1361 AC_LIBTESTFUNC(sec, getprpwnam)
1363 AC_CHECK_FUNCS(strsignal)
1365 ############################################
1366 # Check if we have libattr
1367 case "$host_os" in
1368   *osf*)
1369         AC_SEARCH_LIBS(getproplist, [proplist])
1370         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1371         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1372         AC_CHECK_FUNCS(sizeof_proplist_entry)
1373   ;;
1374   *)
1375         AC_SEARCH_LIBS(getxattr, [attr])
1376         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1377         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1378         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1379         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1380         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1381         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1382         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1383   ;;
1384 esac
1386 ########################################################
1387 # Check if attropen() is present if this is Solaris
1388 case "$host_os" in
1389   *solaris*)
1390         AC_CHECK_FUNCS(attropen)
1391   ;;
1392 esac
1394 ########################################################
1395 # Do xattr functions take additional options like on Darwin?
1396 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1397         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1398                 old_LIBS=$LIBS
1399                 LIBS="$LIBS $ACL_LIBS"
1400                 AC_TRY_COMPILE([
1401                         #include <sys/types.h>
1402                         #if HAVE_ATTR_XATTR_H
1403                         #include <attr/xattr.h>
1404                         #elif HAVE_SYS_XATTR_H
1405                         #include <sys/xattr.h>
1406                         #endif
1407                 ],[
1408                         getxattr(0, 0, 0, 0, 0, 0);
1409                 ],
1410                 [smb_attr_cv_xattr_add_opt=yes],
1411                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1412         ])
1413         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1414                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1415         fi
1418 # Check if we have extattr
1419 case "$host_os" in
1420   *freebsd4* | *dragonfly* )
1421     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1422     ;;
1423   *)
1424     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1425     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1426     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1427     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1428     ;;
1429 esac
1431 AC_DISABLE_STATIC
1432 AC_ENABLE_SHARED
1434 # Set defaults
1435 PIE_CFLAGS=""
1436 PIE_LDFLAGS=""
1437 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1439 if test "x$enable_pie" != xno
1440 then
1441         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1442         [
1443                 cat > conftest.c <<EOF
1444 int foo;
1445 int main () { return 0;}
1447                 if AC_TRY_COMMAND_NO_STDERR([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c])
1448                 then
1449                         samba_cv_fpie=yes
1450                 else
1451                         samba_cv_fpie=no
1452                 fi
1453                 rm -f conftest*
1454         ])
1455         if test x"${samba_cv_fpie}" = x"yes"
1456         then
1457                 PIE_CFLAGS="-fPIE"
1458                 PIE_LDFLAGS="-pie"
1459         fi
1462 # Set defaults
1463 RELRO_LDFLAGS=""
1464 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1466 if test "x$enable_relro" != xno
1467 then
1468         AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1469         [
1470                 cat > conftest.c <<EOF
1471 int foo;
1472 main () { return 0;}
1474                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1475                 then
1476                         samba_cv_relro=yes
1477                 else
1478                         samba_cv_relro=no
1479                 fi
1480                 rm -f conftest*
1481         ])
1482         if test x"${samba_cv_relro}" = x"yes"
1483         then
1484                 RELRO_LDFLAGS="-Wl,-z,relro"
1485         fi
1488 # Set defaults
1489 SYMSEXT="syms"
1490 AC_SUBST(SYMSEXT)
1492 # Assume non-shared by default and override below
1493 BLDSHARED="false"
1495 # these are the defaults, good for lots of systems
1496 HOST_OS="$host_os"
1497 LDSHFLAGS="-shared"
1498 MODULE_EXPORTS=""
1499 SONAMEFLAG="#"
1500 SHLD="\${CC} \${CFLAGS}"
1501 PICFLAG="${PIE_CFLAGS}"
1502 SHLIBEXT="so"
1503 DSO_EXPORTS=""
1505 # this bit needs to be modified for each OS that supports share libs
1506 # You need to specify how to create a shared library and
1507   # how to compile C code to produce PIC object files
1509   AC_MSG_CHECKING([ability to build shared libraries])
1511   # and these are for particular systems
1512   case "$host_os" in
1513                 *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu | *qnx*)
1514                         case "$host_os" in
1515                                 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
1516                                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx]) ;;
1517                         esac
1518                         BLDSHARED="true"
1519                         LDSHFLAGS="-shared -Wl,-Bsymbolic"
1520                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1521                                 LDSHFLAGS_Z_NODEFS="-Wl,--allow-shlib-undefined"
1522                         fi
1523                         DYNEXP="-Wl,--export-dynamic"
1524                         PICFLAG="-fPIC"
1525                         SONAMEFLAG="-Wl,-soname="
1526                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1527                         ;;
1528                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1529                         BLDSHARED="true"
1530                         if test "${GCC}" = "yes"; then
1531                                 PICFLAG="-fPIC"
1532                                 SONAMEFLAG="-Wl,-soname="
1533                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1534                                         DYNEXP="-Wl,-E"
1535                                 fi
1536                                 LDSHFLAGS="-shared"
1537                         else
1538                                 PICFLAG="-KPIC"
1539                                 LDSHFLAGS="-G"
1540                         fi
1541                         if test "$ac_cv_prog_gnu_ld" = "yes"; then
1542                                 SONAMEFLAG="-Wl,-soname="
1543                         else
1544                                 SONAMEFLAG="-Wl,-h,"
1545                         fi
1546                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1547                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1548                         ;;
1549                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1550                         BLDSHARED="true"
1551                         LDSHFLAGS="-G"
1552                         SONAMEFLAG="-Wl,-h,"
1553                         PICFLAG="-KPIC"   # Is this correct for SunOS
1554                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1555                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1556                         ;;
1557                 *netbsd* | *freebsd* | *dragonfly* )
1558                         BLDSHARED="true"
1559                         LDSHFLAGS="-shared"
1560                         DYNEXP="-Wl,--export-dynamic"
1561                         SONAMEFLAG="-Wl,-soname,"
1562                         PICFLAG="-fPIC -DPIC"
1563                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1564                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1565                         ;;
1566                 *openbsd*)  BLDSHARED="true"
1567                         LDSHFLAGS="-shared"
1568                         DYNEXP="-Wl,-Bdynamic"
1569                         SONAMEFLAG="-Wl,-soname,"
1570                         PICFLAG="-fPIC"
1571                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1572                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1573                         ;;
1574                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1575                         case "$host_os" in
1576                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1577                         ;;
1578                         esac
1579                         BLDSHARED="true"
1580                         LDSHFLAGS="-Wl,-set_version,sgi1.0 -shared"
1581                         SONAMEFLAG="-Wl,-soname,"
1582                         if test "${GCC}" = "yes"; then
1583                                 PICFLAG="-fPIC"
1584                         else
1585                                 PICFLAG="-KPIC"
1586                         fi
1587                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1588                         ;;
1589                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1590                         BLDSHARED="true"
1591                         # use expfull to export underscored symbols
1592                         # add rtl to remove /lib/crt0.o warning
1593                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1594                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1595                         PICFLAG="-O2"
1596                         # as AIX code is always position independent...
1597                         # .po will just create compile warnings, use po.o:
1598                         if test "${GCC}" != "yes"; then
1599                                 ## for funky AIX compiler using strncpy()
1600                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000 -qhalt=e"
1601                         fi
1603                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1604                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1605                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1606                         ;;
1607                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1608                         # Use special PIC flags for the native HP-UX compiler.
1609                                 BLDSHARED="true"
1610                                 SHLD="cc"
1611                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1612                                 SONAMEFLAG="-Wl,+h "
1613                                 PICFLAG="+z"
1614                         if test "${GCC}" = "yes"; then
1615                                 PICFLAG="-fPIC"
1616                         else
1617                                 PICFLAG="+z +ESnolit"
1618                         fi
1619                         if test "$host_cpu" = "ia64"; then
1620                                 SHLIBEXT="so"
1621                               PICFLAG="+z"
1622                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1623                         else
1624                                 SHLIBEXT="sl"
1625                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1626                         fi
1627                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1628                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1629                         ;;
1630                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1631                         BLDSHARED="true"
1632                         LDSHFLAGS="-shared"
1633                         SONAMEFLAG="-Wl,-soname,"
1634                         PICFLAG="-fPIC"
1635                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1636                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1637                         ;;
1638                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1639                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1640                         ;;
1641                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1642                         BLDSHARED="true"
1643                         LDSHFLAGS="-shared"
1644                         SONAMEFLAG="-Wl,-soname,"
1645                         PICFLAG="-KPIC"
1646                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1647                         ;;
1648                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1649                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1650                         ;;
1651                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1652                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1653                         ;;
1654                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1655                         case "$host" in
1656                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1657                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1658                                         fi
1659                                         LDSHFLAGS="-G"
1660                                         DYNEXP="-Bexport"
1661                                 ;;
1662                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1663                         esac
1664                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1665                         ;;
1667                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1668                         if [ test "$GCC" != yes ]; then
1669                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1670                         fi
1671                         LDSHFLAGS="-G"
1672                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1673                         ;;
1674                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1675                         BLDSHARED="false"
1676                         LDSHFLAGS=""
1677                         ;;
1679                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1680                         BLDSHARED="true"
1681                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1682                         CFLAGS="$CFLAGS -fno-common"
1683                         SHLD="\${CC}"
1684                         SHLIBEXT="dylib"
1685                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1686                         SHLIBEXT="dylib"
1687                         # Since gcc doesn't fail on unrecognised options, the
1688                         # PIE test incorrectly succeeds. Darwin gcc does not
1689                         # actually support the PIE stuff.
1690                         PIE_LDFLAGS=
1691                         PIE_CFLAGS=
1692                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1693                         ;;
1695                 *)
1696                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1697                         ;;
1698   esac
1700 if test "$enable_shared" != "yes"; then
1701         BLDSHARED=false
1704 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1705         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1708 if test x"$BLDSHARED" = x"true" ; then
1709         LDFLAGS="$LDFLAGS -L./bin"
1712 AC_MSG_RESULT($BLDSHARED)
1714 saved_before_as_needed_ldflags="$LDFLAGS"
1715 for flags in "-Wl,--as-needed" "-Wl,-z,ignore" "-z ignore" ; do
1716         saved_ldflags="$LDFLAGS"
1717         AC_MSG_CHECKING([if $flags works])
1718         LDFLAGS="$flags $saved_ldflags"
1719         AC_TRY_LINK([],[],
1720                 [AC_MSG_RESULT([yes])
1721                 LD_AS_NEEDED_FLAG=$flags
1722                 ld_as_needed_flag_found=yes],
1723                 AC_MSG_RESULT([no]))
1724         LDFLAGS="$LD_AS_NEEDED_FLAG $saved_ldflags"
1725         test x"$ld_as_needed_flag_found" = xyes && break
1726 done
1728 # check if we have to disable LD_AS_NEEDED_FLAG:
1729 # On some systems for a veriety of reasons linking with
1730 # -Wl,--as-needed -lreadline -lncurses fails
1731 # we have to retest, if these combination is detected before.
1732 # Bugzilla #7209
1734 if test x$ac_cv_lib_readline_rl_callback_handler_install = xyes ; then
1735         if test x$ld_as_needed_flag_found = xyes ; then
1736                 AC_MSG_CHECKING([if $LD_AS_NEEDED_FLAG works with readline])
1737                 # try if check no fails
1738                 save_LIBS=$LIBS
1739                 LIBS="$LIBS $TERMLIBS"
1740                 AC_TRY_LINK([], [rl_callback_handler_install();], [AC_MSG_RESULT([yes])],[ AC_MSG_RESULT([no]); LDFLAGS="$saved_before_as_needed_ldflags"])
1741                 LIBS="$save_LIBS"
1742         fi
1747 # for historical reasons almost all linkers don't complain about unresolved
1748 # symbols in shared libs. Except for the internal samba modules we want to get
1749 # errors when we produce a shared lib with unresolved symbols. On some
1750 # platforms unresolved symbols might be intended, so we might have to add
1751 # platform specific exceptions here.
1753 for flags in "-Wl,-z,defs" "-error_unresolved" "-Wl,-error_unresolved" ; do
1754         saved_ldflags="$LDFLAGS"
1755         AC_MSG_CHECKING([if $flags works])
1756         LDFLAGS="$flags $saved_ldflags"
1757         AC_TRY_LINK([],[],
1758         [AC_MSG_RESULT([yes])
1759         LDSHFLAGS_Z_DEFS=$flags
1760         ldshflags_z_defs_found=yes],
1761         AC_MSG_RESULT([no]))
1762         LDFLAGS=$saved_ldflags
1763         test x"$ldshflags_z_defs_found" = xyes && break
1764 done
1766 AC_MSG_CHECKING([LDSHFLAGS_Z_DEFS])
1767 AC_MSG_RESULT([$LDSHFLAGS_Z_DEFS])
1768 AC_MSG_CHECKING([LDFLAGS])
1769 AC_MSG_RESULT([$LDFLAGS])
1770 AC_MSG_CHECKING([DYNEXP])
1771 AC_MSG_RESULT([$DYNEXP])
1773 #######################################################
1774 # test whether building a shared library actually works
1775 if test $BLDSHARED = true; then
1777 AC_MSG_CHECKING([SHLD])
1778 AC_MSG_RESULT([$SHLD])
1779 AC_MSG_CHECKING([LDSHFLAGS])
1780 AC_MSG_RESULT([$LDSHFLAGS])
1782 AC_MSG_CHECKING([SHLIBEXT])
1783 AC_MSG_RESULT([$SHLIBEXT])
1784 AC_MSG_CHECKING([SONAMEFLAG])
1785 AC_MSG_RESULT([$SONAMEFLAG])
1787 AC_MSG_CHECKING([PICFLAG])
1788 AC_MSG_RESULT([$PICFLAG])
1790 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1791 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1793 AC_CACHE_CHECK([whether building shared libraries actually works],
1794                [ac_cv_shlib_works],[
1795    # try building a trivial shared library
1796    ac_cv_shlib_works=no
1797    # The $SHLD and $LDSHFLAGS variables may contain references to other
1798    # variables so they need to be eval'ed.
1799    if AC_TRY_COMMAND([$CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.o ${srcdir-.}/../tests/shlib.c 1>&AS_MESSAGE_LOG_FD])
1800    then
1801      if AC_TRY_COMMAND([`eval echo "$SHLD $LDSHFLAGS $PICFLAG"` -o "shlib.$SHLIBEXT" shlib.o 1>&AS_MESSAGE_LOG_FD])
1802      then
1803        ac_cv_shlib_works=yes
1804      fi
1805    fi
1806    rm -f "shlib.$SHLIBEXT" shlib.o
1809 if test $ac_cv_shlib_works = no; then
1810    BLDSHARED=false
1814 if test x"$BLDSHARED" != x"true"; then
1815         LDSHFLAGS="shared-libraries-disabled"
1816         SONAMEFLAG="shared-libraries-disabled"
1817         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1818         SHLD="shared-libraries-disabled"
1819         PICFLAG="${PIE_CFLAGS}"
1820         SHLIBEXT="shared_libraries_disabled"
1821         merged_build_possible=no
1824 AC_MSG_CHECKING([used PICFLAG])
1825 AC_MSG_RESULT([$PICFLAG])
1827 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1829 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
1832 ###########################################################
1834 # Configuration of subsystem / libraries
1836 ###########################################################
1838 INSTALLLIBCMD_SH=:
1839 INSTALLLIBCMD_A=:
1840 UNINSTALLLIBCMD_SH=:
1841 UNINSTALLLIBCMD_A=:
1843 if test $BLDSHARED = true; then
1844         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
1845         UNINSTALLLIBCMD_SH="rm -f"
1847 if test $enable_static = yes; then
1848         INSTALLLIBCMD_A="\$(INSTALLCMD)"
1849         UNINSTALLLIBCMD_A="rm -f"
1852 #################################################
1853 # --disable-shared-libs
1854 # can be used to disable the internal use of shared libs altogether
1855 # (this only has an effect when building shared libs is enabled)
1857 USESHARED=false
1858 AC_SUBST(USESHARED)
1860 AC_MSG_CHECKING(whether to use shared libraries internally)
1861 AC_ARG_ENABLE([shared-libs],
1862         AS_HELP_STRING([--enable-shared-libs],
1863                 [Use shared libraries internally (default=yes)]),
1864         [enable_shared_libs=$enableval],
1865         [enable_shared_libs=yes])
1867 if test x"$enable_shared_libs" != x"no" ; then
1868         USESHARED=$BLDSHARED
1871 AC_MSG_RESULT([$USESHARED])
1873 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
1874         AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
1877 #################################################
1878 # --with-static-libs=LIBS:
1879 #   link (internal) libs dynamically or statically?
1881 # If a subsystem is built as a library then this controls whether they are
1882 # linked into Samba targets statically or dynamically:
1884 # * If we build the shared library at all, we link dynamically by default.
1886 # * We only link statically if we don't build shared or if the library
1887 #   appears in the --with-static-libs configure option.
1889 # Example:
1890 #   --with-static-libs=libtalloc makes use of libtalloc.a instead
1891 #   of linking the dynamic variant with -ltalloc.
1893 # NOTE: This option only affects libraries that we do not only build
1894 # but that samba also links against as libraries (as opposed to linking
1895 # the plain object files. - This has to be configured in Makefile.in.
1896 # So in particular it does not harm to give invalid or unknown names here.
1899 AC_ARG_WITH([static-libs],
1900         [AS_HELP_STRING([--with-static-libs=LIBS],
1901                 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
1902         [AS_IF([test $withval],
1903                 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
1904                         [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
1905                         eval LINK_$lib=STATIC
1906                 done], [])],
1907         [])
1910 # WORKAROUND:
1911 #   until we have organized other internal subsystems (as util, registry
1912 #   and smbconf) into shared libraries, we CAN NOT link libnetapi
1913 #   dynamically to samba programs.
1915 LINK_LIBNETAPI=STATIC
1917 LINK_LIBSMBCLIENT=STATIC
1920 #  The library versions are hardcoded here
1921 #  and filled into the LIBFOO_SOVER variable.
1923 #  TODO: for talloc and tdb (at least), these should
1924 #  be extracted from their respective source directories
1926 AC_ARG_ENABLE(external_libtalloc, [AS_HELP_STRING([--enable-external-libtalloc], [Enable external talloc [default=auto]])],
1927 [ enable_external_libtalloc=$enableval ], [ enable_external_libtalloc=auto ])
1929 if test "x$enable_external_libtalloc" != xno
1930 then
1931         PKG_CHECK_MODULES(LIBTALLOC, talloc >= 2.0.1,
1932                 [ enable_external_libtalloc=yes ],
1933                 [if test x$enable_external_libtalloc = xyes; then
1934                         AC_MSG_ERROR([Unable to find libtalloc])
1935                   else
1936                         enable_external_libtalloc=no
1937                   fi
1938                 ])
1941 if test "x$enable_external_libtalloc" = xno
1942 then
1943         m4_include(../lib/talloc/libtalloc.m4)
1944         LINK_LIBTALLOC=STATIC
1945         SMB_LIBRARY(talloc, 2)
1946         LIBTALLOC_OBJ0=""
1947         for obj in ${TALLOC_OBJ}; do
1948                 LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
1949         done
1950         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
1951         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TALLOC_CFLAGS}"
1952         AC_SUBST(LIBTALLOC_OBJ0)
1954         TALLOCTORT="bin/talloctort\$(EXEEXT)"
1955         AC_SUBST(TALLOCTORT)
1959 AC_ARG_ENABLE(external_libtdb,
1960         [AS_HELP_STRING([--enable-external-libtdb],
1961                 [Enable external tdb [default=auto]])],
1962                 [ enable_external_libtalloc=$enableval ],
1963                 [ enable_external_libtalloc=auto ])
1965 if test "x$enable_external_libtdb" != xno
1966 then
1967         PKG_CHECK_MODULES(LIBTDB, tdb >= 1.2.1,
1968                 [ enable_external_libtdb=yes ],
1969                 [
1970                 if test x$enable_external_libtdb = xyes; then
1971                         AC_MSG_ERROR([Unable to find libtdb])
1972                 else
1973                         enable_external_libtdb=no
1974                 fi
1975                 ])
1978 AC_SUBST(LIBTDB_OBJ0)
1979 if test "x$enable_external_libtdb" = xno
1980 then
1981         m4_include(../lib/tdb/libtdb.m4)
1982         LINK_LIBTDB=STATIC
1983         SMB_LIBRARY(tdb, 1)
1984         LIBTDB_OBJ0=""
1985         for obj in ${TDB_OBJ}; do
1986                 LIBTDB_OBJ0="${LIBTDB_OBJ0} ${tdbdir}/${obj}"
1987         done
1988         AC_SUBST(LIBTDB_OBJ0)
1989         SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
1990         SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CONFIGURE_CPPFLAGS} ${TDB_CFLAGS}"
1992         TDBBACKUP="bin/tdbbackup\$(EXEEXT)"
1993         AC_SUBST(TDBBACKUP)
1994         TDBDUMP="bin/tdbdump\$(EXEEXT)"
1995         AC_SUBST(TDBDUMP)
1996         TDBTOOL="bin/tdbtool\$(EXEEXT)"
1997         AC_SUBST(TDBTOOL)
1998         TDBTORTURE="bin/tdbtorture\$(EXEEXT)"
1999         AC_SUBST(TDBTORTURE)
2002 SMB_LIBRARY(netapi, 0)
2003 SMB_LIBRARY(smbclient, 0)
2004 SMB_LIBRARY(smbsharemodes, 0)
2005 SMB_LIBRARY(addns, 0, no, [undefined API])
2009 ################
2011 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2012 AC_TRY_RUN([#include <stdio.h>
2013 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2014 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2015 if test x"$samba_cv_have_longlong" = x"yes"; then
2016     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2017     AC_CHECK_TYPE(intptr_t, unsigned long long)
2018 else
2019     AC_CHECK_TYPE(intptr_t, unsigned long)
2023 # Check if the compiler supports the LL prefix on long long integers.
2024 # AIX needs this.
2026 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2027     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2028         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2029 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2030    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2034 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2035 AC_TRY_RUN([#include <time.h>
2036 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2037 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2038 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2039     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2042 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2043 AC_TRY_RUN([#include <stdio.h>
2044 #include <sys/stat.h>
2045 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2046 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2047 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2048     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2051 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2052 AC_TRY_RUN([
2053 #if defined(HAVE_UNISTD_H)
2054 #include <unistd.h>
2055 #endif
2056 #include <stdio.h>
2057 #include <sys/stat.h>
2058 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2059 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2060 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2061     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2064 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2065 AC_TRY_RUN([
2066 #if defined(HAVE_UNISTD_H)
2067 #include <unistd.h>
2068 #endif
2069 #include <stdio.h>
2070 #include <sys/stat.h>
2071 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2072 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2073 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2074     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2077 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2078 AC_TRY_RUN([
2079 #if defined(HAVE_UNISTD_H)
2080 #include <unistd.h>
2081 #endif
2082 #include <stdio.h>
2083 #include <sys/stat.h>
2084 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2085 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2086 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2087     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2090 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2091 AC_TRY_RUN([
2092 #if defined(HAVE_UNISTD_H)
2093 #include <unistd.h>
2094 #endif
2095 #include <stdio.h>
2096 #include <sys/stat.h>
2097 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2098 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2099 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2100     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2103 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2104 AC_TRY_RUN([
2105 #if defined(HAVE_UNISTD_H)
2106 #include <unistd.h>
2107 #endif
2108 #include <stdio.h>
2109 #include <sys/stat.h>
2110 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2111 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2112 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2113     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2116 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2117 AC_TRY_COMPILE([
2118 #if defined(HAVE_UNISTD_H)
2119 #include <unistd.h>
2120 #endif
2121 #include <sys/types.h>
2122 #include <dirent.h>],
2123 [DIR64 de;],
2124 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2125 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2126     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2129 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2130 AC_TRY_COMPILE([
2131 #if defined(HAVE_UNISTD_H)
2132 #include <unistd.h>
2133 #endif
2134 #include <sys/types.h>
2135 #include <dirent.h>],
2136 [struct dirent64 de;],
2137 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2138 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2139     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2142 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2143 AC_TRY_RUN([
2144 #if defined(HAVE_UNISTD_H)
2145 #include <unistd.h>
2146 #endif
2147 #include <sys/types.h>
2148 main() { dev_t dev; int i = major(dev); return 0; }],
2149 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2150 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2151     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2154 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2155 AC_TRY_RUN([
2156 #if defined(HAVE_UNISTD_H)
2157 #include <unistd.h>
2158 #endif
2159 #include <sys/types.h>
2160 main() { dev_t dev; int i = minor(dev); return 0; }],
2161 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2162 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2163     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2166 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2167 AC_TRY_RUN([
2168 #if defined(HAVE_UNISTD_H)
2169 #include <unistd.h>
2170 #endif
2171 #include <sys/types.h>
2172 main() { dev_t dev = makedev(1,2); return 0; }],
2173 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2174 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2175     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2178 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2179 AC_TRY_RUN([#include <stdio.h>
2180 main() { char c; c=250; exit((c > 0)?0:1); }],
2181 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2182 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2183     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2186 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2187 AC_TRY_COMPILE([#include <sys/types.h>
2188 #include <dirent.h>
2189 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2190 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2191 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2192     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2195 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2196 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2197 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2198 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2199     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2202 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2203 AC_TRY_LINK([
2204 #include <sys/time.h>
2205 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2206            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2207            samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2208 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2209     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2212 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2214     # On some systems (eg. Linux) librt can pull in libpthread. We
2215     # don't want this to happen because libpthreads changes signal delivery
2216     # semantics in ways we are not prepared for. This breaks Linux oplocks
2217     # which rely on signals.
2219     AC_LIBTESTFUNC(rt, clock_gettime,
2220             [
2221                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2222                                 [Whether clock_gettime is available])
2223                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2224                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2225                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2226                         ])
2230 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2231 AC_TRY_RUN([#include <sys/types.h>
2232 #include <dirent.h>
2233 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2234 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2235 di->d_name[0] == 0) exit(0); exit(1);} ],
2236 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2237 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2238     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2241 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2242 AC_TRY_COMPILE([#include <sys/types.h>
2243 #include <utime.h>],
2244 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2245 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2246 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2247     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2250 ##############
2251 # Check utmp details, but only if our OS offers utmp.h
2252 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2253 dnl  utmp and utmpx come in many flavours
2254 dnl  We need to check for many of them
2255 dnl  But we don't need to do each and every one, because our code uses
2256 dnl  mostly just the utmp (not utmpx) fields.
2258 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx getutxent)
2260 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2261 AC_TRY_COMPILE([#include <sys/types.h>
2262 #include <utmp.h>],
2263 [struct utmp ut;  ut.ut_name[0] = 'a';],
2264 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2265 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2266     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2269 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2270 AC_TRY_COMPILE([#include <sys/types.h>
2271 #include <utmp.h>],
2272 [struct utmp ut;  ut.ut_user[0] = 'a';],
2273 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2274 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2275     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2278 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2279 AC_TRY_COMPILE([#include <sys/types.h>
2280 #include <utmp.h>],
2281 [struct utmp ut;  ut.ut_id[0] = 'a';],
2282 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2283 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2284     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2287 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2288 AC_TRY_COMPILE([#include <sys/types.h>
2289 #include <utmp.h>],
2290 [struct utmp ut;  ut.ut_host[0] = 'a';],
2291 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2292 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2293     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2296 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2297 AC_TRY_COMPILE([#include <sys/types.h>
2298 #include <utmp.h>],
2299 [struct utmp ut;  time_t t; ut.ut_time = t;],
2300 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2301 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2302     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2305 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2306 AC_TRY_COMPILE([#include <sys/types.h>
2307 #include <utmp.h>],
2308 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2309 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2310 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2311     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2314 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2315 AC_TRY_COMPILE([#include <sys/types.h>
2316 #include <utmp.h>],
2317 [struct utmp ut;  ut.ut_type = 0;],
2318 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2319 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2320     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2323 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2324 AC_TRY_COMPILE([#include <sys/types.h>
2325 #include <utmp.h>],
2326 [struct utmp ut;  ut.ut_pid = 0;],
2327 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2328 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2329     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2332 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2333 AC_TRY_COMPILE([#include <sys/types.h>
2334 #include <utmp.h>],
2335 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2336 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2337 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2338     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2341 dnl Look for the IPv6 varient by preference. Many systems have both.
2342 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2343 AC_TRY_COMPILE([#include <sys/types.h>
2344 #include <utmp.h>],
2345 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2346 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2347 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2348     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2351 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2352 AC_TRY_COMPILE([#include <sys/types.h>
2353 #include <utmp.h>],
2354 [struct utmp ut;  ut.ut_addr = 0;],
2355 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2356 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2357     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2360 if test x$ac_cv_func_pututline = xyes ; then
2361   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2362   AC_TRY_COMPILE([#include <sys/types.h>
2363 #include <utmp.h>],
2364   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2365   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2366   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2367       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2368   fi
2371 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2372 AC_TRY_COMPILE([#include <sys/types.h>
2373 #include <utmpx.h>],
2374 [struct utmpx ux;  ux.ut_syslen = 0;],
2375 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2376 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2377     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2381 # end utmp details
2384 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2385 AC_ARG_WITH(libiconv,
2386 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2388   if test "$withval" = "no" ; then
2389     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2390   else
2391      if test "$withval" != "yes" ; then
2392         ICONV_PATH_SPEC=yes
2393         ICONV_LOOK_DIRS="$withval"
2394      fi
2395   fi
2398 for i in $ICONV_LOOK_DIRS ; do
2400     save_LIBS="$LIBS"
2401     save_LDFLAGS="$LDFLAGS"
2402     save_CPPFLAGS="$CPPFLAGS"
2404     iconv_current_LIBS=""
2405     iconv_current_LDFLAGS=""
2406     iconv_current_CPPFLAGS=""
2408     ICONV_FOUND="no"
2409     unset libext
2411     #  This is here to handle -withval stuff for --with-libiconv
2412     #  Perhaps we should always add a -L
2413     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2415     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2416     # installation paths. This gets a little tricky since we might have iconv
2417     # in both libiconv and in libc. In this case the jm_ICONV test will always
2418     # succeed when the header is found. To counter this, make sure the
2419     # library directory is there and check the ABI directory first (which
2420     # should be harmless on other systems, but causes tons of linker warnings on
2421     # 64bit Ubuntu systems).
2422     # As the build farm doesn't seem to have any IRIX machines with iconv.h
2423     # installed, I've decided to fix the linker warnings.
2424     # -- Kai
2425     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2426     for l in "lib" "lib32" "lib/hpux32"; do
2427         if test -d "$i/$l" ; then
2428                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2429                 LIBS=
2430                 export LDFLAGS LIBS CPPFLAGS
2431                 # Try to find iconv(3)
2432                 jm_ICONV($i/$l)
2433                 if test x"$ICONV_FOUND" = "xyes" ; then
2434                     libext="$l"
2435                     break
2436                 fi
2437         fi
2438     done
2440     if test x"$ICONV_FOUND" = "xyes" ; then
2441         iconv_current_LDFLAGS="-L$i/$libext"
2442         iconv_current_CPPFLAGS="-I$i/include"
2444         if test x"$jm_cv_lib_iconv" != x; then
2445             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2446         else
2447             # We found iconv in libc.
2448             iconv_current_LIBS=""
2449         fi
2451     fi
2453     if test x"$ICONV_FOUND" = "xyes" ; then
2455         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2456         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2457         LIBS="$save_LIBS $iconv_current_LIBS"
2458         export LDFLAGS LIBS CPPFLAGS
2460         default_dos_charset=no
2461         default_display_charset=no
2462         default_unix_charset=no
2464         # check for default dos charset name
2465         for j in CP850 IBM850 ; do
2466             rjs_CHARSET($j)
2467             default_dos_charset="$ICONV_CHARSET"
2468             if test x"$default_dos_charset" = x"$j"; then
2469                 break
2470             fi
2471         done
2473         # check for default display charset name
2474         for j in ASCII 646 ; do
2475             rjs_CHARSET($j)
2476             default_display_charset="$ICONV_CHARSET"
2477             if test x"$default_display_charset" = x"$j"; then
2478                 break
2479             fi
2480         done
2482         # check for default unix charset name
2483         for j in UTF-8 UTF8 ; do
2484             rjs_CHARSET($j)
2485             default_unix_charset="$ICONV_CHARSET"
2486             if test x"$default_unix_charset" = x"$j"; then
2487                 break
2488             fi
2489         done
2491         if test "$default_dos_charset" != "no" -a \
2492                 "$default_dos_charset" != "cross" -a \
2493                 "$default_display_charset" != "no" -a \
2494                 "$default_display_charset" != "cross" -a \
2495                 "$default_unix_charset" != "no" -a \
2496                 "$default_unix_charset" != "cross"
2497         then
2498                 samba_cv_HAVE_NATIVE_ICONV=yes
2499         else
2500             if test "$default_dos_charset" = "cross" -o \
2501                      "$default_display_charset" = "cross" -o \
2502                      "$default_unix_charset" = "cross"
2503             then
2504                     samba_cv_HAVE_NATIVE_ICONV=cross
2505             else
2506                     samba_cv_HAVE_NATIVE_ICONV=no
2507             fi
2508         fi
2510         # At this point, we have a libiconv candidate. We know that
2511         # we have the right headers and libraries, but we don't know
2512         # whether it does the conversions we want. We can't test this
2513         # because we are cross-compiling. This is not necessarily a big
2514         # deal, since we can't guarantee that the results we get now will
2515         # match the results we get at runtime anyway.
2516         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2517             default_dos_charset="CP850"
2518             default_display_charset="ASCII"
2519             default_unix_charset="UTF-8"
2520             samba_cv_HAVE_NATIVE_ICONV=yes
2521             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2522             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2523         fi
2525         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2527             CPPFLAGS=$save_CPPFLAGS
2528             LDFLAGS=$save_LDFLAGS
2529             LIBS=$save_LIBS
2531             if test x"$iconv_current_LIBS" != x; then
2532                 LIBS="$LIBS $iconv_current_LIBS"
2533             fi
2535             # Add the flags we need to CPPFLAGS and LDFLAGS
2536             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2537             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2539             # Turn the #defines into string literals
2540             default_dos_charset="\"$default_dos_charset\""
2541             default_display_charset="\"$default_display_charset\""
2542             default_unix_charset="\"$default_unix_charset\""
2544             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2545             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2546             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2547             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2549            break
2550         fi
2552     # We didn't find a working iconv, so keep going
2553     fi
2555     #  We only need to clean these up here for the next pass through the loop
2556     CPPFLAGS=$save_CPPFLAGS
2557     LDFLAGS=$save_LDFLAGS
2558     LIBS=$save_LIBS
2559     export LDFLAGS LIBS CPPFLAGS
2560 done
2561 unset libext
2564 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2565     AC_MSG_WARN([Sufficient support for iconv function was not found.
2566     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2567    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2568    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2569    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2573 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2574 AC_TRY_RUN([
2575 #include <sys/types.h>
2576 #include <fcntl.h>
2577 #ifndef F_GETLEASE
2578 #define F_GETLEASE      1025
2579 #endif
2580 main() {
2581        int fd = open("/dev/null", O_RDONLY);
2582        return fcntl(fd, F_GETLEASE, 0) == -1;
2585 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2586 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2587     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2590 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2591 AC_TRY_RUN([
2592 #include <sys/types.h>
2593 #include <fcntl.h>
2594 #include <signal.h>
2595 #ifndef F_NOTIFY
2596 #define F_NOTIFY 1026
2597 #endif
2598 main() {
2599         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2602 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2603 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2604     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2607 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2608 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2609 AC_CHECK_FUNCS(inotify_init)
2610 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2612 samba_cv_HAVE_INOTIFY=yes,
2613 samba_cv_HAVE_INOTIFY=no,
2614 samba_cv_HAVE_INOTIFY=cross)
2616 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2617     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2620 #################################################
2621 # Check if FAM notifications are available. For FAM info, see
2622 #       http://oss.sgi.com/projects/fam/
2623 #       http://savannah.nongnu.org/projects/fam/
2624 AC_ARG_ENABLE(fam,
2625 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2627 if test x$enable_fam != xno; then
2628     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2629     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2630         # On IRIX, libfam requires libC, but other FAM implementations
2631         # might not need it.
2632         AC_CHECK_LIB(fam, FAMOpen2,
2633             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2634             [samba_cv_HAVE_LIBFAM=no])
2636         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2637             samba_fam_xtra=-lC
2638             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2639                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2640                 [samba_cv_HAVE_LIBFAM=no])
2641             unset samba_fam_xtra
2642         fi
2643     fi
2645     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2646         default_shared_modules="$default_shared_modules vfs_notify_fam"
2647         AC_TRY_COMPILE([#include <fam.h>],
2648                     [enum FAMCodes code = FAMChanged;],
2649                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2650                         [Whether fam.h contains a typedef for enum FAMCodes]),
2651                     [])
2652     fi
2654     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2655         AC_MSG_ERROR(FAM support requested but FAM library not available )
2656     fi
2659 AC_SUBST(SMB_FAM_LIBS)
2661 #################################################
2662 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2664 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2666 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2667 # Theoretically it should work with AIX JFS2 too but this needs testing
2668 if test x"$ac_cv_header_gpfs_gpl_h" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2669     default_shared_modules="$default_shared_modules vfs_tsmsm"
2672 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2673 AC_TRY_RUN([
2674 #include <sys/types.h>
2675 #include <fcntl.h>
2676 #include <signal.h>
2677 #include <sys/file.h>
2678 #ifndef LOCK_MAND
2679 #define LOCK_MAND       32
2680 #define LOCK_READ       64
2681 #endif
2682 main() {
2683         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2686 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2687 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2688     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2692 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2693 AC_TRY_COMPILE([#include <sys/types.h>
2694 #include <fcntl.h>],
2695 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2696 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2697 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2698     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2701 #################################################
2702 # Check for POSIX capability support
2704 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2705     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2706     [], [])
2708 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2710     ac_save_LIBS=$LIBS
2711     AC_LIBTESTFUNC(cap, cap_get_proc)
2713     AC_CACHE_CHECK([for POSIX capabilities],
2714             samba_cv_HAVE_POSIX_CAPABILITIES,
2715             [
2716                 AC_TRY_RUN([
2717 #include <sys/types.h>
2718 #include <sys/capability.h>
2719 main() {
2720  cap_t cap;
2721  cap_value_t vals[1];
2722  if (!(cap = cap_get_proc()))
2723    exit(1);
2724  vals[0] = CAP_CHOWN;
2725  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2726  cap_set_proc(cap);
2727  exit(0);
2729                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2730                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2731                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2732             ])
2734 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2735     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2736             [Whether POSIX capabilities are available])
2737 else
2738     LIBS=$ac_save_LIBS
2744 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2745 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2748 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2749 AC_TRY_COMPILE([#include <sys/types.h>
2750 #if defined(HAVE_RPC_RPC_H)
2751 #include <rpc/rpc.h>
2752 #endif],
2753 [int16 testvar;],
2754 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2755 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2756     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2759 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2760 AC_TRY_COMPILE([#include <sys/types.h>
2761 #if defined(HAVE_RPC_RPC_H)
2762 #include <rpc/rpc.h>
2763 #endif],
2764 [uint16 testvar;],
2765 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2766 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2767     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2770 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2771 AC_TRY_COMPILE([#include <sys/types.h>
2772 #if defined(HAVE_RPC_RPC_H)
2773 #include <rpc/rpc.h>
2774 #endif],
2775 [int32 testvar;],
2776 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2777 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2778     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2781 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2782 AC_TRY_COMPILE([#include <sys/types.h>
2783 #if defined(HAVE_RPC_RPC_H)
2784 #include <rpc/rpc.h>
2785 #endif],
2786 [uint32 testvar;],
2787 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2788 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2789     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2793 dnl Some systems (SCO) have a problem including
2794 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2795 dnl as a #define in <prot.h> and as part of an enum
2796 dnl in <rpc/rpc.h>.
2799 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2800 AC_TRY_COMPILE([#include <sys/types.h>
2801 #ifdef HAVE_SYS_SECURITY_H
2802 #include <sys/security.h>
2803 #include <prot.h>
2804 #endif  /* HAVE_SYS_SECURITY_H */
2805 #if defined(HAVE_RPC_RPC_H)
2806 #include <rpc/rpc.h>
2807 #endif],
2808 [int testvar;],
2809 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2810 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2811     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2814 AC_MSG_CHECKING([for test routines])
2815 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
2816            AC_MSG_RESULT(yes),
2817            AC_MSG_ERROR([cant find test code. Aborting config]),
2818            AC_MSG_WARN([cannot run when cross-compiling]))
2820 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2821 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
2822            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2823 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2824     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2827 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2828 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
2829            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2830 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2831     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2834 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2835 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2836 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2837 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2838 AC_CHECK_FUNCS(getpagesize)
2840 ################################################
2841 # look for a method of setting the effective uid
2842 seteuid=no;
2844 if test $seteuid = no; then
2845 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2846 AC_TRY_RUN([
2847 #define AUTOCONF_TEST 1
2848 #define USE_SETREUID 1
2849 #include "confdefs.h"
2850 #include "${srcdir-.}/lib/util_sec.c"],
2851            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2852 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2853     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2857 # we check for setresuid second as it conflicts with AIO on Linux. 
2858 # see http://samba.org/~tridge/junkcode/aio_uid.c
2859 if test $seteuid = no; then
2860 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2861 AC_TRY_RUN([
2862 #define AUTOCONF_TEST 1
2863 #define USE_SETRESUID 1
2864 #include "confdefs.h"
2865 #include "${srcdir-.}/lib/util_sec.c"],
2866            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2867 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2868     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2872 if test $seteuid = no; then
2873 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2874 AC_TRY_RUN([
2875 #define AUTOCONF_TEST 1
2876 #define USE_SETEUID 1
2877 #include "confdefs.h"
2878 #include "${srcdir-.}/lib/util_sec.c"],
2879            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2880 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2881     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2885 if test $seteuid = no; then
2886 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2887 AC_TRY_RUN([
2888 #define AUTOCONF_TEST 1
2889 #define USE_SETUIDX 1
2890 #include "confdefs.h"
2891 #include "${srcdir-.}/lib/util_sec.c"],
2892            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2893 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2894     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2898 AC_CACHE_CHECK([for the Darwin initgroups system call],
2899         samba_cv_DARWIN_INITGROUPS,
2900         AC_TRY_LINK([
2901 #include <sys/syscall.h>
2902 #include <unistd.h>
2903         ],
2904         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2905         samba_cv_DARWIN_INITGROUPS=yes,
2906         samba_cv_DARWIN_INITGROUPS=no)
2909 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2910     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2911         [Whether to use the Darwin-specific initgroups system call])
2914 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2915 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
2916            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2917 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2918     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2921 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2922 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock64.c"],
2923            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2924 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2925     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2927 else
2930 dnl Don't check for 64 bit fcntl locking if we know that the
2931 dnl glibc2.1 broken check has succeeded.
2934   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2935   AC_TRY_RUN([
2936 #if defined(HAVE_UNISTD_H)
2937 #include <unistd.h>
2938 #endif
2939 #include <stdio.h>
2940 #include <stdlib.h>
2942 #ifdef HAVE_FCNTL_H
2943 #include <fcntl.h>
2944 #endif
2946 #ifdef HAVE_SYS_FCNTL_H
2947 #include <sys/fcntl.h>
2948 #endif
2949 main() { struct flock64 fl64;
2950 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2951 exit(0);
2952 #else
2953 exit(1);
2954 #endif
2956        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2958   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2959       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2960   fi
2963 # glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT.
2964 AC_CACHE_CHECK([for broken posix_fallocate],samba_cv_HAVE_BROKEN_POSIX_FALLOCATE,[
2965 AC_TRY_COMPILE([
2966   #define _XOPEN_SOURCE 600
2967   #include <stdlib.h>
2968   #if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4))
2969     probably broken posix_fallocate
2970   #endif
2971 ], [
2972 ], 
2973 samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=no,samba_cv_HAVE_BROKEN_POSIX_FALLOCATE=yes)])
2974 if test x"$samba_cv_HAVE_BROKEN_POSIX_FALLOCATE" = xyes; then
2975         AC_DEFINE(HAVE_BROKEN_POSIX_FALLOCATE,, Whether we have a broken posix_fallocate)
2979 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2980 AC_TRY_COMPILE([#include <sys/types.h>
2981 #include <sys/stat.h>
2982 #include <unistd.h>],
2983 [struct stat st;  st.st_blocks = 0;],
2984 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2985 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2986     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2989 AC_CHECK_TYPES([blksize_t, blkcnt_t], [], [], [[#include <sys/stat.h>]])
2991 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2992 AC_TRY_COMPILE([#include <sys/types.h>
2993 #include <sys/stat.h>
2994 #include <unistd.h>],
2995 [struct stat st;  st.st_blksize = 0;],
2996 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2997 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2998     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3001 AC_CACHE_CHECK([for st_flags in struct stat],
3002         samba_cv_HAVE_STAT_ST_FLAGS,
3003         [
3004             AC_TRY_COMPILE([#include <sys/types.h>
3005 #include <sys/stat.h>
3006 #include <unistd.h>],
3007             [struct stat st;  st.st_flags = 0;],
3008             samba_cv_HAVE_STAT_ST_FLAGS=yes,
3009             samba_cv_HAVE_STAT_ST_FLAGS=no,
3010             samba_cv_HAVE_STAT_ST_FLAGS=cross)
3011         ])
3013 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3014     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3015                 [Whether the stat struct has a st_flags member])
3018 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3019 AC_TRY_COMPILE([
3020 #include <sys/types.h>
3021 #include <sys/acl.h>
3022 #if defined(HAVE_RPCSVC_NIS_H)
3023 #include <rpcsvc/nis.h>
3024 #endif],
3025 [int i;],
3026 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3027 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3028         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3031 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3032 AC_TRY_RUN([
3033 #include <stdio.h>
3034 #include <limits.h>
3035 #include <signal.h>
3037 void exit_on_core(int ignored) {
3038         exit(1);
3041 main() {
3042         char *newpath;
3043         signal(SIGSEGV, exit_on_core);
3044         newpath = realpath("/tmp", NULL);
3045         exit((newpath != NULL) ? 0 : 1);
3048 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3049 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3050     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3053 #################################################
3054 # check for AFS clear-text auth support
3055 samba_cv_WITH_AFS=no
3056 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3057 AC_ARG_WITH(afs,
3058 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3059 [ case "$withval" in
3060   yes|auto)
3061     AC_MSG_RESULT($withval)
3062     samba_cv_WITH_AFS=$withval
3063     ;;
3064   *)
3065     AC_MSG_RESULT(no)
3066     ;;
3067   esac ],
3068   AC_MSG_RESULT(no)
3071 ####################################################
3072 # check for Linux-specific AFS fake-kaserver support
3073 samba_cv_WITH_FAKE_KASERVER=no
3074 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3075 AC_ARG_WITH(fake-kaserver,
3076 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3077 [ case "$withval" in
3078   yes|auto)
3079     AC_MSG_RESULT($withval)
3080     samba_cv_WITH_FAKE_KASERVER=$withval
3081     ;;
3082   *)
3083     AC_MSG_RESULT(no)
3084     ;;
3085   esac ],
3086   AC_MSG_RESULT(no)
3089 #################################################
3090 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3091 if test x"$samba_cv_WITH_AFS" != x"no" ||
3092    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3094     # see if this box has the OpenSSL DES libraries
3095     AC_CHECK_LIB( crypto, DES_pcbc_encrypt, LIBS="$LIBS -lcrypto" , [AC_ERROR(OpenSSL library: libcrypto ot found!)] )
3097     # see if this box has the afs-headers in /usr/include/afs
3098     AC_MSG_CHECKING(for /usr/include/afs)
3099     if test -d /usr/include/afs; then
3100           AC_MSG_RESULT(yes)
3101     else
3102       AC_MSG_RESULT(no)
3103     fi
3105     # check for afs.h
3106     have_afs_headers=no
3107     AC_CHECK_HEADERS(afs.h afs/afs.h)
3108     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3109         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3110            test x"$samba_cv_WITH_AFS" = x"auto"; then
3111                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3112         else
3113                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3114         fi
3115     else
3116         have_afs_headers=yes
3117     fi
3120 FAKE_KASERVER_OBJ=""
3121 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3122     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3123     FAKE_KASERVER_OBJ="utils/net_afs.o"
3125 AC_SUBST(FAKE_KASERVER_OBJ)
3127 #################################################
3128 # check whether to compile AFS/NT ACL mapping module
3129 samba_cv_WITH_VFS_AFSACL=no
3130 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3131 AC_ARG_WITH(vfs-afsacl,
3132 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3133 [ case "$withval" in
3134   yes|auto)
3135     AC_MSG_RESULT($withval)
3136     samba_cv_WITH_VFS_AFSACL=yes
3137     ;;
3138   *)
3139     AC_MSG_RESULT(no)
3140     ;;
3141   esac ],
3142   AC_MSG_RESULT(no)
3145 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3146    default_shared_modules="$default_shared_modules vfs_afsacl"
3148         
3149 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3150     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3153 #################################################
3154 # check for the DFS clear-text auth system
3155 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3156 AC_ARG_WITH(dfs,
3157 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3158 [ case "$withval" in
3159   yes)
3160     AC_MSG_RESULT(yes)
3161     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3162     ;;
3163   *)
3164     AC_MSG_RESULT(no)
3165     ;;
3166   esac ],
3167   AC_MSG_RESULT(no)
3170 ########################################################
3171 # Compile with LDAP support?
3173 with_ldap_support=auto
3174 AC_MSG_CHECKING([for LDAP support])
3176 AC_ARG_WITH(ldap,
3177 [AS_HELP_STRING([--with-ldap], [LDAP support (default yes)])],
3178 [ case "$withval" in
3179     yes|no)
3180         with_ldap_support=$withval
3181         ;;
3182   esac ])
3184 AC_MSG_RESULT($with_ldap_support)
3186 SMBLDAP=""
3187 AC_SUBST(SMBLDAP)
3188 SMBLDAPUTIL=""
3189 AC_SUBST(SMBLDAPUTIL)
3190 LDBLDAP=""
3191 AC_SUBST(LDBLDAP)
3193 if test x"$with_ldap_support" != x"no"; then
3195   ##################################################################
3196   # first test for ldap.h and lber.h
3197   # (ldap.h is required for this test)
3198   AC_CHECK_HEADERS(ldap.h lber.h)
3200   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3201         if test x"$with_ldap_support" = x"yes"; then
3202          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3203         else
3204          AC_MSG_WARN(ldap.h is needed for LDAP support)
3205         fi
3206         
3207         with_ldap_support=no
3208   fi
3210   ##################################################################
3211   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3212   # unsigned int in include/includes.h
3213   case $host_os in
3214         *hpux*)
3215          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3216          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3217         with_ldap_support=yes
3218         ;;
3219         *)
3220         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3221         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3222                 if test x"$with_ldap_support" = x"yes"; then
3223                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3224                 else
3225                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3226                 fi
3227                 with_ldap_support=no
3228         fi
3229         ;;
3230   esac
3233 if test x"$with_ldap_support" != x"no"; then
3234   ac_save_LIBS=$LIBS
3236   ##################################################################
3237   # we might need the lber lib on some systems. To avoid link errors
3238   # this test must be before the libldap test
3239   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3241   ########################################################
3242   # If ber_sockbuf_add_io() is available we can add
3243   # SASL wrapping hooks
3244   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3246   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3247                  AC_TRY_COMPILE([#include <ldap.h>],
3248                                 [int val = LDAP_OPT_SOCKBUF;],
3249                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3250                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3252   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3253           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3254         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3255   fi
3257   #######################################################
3258   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3259   # ldap logging and print it out in the samba logs
3260   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3261                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3262                  [AC_TRY_COMPILE([#include <lber.h>],
3263                                  [int val = LBER_OPT_LOG_PRINT_FN;],
3264                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3265                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3267   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3268         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3269                   [Support for LDAP/LBER logging interception])
3270   fi
3272   ########################################################
3273   # now see if we can find the ldap libs in standard paths
3274   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3276   ########################################################
3277   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3278   # Check found in pam_ldap 145.
3279   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3281   LIBS="$LIBS $LDAP_LIBS"
3282   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3283     AC_TRY_COMPILE([
3284         #include <lber.h>
3285         #include <ldap.h>],
3286         [ldap_set_rebind_proc(0, 0, 0);],
3287         [smb_ldap_cv_ldap_set_rebind_proc=3],
3288         [smb_ldap_cv_ldap_set_rebind_proc=2]
3289     )
3290   ])
3292   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3294   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3296   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3297     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3298     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3299     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3300     default_shared_modules="$default_shared_modules";
3301     SMBLDAP="lib/smbldap.o"
3302     SMBLDAPUTIL="lib/smbldap_util.o"
3303     with_ldap_support=yes
3304     AC_MSG_CHECKING(whether LDAP support is used)
3305     AC_MSG_RESULT(yes)
3306   else
3307     if test x"$with_ldap_support" = x"yes"; then
3308         AC_MSG_ERROR(libldap is needed for LDAP support)
3309     else
3310         AC_MSG_WARN(libldap is needed for LDAP support)
3311     fi
3313     LDAP_LIBS=""
3314     with_ldap_support=no
3315   fi
3316   LIBS=$ac_save_LIBS
3320 #################################################
3321 # active directory support
3323 with_ads_support=auto
3324 AC_MSG_CHECKING([for Active Directory and krb5 support])
3326 AC_ARG_WITH(ads,
3327 [AS_HELP_STRING([--with-ads], [Active Directory support (default auto)])],
3328 [ case "$withval" in
3329     yes|no)
3330         with_ads_support="$withval"
3331         ;;
3332   esac ])
3334 AC_MSG_RESULT($with_ads_support)
3336 FOUND_KRB5=no
3337 KRB5_LIBS=""
3339 if test x"$with_ldap_support" != x"yes"; then
3341     if test x"$with_ads_support" = x"yes"; then
3342         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3343     elif test x"$with_ads_support" = x"auto"; then
3344         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3345         with_ads_support=no
3346     fi
3348 else
3350     # Check to see whether there is enough LDAP functionality to be able
3351     # to build AD support.
3353 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3354 case "$host_os" in
3355         *hpux*)
3356     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3358     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3359         if test x"$with_ads_support" = x"yes"; then
3360             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3361         elif test x"$with_ads_support" = x"auto"; then
3362             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3363             with_ads_support=no
3364         fi
3365     fi
3366     ;;
3367         *)
3368     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3370     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3371         if test x"$with_ads_support" = x"yes"; then
3372             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3373         elif test x"$with_ads_support" = x"auto"; then
3374             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3375             with_ads_support=no
3376         fi
3377     fi
3378     ;;
3379 esac
3382     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3384     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3385         if test x"$with_ads_support" = x"yes"; then
3386             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3387         elif test x"$with_ads_support" = x"auto"; then
3388             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3389             with_ads_support=no
3390         fi
3391     fi
3395 if test x"$with_ads_support" != x"no"; then
3397   # Do no harm to the values of CFLAGS and LIBS while testing for
3398   # Kerberos support.
3400   if test x$FOUND_KRB5 = x"no"; then
3401     #################################################
3402     # check for location of Kerberos 5 install
3403     AC_MSG_CHECKING(for kerberos 5 install path)
3404     AC_ARG_WITH(krb5,
3405     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3406     [ case "$withval" in
3407       no)
3408         AC_MSG_RESULT(no krb5-path given)
3409         ;;
3410       yes)
3411         AC_MSG_RESULT(/usr)
3412         FOUND_KRB5=yes
3413         ;;
3414       *)
3415         AC_MSG_RESULT($withval)
3416         KRB5_CFLAGS="-I$withval/include"
3417         KRB5_CPPFLAGS="-I$withval/include"
3418         KRB5_LDFLAGS="-L$withval/lib"
3419         FOUND_KRB5=yes
3420         if test -x "$withval/bin/krb5-config"; then
3421                 KRB5CONFIG=$withval/bin/krb5-config
3422         fi
3423         ;;
3424       esac ],
3425       AC_MSG_RESULT(no krb5-path given)
3426     )
3427   fi
3429   #################################################
3430   # check for krb5-config from recent MIT and Heimdal kerberos 5
3431   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3432   AC_MSG_CHECKING(for working krb5-config)
3433   if test -x "$KRB5CONFIG" && $KRB5CONFIG --libs gssapi > /dev/null ; then
3434     ac_save_CFLAGS=$CFLAGS
3435     CFLAGS="";export CFLAGS
3436     ac_save_LDFLAGS=$LDFLAGS
3437     LDFLAGS="";export LDFLAGS
3438     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3439     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3440     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3441     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3442     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3443     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3444     FOUND_KRB5=yes
3445     AC_MSG_RESULT(yes)
3446   else
3447     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3448   fi
3450   if test x$FOUND_KRB5 = x"no"; then
3451     #################################################
3452     # see if this box has the SuSE location for the heimdal krb implementation
3453     AC_MSG_CHECKING(for /usr/include/heimdal)
3454     if test -d /usr/include/heimdal; then
3455       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3456           KRB5_CFLAGS="-I/usr/include/heimdal"
3457           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3458           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3459           FOUND_KRB5=yes
3460           AC_MSG_RESULT(yes)
3461       else
3462           KRB5_CFLAGS="-I/usr/include/heimdal"
3463           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3464           FOUND_KRB5=yes
3465           AC_MSG_RESULT(yes)
3466       fi
3467     else
3468       AC_MSG_RESULT(no)
3469     fi
3470   fi
3472   if test x$FOUND_KRB5 = x"no"; then
3473     #################################################
3474     # see if this box has the RedHat location for kerberos
3475     AC_MSG_CHECKING(for /usr/kerberos)
3476     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3477       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3478       KRB5_CFLAGS="-I/usr/kerberos/include"
3479       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3480       FOUND_KRB5=yes
3481       AC_MSG_RESULT(yes)
3482     else
3483       AC_MSG_RESULT(no)
3484     fi
3485   fi
3487   if test x$FOUND_KRB5 = x"no"; then
3488     #################################################
3489     # see if this box has the OpenBSD location for heimdal krb5
3490     AC_MSG_CHECKING(for /usr/include/kerberosV)
3491     if test -d /usr/include/kerberosV; then
3492       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3493       KRB5_LIBS="-lcrypto"
3494       FOUND_KRB5=yes
3495       AC_MSG_RESULT(yes)
3496     else
3497       AC_MSG_RESULT(no)
3498     fi
3499   fi
3501   ac_save_CFLAGS=$CFLAGS
3502   ac_save_CPPFLAGS=$CPPFLAGS
3503   ac_save_LDFLAGS=$LDFLAGS
3505   # remove needless evil rpath stuff as early as possible:
3506   LIB_REMOVE_USR_LIB(KRB5_LIBS)
3507   LIB_REMOVE_USR_LIB(KRB5_LDFLAGS)
3508   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3509   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3510   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3512   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3514   # now check for krb5.h. Some systems have the libraries without the headers!
3515   # note that this check is done here to allow for different kerberos
3516   # include paths
3517   AC_CHECK_HEADERS(krb5.h)
3519   if test x"$ac_cv_header_krb5_h" = x"no"; then
3521     # Give a warning if AD support was not explicitly requested,
3522     # i.e with_ads_support = auto, otherwise die with an error.
3524     if test x"$with_ads_support" = x"yes"; then
3525       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3526     else
3527       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3528     fi
3530     # Turn off AD support and restore CFLAGS and LIBS variables
3532     with_ads_support="no"
3534     CFLAGS=$ac_save_CFLAGS
3535     CPPFLAGS=$ac_save_CPPFLAGS
3536     LDFLAGS=$ac_save_LDFLAGS
3537   fi
3538   AC_CHECK_HEADERS([krb5/locate_plugin.h], [], [],
3539 [[#ifdef HAVE_KRB5_H
3540  #include <krb5.h>
3541  #endif
3544   if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3545         WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3546         if test x"$BLDSHARED" = x"true" ; then
3547                 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3548         fi
3549   fi
3551   # check for new heimdal KRB5_DEPRECATED handling
3553   AC_CACHE_CHECK([for KRB5_DEPRECATED define taking an identifier],
3554                 samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER,[
3555     AC_TRY_COMPILE(
3556       [#define KRB5_DEPRECATED 1
3557       #include <krb5.h>],
3558       [],
3559       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=yes,
3560       samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER=no)])
3562   if test x"$samba_cv_HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER" = x"yes"; then
3563     AC_DEFINE(HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER, 1,
3564                [Whether to use deprecated krb5 interfaces])
3565   fi
3568 # Now we have determined whether we really want ADS support
3569 use_ads=no
3570 if test x"$with_ads_support" != x"no"; then
3571   use_ads=yes
3572   have_gssapi=no
3573   ac_save_LIBS=$LIBS
3575   # now check for gssapi headers.  This is also done here to allow for
3576   # different kerberos include paths
3577   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3579   ##################################################################
3580   # we might need the k5crypto and com_err libraries on some systems
3581   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3582   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3584   # Heimdal checks.
3585   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3586   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3587   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3589   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3590   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3592   ########################################################
3593   # now see if we can find the krb5 libs in standard paths
3594   # or as specified above
3595   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3596   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3598   ########################################################
3599   # now see if we can find the gssapi libs in standard paths
3600   if test x"$have_gssapi" != x"yes"; then
3601      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3602   fi
3604   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3605   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3606   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3607   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3608   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3609   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3610   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3611   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3612   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3613   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3614   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3615   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3616   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3617   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3618   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3619   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3620   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3621   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3622   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3623   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3624   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3625   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3626   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3627   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3628   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3629   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3630   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3631   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3632   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3633   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3634   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3635   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3636   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3637   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3638   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3639   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3640   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3641   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3642   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3643   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3644   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3645   AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3646   AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3647   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_alloc, $KRB5_LIBS)
3648   AC_CHECK_FUNC_EXT(krb5_get_creds_opt_set_impersonate, $KRB5_LIBS)
3649   AC_CHECK_FUNC_EXT(krb5_get_creds, $KRB5_LIBS)
3650   AC_CHECK_FUNC_EXT(krb5_get_credentials_for_user, $KRB5_LIBS)
3651   AC_CHECK_FUNC_EXT(krb5_get_host_realm, $KRB5_LIBS)
3652   AC_CHECK_FUNC_EXT(krb5_free_host_realm, $KRB5_LIBS)
3654   # MIT krb5 1.8 does not expose this call (yet)
3655   AC_CHECK_DECLS(krb5_get_credentials_for_user, [], [], [#include <krb5.h>])
3657   # MIT krb5 1.7beta3 (in Ubuntu Karmic) does not have this declaration
3658   # but does have the symbol
3659   AC_CHECK_DECLS(krb5_auth_con_set_req_cksumtype, [], [], [#include <krb5.h>])
3661   LIBS="$KRB5_LIBS $LIBS"
3663   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3664         smb_krb5_cv_ticket_has_keyinfo,
3665         [
3666             AC_TRY_COMPILE(
3667             [
3668                 #include <krb5.h>
3669             ],
3670             [
3671                 krb5_ticket ticket;
3672                 krb5_kvno kvno;
3673                 krb5_enctype enctype;
3675                 enctype = ticket.enc_part.enctype;
3676                 kvno = ticket.enc_part.kvno;
3677             ],
3678             [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3679             [ smb_krb5_cv_ticket_has_keyinfo=no ])
3680         ])
3682   if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3683         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3684             [Whether the krb5_ticket structure contains the kvno and enctype])
3685   fi
3687   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3688           smb_krb5_cv_creds_opt_free_context,
3689           [
3690                 AC_TRY_COMPILE([
3691                     #include <krb5.h>],
3692                     [
3693                         krb5_context ctx;
3694                         krb5_get_init_creds_opt *opt = NULL;
3695                         krb5_get_init_creds_opt_free(ctx, opt);
3696                     ],
3697                     [smb_krb5_cv_creds_opt_free_context=yes],
3698                     [smb_krb5_cv_creds_opt_free_context=no]
3699                 )
3700           ])
3702   if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3703         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3704             [Whether krb5_get_init_creds_opt_free takes a context argument])
3705   fi
3707   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3708     AC_TRY_COMPILE([
3709         #include <krb5.h>],
3710         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3711         [smb_krb5_cv_verify_checksum=7],
3712         [smb_krb5_cv_verify_checksum=6],
3713     )
3714   ])
3715   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3717   AC_CACHE_CHECK([for checksum in krb5_checksum],
3718                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3719     AC_TRY_COMPILE([#include <krb5.h>],
3720       [krb5_checksum cksum; cksum.checksum.length = 0;],
3721       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3722       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3724   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3725     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3726                [Whether the krb5_checksum struct has a checksum property])
3727   fi
3729   AC_CACHE_CHECK([for etype in EncryptedData],
3730                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3731     AC_TRY_COMPILE([#include <krb5.h>],
3732       [EncryptedData edata; edata.etype = 0;],
3733       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3734       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3736   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3737     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3738                [Whether the EncryptedData struct has a etype property])
3739   fi
3741   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3742                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3743     AC_TRY_COMPILE([#include <krb5.h>],
3744       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3745       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3746       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3748   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3749     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3750                [Whether the krb5_ap_req struct has a ticket pointer])
3751   fi
3753   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3754                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3755     AC_TRY_COMPILE([#include <krb5.h>],
3756       [krb5_error err; err.e_data = NULL;],
3757       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3758       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3760   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3761     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3762                [Whether the krb5_error struct has a e_data pointer])
3763   fi
3765   AC_CACHE_CHECK([for krb5_crypto type],
3766                 samba_cv_HAVE_KRB5_CRYPTO,[
3767     AC_TRY_COMPILE([#include <krb5.h>],
3768       [krb5_crypto crypto;],
3769       samba_cv_HAVE_KRB5_CRYPTO=yes,
3770       samba_cv_HAVE_KRB5_CRYPTO=no)])
3772   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3773     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3774                [Whether the type krb5_crypto exists])
3775   fi
3777   AC_CACHE_CHECK([for krb5_encrypt_block type],
3778                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3779     AC_TRY_COMPILE([#include <krb5.h>],
3780       [krb5_encrypt_block block;],
3781       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3782       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3784   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3785     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3786                [Whether the type krb5_encrypt_block exists])
3787   fi
3789   AC_CACHE_CHECK([for addrtype in krb5_address],
3790                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3791     AC_TRY_COMPILE([#include <krb5.h>],
3792       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3793       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3794       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3796   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3797     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3798                [Whether the krb5_address struct has a addrtype property])
3799   fi
3801   AC_CACHE_CHECK([for addr_type in krb5_address],
3802                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3803     AC_TRY_COMPILE([#include <krb5.h>],
3804       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3805       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3806       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3808   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3809     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3810               [Whether the krb5_address struct has a addr_type property])
3811   fi
3813   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3814                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3815                  [AC_TRY_COMPILE([#include <krb5.h>],
3816     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3817     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3819   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3820     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3821               [Whether the krb5_ticket struct has a enc_part2 property])
3822   fi
3824   AC_CACHE_CHECK([for keyblock in krb5_creds],
3825                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3826     AC_TRY_COMPILE([#include <krb5.h>],
3827       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3828       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3829       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3831   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3832     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3833               [Whether the krb5_creds struct has a keyblock property])
3834   fi
3836   AC_CACHE_CHECK([for session in krb5_creds],
3837                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3838     AC_TRY_COMPILE([#include <krb5.h>],
3839       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3840       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3841       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3843   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3844     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3845               [Whether the krb5_creds struct has a session property])
3846   fi
3848   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3849                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3850     AC_TRY_COMPILE([#include <krb5.h>],
3851       [krb5_keyblock key; key.keyvalue.data = NULL;],
3852       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3853       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3855   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3856     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3857               [Whether the krb5_keyblock struct has a keyvalue property])
3858   fi
3860   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3861                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3862     AC_TRY_COMPILE([#include <krb5.h>],
3863       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3864       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3865       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3866   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3867                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3868     AC_TRY_COMPILE([#include <krb5.h>],
3869       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3870       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3871       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3872 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3873 # w.r.t. arcfour and windows, so we must not enable it here
3874   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3875           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3876     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3877               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3878   fi
3880   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3881                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3882     AC_TRY_COMPILE([#include <krb5.h>],
3883       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3884       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3885       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3887   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3888     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3889               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3890   fi
3892   AC_CACHE_CHECK([for KV5M_KEYTAB],
3893                  samba_cv_HAVE_KV5M_KEYTAB,[
3894     AC_TRY_COMPILE([#include <krb5.h>],
3895       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3896       samba_cv_HAVE_KV5M_KEYTAB=yes,
3897       samba_cv_HAVE_KV5M_KEYTAB=no)])
3899   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3900       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3901              [Whether the KV5M_KEYTAB option is available])
3902   fi
3904   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3905                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3906     AC_TRY_COMPILE([#include <krb5.h>],
3907       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3908       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3909       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3911   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3912     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3913               [Whether KRB5_KU_OTHER_CKSUM is available])
3914   fi
3916   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3917                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3918     AC_TRY_COMPILE([#include <krb5.h>],
3919       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3920       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3921       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3923   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3924     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3925               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3926   fi
3928   AC_CACHE_CHECK([for the krb5_princ_component macro],
3929                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3930     AC_TRY_LINK([#include <krb5.h>],
3931       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3932       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3933       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3935   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3936     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3937                [Whether krb5_princ_component is available])
3938   fi
3940   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3941                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3942     AC_TRY_COMPILE([#include <krb5.h>],
3943       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3944       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3945       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3947   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3948     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3949               [Whether krb5_keytab_entry has key member])
3950   fi
3952   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3953                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3954     AC_TRY_COMPILE([#include <krb5.h>],
3955       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3956       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3957       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3959   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3960     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3961               [Whether krb5_keytab_entry has keyblock member])
3962   fi
3964   AC_CACHE_CHECK([for magic in krb5_address],
3965                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3966     AC_TRY_COMPILE([#include <krb5.h>],
3967       [krb5_address addr; addr.magic = 0;],
3968       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3969       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3971   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3972     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3973               [Whether the krb5_address struct has a magic property])
3974   fi
3976   AC_CACHE_CHECK([for WRFILE: keytab support],
3977                 samba_cv_HAVE_WRFILE_KEYTAB,[
3978     AC_TRY_RUN([
3979 #include<krb5.h>
3980   main()
3981   {
3982     krb5_context context;
3983     krb5_keytab keytab;
3985     krb5_init_context(&context);
3986     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3987   }],
3988   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3989   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3991   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3992       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3993                [Whether the WRFILE:-keytab is supported])
3994   fi
3996   AC_CACHE_CHECK([for krb5_realm type],
3997                 samba_cv_HAVE_KRB5_REALM_TYPE,[
3998     AC_TRY_COMPILE([#include <krb5.h>],
3999       [krb5_realm realm;],
4000       samba_cv_HAVE_KRB5_REALM_TYPE=yes,
4001       samba_cv_HAVE_KRB5_REALM_TYPE=no)])
4003   if test x"$samba_cv_HAVE_KRB5_REALM_TYPE" = x"yes"; then
4004     AC_DEFINE(HAVE_KRB5_REALM_TYPE,1,
4005                [Whether the type krb5_realm exists])
4006   fi
4008   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4009                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4010     AC_TRY_COMPILE([#include <krb5.h>],
4011     [
4012     krb5_context context;
4013     krb5_principal principal;
4014     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4015     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4016     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4018   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4019     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4020               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4021   fi
4023   AC_CACHE_CHECK([for krb5_addresses type],
4024                 samba_cv_HAVE_KRB5_ADDRESSES,[
4025     AC_TRY_COMPILE([#include <krb5.h>],
4026       [krb5_addresses addr;],
4027       samba_cv_HAVE_KRB5_ADDRESSES=yes,
4028       samba_cv_HAVE_KRB5_ADDRESSES=no)])
4030   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4031     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4032                [Whether the type krb5_addresses type exists])
4033   fi
4035   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4036                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4037     AC_TRY_COMPILE([#include <krb5.h>],
4038     [
4039     krb5_mk_error(0,0,0);],
4040     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4041     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4043   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4044     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4045               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4046   fi
4048   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4049     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4050         smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
4051         AC_TRY_RUN_STRICT([
4052                 #include <stdlib.h>
4053                 #include <krb5.h>
4054                 int main(void) {
4055                         krb5_context context = NULL;
4056                         char *str = NULL;
4057                         krb5_enctype_to_string(context, 1, &str);
4058                         if (str) free (str); 
4059                         return 0;
4060                 }
4061                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4062                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
4063                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
4065     if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4066       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4067                 [whether krb5_enctype_to_string takes krb5_context argument])
4068     fi
4070     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4071         smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
4072         AC_TRY_RUN_STRICT([
4073                 #include <krb5.h>
4074                 int main(void) {
4075                         char buf[256];
4076                         krb5_enctype_to_string(1, buf, 256);
4077                         return 0;
4078                 }
4079                 ],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4080                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
4081                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
4083     if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
4084       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4085                 [whether krb5_enctype_to_string takes size_t argument])
4086     fi
4087   fi
4089   AC_CACHE_CHECK([for krb5_principal_get_realm],
4090                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4091     AC_TRY_LINK([#include <krb5.h>],
4092       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4093       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4094       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4096   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4097     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4098                [Whether the function krb5_principal_get_realm is defined])
4099   fi
4101   AC_CACHE_CHECK([for krb5_princ_realm],
4102                 samba_cv_HAVE_KRB5_PRINC_REALM,[
4103     AC_TRY_LINK([#include <krb5.h>],
4104       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4105       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4106       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4108   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4109     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4110                [Whether the macro krb5_princ_realm is defined])
4111   fi
4113   #
4114   #
4115   # Now the decisions whether we can support krb5
4116   #
4117   # NOTE: all tests should be done before this block!
4118   #
4119   #
4120   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4121     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4122     use_ads=no
4123   fi
4125   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4126           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4127   then
4128     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4129     use_ads=no
4130   fi
4132   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4133           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4134   then
4135     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4136     use_ads=no
4137   fi
4139   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4140           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4141   then
4142     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4143     use_ads=no
4144   fi
4146   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4147           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4148   then
4149     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4150     use_ads=no
4151   fi
4153   if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
4155       # We only need the following functions if we can't get the enctype
4156       # and kvno out of the ticket directly (ie. on Heimdal).
4158       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4159       then
4160         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4161         use_ads=no
4162       fi
4164       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4165       then
4166         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4167         use_ads=no
4168       fi
4170   fi
4172   if test x"$use_ads" = x"yes"; then
4173     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4174     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4175     if test x"$have_gssapi" = x"yes"; then
4176       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4177     fi
4178   else
4179     if test x"$with_ads_support" = x"yes"; then
4180         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4181     else
4182         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4183     fi
4184     AC_REMOVE_DEFINE(HAVE_KRB5_H)
4185     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4186     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4187     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4188     KRB5_LIBS=""
4189     with_ads_support=no
4190   fi
4191   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4192   AC_MSG_RESULT([$use_ads])
4194 LIBS="$ac_save_LIBS"
4197 if test x"$use_ads" != xyes; then
4198         merged_build_possible=no
4201 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4202 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4205 ########################################################
4206 # Compile with DNS Updates support?
4208 with_dnsupdate_support=no
4209 AC_MSG_CHECKING([whether to enable DNS Updates support])
4211 AC_ARG_WITH(dnsupdate,
4212 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default no)])],
4213 [ case "$withval" in
4214     yes|no)
4215         with_dnsupdate_support=$withval
4216         ;;
4217   esac ])
4219 AC_MSG_RESULT($with_dnsupdate_support)
4221 if test x"$with_dnsupdate_support" != x"no"; then
4223   ################################################################
4224   # first test for Active Directory support being enabled
4225   #if test x"$with_ads_support" = x"no"; then
4226   #             AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4227   #             with_dnsupdate_support=no
4228   #fi           
4229   ##################################################################
4230   # then test for uuid.h (necessary to generate unique DNS keynames
4231   # (uuid.h is required for this test)
4232   AC_CHECK_HEADERS(uuid/uuid.h)
4234   if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4235         if test x"$with_dnsupdate_support" = x"yes"; then
4236          AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4237         else
4238          AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4239         fi
4240         with_dnsupdate_support=no
4241   fi
4244 if test x"$with_dnsupdate_support" != x"no"; then
4246   ########################################################
4247   # Now see if we can find the uuid libs in standard paths
4248   # On some systems, the uuid API is in libc, so we have to
4249   # be careful not to insert a spurious -luuid.
4251   UUID_LIBS=""
4252   AC_LIBTESTFUNC(uuid, uuid_generate,
4253           [
4254             case " $LIBS " in
4255                 *\ -luuid\ *)
4256                 UUID_LIBS="-luuid"
4257                 SMB_REMOVE_LIB(uuid)
4258                 ;;
4259             esac
4261             with_dnsupdate_support=yes
4262             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4263         ],
4264         [
4265             if test x"$with_dnsupdate_support" = x"yes"; then
4266                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4267             else
4268                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4269             fi
4270             with_dnsupdate_support=no
4271         ])
4274 #################################################
4275 # check for automount support
4276 AC_MSG_CHECKING(whether to use automount)
4277 AC_ARG_WITH(automount,
4278 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4279 [ case "$withval" in
4280   yes)
4281     AC_MSG_RESULT(yes)
4282     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4283     ;;
4284   *)
4285     AC_MSG_RESULT(no)
4286     ;;
4287   esac ],
4288   AC_MSG_RESULT(no)
4291 #################################################
4292 # check for mount- and umount.cifs support
4293 CIFSMOUNT_PROGS=""
4294 INSTALL_CIFSMOUNT=""
4295 UNINSTALL_CIFSMOUNT=""
4296 AC_MSG_CHECKING(whether to build mount.cifs)
4297 AC_ARG_WITH(cifsmount,
4298 [AS_HELP_STRING([--with-cifsmount], [Include mount.cifs (Linux only) support (default=yes)])],
4299 [ case "$withval" in
4300   no)
4301         AC_MSG_RESULT(no)
4302         ;;
4303   *)
4304         case "$host_os" in
4305         *linux*)
4306                 AC_MSG_RESULT(yes)
4307                 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs])
4308                 CIFSMOUNT_PROGS="bin/mount.cifs"
4309                 INSTALL_CIFSMOUNT="installcifsmount"
4310                 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4311                 ;;
4312         *)
4313                 AC_MSG_ERROR(not on a linux system!)
4314                 ;;
4315         esac
4316     ;;
4317   esac ],
4318 [ case "$host_os" in
4319   *linux*)
4320         AC_MSG_RESULT(yes)
4321         AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs])
4322         CIFSMOUNT_PROGS="bin/mount.cifs"
4323         INSTALL_CIFSMOUNT="installcifsmount"
4324         UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4325         ;;
4326   *)
4327         AC_MSG_RESULT(no)
4328         ;;
4329   esac ]
4332 CIFSUMOUNT_PROGS=""
4333 INSTALL_CIFSUMOUNT=""
4334 UNINSTALL_CIFSUMOUNT=""
4335 AC_MSG_CHECKING(whether to build umount.cifs)
4336 AC_ARG_WITH(cifsumount,
4337 [AS_HELP_STRING([--with-cifsumount], [Include umount.cifs (Linux only) support (default=no)])],
4338 [ case "$withval" in
4339   yes)
4340         case "$host_os" in
4341         *linux*)
4342                 AC_MSG_RESULT(yes)
4343                 AC_DEFINE(WITH_CIFSUMOUNT,1,[Whether to build umount.cifs])
4344                 CIFSUMOUNT_PROGS="bin/umount.cifs"
4345                 INSTALL_CIFSUMOUNT="installcifsumount"
4346                 UNINSTALL_CIFSUMOUNT="uninstallcifsumount"
4347                 ;;
4348         *)
4349                 AC_MSG_ERROR(not on a linux system!)
4350                 ;;
4351         esac
4352         ;;
4353   *)
4354         AC_MSG_RESULT(no)
4355         ;;
4356   esac ],
4357   AC_MSG_RESULT(no)
4360 #################################################
4361 # check for cifs.upcall support
4362 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4363 CIFSUPCALL_PROGS=""
4364 INSTALL_CIFSUPCALL=""
4365 UNINSTALL_CIFSUPCALL=""
4366 AC_MSG_CHECKING(whether to build cifs.upcall)
4367 AC_ARG_WITH(cifsupcall,
4368 [AS_HELP_STRING([--with-cifsupcall], [Include cifs.upcall (Linux only) support (default=yes)])],
4369 [ case "$withval" in
4370   no)
4371         AC_MSG_RESULT(no)
4372         ;;
4373   *)
4374         case "$host_os" in
4375         *linux*)
4376                 if test x"$use_ads" != x"yes"; then
4377                         AC_MSG_ERROR(ADS support should be enabled for building cifs.upcall)
4378                 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4379                         AC_MSG_ERROR(keyutils package is required for cifs.upcall)
4380                 else
4381                         AC_MSG_RESULT(yes)
4382                         AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4383                         CIFSUPCALL_PROGS="bin/cifs.upcall"
4384                         INSTALL_CIFSUPCALL="installcifsupcall"
4385                         UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4386                 fi
4387                 ;;
4388         *)
4389                 AC_MSG_ERROR(not on a linux system!)
4390                 ;;
4391         esac
4392     ;;
4393   esac ],
4394 [ case "$host_os" in
4395   *linux*)
4396         if test x"$use_ads" != x"yes"; then
4397                 AC_MSG_WARN(ADS support should be enabled for building cifs.upcall)
4398         elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4399                 AC_MSG_WARN(keyutils package is required for cifs.upcall)
4400         else
4401                 AC_MSG_RESULT(yes)
4402                 AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4403                 CIFSUPCALL_PROGS="bin/cifs.upcall"
4404                 INSTALL_CIFSUPCALL="installcifsupcall"
4405                 UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4406         fi
4407         ;;
4408   *)
4409         AC_MSG_RESULT(no)
4410         ;;
4411   esac ]
4415 #################################################
4416 # Check for a PAM clear-text auth, accounts, password
4417 # and session support. Most PAM implementations keep their
4418 # headers in /usr/include/security. Darwin keeps its in
4419 # /usr/include/pam.
4421 with_pam_for_crypt=no
4422 try_pam=auto
4423 AC_MSG_CHECKING(whether to try PAM support)
4424 AC_ARG_WITH(pam,
4425 [AS_HELP_STRING([--with-pam], [Include PAM support (default=auto)])],
4426 [ case "$withval" in
4427   yes|no|auto)
4428     try_pam=$withval
4429     ;;
4430   esac
4432 AC_MSG_RESULT([$try_pam])
4434 use_pam=no
4435 create_pam_modules=no
4436 if test x"${try_pam}" != x"no";then
4437         use_pam=yes
4438         create_pam_modules=yes
4440         # Most systems have PAM headers in /usr/include/security, but Darwin
4441         # has them in /usr/include/pam.
4442         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4443         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4444                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4445                 if test x"${try_pam}" = x"yes";then
4446                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4447                 fi
4448                 use_pam=no
4449                 create_pam_modules=no
4450         fi
4452         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4453         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4454                 if test x"${try_pam}" = x"yes";then
4455                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4456                 fi
4457                 use_pam=no
4458                 create_pam_modules=no
4459         fi
4461         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4462                 #if HAVE_SECURITY_PAM_APPL_H
4463                 #include <security/pam_appl.h>
4464                 #endif
4465                 #if HAVE_PAM_PAM_APPL_H
4466                 #include <pam/pam_appl.h>
4467                 #endif
4468         ]])
4469         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4470                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4471                 if test x"${try_pam}" = x"yes";then
4472                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4473        fi
4474                 create_pam_modules=no
4475     fi
4477         if test x"$use_pam" = x"yes"; then
4478     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4479                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4480                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4481     with_pam_for_crypt=yes
4483                 if test x"$create_pam_modules" = x"yes"; then
4484                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4485                         # this checks are optional,
4486                         # we don't care about the results here
4487                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4488                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4489                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4490                 else
4491                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4492                 fi
4493         fi
4494         AC_MSG_CHECKING(whether to use PAM support)
4495         AC_MSG_RESULT([$use_pam])
4497         AC_MSG_CHECKING(whether to have PAM MODULES support)
4498         AC_MSG_RESULT([$create_pam_modules])
4499 fi # try_pam != no
4501 #################################################
4502 # check for PAM_RADIO_TYPE
4503 AC_TRY_COMPILE([
4504 #if (!defined(LINUX))
4506 #define PAM_EXTERN extern
4507 #if defined(HAVE_SECURITY_PAM_APPL_H)
4508 #include <security/pam_appl.h>
4509 #elif defined(HAVE_PAM_PAM_APPL_H)
4510 #include <pam/pam_appl.h>
4511 #endif
4513 #endif
4515 #if defined(HAVE_SECURITY_PAM_MODULES_H)
4516 #include <security/pam_modules.h>
4517 #elif defined(HAVE_PAM_PAM_MODULES_H)
4518 #include <pam/pam_modules.h>
4519 #endif
4521 #if defined(HAVE_SECURITY__PAM_MACROS_H)
4522 #include <security/_pam_macros.h>
4523 #elif defined(HAVE_PAM__PAM_MACROS_H)
4524 #include <pam/_pam_macros.h>
4525 #endif
4527 #ifdef HAVE_SECURITY_PAM_EXT_H
4528 #include <security/pam_ext.h>
4529 #endif
4531 [int i; i = PAM_RADIO_TYPE; ],
4532 AC_DEFINE(HAVE_PAM_RADIO_TYPE, 1, [Define to 1 if PAM_RADIO_TYPE is available]),[])
4534 #################################################
4535 # check for pam_smbpass support
4536 PAM_MODULES=""
4537 INSTALL_PAM_MODULES=""
4538 UNINSTALL_PAM_MODULES=""
4540 try_pam_smbpass=auto
4541 AC_MSG_CHECKING(whether to use pam_smbpass)
4542 AC_ARG_WITH(pam_smbpass,
4543 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=auto)])],
4544 [ case "$withval" in
4545   yes|no|auto)
4546     try_pam_smbpass=$withval
4547   ;;
4548   *)
4549     AC_MSG_ERROR([valid options are yes,no,auto])
4550   ;;
4551   esac
4554 if test x"${try_pam_smbpass}" = xno ; then
4555         use_pam_smbpass=no
4556 else
4557         use_pam_smbpass=yes
4558         # Conditions under which pam_smbpass can't be built.
4559         if test x"$BLDSHARED" != xtrue ; then
4560                 if test x"${try_pam_smbpass}" = xyes ; then
4561                         AC_MSG_ERROR([No support for shared modules])
4562                 fi
4563                 use_pam_smbpass=no
4564         elif test x"$create_pam_modules" != xyes ; then
4565                 if test x"${try_pam_smbpass}" = xyes ; then
4566                         AC_MSG_ERROR([No support for PAM MODULES])
4567                 fi
4568                 use_pam_smbpass=no
4569         fi
4571         if test x"${use_pam_smbpass}" = xyes ; then 
4572                 PAM_MODULES="pam_smbpass"
4573                 INSTALL_PAM_MODULES="installpammodules"
4574                 UNINSTALL_PAM_MODULES="uninstallpammodules"
4575         fi
4577 AC_MSG_RESULT([$use_pam_smbpass])
4581 ## moved after the check for -lcrypt in order to
4582 ## ensure that the necessary libraries are included
4583 ## check checking for truncated salt.  Wrapped by the
4584 ## $with_pam_for_crypt variable as above   --jerry
4586 if test $with_pam_for_crypt = no; then
4587 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4588 crypt_LIBS="$LIBS"
4589 LIBS="$AUTH_LIBS $LIBS"
4590 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4591         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4592 LIBS="$crypt_LIBS"])
4593 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4594         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4598 #################################################
4599 # check for a NISPLUS_HOME support
4600 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4601 AC_ARG_WITH(nisplus-home,
4602 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4603 [ case "$withval" in
4604   yes)
4605     AC_MSG_RESULT(yes)
4606     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4607     ;;
4608   *)
4609     AC_MSG_RESULT(no)
4610     ;;
4611   esac ],
4612   AC_MSG_RESULT(no)
4615 #################################################
4616 # check for syslog logging
4617 AC_MSG_CHECKING(whether to use syslog logging)
4618 AC_ARG_WITH(syslog,
4619 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4620 [ case "$withval" in
4621   yes)
4622     AC_MSG_RESULT(yes)
4623     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4624     ;;
4625   *)
4626     AC_MSG_RESULT(no)
4627     ;;
4628   esac ],
4629   AC_MSG_RESULT(no)
4632 #################################################
4633 # check for custom syslog facility
4634 AC_MSG_CHECKING(whether to use a custom syslog facility)
4635 AC_ARG_WITH(syslog-facility,
4636 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4638   if test "$withval" = "no" ; then
4639     AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4640   else
4641      if test "$withval" != "yes" ; then
4642         syslog_facility="$withval"
4643         AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4644      fi
4645   fi
4648 #################################################
4649 # check for experimental disk-quotas support
4651 samba_cv_WITH_QUOTAS=auto
4652 samba_cv_TRY_QUOTAS=no
4653 samba_cv_RUN_QUOTA_TESTS=auto
4654 samba_cv_WITH_SYS_QUOTAS=auto
4655 samba_cv_TRY_SYS_QUOTAS=auto
4656 samba_cv_SYSQUOTA_FOUND=no
4658 AC_MSG_CHECKING(whether to try disk-quotas support)
4659 AC_ARG_WITH(quotas,
4660 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4661 [ case "$withval" in
4662   yes)
4663     AC_MSG_RESULT(yes)
4664     samba_cv_WITH_QUOTAS=yes
4665     samba_cv_TRY_QUOTAS=yes
4666     samba_cv_RUN_QUOTA_TESTS=yes
4667     #set sys quotas to auto in this case
4668     samba_cv_TRY_SYS_QUOTAS=auto
4669     ;;
4670   auto)
4671     AC_MSG_RESULT(auto)
4672     samba_cv_WITH_QUOTAS=auto
4673     samba_cv_TRY_QUOTAS=auto
4674     samba_cv_RUN_QUOTA_TESTS=auto
4675     #set sys quotas to auto in this case
4676     samba_cv_TRY_SYS_QUOTAS=auto
4677     ;;
4678   no)
4679     AC_MSG_RESULT(no)
4680     samba_cv_WITH_QUOTAS=no
4681     samba_cv_TRY_QUOTAS=no
4682     samba_cv_RUN_QUOTA_TESTS=no
4683     ;;
4684   *)
4685     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4686     ;;
4687   esac ],
4688   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4691 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4692 AC_ARG_WITH(sys-quotas,
4693 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4694 [ case "$withval" in
4695   yes)
4696     AC_MSG_RESULT(yes)
4697     samba_cv_WITH_SYS_QUOTAS=yes
4698     samba_cv_TRY_SYS_QUOTAS=yes
4699     samba_cv_RUN_QUOTA_TESTS=yes
4700     ;;
4701   auto)
4702     AC_MSG_RESULT(auto)
4703     samba_cv_WITH_SYS_QUOTAS=auto
4704     samba_cv_TRY_SYS_QUOTAS=auto
4705     samba_cv_RUN_QUOTA_TESTS=auto
4706     ;;
4707   no)
4708     AC_MSG_RESULT(no)
4709     samba_cv_WITH_SYS_QUOTAS=no
4710     samba_cv_TRY_SYS_QUOTAS=no
4711     ;;
4712   *)
4713     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4714     ;;
4715   esac ],
4716   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4719 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4720 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4721   case "$host_os" in
4722         *linux*)
4723             AC_MSG_RESULT(yes)
4724             samba_cv_TRY_SYS_QUOTAS=yes
4725             samba_cv_RUN_QUOTA_TESTS=yes
4726             ;;
4727         *)
4728             AC_MSG_RESULT(no)
4729             samba_cv_TRY_SYS_QUOTAS=no
4730             ;;
4731   esac
4734 #############################################
4735 # only check for quota stuff if --with-quotas
4736 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4738 case "$host_os" in
4739         # on linux we didn't need to test we have builtin support
4740         *linux*)
4741             samba_cv_SYSQUOTA_FOUND=yes
4742             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4743             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4744             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4745             AC_MSG_RESULT(yes)
4747             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4748             samba_cv_found_xfs_header=yes
4749             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4750             AC_MSG_RESULT(yes)
4751             ;;
4752         *solaris*)
4753             # need to set this define when using static linking (BUG 1473)
4754             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4755             ;;
4756         *)
4757             ;;
4758 esac
4760 # some broken header files need this
4761 AC_CHECK_HEADER(asm/types.h,[
4762             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4763             AC_ADD_INCLUDE(<asm/types.h>)
4764             ])
4766 # For quotas on Veritas VxFS filesystems
4767 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4769 # For quotas on Linux XFS filesystems
4770 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4772 # For sys/quota.h and linux/quota.h
4773 AC_CHECK_HEADERS(sys/quota.h)
4775 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4776 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4777 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4778 AC_TRY_COMPILE([
4779 #include "confdefs.h"
4780 #ifdef HAVE_SYS_TYPES_H
4781 #include <sys/types.h>
4782 #endif
4783 #ifdef HAVE_ASM_TYPES_H
4784 #include <asm/types.h>
4785 #endif
4786 #include <sys/quota.h>
4787 ],[int i = Q_XGETQUOTA;],
4788 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4789 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4790         samba_cv_found_xfs_header=yes
4794 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4795 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4796 AC_TRY_COMPILE([
4797 #include "confdefs.h"
4798 #ifdef HAVE_SYS_QUOTA_H
4799 #include <sys/quota.h>
4800 #endif
4802 struct dqblk D;
4803 D.dqb_fsoftlimit = 0;],
4804 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4805 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4806         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4809 ##################
4810 # look for a working quota system
4812 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4813 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4814 AC_TRY_RUN_STRICT([
4815 #define HAVE_QUOTACTL_4A 1
4816 #define AUTOCONF_TEST 1
4817 #include "confdefs.h"
4818 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4819            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4820 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4821     samba_cv_SYSQUOTA_FOUND=yes;
4822     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4823     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4827 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4828 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4829 AC_TRY_RUN_STRICT([
4830 #define HAVE_QUOTACTL_4B 1
4831 #define AUTOCONF_TEST 1
4832 #include "confdefs.h"
4833 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4834            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4835 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4836     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4837     samba_cv_SYSQUOTA_FOUND=yes;
4838     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4839     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4843 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4844 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4845 AC_TRY_RUN_STRICT([
4846 #define HAVE_QUOTACTL_3 1
4847 #define AUTOCONF_TEST 1
4848 #include "confdefs.h"
4849 #include "${srcdir-.}/../tests/sysquotas.c"],[$CFLAGS $Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4850            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4851 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4852     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4853     samba_cv_SYSQUOTA_FOUND=yes;
4854     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4855     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4859 #################################################
4860 # check for mntent.h and struct mntent
4861 AC_CHECK_HEADERS(mntent.h)
4862 #################################################
4863 # check for setmntent,getmntent,endmntent
4864 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4866 #################################################
4867 # check for devnm.h and struct mntent
4868 AC_CHECK_HEADERS(devnm.h)
4869 #################################################
4870 # check for devnm
4871 AC_CHECK_FUNCS(devnm)
4873 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4874     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4875         # if --with-sys-quotas=yes then build it
4876         # you have can use the get/set quota command smb.conf
4877         # options then
4878         samba_cv_SYSQUOTA_FOUND=auto
4879     fi
4880     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4881         # if --with-sys-quotas=yes then build it
4882         # you have can use the get/set quota command smb.conf
4883         # options then
4884         samba_cv_TRY_SYS_QUOTAS=auto
4885     fi
4888 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4889 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4890 SAVE_CPPFLAGS="$CPPFLAGS"
4891 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4892 AC_TRY_COMPILE([
4893 #include "confdefs.h"
4894 #define NO_PROTO_H 1
4895 #define NO_CONFIG_H 1
4896 #define HAVE_SYS_QUOTAS 1
4897 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4898 #include "${srcdir-.}/lib/sysquotas.c"
4899 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4900 CPPFLAGS="$SAVE_CPPFLAGS"
4902 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4903 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4904     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4905         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4906         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4907         samba_cv_WE_USE_SYS_QUOTAS=yes
4908         AC_MSG_RESULT(yes)
4909     else
4910         AC_MSG_RESULT(no)
4911     fi
4915 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4916 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4917 SAVE_CPPFLAGS="$CPPFLAGS"
4918 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4919 AC_TRY_COMPILE([
4920 #include "confdefs.h"
4921 #define NO_PROTO_H 1
4922 #define NO_CONFIG_H 1
4923 #define HAVE_SYS_QUOTAS 1
4924 #define HAVE_XFS_QUOTAS 1
4925 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4926 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4927 CPPFLAGS="$SAVE_CPPFLAGS"
4929 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4930     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4931         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4932     fi
4936 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4937 SAVE_CPPFLAGS="$CPPFLAGS"
4938 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4939 AC_TRY_COMPILE([
4940 #include "confdefs.h"
4941 #define NO_PROTO_H 1
4942 #define NO_CONFIG_H 1
4943 #include "${srcdir-.}/smbd/quotas.c"
4944 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4945 CPPFLAGS="$SAVE_CPPFLAGS"
4947 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4948 AC_MSG_CHECKING(whether to use the old quota support)
4949     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4950       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4951         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4952         AC_MSG_RESULT(yes)
4953       else
4954         AC_MSG_RESULT(no)
4955       fi
4956     else
4957       AC_MSG_RESULT(no)
4958     fi
4961 ####################
4962 # End of quota check samba_cv_RUN_QUOTA_TESTS
4965 #################################################
4966 # check for experimental utmp accounting
4968 AC_MSG_CHECKING(whether to support utmp accounting)
4969 WITH_UTMP=yes
4970 AC_ARG_WITH(utmp,
4971 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4972 [ case "$withval" in
4973   no)
4974                 WITH_UTMP=no
4975                 ;;
4976   *)
4977                 WITH_UTMP=yes
4978                 ;;
4979   esac ],
4982 # utmp requires utmp.h
4983 # Note similar check earlier, when checking utmp details.
4985 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4986         utmp_no_reason=", no utmp.h on $host_os"
4987         WITH_UTMP=no
4990 # Display test results
4992 if test x"$WITH_UTMP" = x"yes"; then
4993         AC_MSG_RESULT(yes)
4994         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4995 else
4996         AC_MSG_RESULT(no$utmp_no_reason)
5000 #################################################
5001 # these tests are taken from the GNU fileutils package
5002 AC_CHECKING(how to get filesystem space usage)
5003 space=no
5005 # Test for statvfs64.
5006 if test $space = no; then
5007   # SVR4
5008   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
5009   [AC_TRY_RUN([
5010 #if defined(HAVE_UNISTD_H)
5011 #include <unistd.h>
5012 #endif
5013 #include <sys/types.h>
5014 #include <sys/statvfs.h>
5015   main ()
5016   {
5017     struct statvfs64 fsd;
5018     exit (statvfs64 (".", &fsd));
5019   }],
5020   fu_cv_sys_stat_statvfs64=yes,
5021   fu_cv_sys_stat_statvfs64=no,
5022   fu_cv_sys_stat_statvfs64=cross)])
5023   if test $fu_cv_sys_stat_statvfs64 = yes; then
5024     space=yes
5025     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
5026   fi
5029 # Perform only the link test since it seems there are no variants of the
5030 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
5031 # because that got a false positive on SCO OSR5.  Adding the declaration
5032 # of a `struct statvfs' causes this test to fail (as it should) on such
5033 # systems.  That system is reported to work fine with STAT_STATFS4 which
5034 # is what it gets when this test fails.
5035 if test $space = no; then
5036   # SVR4
5037   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
5038                  [AC_TRY_LINK([#include <sys/types.h>
5039 #include <sys/statvfs.h>],
5040                               [struct statvfs fsd; statvfs (0, &fsd);],
5041                               fu_cv_sys_stat_statvfs=yes,
5042                               fu_cv_sys_stat_statvfs=no)])
5043   if test $fu_cv_sys_stat_statvfs = yes; then
5044     space=yes
5045     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
5046   fi
5049 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
5050 # This is not the case on ancient Linux systems.
5052 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
5053     AC_TRY_COMPILE([#include <sys/types.h>
5054 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5055         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5056 if test x"$samba_cv_fsid_int" = x"yes"; then
5057     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5060 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
5061 # systems use f_bsize.
5062 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
5063     AC_TRY_COMPILE([#include <sys/types.h>
5064 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
5065         samba_cv_frsize=yes,samba_cv_frsize=no)])
5066 if test x"$samba_cv_frsize" = x"yes"; then
5067     AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
5070 # Some systems use f_flag in struct statvfs while others use f_flags
5071 AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
5072     AC_TRY_COMPILE([#include <sys/types.h>
5073 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
5074         samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
5075 if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
5076     AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
5079 AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
5080     AC_TRY_COMPILE([#include <sys/types.h>
5081 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
5082         samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
5083 if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
5084     AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
5087 if test $space = no; then
5088   # DEC Alpha running OSF/1
5089   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5090   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5091   [AC_TRY_RUN([
5092 #include <sys/param.h>
5093 #include <sys/types.h>
5094 #include <sys/mount.h>
5095   main ()
5096   {
5097     struct statfs fsd;
5098     fsd.f_fsize = 0;
5099     exit (statfs (".", &fsd, sizeof (struct statfs)));
5100   }],
5101   fu_cv_sys_stat_statfs3_osf1=yes,
5102   fu_cv_sys_stat_statfs3_osf1=no,
5103   fu_cv_sys_stat_statfs3_osf1=no)])
5104   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5105   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5106     space=yes
5107     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5108   fi
5111 if test $space = no; then
5112 # AIX
5113   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5114 member (AIX, 4.3BSD)])
5115   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5116   [AC_TRY_RUN([
5117 #ifdef HAVE_SYS_PARAM_H
5118 #include <sys/param.h>
5119 #endif
5120 #ifdef HAVE_SYS_MOUNT_H
5121 #include <sys/mount.h>
5122 #endif
5123 #ifdef HAVE_SYS_VFS_H
5124 #include <sys/vfs.h>
5125 #endif
5126   main ()
5127   {
5128   struct statfs fsd;
5129   fsd.f_bsize = 0;
5130   exit (statfs (".", &fsd));
5131   }],
5132   fu_cv_sys_stat_statfs2_bsize=yes,
5133   fu_cv_sys_stat_statfs2_bsize=no,
5134   fu_cv_sys_stat_statfs2_bsize=no)])
5135   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5136   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5137     space=yes
5138     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5139   fi
5142 if test $space = no; then
5143 # SVR3
5144   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5145   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5146   [AC_TRY_RUN([#include <sys/types.h>
5147 #include <sys/statfs.h>
5148   main ()
5149   {
5150   struct statfs fsd;
5151   exit (statfs (".", &fsd, sizeof fsd, 0));
5152   }],
5153     fu_cv_sys_stat_statfs4=yes,
5154     fu_cv_sys_stat_statfs4=no,
5155     fu_cv_sys_stat_statfs4=no)])
5156   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5157   if test $fu_cv_sys_stat_statfs4 = yes; then
5158     space=yes
5159     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5160   fi
5163 if test $space = no; then
5164 # 4.4BSD and NetBSD
5165   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5166 member (4.4BSD and NetBSD)])
5167   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5168   [AC_TRY_RUN([#include <sys/types.h>
5169 #ifdef HAVE_SYS_PARAM_H
5170 #include <sys/param.h>
5171 #endif
5172 #ifdef HAVE_SYS_MOUNT_H
5173 #include <sys/mount.h>
5174 #endif
5175   main ()
5176   {
5177   struct statfs fsd;
5178   fsd.f_fsize = 0;
5179   exit (statfs (".", &fsd));
5180   }],
5181   fu_cv_sys_stat_statfs2_fsize=yes,
5182   fu_cv_sys_stat_statfs2_fsize=no,
5183   fu_cv_sys_stat_statfs2_fsize=no)])
5184   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5185   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5186     space=yes
5187         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5188   fi
5191 if test $space = no; then
5192   # Ultrix
5193   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5194   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5195   [AC_TRY_RUN([#include <sys/types.h>
5196 #ifdef HAVE_SYS_PARAM_H
5197 #include <sys/param.h>
5198 #endif
5199 #ifdef HAVE_SYS_MOUNT_H
5200 #include <sys/mount.h>
5201 #endif
5202 #ifdef HAVE_SYS_FS_TYPES_H
5203 #include <sys/fs_types.h>
5204 #endif
5205   main ()
5206   {
5207   struct fs_data fsd;
5208   /* Ultrix's statfs returns 1 for success,
5209      0 for not mounted, -1 for failure.  */
5210   exit (statfs (".", &fsd) != 1);
5211   }],
5212   fu_cv_sys_stat_fs_data=yes,
5213   fu_cv_sys_stat_fs_data=no,
5214   fu_cv_sys_stat_fs_data=no)])
5215   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5216   if test $fu_cv_sys_stat_fs_data = yes; then
5217     space=yes
5218     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5219   fi
5223 # As a gating factor for large file support, in order to
5224 # use <4GB files we must have the following minimal support
5225 # available.
5226 # long long, and a 64 bit off_t or off64_t.
5227 # If we don't have all of these then disable large
5228 # file support.
5230 AC_MSG_CHECKING([if large file support can be enabled])
5231 AC_TRY_COMPILE([
5232 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5233 #include <sys/types.h>
5234 #else
5235 __COMPILE_ERROR_
5236 #endif
5238 [int i],
5239 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5240 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5241         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5243 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5245 #################################################
5246 # check for cluster extensions
5248 CTDB_CFLAGS=""
5249 AC_SUBST(CTDB_CFLAGS)
5250 AC_ARG_WITH(ctdb,
5251 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
5252 [ case "$withval" in
5253   yes|no)
5254     AC_MSG_WARN([--with-ctdb called without argument])
5255     ;;
5256   *)
5257     CTDB_CPPFLAGS="-I$withval/include"
5258     ;;
5259   esac])
5261 SAVED_CPPFLAGS="$CPPFLAGS"
5262 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS} $CTDB_CPPFLAGS"
5263 ctdb_broken="missing or broken headers"
5265 AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[
5266 #include "confdefs.h"
5267 #define NO_CONFIG_H
5268 #include "replace.h"
5269 #include "system/wait.h"
5270 #include "system/network.h"
5271 #define private #error __USED_RESERVED_WORD_private__
5272 #include <talloc.h>
5273 #include <tdb.h>
5274 #include <ctdb.h>
5277 AC_HAVE_DECL(CTDB_CONTROL_TRANS3_COMMIT,[
5278 #include "confdefs.h"
5279 #define NO_CONFIG_H
5280 #include "replace.h"
5281 #include "system/wait.h"
5282 #include "system/network.h"
5283 #include <talloc.h>
5284 #include <tdb.h>
5285 #include <ctdb.h>
5286 #include <ctdb_private.h>
5288 if test x"$ac_cv_have_CTDB_CONTROL_TRANS3_COMMIT_decl" = x"yes"; then
5289         ctdb_broken=no
5290 else
5291         ctdb_broken="ctdb transaction support missing or too old"
5294 # in ctdb 1.0.57 ctdb_control_tcp was temparary renamed to ctdb_tcp_client
5295 AC_CHECK_TYPE(struct ctdb_tcp_client,[
5296         AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5297 ],,[
5298 #include "confdefs.h"
5299 #define NO_CONFIG_H
5300 #include "replace.h"
5301 #include "system/wait.h"
5302 #include "system/network.h"
5303 #include <talloc.h>
5304 #include <tdb.h>
5305 #include <ctdb.h>
5306 #include <ctdb_private.h>
5309 AC_CHECK_TYPE(struct ctdb_control_tcp,[
5310         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5312         ctdb_broken="missing struct ctdb_control_tcp"
5314 #include "confdefs.h"
5315 #define NO_CONFIG_H
5316 #include "replace.h"
5317 #include "system/wait.h"
5318 #include "system/network.h"
5319 #include <talloc.h>
5320 #include <tdb.h>
5321 #include <ctdb.h>
5322 #include <ctdb_private.h>
5325 AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5326         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5327 ],,[
5328 #include "confdefs.h"
5329 #define NO_CONFIG_H
5330 #include "replace.h"
5331 #include "system/wait.h"
5332 #include "system/network.h"
5333 #include <talloc.h>
5334 #include <tdb.h>
5335 #include <ctdb.h>
5336 #include <ctdb_private.h>
5338 CPPFLAGS="$SAVED_CPPFLAGS"
5340 AC_MSG_CHECKING(cluster support)
5341 AC_ARG_WITH(cluster-support,
5342 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
5344 if test x"$with_cluster_support" = x ; then
5345         with_cluster_support="auto"
5348 if test x"$ac_cv_header_ctdb_private_h" != x"yes"; then
5349         if test "x$with_cluster_support" = "xyes"; then
5350                 AC_MSG_ERROR("ctdb_private.h is required for cluster support")
5351         fi
5352         with_cluster_support=no
5355 if test x"$ctdb_broken" != x"no"; then
5356         if test "x$with_cluster_support" = "xyes"; then
5357                 AC_MSG_ERROR(["cluster support: $ctdb_broken"])
5358         fi
5359         with_cluster_support=no
5362 if test "x$with_cluster_support" != "xno"; then
5363     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5364     SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5365     AC_MSG_RESULT(yes)
5366 else
5367     AC_MSG_RESULT(no)
5370 #################################################
5371 # check for ACL support
5373 AC_MSG_CHECKING(whether to support ACLs)
5374 AC_ARG_WITH(acl-support,
5375 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5376 [ case "$withval" in
5377         yes|no)
5378                 with_acl_support="$withval"
5379                 ;;
5380   esac ])
5382 if test x"$with_acl_support" = x ; then
5383         with_acl_support="auto"
5386 AC_MSG_RESULT($with_acl_support)
5388 if test x"$with_acl_support" = x"no"; then
5389         AC_MSG_RESULT(Disabling ACL support)
5390         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5391 else
5392         AC_MSG_NOTICE(checking whether ACL support is available:)
5393         case "$host_os" in
5394         *sysv5*)
5395                 AC_MSG_NOTICE(Using UnixWare ACLs)
5396                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5397                 default_static_modules="$default_static_modules vfs_solarisacl"
5398                 ;;
5399         *solaris*)
5400                 AC_MSG_NOTICE(Using solaris ACLs)
5401                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5402                 ACL_LIBS="$ACL_LIBS -lsec"
5403                 default_static_modules="$default_static_modules vfs_solarisacl"
5404                 ;;
5405         *hpux*)
5406                 AC_MSG_NOTICE(Using HPUX ACLs)
5407                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5408                 default_static_modules="$default_static_modules vfs_hpuxacl"
5409                 ;;
5410         *irix*)
5411                 AC_MSG_NOTICE(Using IRIX ACLs)
5412                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5413                 default_static_modules="$default_static_modules vfs_irixacl"
5414                 ;;
5415         *aix*)
5416                 AC_MSG_NOTICE(Using AIX ACLs)
5417                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5418                 default_static_modules="$default_static_modules vfs_aixacl"
5419                 ;;
5420         *osf*)
5421                 AC_MSG_NOTICE(Using Tru64 ACLs)
5422                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5423                 ACL_LIBS="$ACL_LIBS -lpacl"
5424                 default_static_modules="$default_static_modules vfs_tru64acl"
5425                 ;;
5426         *darwin*)
5427                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5428                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5429                 ;;
5430         *)
5431                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5432                 case "$host_os" in
5433                 *linux*)
5434                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5435                         ;;
5436                 esac
5437                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5438                         acl_LIBS=$LIBS
5439                         LIBS="$LIBS $ACL_LIBS"
5440                         AC_TRY_LINK([
5441                                 #include <sys/types.h>
5442                                 #include <sys/acl.h>
5443                         ],[
5444                                 acl_t acl;
5445                                 int entry_id;
5446                                 acl_entry_t *entry_p;
5447                                 return acl_get_entry(acl, entry_id, entry_p);
5448                         ],
5449                         [samba_cv_HAVE_POSIX_ACLS=yes],
5450                         [samba_cv_HAVE_POSIX_ACLS=no])
5451                         LIBS=$acl_LIBS
5452                 ])
5453                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5454                         AC_MSG_NOTICE(Using posix ACLs)
5455                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5456                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5457                                 acl_LIBS=$LIBS
5458                                 LIBS="$LIBS $ACL_LIBS"
5459                                 AC_TRY_LINK([
5460                                         #include <sys/types.h>
5461                                         #include <sys/acl.h>
5462                                 ],[
5463                                         acl_permset_t permset_d;
5464                                         acl_perm_t perm;
5465                                         return acl_get_perm_np(permset_d, perm);
5466                                 ],
5467                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5468                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5469                                 LIBS=$acl_LIBS
5470                         ])
5471                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5472                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5473                         fi
5474                         default_static_modules="$default_static_modules vfs_posixacl"
5475                 else
5476                         AC_MSG_NOTICE(ACL support is not avaliable)
5477                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5478                 fi
5479                 ;;
5480         esac
5481 fi # with_acl_support
5485 #################################################
5486 # check for AIO support
5488 AC_MSG_CHECKING(whether to support asynchronous io)
5489 AC_ARG_WITH(aio-support,
5490 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5491 [ case "$withval" in
5492   yes)
5494         AC_MSG_RESULT(yes)
5495         case "$host_os" in
5496         *)
5497                 AIO_LIBS=$LIBS
5498                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5499                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5500                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5501                 aio_LIBS=$LIBS
5502                 LIBS=$AIO_LIBS
5503                 AC_TRY_LINK([#include <sys/types.h>
5504 #include <aio.h>],
5505 [ struct aiocb a; return aio_read(&a);],
5506 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5507                 LIBS=$aio_LIBS])
5508                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5509                 aio_LIBS=$LIBS
5510                 LIBS=$AIO_LIBS
5511                 AC_TRY_LINK([#include <sys/types.h>
5512 #include <aio.h>],
5513 [ struct aiocb64 a; return aio_read64(&a);],
5514 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5515                 LIBS=$aio_LIBS])
5516                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5517                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5518                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5519                         LIBS=$AIO_LIBS
5520                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5521                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5522                         LIBS=$AIO_LIBS
5523                 fi
5525                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5526                         AC_MSG_CHECKING(for aio_read)
5527                         AC_LINK_IFELSE([#include <aio.h>
5528 int main() { struct aiocb a; return aio_read(&a); }],
5529 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5530 [AC_MSG_RESULT(no)])
5532                         AC_MSG_CHECKING(for aio_write)
5533                         AC_LINK_IFELSE([#include <aio.h>
5534 int main() { struct aiocb a; return aio_write(&a); }],
5535 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5536 [AC_MSG_RESULT(no)])
5538                         AC_MSG_CHECKING(for aio_fsync)
5539                         AC_LINK_IFELSE([#include <aio.h>
5540 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5541 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5542 [AC_MSG_RESULT(no)])
5544                         AC_MSG_CHECKING(for aio_return)
5545                         AC_LINK_IFELSE([#include <aio.h>
5546 int main() { struct aiocb a; return aio_return(&a); }],
5547 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5548 [AC_MSG_RESULT(no)])
5550                         AC_MSG_CHECKING(for aio_error)
5551                         AC_LINK_IFELSE([#include <aio.h>
5552 int main() { struct aiocb a; return aio_error(&a); }],
5553 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5554 [AC_MSG_RESULT(no)])
5556                         AC_MSG_CHECKING(for aio_cancel)
5557                         AC_LINK_IFELSE([#include <aio.h>
5558 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5559 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5560 [AC_MSG_RESULT(no)])
5562                         AC_MSG_CHECKING(for aio_suspend)
5563                         AC_LINK_IFELSE([#include <aio.h>
5564 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5565 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5566 [AC_MSG_RESULT(no)])
5567                 fi
5569                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5570                         AC_MSG_CHECKING(for aio_read64)
5571                         AC_LINK_IFELSE([#include <aio.h>
5572 int main() { struct aiocb a; return aio_read64(&a); }],
5573 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5574 [AC_MSG_RESULT(no)])
5576                         AC_MSG_CHECKING(for aio_write64)
5577                         AC_LINK_IFELSE([#include <aio.h>
5578 int main() { struct aiocb a; return aio_write64(&a); }],
5579 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5580 [AC_MSG_RESULT(no)])
5582                         AC_MSG_CHECKING(for aio_fsync64)
5583                         AC_LINK_IFELSE([#include <aio.h>
5584 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5585 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5586 [AC_MSG_RESULT(no)])
5588                         AC_MSG_CHECKING(for aio_return64)
5589                         AC_LINK_IFELSE([#include <aio.h>
5590 int main() { struct aiocb a; return aio_return64(&a); }],
5591 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5592 [AC_MSG_RESULT(no)])
5594                         AC_MSG_CHECKING(for aio_error64)
5595                         AC_LINK_IFELSE([#include <aio.h>
5596 int main() { struct aiocb a; return aio_error64(&a); }],
5597 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5598 [AC_MSG_RESULT(no)])
5600                         AC_MSG_CHECKING(for aio_cancel64)
5601                         AC_LINK_IFELSE([#include <aio.h>
5602 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5603 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5604 [AC_MSG_RESULT(no)])
5606                         AC_MSG_CHECKING(for aio_suspend64)
5607                         AC_LINK_IFELSE([#include <aio.h>
5608 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5609 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5610 [AC_MSG_RESULT(no)])
5611                 fi
5612             ;;
5613         esac
5614         ;;
5615   *)
5616     AC_MSG_RESULT(no)
5617     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5618     ;;
5619   esac ],
5620   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5621   AC_MSG_RESULT(no)
5624 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5625         if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5626                 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5627                 default_shared_modules="$default_shared_modules vfs_aio_fork"
5628         fi
5631 #################################################
5632 # check for sendfile support
5634 with_sendfile_support=yes
5635 AC_MSG_CHECKING(whether to check to support sendfile)
5636 AC_ARG_WITH(sendfile-support,
5637 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5638 [ case "$withval" in
5639   yes)
5641         AC_MSG_RESULT(yes);
5643         case "$host_os" in
5644         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5645                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5646                 AC_TRY_LINK([#include <sys/sendfile.h>],
5648 int tofd, fromfd;
5649 off64_t offset;
5650 size_t total;
5651 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5653 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5655                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5656                 AC_TRY_LINK([#include <sys/sendfile.h>],
5658 int tofd, fromfd;
5659 off_t offset;
5660 size_t total;
5661 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5663 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5665 # Try and cope with broken Linux sendfile....
5666                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5667                 AC_TRY_LINK([\
5668 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5669 #undef _FILE_OFFSET_BITS
5670 #endif
5671 #include <sys/sendfile.h>],
5673 int tofd, fromfd;
5674 off_t offset;
5675 size_t total;
5676 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5678 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5680         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5681                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5682                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5683                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5684         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5685                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5686                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5687                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5688         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5689                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5690                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5691         else
5692                 AC_MSG_RESULT(no);
5693         fi
5695         ;;
5696         *freebsd* | *dragonfly* )
5697                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5698                 AC_TRY_LINK([\
5699 #include <sys/types.h>
5700 #include <unistd.h>
5701 #include <sys/socket.h>
5702 #include <sys/uio.h>],
5704         int fromfd, tofd, ret, total=0;
5705         off_t offset, nwritten;
5706         struct sf_hdtr hdr;
5707         struct iovec hdtrl;
5708         hdr.headers = &hdtrl;
5709         hdr.hdr_cnt = 1;
5710         hdr.trailers = NULL;
5711         hdr.trl_cnt = 0;
5712         hdtrl.iov_base = NULL;
5713         hdtrl.iov_len = 0;
5714         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5716 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5718         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5719                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5720                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5721                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5722         else
5723                 AC_MSG_RESULT(no);
5724         fi
5725         ;;
5727         *hpux*)
5728                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5729                 AC_TRY_LINK([\
5730 #include <sys/socket.h>
5731 #include <sys/uio.h>],
5733         int fromfd, tofd;
5734         size_t total=0;
5735         struct iovec hdtrl[2];
5736         ssize_t nwritten;
5737         off64_t offset;
5739         hdtrl[0].iov_base = 0;
5740         hdtrl[0].iov_len = 0;
5742         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5744 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5745         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5746                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5747                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5748                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5749         else
5750                 AC_MSG_RESULT(no);
5751         fi
5753                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5754                 AC_TRY_LINK([\
5755 #include <sys/socket.h>
5756 #include <sys/uio.h>],
5758         int fromfd, tofd;
5759         size_t total=0;
5760         struct iovec hdtrl[2];
5761         ssize_t nwritten;
5762         off_t offset;
5764         hdtrl[0].iov_base = 0;
5765         hdtrl[0].iov_len = 0;
5767         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5769 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5770         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5771                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5772                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5773                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5774         else
5775                 AC_MSG_RESULT(no);
5776         fi
5777         ;;
5779         *solaris*)
5780                 AC_CHECK_LIB(sendfile,sendfilev)
5781                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5782                 AC_TRY_LINK([\
5783 #include <sys/sendfile.h>],
5785         int sfvcnt;
5786         size_t xferred;
5787         struct sendfilevec vec[2];
5788         ssize_t nwritten;
5789         int tofd;
5791         sfvcnt = 2;
5793         vec[0].sfv_fd = SFV_FD_SELF;
5794         vec[0].sfv_flag = 0;
5795         vec[0].sfv_off = 0;
5796         vec[0].sfv_len = 0;
5798         vec[1].sfv_fd = 0;
5799         vec[1].sfv_flag = 0;
5800         vec[1].sfv_off = 0;
5801         vec[1].sfv_len = 0;
5802         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5804 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5806         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5807                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5808                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5809                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5810         else
5811                 AC_MSG_RESULT(no);
5812         fi
5814                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5815                 AC_TRY_LINK([\
5816 #include <sys/sendfile.h>],
5818         int sfvcnt;
5819         size_t xferred;
5820         struct sendfilevec vec[2];
5821         ssize_t nwritten;
5822         int tofd;
5824         sfvcnt = 2;
5826         vec[0].sfv_fd = SFV_FD_SELF;
5827         vec[0].sfv_flag = 0;
5828         vec[0].sfv_off = 0;
5829         vec[0].sfv_len = 0;
5831         vec[1].sfv_fd = 0;
5832         vec[1].sfv_flag = 0;
5833         vec[1].sfv_off = 0;
5834         vec[1].sfv_len = 0;
5835         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5837 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5839         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5840                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5841                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5842                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5843         else
5844                 AC_MSG_RESULT(no);
5845         fi
5846         ;;
5847         *aix*)
5848                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5849                 AC_TRY_LINK([\
5850 #include <sys/socket.h>],
5852         int fromfd, tofd;
5853         size_t total=0;
5854         struct sf_parms hdtrl;
5855         ssize_t nwritten;
5856         off64_t offset;
5858         hdtrl.header_data = 0;
5859         hdtrl.header_length = 0;
5860         hdtrl.file_descriptor = fromfd;
5861         hdtrl.file_offset = 0;
5862         hdtrl.file_bytes = 0;
5863         hdtrl.trailer_data = 0;
5864         hdtrl.trailer_length = 0;
5866         nwritten = send_file(&tofd, &hdtrl, 0);
5868 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5869         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5870                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5871                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5872                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5873         else
5874                 AC_MSG_RESULT(no);
5875         fi
5876         ;;
5877         *)
5878         ;;
5879         esac
5880         ;;
5881   *)
5882     AC_MSG_RESULT(no)
5883     ;;
5884   esac ],
5885   AC_MSG_RESULT(yes)
5888 ############################################
5889 # See if we have the Linux readahead syscall.
5891 AC_CACHE_CHECK([for Linux readahead],
5892                 samba_cv_HAVE_LINUX_READAHEAD,[
5893     AC_TRY_LINK([
5894 #if defined(HAVE_UNISTD_H)
5895 #include <unistd.h>
5896 #endif
5897 #include <fcntl.h>],
5898     [ssize_t err = readahead(0,0,0x80000);],
5899     samba_cv_HAVE_LINUX_READAHEAD=yes,
5900     samba_cv_HAVE_LINUX_READAHEAD=no)])
5902 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5903   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5904              [Whether Linux readahead is available])
5907 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5909 ############################################
5910 # See if we have the posix_fadvise syscall.
5912 AC_CACHE_CHECK([for posix_fadvise],
5913                 samba_cv_HAVE_POSIX_FADVISE,[
5914     AC_TRY_LINK([
5915 #if defined(HAVE_UNISTD_H)
5916 #include <unistd.h>
5917 #endif
5918 #include <fcntl.h>],
5919     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5920     samba_cv_HAVE_POSIX_FADVISE=yes,
5921     samba_cv_HAVE_POSIX_FADVISE=no)])
5923 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5924   AC_DEFINE(HAVE_POSIX_FADVISE,1,
5925              [Whether posix_fadvise is available])
5928 ############################################
5929 # See if we have the Linux splice syscall.
5931 case "$host_os" in
5932 *linux*)
5933 AC_CACHE_CHECK([for Linux splice],
5934                 samba_cv_HAVE_LINUX_SPLICE,[
5935     AC_TRY_LINK([
5936 #if defined(HAVE_UNISTD_H)
5937 #include <unistd.h>
5938 #endif
5939 #include <fcntl.h>],
5940     [long ret = splice(0,0,1,0,400,0);],
5941     samba_cv_HAVE_LINUX_SPLICE=yes,
5942     samba_cv_HAVE_LINUX_SPLICE=no)])
5945 samba_cv_HAVE_LINUX_SPLICE=no
5947 esac
5949 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5950   AC_DEFINE(HAVE_LINUX_SPLICE,1,
5951              [Whether Linux splice is available])
5954 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5956 ############################################
5957 # See if we have the a broken readlink syscall.
5959 AC_CACHE_CHECK([for a broken readlink syscall],samba_cv_HAVE_BROKEN_READLINK,[
5960 AC_TRY_RUN([#include "${srcdir-.}/../tests/readlink.c"],
5961         samba_cv_HAVE_BROKEN_READLINK=no,samba_cv_HAVE_BROKEN_READLINK=yes,samba_cv_HAVE_BROKEN_READLINK=cross)
5963 if test x"$samba_cv_HAVE_BROKEN_READLINK" = x"yes"; then
5964         AC_DEFINE(HAVE_BROKEN_READLINK,1,[Whether the readlink syscall is broken])
5967 #################################################
5968 # Check whether winbind is supported on this platform.  If so we need to
5969 # build and install client programs, sbin programs and shared libraries
5971 AC_MSG_CHECKING(whether to build winbind)
5973 # Initially, the value of $host_os decides whether winbind is supported
5975 HAVE_WINBIND=yes
5976 HAVE_WBCLIENT=no
5978 # Define external wbclient library to link against.  This disables winbind.
5979 # We define this here so --with-winbind can override it.
5980 AC_ARG_WITH(wbclient,
5981 [AS_HELP_STRING([--with-wbclient], [Use external wbclient (optional)])],
5983   case "$withval" in
5984         no)
5985                 HAVE_WBCLIENT=no
5986                 ;;
5987         yes)
5988                 HAVE_WBCLIENT=yes
5989                 HAVE_WINBIND=no
5990                 ;;
5991         *)
5992                 HAVE_WBCLIENT=yes
5993                 HAVE_WINBIND=no
5994                 WBCLIENT_INCLUDES="-I$withval/include"
5995                 WBCLIENT_LDFLAGS="-L$withval/lib"
5996                 ;;
5997   esac ],
6000 AC_SUBST(WBCLIENT_INCLUDES)
6001 AC_SUBST(WBCLIENT_LDFLAGS)
6002 AC_SUBST(WBCLIENT_LIBS)
6005 # Define the winbind shared library name and any specific linker flags
6006 # it needs to be built with.
6008 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
6009 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
6010 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
6011 NSSSONAMEVERSIONSUFFIX=""
6013 case "$host_os" in
6014         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
6015                 NSSSONAMEVERSIONSUFFIX=".2"
6016                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
6017                 ;;
6018         *freebsd[[5-9]]*)
6019                 # FreeBSD winbind client is implemented as a wrapper around
6020                 # the Linux version.
6021                 NSSSONAMEVERSIONSUFFIX=".1"
6022                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
6023                     ../nsswitch/winbind_nss_linux.o"
6024                 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
6025                 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
6026                 ;;
6028         *netbsd*[[3-9]]*)
6029                 # NetBSD winbind client is implemented as a wrapper
6030                 # around the Linux version. It needs getpwent_r() to
6031                 # indicate libc's use of the correct nsdispatch API.
6032                 #
6033                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
6034                         WINBIND_NSS_EXTRA_OBJS="\
6035                             ../nsswitch/winbind_nss_netbsd.o \
6036                             ../nsswitch/winbind_nss_linux.o"
6037                         WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
6038                         WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
6039                 else
6040                         HAVE_WINBIND=no
6041                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
6042                 fi
6043                 ;;
6044         *irix*)
6045                 # IRIX has differently named shared libraries
6046                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
6047                 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
6048                 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
6049                 ;;
6050         *solaris*)
6051                 # Solaris winbind client is implemented as a wrapper around
6052                 # the Linux version.
6053                 NSSSONAMEVERSIONSUFFIX=".1"
6054                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
6055                     ../nsswitch/winbind_nss_linux.o"
6056                 ;;
6057         *hpux11*)
6058                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
6059                 ;;
6060         *aix*)
6061                 # AIX has even differently named shared libraries.  No
6062                 # WINS support has been implemented yet.
6063                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
6064                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6065                 WINBIND_NSS="../nsswitch/WINBIND"
6066                 WINBIND_WINS_NSS=""
6067                 ;;
6068         *)
6069                 HAVE_WINBIND=no
6070                 winbind_no_reason=", unsupported on $host_os"
6071                 ;;
6072 esac
6074 # Check the setting of --with-winbind
6076 AC_ARG_WITH(winbind,
6077 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
6079   case "$withval" in
6080         yes)
6081                 HAVE_WINBIND=yes
6082                 HAVE_WBCLIENT=no
6083                 ;;
6084         no)
6085                 HAVE_WINBIND=no
6086                 winbind_reason=""
6087                 ;;
6088   esac ],
6091 # We need unix domain sockets for winbind
6093 if test x"$HAVE_WINBIND" = x"yes"; then
6094         if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
6095                 winbind_no_reason=", no unix domain socket support on $host_os"
6096                 HAVE_WINBIND=no
6097         fi
6100 # Display test results
6102 if test x"$HAVE_WINBIND" = x"no"; then
6103         WINBIND_NSS=""
6104         WINBIND_WINS_NSS=""
6106 if test x"$HAVE_WBCLIENT" = x"yes"; then
6107         AC_CHECK_LIB(wbclient, wbcInterfaceDetails,
6108                      [LIBWBCLIENT_LIBS="-lwbclient"], AC_MSG_ERROR([Could not find wbclient]), [$WBCLIENT_LDFLAGS])
6109         LIBWBCLIENT_LIBS="$LIBWBCLIENT_LIBS $WBCLIENT_LDFLAGS"
6110         AC_MSG_RESULT(yes)
6111         AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
6112         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6113 else
6114         if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
6115                 BUILD_LIBWBCLIENT_SHARED=no
6116         else
6117                 BUILD_LIBWBCLIENT_SHARED=yes
6118         fi
6120         LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
6121         LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
6122         LIBWBCLIENT_SOVER=0
6123         if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6124                 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6125                 ## Only worry about libwbclient if we have shared
6126                 # library support
6127                 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
6128                 LIBWBCLIENT=libwbclient
6129                 INSTALL_LIBWBCLIENT=installlibwbclient
6130                 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6131                 LIBWBCLIENT_LIBS="-lwbclient"
6132         else
6133                 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
6134                 LIBWBCLIENT_LIBS=$LIBWBCLIENT_STATIC_TARGET
6135         fi
6138 if test x"$HAVE_WINBIND" = x"yes"; then
6139         AC_MSG_RESULT(yes)
6140         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6142         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6143         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6144         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6145                 PAM_MODULES="$PAM_MODULES pam_winbind"
6146                 INSTALL_PAM_MODULES="installpammodules"
6147                 UNINSTALL_PAM_MODULES="uninstallpammodules"
6148         fi
6149 else
6150         AC_MSG_RESULT(no$winbind_no_reason)
6153 AC_SUBST(WINBIND_NSS)
6154 AC_SUBST(WINBIND_WINS_NSS)
6155 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6156 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6157 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6159 AC_SUBST(WINBIND_KRB5_LOCATOR)
6161 # Solaris 10 does have new member in nss_XbyY_key
6162 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6163                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6164                 [#include <nss_dbdefs.h>])
6166 # Solaris has some extra fields in struct passwd that need to be
6167 # initialised otherwise nscd crashes.
6169 AC_CHECK_MEMBER(struct passwd.pw_comment,
6170                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6171                 [#include <pwd.h>])
6173 AC_CHECK_MEMBER(struct passwd.pw_age,
6174                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6175                 [#include <pwd.h>])
6177 # AIX 4.3.x and 5.1 do not have as many members in
6178 # struct secmethod_table as AIX 5.2
6179 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6180        [#include <usersec.h>])
6181 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6182        [#include <usersec.h>])
6184 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6185 AC_TRY_COMPILE([#include <sys/types.h>
6186 #include <sys/socket.h>],
6187 [struct ucred cred;
6188  socklen_t cred_len;
6189  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6191 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6192 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6193     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6197 #################################################
6198 # Check to see if we should use the included popt
6200 AC_ARG_WITH(included-popt,
6201 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
6203   case "$withval" in
6204         yes)
6205                 INCLUDED_POPT=yes
6206                 ;;
6207         no)
6208                 INCLUDED_POPT=no
6209                 ;;
6210   esac ],
6212 if test x"$INCLUDED_POPT" != x"yes"; then
6213     AC_CHECK_LIB(popt, poptGetContext,
6214                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
6217 AC_MSG_CHECKING(whether to use included popt)
6218 if test x"$INCLUDED_POPT" = x"yes"; then
6219     AC_MSG_RESULT(yes)
6220     BUILD_POPT='$(POPT_OBJ)'
6221     POPTLIBS='$(POPT_OBJ)'
6222     FLAGS1="-I\$(srcdir)/../lib/popt"
6223 else
6224     AC_MSG_RESULT(no)
6225         BUILD_POPT=""
6226     POPTLIBS="-lpopt"
6228 AC_SUBST(BUILD_POPT)
6229 AC_SUBST(POPTLIBS)
6230 AC_SUBST(FLAGS1)
6232 #################################################
6233 # Check if user wants DNS service discovery support
6235 AC_ARG_ENABLE(dnssd,
6236 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=no)])])
6238 AC_SUBST(DNSSD_LIBS)
6239 if test x"$enable_dnssd" = x"yes"; then
6240     have_dnssd_support=yes
6242     AC_CHECK_HEADERS(dns_sd.h)
6243     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6244         have_dnssd_support=no
6245     fi
6247     # On Darwin the DNSSD API is in libc, but on other platforms it's
6248     # probably in -ldns_sd
6249     AC_CHECK_FUNCS(DNSServiceRegister)
6250     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6251     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6252             x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6253         have_dnssd_support=no
6254     fi
6256     if test x"$have_dnssd_support" = x"yes"; then
6257         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6258                 [Whether to enable DNS service discovery support])
6259     else
6260         if test x"$enable_dnssd" = x"yes"; then
6261             AC_MSG_ERROR(DNS service discovery support not available)
6262         fi
6263     fi
6267 #################################################
6268 # Check if user wants avahi support
6270 AC_ARG_ENABLE(avahi,
6271 [AS_HELP_STRING([--enable-avahi], [Enable Avahi support (default=auto)])])
6273 if test x"$enable_avahi" != x"no"; then
6274     have_avahi_support=yes
6276     AC_CHECK_HEADERS(avahi-common/watch.h)
6277     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6278         have_avahi_support=no
6279     fi
6281     AC_CHECK_HEADERS(avahi-client/client.h)
6282     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6283         have_avahi_support=no
6284     fi
6286     save_LIBS="$LIBS"
6287     AC_CHECK_LIB(avahi-client, avahi_client_new,[have_avahi_client_new=yes])
6288     AC_CHECK_LIB(avahi-common, avahi_strerror,[have_avahi_strerror=yes])
6289     LIBS="$save_LIBS"
6291     if test x"$have_avahi_client_new" != x"yes" -o \
6292        x"$have_avahi_strerror" != x"yes" ; then
6293         have_avahi_support=no
6294     fi
6296     if test x"$have_avahi_support" = x"yes"; then
6297         AC_SUBST(AVAHI_LIBS, "-lavahi-client -lavahi-common")
6298         AC_DEFINE(WITH_AVAHI_SUPPORT, 1,
6299                 [Whether to enable avahi support])
6300         AC_SUBST(AVAHI_OBJ, "lib/avahi.o smbd/avahi_register.o")
6301     else
6302         if test x"$enable_avahi" = x"yes"; then
6303             AC_MSG_ERROR(avahi support not available)
6304         fi
6305     fi
6309 #################################################
6310 # Set pthread stuff
6312 PTHREAD_CFLAGS=error
6313 PTHREAD_LDFLAGS=error
6315 # If it's error, then the user didn't 
6316 # define it.
6317 if test "x$PTHREAD_LDFLAGS" = xerror; then
6318   AC_CHECK_LIB(pthread, pthread_attr_init, [
6319              PTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
6320              PTHREAD_LDFLAGS="-lpthread" ])
6323 if test "x$PTHREAD_LDFLAGS" = xerror; then
6324   AC_CHECK_LIB(pthreads, pthread_attr_init, [
6325              PTHREAD_CFLAGS="-D_THREAD_SAFE"
6326              PTHREAD_LDFLAGS="-lpthreads" ])
6329 if test "x$PTHREAD_LDFLAGS" = xerror; then
6330    AC_CHECK_LIB(c_r, pthread_attr_init, [
6331                 PTHREAD_CFLAGS="-D_THREAD_SAFE -pthread"
6332                 PTHREAD_LDFLAGS="-pthread" ])
6335 if test "x$PTHREAD_LDFLAGS" = xerror; then
6336    AC_CHECK_FUNC(pthread_attr_init, [
6337                  PTHREAD_CFLAGS="-D_REENTRANT"
6338                  PTHREAD_LDFLAGS="-lpthread" ])
6341 # especially for HP-UX, where the AC_CHECK_FUNC macro fails to test for
6342 # pthread_attr_init. On pthread_mutex_lock it works there...
6343 if test "x$PTHREAD_LDFLAGS" = xerror; then
6344    AC_CHECK_LIB(pthread, pthread_mutex_lock, [
6345                 PTHREAD_CFLAGS="-D_REENTRANT"
6346                 PTHREAD_LDFLAGS="-lpthread" ])
6349 AC_SUBST(PTHREAD_CFLAGS)
6350 AC_SUBST(PTHREAD_LDFLAGS)
6352 samba_cv_HAVE_PTHREAD=no
6353 if test x"$PTHREAD_CFLAGS" != xerror -a x"$PTHREAD_LDFLAGS" != xerror; then
6354         samba_cv_HAVE_PTHREAD=yes
6355         # now check for pthread.h with pthread-correct CFLAGS and LDFLAGS:
6356         ac_save_CFLAGS=$CFLAGS
6357         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6358         ac_save_LDFLAGS=$LDFLAGS
6359         LDFLAGS="$LDFLAGS $PTHREAD_LDFLAGS"
6360         AC_CHECK_HEADERS(pthread.h)
6361         CFLAGS=$ac_save_CFLAGS
6362         LDFLAGS=$ac_save_LDFLAGS
6363         AC_DEFINE(HAVE_PTHREAD, 1, [Do we have pthreads around?])
6366 #################################################
6367 # Check if user wants pthreadpool support
6369 AC_ARG_ENABLE(pthreadpool,
6370 [AS_HELP_STRING([--enable-pthreadpool], [Enable pthreads pool helper support (default=no)])])
6372 if test x"$enable_pthreadpool" = xyes -a x"$samba_cv_HAVE_PTHREAD" != x"yes"; then
6373         AC_MSG_ERROR([pthreadpool support cannot be enabled when pthread support was found])
6376 if test x"$enable_pthreadpool" = x"yes" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; then
6377     LIBS="$LIBS $PTHREAD_LDFLAGS"
6378     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
6379     AC_DEFINE(WITH_PTHREADPOOL, 1, [Whether to include pthreadpool helpers])
6380     AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool.o")
6383 #################################################
6384 # Check to see if we should use the included iniparser
6386 AC_ARG_WITH(included-iniparser,
6387 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6389   case "$withval" in
6390         yes)
6391                 INCLUDED_INIPARSER=yes
6392                 ;;
6393         no)
6394                 INCLUDED_INIPARSER=no
6395                 ;;
6396   esac ],
6398 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6399     AC_CHECK_LIB(iniparser, iniparser_load,
6400                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6403 AC_MSG_CHECKING(whether to use included iniparser)
6404 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6405     AC_MSG_RESULT(yes)
6406     BUILD_INIPARSER='$(INIPARSER_OBJ)'
6407         INIPARSERLIBS=""
6408     FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
6409 else
6410     AC_MSG_RESULT(no)
6411         BUILD_INIPARSER=""
6412     INIPARSERLIBS="-liniparser"
6414 AC_SUBST(BUILD_INIPARSER)
6415 AC_SUBST(INIPARSERLIBS)
6416 AC_SUBST(FLAGS1)
6420 # Checks for the vfs_fileid module
6421 # Start
6422 AC_CHECK_FUNC(getmntent)
6424 AC_CHECK_HEADERS(sys/statfs.h)
6426 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6427 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6428              AC_TRY_RUN([
6429                 #include <sys/types.h>
6430                 #include <sys/statfs.h>
6431                 int main(void)
6432                 {
6433                         struct statfs fsd;
6434                         fsid_t fsid = fsd.f_fsid;
6435                         return statfs (".", &fsd);
6436                 }],
6437                 vfsfileid_cv_statfs=yes,
6438                 vfsfileid_cv_statfs=no,
6439                 vfsfileid_cv_statfs=cross)
6441 AC_MSG_RESULT($vfsfileid_cv_statfs)
6443 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6444         x"$vfsfileid_cv_statfs" = x"yes"; then
6445         default_shared_modules="$default_shared_modules vfs_fileid"
6447 # End
6448 # Checks for the vfs_fileid module
6451 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6453         eval MODULE_DEFAULT_$i=STATIC
6454 done
6456 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6458         dnl Fall back to static if we cannot build shared libraries
6459         eval MODULE_DEFAULT_$i=STATIC
6461         if test $BLDSHARED = true; then
6462                 eval MODULE_DEFAULT_$i=SHARED
6463         fi
6464 done
6466 dnl Always build these modules static
6467 MODULE_rpc_spoolss=STATIC
6468 MODULE_rpc_srvsvc=STATIC
6469 MODULE_idmap_tdb=STATIC
6470 MODULE_idmap_passdb=STATIC
6471 MODULE_idmap_nss=STATIC
6473 MODULE_nss_info_template=STATIC
6475 AC_ARG_WITH(static-modules,
6476 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6477 [ if test $withval; then
6478         for i in `echo $withval | sed -e 's/,/ /g'`
6479         do
6480                 eval MODULE_$i=STATIC
6481         done
6482 fi ])
6484 AC_ARG_WITH(shared-modules,
6485 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6486 [ if test $withval; then
6487         for i in `echo $withval | sed -e 's/,/ /g'`
6488         do
6489                         eval MODULE_$i=SHARED
6490         done
6491 fi ])
6493 if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \
6494                 x"$MODULE_vfs_notify_fam" = xSTATIC ; then
6495         SMBD_FAM_LIBS="$SMB_FAM_LIBS"
6496         AC_SUBST(SMBD_FAM_LIBS)
6499 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6500                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6501 SMB_MODULE(pdb_ads, passdb/pdb_ads.o \$(TLDAP_OBJ), "bin/ads.$SHLIBEXT", PDB)
6502 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6503 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6504 SMB_MODULE(pdb_wbc_sam, passdb/pdb_wbc_sam.o, "bin/wbc_sam.$SHLIBEXT", PDB)
6505 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6508 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6509 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6510 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6511 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6512 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6513 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6514 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6515 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6516 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6517 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6518 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6519 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6520 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6521 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6522 SMB_SUBSYSTEM(RPC,smbd/server.o)
6524 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6525 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6526 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6527 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6528 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6529 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6530 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6531 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6532 SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
6533 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6535 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6536 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6538 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6539 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6540 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6541 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6542 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6544 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6545 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6546 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6547 SMB_MODULE(auth_wbc, \$(AUTH_WBC_OBJ), "bin/wbc.$SHLIBEXT", AUTH)
6548 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6549 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6550 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6551 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6552 SMB_MODULE(auth_netlogond, \$(AUTH_NETLOGOND_OBJ), "bin/netlogond.$SHLIBEXT", AUTH)
6553 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6555 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6556 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6557 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6558 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6559 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6560 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6561 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6562 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6563 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6564 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6565 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6566 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6567 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6568 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6569 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6570 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6571 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6572 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6573 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6574 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6575 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6576 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6577 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6578 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6579 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6580 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6581 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6582 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6583 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6584 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6585 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6586 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6587 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6588 SMB_MODULE(vfs_preopen, \$(VFS_PREOPEN_OBJ), "bin/preopen.$SHLIBEXT", VFS)
6589 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6590 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6591 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6592 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6593 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6594 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6595 SMB_MODULE(vfs_onefs, \$(VFS_ONEFS), "bin/onefs.$SHLIBEXT", VFS)
6596 SMB_MODULE(vfs_onefs_shadow_copy, \$(VFS_ONEFS_SHADOW_COPY), "bin/onefs_shadow_copy.$SHLIBEXT", VFS)
6597 SMB_MODULE(vfs_dirsort, \$(VFS_DIRSORT_OBJ), "bin/dirsort.$SHLIBEXT", VFS)
6598 SMB_MODULE(vfs_scannedonly, \$(VFS_SCANNEDONLY_OBJ), "bin/scannedonly.$SHLIBEXT", VFS)
6600 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6602 SMB_MODULE(perfcount_onefs, \$(PERFCOUNT_ONEFS), "bin/pc_onefs.$SHLIBEXT", PERFCOUNT)
6603 SMB_MODULE(perfcount_test, \$(PERFCOUNT_TEST), "bin/pc_test.$SHLIBEXT", PERFCOUNT)
6604 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6606 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6607 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6608 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6609 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6611 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6613 #################################################
6614 # do extra things if we are running insure
6616 if test "${ac_cv_prog_CC}" = "insure"; then
6617         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6620 #################################################
6621 # If run from the build farm, enable NASTY hacks
6622 #################################################
6623 AC_MSG_CHECKING(whether to enable build farm hacks)
6624 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6625         AC_MSG_RESULT(yes)
6626         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6627 else
6628         AC_MSG_RESULT(no)
6631 #################################################
6632 # check for bad librt/libpthread interactions
6634 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6635     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6636     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6637     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6639 SMB_IF_RTSIGNAL_BUG(
6640         [
6641             # Have RT_SIGNAL bug, need to check whether the problem will
6642             # affect anything we have configured.
6644             rt_do_error=no
6645             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6646                 if test x"$rt_signal_lease_ok" = x"no" ; then
6647                     rt_do_error=yes
6648                 fi
6649             fi
6651             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6652                 if test x"$rt_signal_notify_ok" = x"no" ; then
6653                     rt_do_error=yes
6654                 fi
6655             fi
6657             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6658                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6659                 if test x"$rt_signal_aio_ok" = x"no" ; then
6660                     rt_do_error=yes
6661                 fi
6662             fi
6664             if test x"$rt_do_error" = x"yes" ; then
6665                 SMB_IS_LIBPTHREAD_LINKED(
6666                     [
6667                         cat<<MSG
6669 *** On this platforms, linking Samba against pthreads causes problems
6670 *** with the oplock and change notification mechanisms. You may be
6671 *** using pthreads as a side-effect of using the --with-aio-support
6672 *** or --with-profiling-data options. Please remove these and try again.
6675                     ],
6676                     [
6677                         cat<<MSG
6679 *** On this platform, the oplock and change notification mechanisms do not
6680 *** appear to work. Please report this problem to samba-technical@samba.org
6681 *** and attach the config.log file from this directory.
6684                     ])
6685                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6686             fi
6687         ],
6688         [
6689             # no RT_SIGNAL bug, we are golden
6690             SMB_IS_LIBPTHREAD_LINKED(
6691                 [
6692                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6693                 ])
6695         ],
6696         [
6697             # cross compiling, I hope you know what you are doing
6698             true
6699         ])
6703 AC_ARG_ENABLE(merged-build, 
6704 [AS_HELP_STRING([--enable-merged-build], [Build Samba 4 as well])], 
6705 [ enable_merged_build=$enableval ], [ enable_merged_build=auto ])
6707 if test x"$enable_merged_build" = x"yes" -a \
6708         x"$merged_build_possible" = x"no" ; then
6709         AC_MSG_ERROR(Merged build required but not possible)
6712 m4_include(../lib/zlib/zlib.m4)
6714 if test x$enable_merged_build = xauto; then
6715         # Check for python
6716         m4_include(../m4/check_python.m4)
6717         AC_SAMBA_PYTHON_DEVEL([true], [merged_build_possible=no])
6719         AC_MSG_CHECKING([whether it would be possible to do a merged build])
6720         AC_MSG_RESULT([$merged_build_possible])
6722         # Enable merged build automatically if possible, when in developer mode
6723         # Don't enable  merged build automatically in 3.4.0.
6724         #if test "x$developer" = xyes; then
6725         #       enable_merged_build=$merged_build_possible
6726         #fi
6729 if test x$enable_merged_build = xyes; then
6730         MERGED_BUILD=1
6731         saved_USESHARED="$USESHARED"
6732         USESHARED="false"
6733         m4_include(samba4.m4)
6734         USESHARED="$saved_USESHARED"
6737 AC_SUBST(ZLIB_LIBS)
6738 AC_SUBST(ZLIB_OBJS)
6739 AC_ZLIB([ZLIB_OBJS=""], [
6740         ZLIB_LIBS=""
6741         for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6742                      deflate.o trees.o zutil.o inflate.o infback.o \
6743                          inftrees.o inffast.o
6744         do
6745                 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6746         done
6747         CFLAGS="-I../lib/zlib $CFLAGS"
6750 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
6752 if test "x$enable_dmalloc" = xyes
6753 then
6754         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
6755         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
6756                   [Define to check invariants around some common functions])
6757         LIBS="$LIBS -ldmalloc"
6760 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6761 LIB_REMOVE_USR_LIB(LDFLAGS)
6762 LIB_REMOVE_USR_LIB(LIBS)
6764 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6765 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6766 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6768 #################################################
6769 # Display summary of libraries detected
6771 AC_MSG_RESULT([Using libraries:])
6772 AC_MSG_RESULT([    LIBS = $LIBS])
6773 if test x"$with_ads_support" != x"no"; then
6774     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6776 if test x"$with_ldap_support" != x"no"; then
6777     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6779 if test x"$with_dnsupdate_support" != x"no"; then
6780     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6782 if test x"$have_dnssd_support" != x"no"; then
6783     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6785 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6787 #################################################
6788 # final configure stuff
6790 AC_MSG_CHECKING([configure summary])
6791 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
6792            AC_MSG_RESULT(yes),
6793            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6794            AC_MSG_WARN([cannot run when cross-compiling]))
6796 dnl Merge in developer cflags from now on
6797 AC_SUBST(DEVELOPER_CFLAGS)
6798 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6799     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6802 # Stuff the smbd-only libraries at the end of the smbd link
6803 # path (if we have them).
6804 SMBD_LIBS="$samba_dmapi_libs"
6805 AC_SUBST(SMBD_LIBS)
6807 CFLAGS="${CFLAGS} \$(FLAGS)"
6809 if test x$MERGED_BUILD != x1; then
6810         CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6811 else
6812         if test x"$BLDSHARED" = x"true" ; then
6813                 LDFLAGS="$LDFLAGS -L./bin"
6814         fi
6817 AC_SUBST(MAKEFILE)
6818 if test x$samba_cv_gnu_make = xyes; then
6819         MAKEFILE=Makefile
6820 else
6821         # When we don't have GNU Make, generate a copy of Makefile.in 
6822         # that doesn't have the "include " statements but just includes 
6823         # the files verbatim.
6824         MAKEFILE=Makefile-noincludes
6825         $PERL ./script/expand-includes.pl Makefile.in > $MAKEFILE.in
6827 AC_OUTPUT($MAKEFILE
6828           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6829           lib/netapi/examples/Makefile
6830           lib/netapi/tests/Makefile
6831           pkgconfig/smbclient.pc
6832           pkgconfig/wbclient.pc
6833           pkgconfig/netapi.pc
6834           pkgconfig/smbsharemodes.pc
6835           ../examples/libsmbclient/Makefile.internal
6836           )
6837 dnl If we had to expand the includes, make tsure the output file is moved back
6838 AC_OUTPUT_COMMANDS([
6839 if test x$MAKEFILE != Makefile; then
6840         mv $MAKEFILE Makefile
6844 #################################################
6845 # Print very concise instructions on building/use
6846 if test "x$enable_dmalloc" = xyes
6847 then
6848         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6849         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])