async_req: Move to top level dir
[Samba/gebeck_regimport.git] / source3 / configure.in
blob88843a49c44df07b5a14699927e13382df75266e
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)
24 AC_LIBREPLACE_CC_CHECKS
26 m4_include(../lib/talloc/libtalloc.m4)
28 LIBTALLOC_OBJ0=""
29 for obj in ${TALLOC_OBJ}; do
30         LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
31 done
32 AC_SUBST(LIBTALLOC_OBJ0)
34 m4_include(../lib/tevent/libtevent.m4)
36 LIBTEVENT_OBJ0=""
37 for obj in ${TEVENT_OBJ}; do
38         LIBTEVENT_OBJ0="${LIBTEVENT_OBJ0} ${teventdir}/${obj}"
39 done
40 AC_SUBST(LIBTEVENT_OBJ0)
41 LIBS="${LIBS} ${TEVENT_LIBS}"
43 # TODO: These should come from m4_include(lib/tdb/libtdb.m4)
44 # but currently this fails: things have to get merged from s4.
45 tdbdir="../lib/tdb"
46 AC_SUBST(tdbdir)
47 TDB_CFLAGS="-I${srcdir-.}/$tdbdir/include"
48 AC_SUBST(TDB_CFLAGS)
50 LIBTDB_OBJ0=""
51 for o in common/tdb.o common/dump.o common/transaction.o common/error.o \
52              common/traverse.o common/freelist.o common/freelistcheck.o \
53                  common/io.o common/lock.o common/open.o; 
54 do 
55         LIBTDB_OBJ0="$LIBTDB_OBJ0 $tdbdir/$o"
56 done
58 AC_SUBST(LIBTDB_OBJ0)
59 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include  -I. -I${srcdir-.}"
60 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace"
61 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
62 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TEVENT_CFLAGS}"
63 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
64 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
65 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
66 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/async_req"
68 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt"
70 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
71 if test "x${srcdir-.}" != "x."; then
72         SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
75 dnl Unique-to-Samba variables we'll be playing with.
76 AC_SUBST(SAMBA_CPPFLAGS)
77 AC_SUBST(SHELL)
78 AC_SUBST(LDSHFLAGS)
79 AC_SUBST(SONAMEFLAG)
80 AC_SUBST(SHLD)
81 AC_SUBST(MODULE_EXPORTS)
82 AC_SUBST(DSO_EXPORTS)
83 AC_SUBST(HOST_OS)
84 AC_SUBST(PICFLAG)
85 AC_SUBST(PIE_CFLAGS)
86 AC_SUBST(PIE_LDFLAGS)
87 AC_SUBST(RELRO_LDFLAGS)
88 AC_SUBST(SHLIBEXT)
89 AC_SUBST(INSTALLLIBCMD_SH)
90 AC_SUBST(INSTALLLIBCMD_A)
91 AC_SUBST(UNINSTALLLIBCMD_SH)
92 AC_SUBST(UNINSTALLLIBCMD_A)
94 AC_SUBST(INSTALL_LIBWBCLIENT)
95 AC_SUBST(UNINSTALL_LIBWBCLIENT)
96 AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
97 AC_SUBST(LIBWBCLIENT_SHARED)
98 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
99 AC_SUBST(LIBWBCLIENT_STATIC)
100 AC_SUBST(LIBWBCLIENT_SOVER)
101 AC_SUBST(LIBWBCLIENT)
102 AC_SUBST(WINBIND_LIBS)
104 AC_SUBST(LIBSAMBAUTIL_SHARED)
106 AC_SUBST(PRINT_LIBS)
107 AC_SUBST(AUTH_LIBS)
108 AC_SUBST(ACL_LIBS)
109 AC_SUBST(PASSDB_LIBS)
110 AC_SUBST(IDMAP_LIBS)
111 AC_SUBST(KRB5_LIBS)
112 AC_SUBST(UUID_LIBS)
113 AC_SUBST(LDAP_LIBS)
114 AC_SUBST(GPEXT_LIBS)
115 AC_SUBST(PAM_MODULES)
116 AC_SUBST(INSTALL_PAM_MODULES)
117 AC_SUBST(UNINSTALL_PAM_MODULES)
118 AC_SUBST(NSS_MODULES)
119 AC_SUBST(EXTRA_BIN_PROGS)
120 AC_SUBST(CIFSMOUNT_PROGS)
121 AC_SUBST(INSTALL_CIFSMOUNT)
122 AC_SUBST(UNINSTALL_CIFSMOUNT)
123 AC_SUBST(CIFSUPCALL_PROGS)
124 AC_SUBST(INSTALL_CIFSUPCALL)
125 AC_SUBST(UNINSTALL_CIFSUPCALL)
126 AC_SUBST(EXTRA_SBIN_PROGS)
127 AC_SUBST(EXTRA_ALL_TARGETS)
128 AC_SUBST(CONFIG_LIBS)
129 AC_SUBST(NSCD_LIBS)
131 # compile with optimization and without debugging by default, but
132 # allow people to set their own preference.
133 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
134 # if it has no value.  This prevent *very* large debug binaries from occurring
135 # by default.
136 if test "x$CFLAGS" = x; then
137   CFLAGS="-O"
139 if test "x$debug" = "xyes" ; then
140         CFLAGS="${CFLAGS} -g"
141 else
142         CFLAGS="${CFLAGS} -O"
145 m4_include(../lib/socket_wrapper/config.m4)
146 m4_include(../lib/nss_wrapper/config.m4)
148 m4_include(m4/swat.m4)
150 # Probe the gcc version for extra CFLAGS. We always stash these in
151 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
152 # Makefile edit, avoiding the need to re-run configure.
153 if test x"$ac_cv_prog_gcc" = x"yes" ; then
154         DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
155         # Add -Wdeclaration-after-statement if compiler supports it
156         AC_CACHE_CHECK(
157           [that the C compiler understands -Wdeclaration-after-statement],
158           samba_cv_HAVE_Wdeclaration_after_statement, [
159           AC_TRY_RUN_STRICT([
160             int main(void)
161             {
162                 return 0;
163             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
164             samba_cv_HAVE_Wdeclaration_after_statement=yes,
165             samba_cv_HAVE_Wdeclaration_after_statement=no,
166             samba_cv_HAVE_Wdeclaration_after_statement=cross)
167        ])
169         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
170             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
171         fi
173         #-Werror-implicit-function-declaration
174         AC_CACHE_CHECK(
175           [that the C compiler understands -Werror-implicit-function-declaration],
176           samba_cv_HAVE_Werror_implicit_function_declaration, [
177           AC_TRY_RUN_STRICT([
178             int main(void)
179             {
180                 return 0;
181             }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
182             samba_cv_HAVE_Werror_implicit_function_declaration=yes,
183             samba_cv_HAVE_Werror_implicit_function_declaration=no,
184             samba_cv_HAVE_Werror_implicit_function_declaration=cross)
185        ])
186        if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
187             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
188        fi
190         # krb5developer is like developer, except we don't get
191         # -Wstrict-prototypes.
192        if test x"$krb5_developer" != x"$yes" ; then
193             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
194        fi
196        if test x"$picky_developer" = x"yes"; then
197             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
198        fi
201 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
203 if test "x$enable_dmalloc" = xyes
204 then
205         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
206         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
207                   [Define to check invariants around some common functions])
208         LIBS="$LIBS -ldmalloc"  
211 #################################################
212 # check for a shared memory profiling support
213 AC_MSG_CHECKING(whether to use profiling)
214 AC_ARG_WITH(profiling-data,
215 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
216 [ case "$withval" in
217   yes)
218     AC_MSG_RESULT(yes)
219     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
220     samba_cv_WITH_PROFILE=yes
221     ;;
222   *)
223     AC_MSG_RESULT(no)
224     samba_cv_WITH_PROFILE=no
225     ;;
226   esac ],
227   AC_MSG_RESULT(no)
230 dnl Checks for programs.
231 merged_build_possible=yes
233 AC_PROG_INSTALL
234 AC_PROG_AWK
235 # Check for GNU make
236 m4_include(../m4/check_make.m4)
237 AC_SAMBA_GNU_MAKE([true], [merged_build_possible=no])
239 # Check for perl
240 m4_include(../m4/check_perl.m4)
241 AC_SAMBA_PERL([true], [merged_build_possible=no])
243 AC_CHECK_TOOL(AR, ar)
245 dnl Check if we use GNU ld
246 LD=ld
247 AC_PROG_LD_GNU
249 dnl Certain versions of GNU ld the default is not to have the
250 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
251 dnl warnings when building modules.
252 if test "$ac_cv_prog_gnu_ld" = "yes"; then
253         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
254         AC_MSG_CHECKING(GNU ld release date)
255         changequote(,)dnl
256         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'`
257         changequote([,])dnl
258         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
259         if test -n "$ac_cv_gnu_ld_date"; then
260         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
261                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
262         fi
263         if test "$ac_cv_gnu_ld_date" -gt 20030101; then
264                 ac_cv_gnu_ld_version_script=yes
265         fi
266         else
267            AC_MSG_CHECKING(GNU ld release version)
268            changequote(,)dnl
269            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
270            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
271            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
272            changequote([,])dnl
273            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
274            AC_MSG_CHECKING(GNU ld release version major)
275            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
276            AC_MSG_CHECKING(GNU ld release version minor)
277            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
278            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
279              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
280            fi
281            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
282              ac_cv_gnu_ld_version_script=yes
283            fi
284         fi
287 dnl look for executable suffix
288 AC_EXEEXT
290 dnl Check if C compiler understands -c and -o at the same time
291 AC_PROG_CC_C_O
292 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
293       BROKEN_CC=
294 else
295       BROKEN_CC=#
297 AC_SUBST(BROKEN_CC)
299 dnl Check if the C compiler understands -Werror
300 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
301  AC_TRY_RUN_STRICT([
302   int main(void)
303   {
304         return 0;
305   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
306   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
307 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
308    Werror_FLAGS="-Werror"
309 else
310 dnl Check if the C compiler understands -w2
311 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
312  AC_TRY_RUN_STRICT([
313   int main(void)
314   {
315         return 0;
316   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
317   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
318 if test x"$samba_cv_HAVE_w2" = x"yes"; then
319    Werror_FLAGS="-w2"
320 else
321 dnl Check if the C compiler understands -errwarn
322 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
323   AC_TRY_RUN_STRICT([
324    int main(void)
325    {
326         return 0;
327    }],[-errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
328    samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
329 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
330    Werror_FLAGS="-errwarn=%all"
335 ############################################
336 # check if the compiler can handle negative enum values
337 # and don't truncate the values to INT_MAX
338 # a runtime test is needed here
339 AC_SUBST(PIDL_ARGS)
340 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
341     AC_TRY_RUN(
343         #include <stdio.h>
344         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
345         int main(void) {
346                 enum negative_values v1 = NEGATIVE_VALUE;
347                 unsigned v2 = NEGATIVE_VALUE;
349                 if (v1 != 0xFFFFFFFF) {
350                         printf("%u != 0xFFFFFFFF\n", v1);
351                         return 1;
352                 }
353                 if (v2 != 0xFFFFFFFF) {
354                         printf("%u != 0xFFFFFFFF\n", v2);
355                         return 1;
356                 }
358                 return 0;
359         }
361         samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv__CC_NEGATIVE_ENUM_VALUES=no)])
362 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
363         AC_MSG_WARN([using --uint-enums for pidl])
364         PIDL_ARGS="$PIDL_ARGS --uint-enums"
367 dnl Figure out the flags to support named structure initializers
369 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
371 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
372 AC_MSG_CHECKING(uname -s)
373 AC_MSG_RESULT(${UNAME_S})
375 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
376 AC_MSG_CHECKING(uname -r)
377 AC_MSG_RESULT(${UNAME_R})
379 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
380 AC_MSG_CHECKING(uname -m)
381 AC_MSG_RESULT(${UNAME_M})
383 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
384 AC_MSG_CHECKING(uname -p)
385 AC_MSG_RESULT(${UNAME_P})
387 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
388 AC_MSG_CHECKING(uname -i)
389 AC_MSG_RESULT(${UNAME_I})
391 dnl Add #include for broken IRIX header files
392   case "$host_os" in
393         *irix6*)
394                 #TODO add to libreplace
395                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
396                         dnl Fix sensible defaults for MIPSPro compilers. The
397                         dnl error numbers are valid for the 7.3 compilers,
398                         dnl hopefully also valid for the 7.4 series.
399                         dnl
400                         dnl Bugzilla 3801. Force an error on warning 1035
401                         dnl so we don't incorrectly detect stdint.h. This
402                         dnl warning is emitted for #error directives.
403                         CFLAGS="$CFLAGS -diag_error 1035"
404                         dnl 1209: Controlling expression is constant
405                         dnl 1174: Function foo declared but never referenced
406                         dnl 3201: Parameter foo was never referenced
407                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
408                 fi
409         ;;
410 esac
412 DYNEXP=
413 AC_SUBST(DYNEXP)
415 dnl Add modules that have to be built by default here
416 dnl These have to be built static:
417 default_static_modules="pdb_smbpasswd pdb_tdbsam 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_eventlog2 auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin auth_netlogond vfs_default nss_info_template"
419 dnl These are preferably build shared, and static if dlopen() is not available
420 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"
422 if test "x$developer" = xyes; then
423    default_static_modules="$default_static_modules rpc_rpcecho"
424    default_shared_modules="$default_shared_modules charset_weird"
428 # Config CPPFLAG settings for strange OS's that must be set
429 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
430 # case statement; its first reference must be unconditional.
432 case "$host_os" in
433     *hpux*)
435 # Defines needed for HPUX support.
436 # HPUX has bigcrypt but (sometimes?) doesn't use it for
437 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
439       case `uname -r` in
440                 *9*|*10*|*11)
441                         AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
442                 ;;
443       esac
444       ;;
447 # CRAY Unicos has broken const handling
448        *unicos*)
449           AC_MSG_RESULT([disabling const])
450           CPPFLAGS="$CPPFLAGS -Dconst="
451           ;;
452         
454 # AIX4.x doesn't even admit to having large
455 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
457     *aix4*)
458           AC_MSG_RESULT([enabling large file support])
459       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
460           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
461       ;;
463 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
464 # to the existance of large files..
465 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
466 # recommendations on large file support, however it makes the
467 # compile work using gcc 2.7 and 2.8, whereas using the Sun
468 # recommendation makes the compile fail on gcc2.7. JRA.
470 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
472         *solaris*)
473                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
474                 case `uname -r` in
475                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
476                                 AC_MSG_RESULT([no large file support])
477                                 ;;
478                         5.*)
479                         AC_MSG_RESULT([enabling large file support])
480                         if test "$ac_cv_prog_gcc" = yes; then
481                                 ${CC-cc} -v >conftest.c 2>&1
482                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
483                                 rm -fr conftest.c
484                                 case "$ac_cv_gcc_compiler_version_number" in
485                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
486                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
487                                                 LDFLAGS="$LDFLAGS -lthread"
488                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
489                                                 ;;
490                                         *)
491                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
492                                                 LDFLAGS="$LDFLAGS -lthread"
493                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
494                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
495                                                 ;;
496                                 esac
497                         else
498                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
499                                 LDFLAGS="$LDFLAGS -lthread"
500                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
501                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
502                         fi
503                         ;;
504                 esac
505                 ;;
507 # IRIX uses SYSV printing.  Make sure to set that here
509         *irix*)
510                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
511                 ;;
512         *freebsd*|*dragonfly*)
513                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
514                 ;;
516 # VOS may need to have POSIX support and System V compatibility enabled.
518     *vos*)
519     case "$CPPFLAGS" in
520           *-D_POSIX_C_SOURCE*)
521                 ;;
522           *)
523                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
524                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
525                 ;;
526     esac
527     case "$CPPFLAGS" in
528           *-D_SYSV*|*-D_SVID_SOURCE*)
529                 ;;
530           *)
531                 CPPFLAGS="$CPPFLAGS -D_SYSV"
532                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
533     esac
534     ;;
536 # Tests needed for SINIX large file support.
538     *sysv4*)
539       if test $host = mips-sni-sysv4 ; then
540         AC_MSG_CHECKING([for LFS support])
541         old_CPPFLAGS="$CPPFLAGS"
542         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
543         AC_TRY_RUN([
544 #include <unistd.h>
545 main () {
546 #if _LFS64_LARGEFILE == 1
547 exit(0);
548 #else
549 exit(1);
550 #endif
551 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
552         CPPFLAGS="$old_CPPFLAGS"
553         if test x$SINIX_LFS_SUPPORT = xyes ; then
554           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
555                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
556           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
557           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
558           LIBS="`getconf LFS64_LIBS` $LIBS"
559         fi
560       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
561       fi
562     ;;
564 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
566     *linux*)
567         AC_MSG_CHECKING([for LFS support])
568         old_CPPFLAGS="$CPPFLAGS"
569         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
570        AC_TRY_RUN([
571 #include <unistd.h>
572 #include <sys/utsname.h>
573 #include <string.h>
574 #include <stdlib.h>
575 main() {
576 #if _LFS64_LARGEFILE == 1
577        struct utsname uts;
578        char *release;
579        int major, minor;
581        /* Ensure this is glibc 2.2 or higher */
582 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
583        int libc_major = __GLIBC__;
584        int libc_minor = __GLIBC_MINOR__;
586        if (libc_major < 2)
587               exit(1);
588        if (libc_minor < 2)
589               exit(1);
590 #endif
592        /* Ensure this is kernel 2.4 or higher */
594        uname(&uts);
595        release = strdup(uts.release);
596        major = atoi(strsep(&release, "."));
597        minor = atoi(strsep(&release, "."));
599        if (major > 2 || (major == 2 && minor > 3))
600                exit(0);
601        exit(1);
602 #else
603        exit(1);
604 #endif
606 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
607         CPPFLAGS="$old_CPPFLAGS"
608         if test x$LINUX_LFS_SUPPORT = xyes ; then
609                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
610                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
611                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
612                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
613         fi
614         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
615         ;;
618 # MacOS X is the *only* system that uses compose character in utf8. This
619 # is so horribly broken....
621     *darwin*)
622         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
624 # Add a system specific charset module.
625         default_shared_modules="$default_shared_modules charset_macosxfs"
627         ;;
628     *hurd*)
629         AC_MSG_CHECKING([for LFS support])
630         old_CPPFLAGS="$CPPFLAGS"
631         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
632         AC_TRY_RUN([
633 #include <unistd.h>
634 main () {
635 #if _LFS64_LARGEFILE == 1
636 exit(0);
637 #else
638 exit(1);
639 #endif
640 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
641         CPPFLAGS="$old_CPPFLAGS"
642         if test x$GLIBC_LFS_SUPPORT = xyes ; then
643           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
644                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
645           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
646         fi
647       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
648     ;;
650 esac
652 SAVE_CPPFLAGS="${CPPFLAGS}"
653 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
655 AC_LIBREPLACE_BROKEN_CHECKS
656 AC_LIBREPLACE_NETWORK_CHECKS
658 CPPFLAGS="${SAVE_CPPFLAGS}"
660 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
662 LIBREPLACE_OBJS=""
663 for obj in ${LIBREPLACEOBJ}; do
664         LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
665 done
666 AC_SUBST(LIBREPLACE_OBJS)
668 # add -ldl to the global LIBS
669 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
670 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
673 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
674 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
675 AC_CHECK_HEADERS(limits.h float.h pthread.h libintl.h)
676 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
677 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
678 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
679 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
680 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
681 AC_CHECK_HEADERS(sys/sysmacros.h)
682 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
683 AC_CHECK_HEADERS(langinfo.h locale.h)
684 AC_CHECK_HEADERS(xfs/libxfs.h)
685 AC_CHECK_HEADERS(netgroup.h)
687 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
688 #if HAVE_RPC_RPC_H
689 #include <rpc/rpc.h>
690 #endif
693 ## These fail to compile on IRIX so just check for their presence
694 AC_CHECK_HEADERS(sys/mode.h,,,)
696 # Look for Darwin headers
697 old_CPPFLAGS="$CPPFLAGS"
698 CPPFLAGS="-Iinclude $CPPFLAGS"
699 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
700 CPPFLAGS="$old_CPPFLAGS"
702 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
703 # subdirectory of headers.
704 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
706 # check for linux on amd64 since valgrind is not quite there yet
707 case "$host_os" in
708         *linux*)
709                 case "$UNAME_P" in
710                         *x86_64*)
711                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
712                                 ;;
713                 esac
714                 ;;
715 esac
719 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
720 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
722 case "$host_os" in
723     *hpux*)
724                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
725                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
726                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
727                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
728                 fi
729         ;;
730 esac
731 AC_CHECK_HEADERS(shadow.h)
732 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
733 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
735 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
736 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
738 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
740 # For experimental utmp support (lastlog on some BSD-like systems)
741 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
743 AC_CHECK_SIZEOF(int,cross)
744 AC_CHECK_SIZEOF(long,cross)
745 AC_CHECK_SIZEOF(long long,cross)
746 AC_CHECK_SIZEOF(short,cross)
748 AC_C_CONST
749 AC_C_INLINE
750 AC_C_BIGENDIAN
751 AC_C_CHAR_UNSIGNED
753 AC_TYPE_SIGNAL
754 AC_TYPE_UID_T
755 AC_TYPE_MODE_T
756 AC_TYPE_OFF_T
757 AC_TYPE_SIZE_T
758 AC_TYPE_PID_T
759 AC_STRUCT_ST_RDEV
760 AC_DIRENT_D_OFF
761 AC_CHECK_TYPE(ssize_t, int)
762 AC_CHECK_TYPE(wchar_t, unsigned short)
764 ############################################
765 # for cups support we need libcups, and a handful of header files
767 AC_ARG_ENABLE(cups,
768 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
770 if test x$enable_cups != xno; then
771         AC_PATH_PROG(CUPS_CONFIG, cups-config)
773         if test "x$CUPS_CONFIG" != x; then
775                 ac_save_CFLAGS=$CFLAGS
776                 ac_save_LDFLAGS=$LDFLAGS
777                 ac_save_PRINT_LIBS=$PRINT_LIBS
778                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
779                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
780                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
781                 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
782                 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
783                         x"$ac_cv_header_cups_language_h" = xyes; then
784                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
785                         samba_cv_HAVE_CUPS=yes
786                 else
787                         AC_MSG_WARN([cups-config around but cups-devel not installed])
788                         CFLAGS=$ac_save_CFLAGS
789                         LDFLAGS=$ac_save_LDFLAGS
790                         PRINT_LIBS=$ac_save_PRINT_LIBS
791                 fi
793         elif test x"$enable_cups" = x"yes"; then
794                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
795         fi
798 AC_ARG_ENABLE(iprint,
799 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
801 if test x$enable_iprint != xno; then
802         if test x"$samba_cv_HAVE_CUPS" = xyes; then
803                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
804         elif test x"$enable_iprint" = x"yes"; then
805                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
806         fi
809 ############################################
810 # check if the compiler will optimize out function calls
811 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
812     AC_TRY_LINK([
813 #include <stdio.h>],
815                 if (0) {
816                    this_function_does_not_exist();
817                 } else {
818                   return 1;
819                 }
822         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
823 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
824    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
827 #############################################
828 # check for fd passing struct via msg_control
829 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
830     AC_TRY_COMPILE([
831 #include <sys/types.h>
832 #include <stdlib.h>
833 #include <stddef.h>
834 #include <sys/socket.h>
835 #include <sys/un.h>],
837         struct msghdr msg;
838         union {
839               struct cmsghdr cm;
840               char control[CMSG_SPACE(sizeof(int))];
841         } control_un;
842         msg.msg_control = control_un.control;
843         msg.msg_controllen = sizeof(control_un.control);
845         samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
846 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
847    AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
848              [If we can use msg_control for passing file descriptors])
851 #############################################
852 # check for fd passing struct via msg_acctrights
853 AC_CACHE_CHECK([for fd passing via msg_acctrights],
854                 samba_cv_msghdr_msg_acctrights, [
855     AC_TRY_COMPILE([
856 #include <sys/types.h>
857 #include <stdlib.h>
858 #include <stddef.h>
859 #include <sys/socket.h>
860 #include <sys/un.h>],
862         struct msghdr msg;
863         int fd;
864         msg.msg_acctrights = (caddr_t) &fd;
865         msg.msg_acctrightslen = sizeof(fd);
867         samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
868 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
869    AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
870              [If we can use msg_acctrights for passing file descriptors])
873 AC_CHECK_FUNCS(dirfd)
874 if test x"$ac_cv_func_dirfd" = x"yes"; then
875         default_shared_modules="$default_shared_modules vfs_syncops"
878 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
879     AC_TRY_COMPILE([
880 #include <sys/types.h>
881 #if STDC_HEADERS
882 #include <stdlib.h>
883 #include <stddef.h>
884 #endif
885 #include <signal.h>],[struct sigevent s;],
886         samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
887 if test x"$samba_cv_struct_sigevent" = x"yes"; then
888    AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
889    AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
890         [#include <signal.h>])
893 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
894     AC_TRY_COMPILE([
895 #include <sys/types.h>
896 #if STDC_HEADERS
897 #include <stdlib.h>
898 #include <stddef.h>
899 #endif
900 #if TIME_WITH_SYS_TIME
901 # include <sys/time.h>
902 # include <time.h>
903 #else
904 # if HAVE_SYS_TIME_H
905 #  include <sys/time.h>
906 # else
907 #  include <time.h>
908 # endif
909 #endif
910 ],[struct timespec ts;],
911         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
912 if test x"$samba_cv_struct_timespec" = x"yes"; then
913    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
916 # and glibc has setresuid under linux but the function does
917 # nothing until kernel 2.1.44! very dumb.
918 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
919     AC_TRY_RUN([#include <errno.h>
920 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
921         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
922 if test x"$samba_cv_have_setresuid" = x"yes"; then
923     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
926 # Do the same check for setresguid...
928 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
929     AC_TRY_RUN([#include <unistd.h>
930 #include <errno.h>
931 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
932         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
933 if test x"$samba_cv_have_setresgid" = x"yes"; then
934     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
937 AC_FUNC_MEMCMP
939 ###############################################
940 # Readline included by default unless explicitly asked not to
941 test "${with_readline+set}" != "set" && with_readline=yes
943 # test for where we get readline() from
944 AC_MSG_CHECKING(whether to use readline)
945 AC_ARG_WITH(readline,
946 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
947 [  case "$with_readline" in
948   yes)
949     AC_MSG_RESULT(yes)
951     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
952     AC_CHECK_HEADERS(readline/history.h)
954     AC_CHECK_HEADERS(readline.h readline/readline.h,[
955       for termlib in ncurses curses termcap terminfo termlib tinfo; do
956        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
957       done
958       AC_CHECK_LIB(readline, rl_callback_handler_install,
959        [TERMLIBS="-lreadline $TERMLIBS"
960        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
961        break], [TERMLIBS=], $TERMLIBS)])
962     ;;
963   no)
964     AC_MSG_RESULT(no)
965     ;;
966   *)
967     AC_MSG_RESULT(yes)
969     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
970     # alternate readline path
971     _ldflags=${LDFLAGS}
972     _cppflags=${CPPFLAGS}
974     # Add additional search path
975     LDFLAGS="-L$with_readline/lib $LDFLAGS"
976     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
978     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
979     AC_CHECK_HEADERS(readline/history.h)
981     AC_CHECK_HEADERS(readline.h readline/readline.h,[
982       for termlib in ncurses curses termcap terminfo termlib; do
983        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
984       done
985       AC_CHECK_LIB(readline, rl_callback_handler_install,
986        [TERMLDFLAGS="-L$with_readline/lib"
987        TERMCPPFLAGS="-I$with_readline/include"
988        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
989        TERMLIBS="-lreadline $TERMLIBS"
990        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
991        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
993     LDFLAGS=$_ldflags
994     ;;
995   esac],
996   AC_MSG_RESULT(no)
998 AC_SUBST(TERMLIBS)
999 AC_SUBST(TERMLDFLAGS)
1001 # The readline API changed slightly from readline3 to readline4, so
1002 # code will generate warnings on one of them unless we have a few
1003 # special cases.
1004 AC_CHECK_LIB(readline, rl_completion_matches,
1005              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1006                         [Do we have rl_completion_matches?])],
1007              [],
1008              [$TERMLIBS])
1010 # not all readline libs have rl_event_hook or history_list
1011 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1012 AC_CHECK_LIB(readline, history_list,
1013              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1014              [],
1015              [$TERMLIBS])
1017 ###############################################
1018 # test for where we get yp_get_default_domain() from
1019 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1020 AC_CHECK_FUNCS(yp_get_default_domain)
1022 # Check if we have execl, if not we need to compile smbrun.
1023 AC_CHECK_FUNCS(execl)
1024 if test x"$ac_cv_func_execl" = x"no"; then
1025     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1028 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
1029 AC_CHECK_FUNCS(strtol)
1030 AC_CHECK_FUNCS(fstat strchr chflags)
1031 AC_CHECK_FUNCS(getrlimit fsync fdatasync setpgid)
1032 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
1033 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1034 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
1035 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
1036 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64)
1037 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
1038 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1039 AC_CHECK_FUNCS(getpwent_r)
1040 AC_CHECK_FUNCS(getdents64)
1041 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
1042 AC_CHECK_FUNCS(syslog vsyslog timegm)
1043 AC_CHECK_FUNCS(setlocale nl_langinfo)
1044 AC_CHECK_FUNCS(nanosleep)
1045 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1046 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1047 AC_CHECK_HEADERS(sys/mman.h)
1048 # setbuffer, shmget, shm_open are needed for smbtorture
1049 AC_CHECK_FUNCS(shmget shm_open)
1050 AC_CHECK_FUNCS(gettext dgettext)
1052 # Find a method of generating a stack trace
1053 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1054 # libexecinfo provides backtrace_symbols on FreeBSD
1055 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1056 AC_CHECK_FUNCS(backtrace_symbols)
1057 AC_CHECK_LIB(exc, trace_back_stack)
1059 printf "%s" "checking for GPFS GPL libs... "
1060 save_LIBS="$LIBS"
1061 LIBS="$LIBS -lgpfs_gpl"
1062 AC_TRY_LINK([#include <gpfs_gpl.h>],
1063           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1064           samba_cv_HAVE_GPFS=yes,
1065           samba_cv_HAVE_GPFS=no)
1066 echo $samba_cv_HAVE_GPFS
1067 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1068     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1069     default_shared_modules="$default_shared_modules vfs_gpfs"
1071 LIBS="$save_LIBS"
1073 printf "%s" "checking for GPFS libs (with 3.2.1 PTF8 available as GPL)... "
1074 save_LIBS="$LIBS"
1075 LIBS="$LIBS -lgpfs"
1076 AC_TRY_LINK([#include <gpfs.h>],
1077           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1078           samba_cv_HAVE_GPFS=yes,
1079           samba_cv_HAVE_GPFS=no)
1080 echo $samba_cv_HAVE_GPFS
1081 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1082     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1083     default_shared_modules="$default_shared_modules vfs_gpfs"
1085 LIBS="$save_LIBS"
1087 #############################################
1088 # check if building on Isilon OneFS
1089 printf "%s" "checking for Isilon OneFS... "
1090 save_LIBS="$LIBS"
1091 LIBS="$LIBS -lisi_version"
1092 AC_TRY_LINK([#include <isi_version/isi_version.h>],
1093           [get_isilon_copyright()],
1094           samba_cv_HAVE_ONEFS=yes,
1095           samba_cv_HAVE_ONEFS=no)
1096 echo $samba_cv_HAVE_ONEFS
1097 if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then
1098     AC_DEFINE(HAVE_ONEFS,1,[Whether building on Isilon OneFS])
1099     default_shared_modules="$default_shared_modules vfs_onefs"
1100     ONEFS_LIBS="-lisi_acl"
1102 AC_SUBST(ONEFS_LIBS)
1103 LIBS="$save_LIBS"
1105 # Note that all the libunwind symbols in the API are defined to internal
1106 # platform-specific version, so we must include libunwind.h before checking
1107 # any of them.
1108 AC_MSG_CHECKING([for libunwind])
1109 save_LIBS=$LIBS
1111 UNWIND_ARCH="unknown"
1112 if test x"$UNAME_I" != x"unknown"; then
1113         UNWIND_ARCH="$UNAME_I"
1114 elif test x"$UNAME_M" != x"unknown"; then
1115         UNWIND_ARCH="$UNAME_M"
1116 elif test x"$UNAME_P" != x"unknown"; then
1117         UNWIND_ARCH="$UNAME_P"
1120 case "$UNWIND_ARCH" in
1121         unknown)
1122                 # This probably won't link without
1123                 # the platform-specific libunwind.
1124                 LIBS="$LIBS -lunwind"
1125                 ;;
1126         i386|i586|i686)
1127                 # Add the platform-specific libunwind module.
1128                 LIBS="$LIBS -lunwind -lunwind-x86"
1129                 ;;
1130         *)
1131                 # Add the platform-specific libunwind module.
1132                 # based on uname -i, uname -m or uname -p
1133                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1134                 ;;
1135 esac
1137 AC_TRY_LINK(
1138     [
1139 #ifdef HAVE_LIBUNWIND_H
1140 #include <libunwind.h>
1141 #endif
1142     ],
1143     [
1144         unw_context_t ctx; unw_cursor_t cur;
1145         char buf[256]; unw_word_t off;
1146         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1147         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1148     ],
1149     [
1150         AC_MSG_RESULT(yes)
1151         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1153         # If we have libunwind, test whether we also have libunwind-ptrace
1154         # which would let us unwind arbitrary processes.
1155         save_LIBS=$LIBS
1156         AC_CHECK_HEADERS(libunwind-ptrace.h)
1157         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1158             [
1159                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1160                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1161                     [Whether libunwind-ptrace.a is available.])
1162             ],
1163             [ LIBUNWIND_PTRACE="" ])
1165         LIBS=$save_LIBS
1166     ],
1167     [
1168         AC_MSG_RESULT(no)
1169         LIBS=$save_LIBS
1170     ])
1172 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1173 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1174     AC_CHECK_HEADERS(sys/ptrace.h)
1175     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1176     AC_TRY_LINK(
1177             [
1178 #if HAVE_SYS_TYPES_H
1179 #include <sys/types.h>
1180 #endif
1181 #if HAVE_SYS_PTRACE_H
1182 #include <sys/ptrace.h>
1183 #endif
1184             ],
1185             [
1186                 int main(int argc, const char ** argv)
1187                 {
1188                         pid_t me = (pid_t)-1;
1189                         ptrace(PTRACE_ATTACH, me, 0, 0);
1190                         ptrace(PTRACE_DETACH, me, 0, 0);
1191                         return 0;
1192                 }
1193             ],
1194             [
1195                 AC_MSG_RESULT(yes)
1196                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1197                     [Whether the Linux ptrace(2) interface is available.])
1198             ],
1199             [
1200                 AC_MSG_RESULT(no)
1201                 LIBUNWIND_PTRACE=""
1202             ])
1205 AC_SUBST(LIBUNWIND_PTRACE)
1207 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1208 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1209 AC_CHECK_FUNCS(__getcwd _getcwd)
1210 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1211 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1212 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1213 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1214 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1215 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1216 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1217 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1218 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1219 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1220 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1221 AC_CHECK_FUNCS(prctl)
1223 AC_TRY_COMPILE([
1224 #ifdef HAVE_SYS_PRCTL_H
1225 #include <sys/prctl.h>
1226 #endif
1228 [int i; i = prtcl(0); ],
1229 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1234 case "$host_os" in
1235     *linux*)
1236        # glibc <= 2.3.2 has a broken getgrouplist
1237        AC_TRY_RUN([
1238 #include <unistd.h>
1239 #include <sys/utsname.h>
1240 main() {
1241        /* glibc up to 2.3 has a broken getgrouplist */
1242 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1243        int libc_major = __GLIBC__;
1244        int libc_minor = __GLIBC_MINOR__;
1246        if (libc_major < 2)
1247               exit(1);
1248        if ((libc_major == 2) && (libc_minor <= 3))
1249               exit(1);
1250 #endif
1251        exit(0);
1253 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1254        if test x"$linux_getgrouplist_ok" = x"yes"; then
1255           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1256        fi
1257        ;;
1258     *)
1259        AC_CHECK_FUNCS(getgrouplist)
1260        ;;
1261 esac
1264 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1267 if test x$ac_cv_func_stat64 = xno ; then
1268   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1269   AC_TRY_LINK([
1270 #if defined(HAVE_UNISTD_H)
1271 #include <unistd.h>
1272 #endif
1273 #include <sys/stat.h>
1274 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1275   AC_MSG_RESULT([$ac_cv_func_stat64])
1276   if test x$ac_cv_func_stat64 = xyes ; then
1277     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1278   fi
1281 if test x$ac_cv_func_lstat64 = xno ; then
1282   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1283   AC_TRY_LINK([
1284 #if defined(HAVE_UNISTD_H)
1285 #include <unistd.h>
1286 #endif
1287 #include <sys/stat.h>
1288 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1289   AC_MSG_RESULT([$ac_cv_func_lstat64])
1290   if test x$ac_cv_func_lstat64 = xyes ; then
1291     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1292   fi
1295 if test x$ac_cv_func_fstat64 = xno ; then
1296   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1297   AC_TRY_LINK([
1298 #if defined(HAVE_UNISTD_H)
1299 #include <unistd.h>
1300 #endif
1301 #include <sys/stat.h>
1302 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1303   AC_MSG_RESULT([$ac_cv_func_fstat64])
1304   if test x$ac_cv_func_fstat64 = xyes ; then
1305     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1306   fi
1309 #################################################
1310 # Check whether struct stat has timestamps with sub-second resolution.
1311 # At least IRIX and Solaris have these.
1313 # We check that
1314 #       all of st_mtim, st_atim and st_ctim exist
1315 #       all of the members are in fact of type struct timespec
1317 # There is some conflicting standards weirdness about whether we should use
1318 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1319 # prefer struct timespec.
1321 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_cv_stat_hires,
1322     [
1323         AC_TRY_COMPILE(
1324             [
1325 #if TIME_WITH_SYS_TIME
1326 # include <sys/time.h>
1327 # include <time.h>
1328 #else
1329 # if HAVE_SYS_TIME_H
1330 #  include <sys/time.h>
1331 # else
1332 #  include <time.h>
1333 # endif
1334 #endif
1335 #ifdef HAVE_SYS_STAT_H
1336 #include <sys/stat.h>
1337 #endif
1338             ],
1339             [
1340                 struct timespec t;
1341                 struct stat s = {0};
1342                 t.tv_sec = s.st_mtim.tv_sec;
1343                 t.tv_nsec = s.st_mtim.tv_nsec;
1344                 t.tv_sec = s.st_ctim.tv_sec;
1345                 t.tv_nsec = s.st_ctim.tv_nsec;
1346                 t.tv_sec = s.st_atim.tv_sec;
1347                 t.tv_nsec = s.st_atim.tv_nsec;
1348             ],
1349             samba_cv_stat_hires=yes, samba_cv_stat_hires=no)
1350     ])
1352 if test x"$samba_cv_stat_hires" = x"yes" ; then
1353     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1354     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1355     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1356     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1357             [whether struct stat has sub-second timestamps])
1360 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_cv_stat_hires_notimespec,
1361     [
1362         AC_TRY_COMPILE(
1363             [
1364 #if TIME_WITH_SYS_TIME
1365 # include <sys/time.h>
1366 # include <time.h>
1367 #else
1368 # if HAVE_SYS_TIME_H
1369 #  include <sys/time.h>
1370 # else
1371 #  include <time.h>
1372 # endif
1373 #endif
1374 #ifdef HAVE_SYS_STAT_H
1375 #include <sys/stat.h>
1376 #endif
1377             ],
1378             [
1379                 struct timespec t;
1380                 struct stat s = {0};
1381                 t.tv_sec = s.st_mtime;
1382                 t.tv_nsec = s.st_mtimensec;
1383                 t.tv_sec = s.st_ctime;
1384                 t.tv_nsec = s.st_ctimensec;
1385                 t.tv_sec = s.st_atime;
1386                 t.tv_nsec = s.st_atimensec;
1387             ],
1388             samba_cv_stat_hires=yes, samba_cv_stat_hires=no)
1389     ])
1391 if test x"$samba_cv_stat_hires_notimespec" = x"yes" ; then
1392     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1393     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1394     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1395     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1396             [whether struct stat has sub-second timestamps without struct timespec])
1399 AC_CACHE_CHECK([whether struct stat has st_birthtimespec], samba_cv_stat_st_birthtimespec,
1400     [
1401         AC_TRY_COMPILE(
1402             [
1403 #if TIME_WITH_SYS_TIME
1404 # include <sys/time.h>
1405 # include <time.h>
1406 #else
1407 # if HAVE_SYS_TIME_H
1408 #  include <sys/time.h>
1409 # else
1410 #  include <time.h>
1411 # endif
1412 #endif
1413 #ifdef HAVE_SYS_STAT_H
1414 #include <sys/stat.h>
1415 #endif
1416             ],
1417             [
1418                 struct timespec t;
1419                 struct stat s = {0};
1420                 t = s.st_birthtimespec;
1421             ],
1422             samba_cv_stat_st_birthtimespec=yes, samba_cv_stat_birthtimespec=no)
1423     ])
1425 if test x"$samba_cv_stat_st_birthtimespec" = x"yes" ; then
1426     AC_DEFINE(HAVE_STAT_ST_BIRTHTIMESPEC, 1, [whether struct stat contains st_birthtimespec])
1429 AC_CACHE_CHECK([whether struct stat has st_birthtimensec], samba_cv_stat_st_birthtimensec,
1430     [
1431         AC_TRY_COMPILE(
1432             [
1433 #if TIME_WITH_SYS_TIME
1434 # include <sys/time.h>
1435 # include <time.h>
1436 #else
1437 # if HAVE_SYS_TIME_H
1438 #  include <sys/time.h>
1439 # else
1440 #  include <time.h>
1441 # endif
1442 #endif
1443 #ifdef HAVE_SYS_STAT_H
1444 #include <sys/stat.h>
1445 #endif
1446             ],
1447             [
1448                 struct timespec t;
1449                 struct stat s = {0};
1450                 t.tv_nsec = s.st_birthtimensec;
1451             ],
1452             samba_cv_stat_st_birthtimensec=yes, samba_cv_stat_birthtimensec=no)
1453     ])
1455 if test x"$samba_cv_stat_st_birthtimensec" = x"yes" ; then
1456     AC_DEFINE(HAVE_STAT_ST_BIRTHTIMENSEC, 1, [whether struct stat contains st_birthtimensec])
1459 AC_CACHE_CHECK([whether struct stat has st_birthtime], samba_cv_stat_st_birthtime,
1460     [
1461         AC_TRY_COMPILE(
1462             [
1463 #if TIME_WITH_SYS_TIME
1464 # include <sys/time.h>
1465 # include <time.h>
1466 #else
1467 # if HAVE_SYS_TIME_H
1468 #  include <sys/time.h>
1469 # else
1470 #  include <time.h>
1471 # endif
1472 #endif
1473 #ifdef HAVE_SYS_STAT_H
1474 #include <sys/stat.h>
1475 #endif
1476             ],
1477             [
1478                 struct time_t t;
1479                 struct stat s = {0};
1480                 t = s.st_birthtime;
1481             ],
1482             samba_cv_stat_st_birthtime=yes, samba_cv_stat_birthtime=no)
1483     ])
1485 if test x"$samba_cv_stat_st_birthtime" = x"yes" ; then
1486     AC_DEFINE(HAVE_STAT_ST_BIRTHTIME, 1, [whether struct stat contains st_birthtime])
1489 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1490     [
1491         AC_TRY_COMPILE(
1492             [#include <sys/stat.h>],
1493             [
1494                 int a = UF_DOS_ARCHIVE;
1495                 int h = UF_DOS_HIDDEN;
1496                 int r = UF_DOS_RO;
1497                 int s = UF_DOS_SYSTEM;
1498                 int i = UF_DOS_NOINDEX;
1499                 int f = UF_DOS_FLAGS;
1500             ],
1501             samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1502     ])
1504 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1505     AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1508 #####################################
1509 # needed for SRV lookups
1510 AC_CHECK_LIB(resolv, dn_expand)
1511 AC_CHECK_LIB(resolv, _dn_expand)
1512 AC_CHECK_LIB(resolv, __dn_expand)
1515 # Check for the functions putprpwnam, set_auth_parameters,
1516 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1517 # Needed for OSF1 and HPUX.
1520 AC_LIBTESTFUNC(security, putprpwnam)
1521 AC_LIBTESTFUNC(sec, putprpwnam)
1523 AC_LIBTESTFUNC(security, set_auth_parameters)
1524 AC_LIBTESTFUNC(sec, set_auth_parameters)
1526 # UnixWare 7.x has its getspnam in -lgen
1527 AC_LIBTESTFUNC(gen, getspnam)
1529 AC_LIBTESTFUNC(security, getspnam)
1530 AC_LIBTESTFUNC(sec, getspnam)
1532 AC_LIBTESTFUNC(security, bigcrypt)
1533 AC_LIBTESTFUNC(sec, bigcrypt)
1535 AC_LIBTESTFUNC(security, getprpwnam)
1536 AC_LIBTESTFUNC(sec, getprpwnam)
1538 AC_CHECK_FUNCS(strsignal)
1540 ############################################
1541 # Check if we have libattr
1542 case "$host_os" in
1543   *osf*)
1544         AC_SEARCH_LIBS(getproplist, [proplist])
1545         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1546         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1547         AC_CHECK_FUNCS(sizeof_proplist_entry)
1548   ;;
1549   *)
1550         AC_SEARCH_LIBS(getxattr, [attr])
1551         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1552         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1553         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1554         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1555         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1556         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1557         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1558   ;;
1559 esac
1561 ########################################################
1562 # Check if attropen() is present if this is Solaris
1563 case "$host_os" in
1564   *solaris*)
1565         AC_CHECK_FUNCS(attropen)
1566   ;;
1567 esac
1569 ########################################################
1570 # Do xattr functions take additional options like on Darwin?
1571 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1572         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1573                 old_LIBS=$LIBS
1574                 LIBS="$LIBS $ACL_LIBS"
1575                 AC_TRY_COMPILE([
1576                         #include <sys/types.h>
1577                         #if HAVE_ATTR_XATTR_H
1578                         #include <attr/xattr.h>
1579                         #elif HAVE_SYS_XATTR_H
1580                         #include <sys/xattr.h>
1581                         #endif
1582                 ],[
1583                         getxattr(0, 0, 0, 0, 0, 0);
1584                 ],
1585                 [smb_attr_cv_xattr_add_opt=yes],
1586                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1587         ])
1588         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1589                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1590         fi
1593 # Check if we have extattr
1594 case "$host_os" in
1595   *freebsd4* | *dragonfly* )
1596     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1597     ;;
1598   *)
1599     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1600     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1601     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1602     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1603     ;;
1604 esac
1606 AC_DISABLE_STATIC
1607 AC_ENABLE_SHARED
1609 # Set defaults
1610 PIE_CFLAGS=""
1611 PIE_LDFLAGS=""
1612 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1614 if test "x$enable_pie" != xno
1615 then
1616         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1617         [
1618                 cat > conftest.c <<EOF
1619 int foo;
1620 main () { return 0;}
1622                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1623                 then
1624                         samba_cv_fpie=yes
1625                 else
1626                         samba_cv_fpie=no
1627                 fi
1628                 rm -f conftest*
1629         ])
1630         if test x"${samba_cv_fpie}" = x"yes"
1631         then
1632                 PIE_CFLAGS="-fPIE"
1633                 PIE_LDFLAGS="-pie"
1634         fi
1637 # Set defaults
1638 RELRO_LDFLAGS=""
1639 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1641 if test "x$enable_relro" != xno
1642 then
1643         AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1644         [
1645                 cat > conftest.c <<EOF
1646 int foo;
1647 main () { return 0;}
1649                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1650                 then
1651                         samba_cv_relro=yes
1652                 else
1653                         samba_cv_relro=no
1654                 fi
1655                 rm -f conftest*
1656         ])
1657         if test x"${samba_cv_relro}" = x"yes"
1658         then
1659                 RELRO_LDFLAGS="-Wl,-z,relro"
1660         fi
1663 # Set defaults
1664 SYMSEXT="syms"
1665 AC_SUBST(SYMSEXT)
1667 # Assume non-shared by default and override below
1668 BLDSHARED="false"
1670 # these are the defaults, good for lots of systems
1671 HOST_OS="$host_os"
1672 LDSHFLAGS="-shared"
1673 MODULE_EXPORTS=""
1674 SONAMEFLAG="#"
1675 SHLD="\${CC} \${CFLAGS}"
1676 PICFLAG="${PIE_CFLAGS}"
1677 SHLIBEXT="so"
1678 DSO_EXPORTS=""
1680 # this bit needs to be modified for each OS that supports share libs
1681 # You need to specify how to create a shared library and
1682   # how to compile C code to produce PIC object files
1684   AC_MSG_CHECKING([ability to build shared libraries])
1686   # and these are for particular systems
1687   case "$host_os" in
1688                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1689                         BLDSHARED="true"
1690                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1691                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1692                         else
1693                                 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1694                         fi
1695                         DYNEXP="-Wl,--export-dynamic"
1696                         PICFLAG="-fPIC"
1697                         SONAMEFLAG="-Wl,-soname="
1698                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1699                         ;;
1700                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1701                         BLDSHARED="true"
1702                         LDSHFLAGS="-G"
1703                         SONAMEFLAG="-h "
1704                         if test "${GCC}" = "yes"; then
1705                                 PICFLAG="-fPIC"
1706                                 SONAMEFLAG="-Wl,-soname="
1707                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1708                                         DYNEXP="-Wl,-E"
1709                                 fi
1710                         else
1711                                 PICFLAG="-KPIC"
1712                                 ## ${CFLAGS} added for building 64-bit shared
1713                                 ## libs using Sun's Compiler
1714                                 LDSHFLAGS="-G \${CFLAGS}"
1715                         fi
1716                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1717                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1718                         ;;
1719                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1720                         BLDSHARED="true"
1721                         LDSHFLAGS="-G"
1722                         SONAMEFLAG="-Wl,-h,"
1723                         PICFLAG="-KPIC"   # Is this correct for SunOS
1724                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1725                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1726                         ;;
1727                 *netbsd* | *freebsd* | *dragonfly* )
1728                         BLDSHARED="true"
1729                         LDSHFLAGS="-shared"
1730                         DYNEXP="-Wl,--export-dynamic"
1731                         SONAMEFLAG="-Wl,-soname,"
1732                         PICFLAG="-fPIC -DPIC"
1733                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1734                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1735                         ;;
1736                 *openbsd*)  BLDSHARED="true"
1737                         LDSHFLAGS="-shared"
1738                         DYNEXP="-Wl,-Bdynamic"
1739                         SONAMEFLAG="-Wl,-soname,"
1740                         PICFLAG="-fPIC"
1741                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1742                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1743                         ;;
1744                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1745                         case "$host_os" in
1746                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1747                         ;;
1748                         esac
1749                         BLDSHARED="true"
1750                         LDSHFLAGS="-set_version sgi1.0 -shared"
1751                         SONAMEFLAG="-soname "
1752                         SHLD="\${LD}"
1753                         if test "${GCC}" = "yes"; then
1754                                 PICFLAG="-fPIC"
1755                         else
1756                                 PICFLAG="-KPIC"
1757                         fi
1758                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1759                         ;;
1760                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1761                         BLDSHARED="true"
1762                         # use expfull to export underscored symbols
1763                         # add rtl to remove /lib/crt0.o warning
1764                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1765                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1766                         PICFLAG="-O2"
1767                         # as AIX code is always position independent...
1768                         # .po will just create compile warnings, use po.o:
1769                         if test "${GCC}" != "yes"; then
1770                                 ## for funky AIX compiler using strncpy()
1771                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1772                         fi
1774                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1775                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1776                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1777                         ;;
1778                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1779                         # Use special PIC flags for the native HP-UX compiler.
1780                                 BLDSHARED="true"
1781                                 SHLD="cc"
1782                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1783                                 SONAMEFLAG="-Wl,+h "
1784                                 PICFLAG="+z"
1785                         if test "${GCC}" = "yes"; then
1786                                 PICFLAG="-fPIC"
1787                         else
1788                                 PICFLAG="+z +ESnolit"
1789                         fi
1790                         if test "$host_cpu" = "ia64"; then
1791                                 SHLIBEXT="so"
1792                               PICFLAG="+z"
1793                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1794                         else
1795                                 SHLIBEXT="sl"
1796                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1797                         fi
1798                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1799                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1800                         ;;
1801                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1802                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1803                         ;;
1804                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1805                         BLDSHARED="true"
1806                         LDSHFLAGS="-shared"
1807                         SONAMEFLAG="-Wl,-soname,"
1808                         PICFLAG="-fPIC"
1809                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1810                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1811                         ;;
1812                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1813                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1814                         ;;
1815                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1816                         BLDSHARED="true"
1817                         LDSHFLAGS="-shared"
1818                         SONAMEFLAG="-Wl,-soname,"
1819                         PICFLAG="-KPIC"
1820                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1821                         ;;
1822                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1823                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1824                         ;;
1825                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1826                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1827                         ;;
1828                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1829                         case "$host" in
1830                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1831                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1832                                         fi
1833                                         LDSHFLAGS="-G"
1834                                         DYNEXP="-Bexport"
1835                                 ;;
1836                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1837                         esac
1838                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1839                         ;;
1841                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1842                         if [ test "$GCC" != yes ]; then
1843                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1844                         fi
1845                         LDSHFLAGS="-G"
1846                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1847                         ;;
1848                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1849                         BLDSHARED="false"
1850                         LDSHFLAGS=""
1851                         ;;
1853                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1854                         BLDSHARED="true"
1855                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1856                         CFLAGS="$CFLAGS -fno-common"
1857                         SHLD="\${CC}"
1858                         SHLIBEXT="dylib"
1859                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1860                         SHLIBEXT="dylib"
1861                         # Since gcc doesn't fail on unrecognised options, the
1862                         # PIE test incorrectly succeeds. Darwin gcc does not
1863                         # actually support the PIE stuff.
1864                         PIE_LDFLAGS=
1865                         PIE_CFLAGS=
1866                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1867                         ;;
1869                 *)
1870                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1871                         ;;
1872   esac
1874 if test "$enable_shared" != "yes"; then
1875         BLDSHARED=false
1878 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1879         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1882 if test x"$BLDSHARED" = x"true" ; then
1883         LDFLAGS="$LDFLAGS -L./bin"
1886 AC_MSG_RESULT($BLDSHARED)
1888 AC_MSG_CHECKING([LDFLAGS])
1889 AC_MSG_RESULT([$LDFLAGS])
1890 AC_MSG_CHECKING([DYNEXP])
1891 AC_MSG_RESULT([$DYNEXP])
1893 #######################################################
1894 # test whether building a shared library actually works
1895 if test $BLDSHARED = true; then
1897 AC_MSG_CHECKING([SHLD])
1898 AC_MSG_RESULT([$SHLD])
1899 AC_MSG_CHECKING([LDSHFLAGS])
1900 AC_MSG_RESULT([$LDSHFLAGS])
1902 AC_MSG_CHECKING([SHLIBEXT])
1903 AC_MSG_RESULT([$SHLIBEXT])
1904 AC_MSG_CHECKING([SONAMEFLAG])
1905 AC_MSG_RESULT([$SONAMEFLAG])
1907 AC_MSG_CHECKING([PICFLAG])
1908 AC_MSG_RESULT([$PICFLAG])
1910 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1911 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1913 AC_CACHE_CHECK([whether building shared libraries actually works],
1914                [ac_cv_shlib_works],[
1915    # try building a trivial shared library
1916    ac_cv_shlib_works=no
1917    # The $SHLD and $LDSHFLAGS variables may contain references to other
1918    # variables so they need to be eval'ed.
1919    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1920         shlib.o ${srcdir-.}/../tests/shlib.c && \
1921    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1922         shlib.o && ac_cv_shlib_works=yes
1923    rm -f "shlib.$SHLIBEXT" shlib.o
1926 if test $ac_cv_shlib_works = no; then
1927    BLDSHARED=false
1931 if test x"$BLDSHARED" != x"true"; then
1932         LDSHFLAGS="shared-libraries-disabled"
1933         SONAMEFLAG="shared-libraries-disabled"
1934         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1935         SHLD="shared-libraries-disabled"
1936         PICFLAG="${PIE_CFLAGS}"
1937         SHLIBEXT="shared_libraries_disabled"
1940 AC_MSG_CHECKING([used PICFLAG])
1941 AC_MSG_RESULT([$PICFLAG])
1943 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1945 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
1947 ################
1949 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1950 AC_TRY_RUN([#include <stdio.h>
1951 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1952 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1953 if test x"$samba_cv_have_longlong" = x"yes"; then
1954     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1955     AC_CHECK_TYPE(intptr_t, unsigned long long)
1956 else
1957     AC_CHECK_TYPE(intptr_t, unsigned long)
1961 # Check if the compiler supports the LL prefix on long long integers.
1962 # AIX needs this.
1964 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1965     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1966         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1967 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1968    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1972 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
1973 AC_TRY_RUN([#include <time.h>
1974 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
1975 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
1976 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
1977     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
1980 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1981 AC_TRY_RUN([#include <stdio.h>
1982 #include <sys/stat.h>
1983 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1984 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1985 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1986     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1989 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1990 AC_TRY_RUN([
1991 #if defined(HAVE_UNISTD_H)
1992 #include <unistd.h>
1993 #endif
1994 #include <stdio.h>
1995 #include <sys/stat.h>
1996 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1997 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1998 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1999     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2002 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2003 AC_TRY_RUN([
2004 #if defined(HAVE_UNISTD_H)
2005 #include <unistd.h>
2006 #endif
2007 #include <stdio.h>
2008 #include <sys/stat.h>
2009 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2010 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2011 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2012     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2015 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2016 AC_TRY_RUN([
2017 #if defined(HAVE_UNISTD_H)
2018 #include <unistd.h>
2019 #endif
2020 #include <stdio.h>
2021 #include <sys/stat.h>
2022 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2023 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2024 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2025     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2028 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2029 AC_TRY_RUN([
2030 #if defined(HAVE_UNISTD_H)
2031 #include <unistd.h>
2032 #endif
2033 #include <stdio.h>
2034 #include <sys/stat.h>
2035 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2036 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2037 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2038     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2041 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2042 AC_TRY_RUN([
2043 #if defined(HAVE_UNISTD_H)
2044 #include <unistd.h>
2045 #endif
2046 #include <stdio.h>
2047 #include <sys/stat.h>
2048 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2049 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2050 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2051     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2054 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2055 AC_TRY_COMPILE([
2056 #if defined(HAVE_UNISTD_H)
2057 #include <unistd.h>
2058 #endif
2059 #include <sys/types.h>
2060 #include <dirent.h>],
2061 [DIR64 de;],
2062 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2063 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2064     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2067 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2068 AC_TRY_COMPILE([
2069 #if defined(HAVE_UNISTD_H)
2070 #include <unistd.h>
2071 #endif
2072 #include <sys/types.h>
2073 #include <dirent.h>],
2074 [struct dirent64 de;],
2075 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2076 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2077     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2080 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2081 AC_TRY_RUN([
2082 #if defined(HAVE_UNISTD_H)
2083 #include <unistd.h>
2084 #endif
2085 #include <sys/types.h>
2086 main() { dev_t dev; int i = major(dev); return 0; }],
2087 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2088 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2089     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2092 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2093 AC_TRY_RUN([
2094 #if defined(HAVE_UNISTD_H)
2095 #include <unistd.h>
2096 #endif
2097 #include <sys/types.h>
2098 main() { dev_t dev; int i = minor(dev); return 0; }],
2099 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2100 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2101     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2104 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2105 AC_TRY_RUN([
2106 #if defined(HAVE_UNISTD_H)
2107 #include <unistd.h>
2108 #endif
2109 #include <sys/types.h>
2110 main() { dev_t dev = makedev(1,2); return 0; }],
2111 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2112 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2113     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2116 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2117 AC_TRY_RUN([#include <stdio.h>
2118 main() { char c; c=250; exit((c > 0)?0:1); }],
2119 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2120 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2121     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2124 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2125 AC_TRY_COMPILE([#include <sys/types.h>
2126 #include <dirent.h>
2127 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2128 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2129 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2130     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2133 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2134 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2135 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2136 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2137     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2140 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2141 AC_TRY_LINK([
2142 #include <sys/time.h>
2143 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2144            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2145            samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2146 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2147     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2150 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2152     # On some systems (eg. Linux) librt can pull in libpthread. We
2153     # don't want this to happen because libpthreads changes signal delivery
2154     # semantics in ways we are not prepared for. This breaks Linux oplocks
2155     # which rely on signals.
2157     AC_LIBTESTFUNC(rt, clock_gettime,
2158             [
2159                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2160                                 [Whether clock_gettime is available])
2161                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2162                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2163                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2164                         ])
2168 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2169 AC_TRY_RUN([#include <sys/types.h>
2170 #include <dirent.h>
2171 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2172 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2173 di->d_name[0] == 0) exit(0); exit(1);} ],
2174 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2175 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2176     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2179 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2180 AC_TRY_COMPILE([#include <sys/types.h>
2181 #include <utime.h>],
2182 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2183 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2184 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2185     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2188 ##############
2189 # Check utmp details, but only if our OS offers utmp.h
2190 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2191 dnl  utmp and utmpx come in many flavours
2192 dnl  We need to check for many of them
2193 dnl  But we don't need to do each and every one, because our code uses
2194 dnl  mostly just the utmp (not utmpx) fields.
2196 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2198 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2199 AC_TRY_COMPILE([#include <sys/types.h>
2200 #include <utmp.h>],
2201 [struct utmp ut;  ut.ut_name[0] = 'a';],
2202 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2203 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2204     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2207 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2208 AC_TRY_COMPILE([#include <sys/types.h>
2209 #include <utmp.h>],
2210 [struct utmp ut;  ut.ut_user[0] = 'a';],
2211 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2212 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2213     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2216 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2217 AC_TRY_COMPILE([#include <sys/types.h>
2218 #include <utmp.h>],
2219 [struct utmp ut;  ut.ut_id[0] = 'a';],
2220 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2221 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2222     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2225 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2226 AC_TRY_COMPILE([#include <sys/types.h>
2227 #include <utmp.h>],
2228 [struct utmp ut;  ut.ut_host[0] = 'a';],
2229 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2230 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2231     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2234 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2235 AC_TRY_COMPILE([#include <sys/types.h>
2236 #include <utmp.h>],
2237 [struct utmp ut;  time_t t; ut.ut_time = t;],
2238 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2239 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2240     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2243 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2244 AC_TRY_COMPILE([#include <sys/types.h>
2245 #include <utmp.h>],
2246 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2247 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2248 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2249     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2252 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2253 AC_TRY_COMPILE([#include <sys/types.h>
2254 #include <utmp.h>],
2255 [struct utmp ut;  ut.ut_type = 0;],
2256 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2257 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2258     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2261 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2262 AC_TRY_COMPILE([#include <sys/types.h>
2263 #include <utmp.h>],
2264 [struct utmp ut;  ut.ut_pid = 0;],
2265 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2266 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2267     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2270 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2271 AC_TRY_COMPILE([#include <sys/types.h>
2272 #include <utmp.h>],
2273 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2274 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2275 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2276     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2279 dnl Look for the IPv6 varient by preference. Many systems have both.
2280 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2281 AC_TRY_COMPILE([#include <sys/types.h>
2282 #include <utmp.h>],
2283 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2284 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2285 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2286     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2289 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2290 AC_TRY_COMPILE([#include <sys/types.h>
2291 #include <utmp.h>],
2292 [struct utmp ut;  ut.ut_addr = 0;],
2293 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2294 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2295     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2298 if test x$ac_cv_func_pututline = xyes ; then
2299   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2300   AC_TRY_COMPILE([#include <sys/types.h>
2301 #include <utmp.h>],
2302   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2303   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2304   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2305       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2306   fi
2309 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2310 AC_TRY_COMPILE([#include <sys/types.h>
2311 #include <utmpx.h>],
2312 [struct utmpx ux;  ux.ut_syslen = 0;],
2313 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2314 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2315     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2319 # end utmp details
2322 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2323 AC_ARG_WITH(libiconv,
2324 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2326   if test "$withval" = "no" ; then
2327     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2328   else
2329      if test "$withval" != "yes" ; then
2330         ICONV_PATH_SPEC=yes
2331         ICONV_LOOK_DIRS="$withval"
2332      fi
2333   fi
2336 for i in $ICONV_LOOK_DIRS ; do
2338     save_LIBS="$LIBS"
2339     save_LDFLAGS="$LDFLAGS"
2340     save_CPPFLAGS="$CPPFLAGS"
2342     iconv_current_LIBS=""
2343     iconv_current_LDFLAGS=""
2344     iconv_current_CPPFLAGS=""
2346     ICONV_FOUND="no"
2347     unset libext
2349     #  This is here to handle -withval stuff for --with-libiconv
2350     #  Perhaps we should always add a -L
2351     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2353     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2354     # installation paths. This gets a little tricky since we might have iconv
2355     # in both libiconv and in libc. In this case the jm_ICONV test will always
2356     # succeed when the header is found. To counter this, make sure the
2357     # library directory is there and check the ABI directory first (which
2358     # should be harmless on other systems, but causes tons of linker warnings on
2359     # 64bit Ubuntu systems).
2360     # As the build farm doesn't seem to have any IRIX machines with iconv.h
2361     # installed, I've decided to fix the linker warnings.
2362     # -- Kai
2363     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2364     for l in "lib" "lib32" "lib/hpux32"; do
2365         if test -d "$i/$l" ; then
2366                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2367                 LIBS=
2368                 export LDFLAGS LIBS CPPFLAGS
2369                 # Try to find iconv(3)
2370                 jm_ICONV($i/$l)
2371                 if test x"$ICONV_FOUND" = "xyes" ; then
2372                     libext="$l"
2373                     break
2374                 fi
2375         fi
2376     done
2378     if test x"$ICONV_FOUND" = "xyes" ; then
2379         iconv_current_LDFLAGS="-L$i/$libext"
2380         iconv_current_CPPFLAGS="-I$i/include"
2382         if test x"$jm_cv_lib_iconv" != x; then
2383             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2384         else
2385             # We found iconv in libc.
2386             iconv_current_LIBS=""
2387         fi
2389     fi
2391     if test x"$ICONV_FOUND" = "xyes" ; then
2393         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2394         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2395         LIBS="$save_LIBS $iconv_current_LIBS"
2396         export LDFLAGS LIBS CPPFLAGS
2398         default_dos_charset=no
2399         default_display_charset=no
2400         default_unix_charset=no
2402         # check for default dos charset name
2403         for j in CP850 IBM850 ; do
2404             rjs_CHARSET($j)
2405             default_dos_charset="$ICONV_CHARSET"
2406             if test x"$default_dos_charset" = x"$j"; then
2407                 break
2408             fi
2409         done
2411         # check for default display charset name
2412         for j in ASCII 646 ; do
2413             rjs_CHARSET($j)
2414             default_display_charset="$ICONV_CHARSET"
2415             if test x"$default_display_charset" = x"$j"; then
2416                 break
2417             fi
2418         done
2420         # check for default unix charset name
2421         for j in UTF-8 UTF8 ; do
2422             rjs_CHARSET($j)
2423             default_unix_charset="$ICONV_CHARSET"
2424             if test x"$default_unix_charset" = x"$j"; then
2425                 break
2426             fi
2427         done
2429         if test "$default_dos_charset" != "no" -a \
2430                 "$default_dos_charset" != "cross" -a \
2431                 "$default_display_charset" != "no" -a \
2432                 "$default_display_charset" != "cross" -a \
2433                 "$default_unix_charset" != "no" -a \
2434                 "$default_unix_charset" != "cross"
2435         then
2436                 samba_cv_HAVE_NATIVE_ICONV=yes
2437         else
2438             if test "$default_dos_charset" = "cross" -o \
2439                      "$default_display_charset" = "cross" -o \
2440                      "$default_unix_charset" = "cross"
2441             then
2442                     samba_cv_HAVE_NATIVE_ICONV=cross
2443             else
2444                     samba_cv_HAVE_NATIVE_ICONV=no
2445             fi
2446         fi
2448         # At this point, we have a libiconv candidate. We know that
2449         # we have the right headers and libraries, but we don't know
2450         # whether it does the conversions we want. We can't test this
2451         # because we are cross-compiling. This is not necessarily a big
2452         # deal, since we can't guarantee that the results we get now will
2453         # match the results we get at runtime anyway.
2454         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2455             default_dos_charset="CP850"
2456             default_display_charset="ASCII"
2457             default_unix_charset="UTF-8"
2458             samba_cv_HAVE_NATIVE_ICONV=yes
2459             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2460             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2461         fi
2463         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2465             CPPFLAGS=$save_CPPFLAGS
2466             LDFLAGS=$save_LDFLAGS
2467             LIBS=$save_LIBS
2469             if test x"$iconv_current_LIBS" != x; then
2470                 LIBS="$LIBS $iconv_current_LIBS"
2471             fi
2473             # Add the flags we need to CPPFLAGS and LDFLAGS
2474             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2475             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2477             # Turn the #defines into string literals
2478             default_dos_charset="\"$default_dos_charset\""
2479             default_display_charset="\"$default_display_charset\""
2480             default_unix_charset="\"$default_unix_charset\""
2482             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2483             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2484             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2485             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2487            break
2488         fi
2490     # We didn't find a working iconv, so keep going
2491     fi
2493     #  We only need to clean these up here for the next pass through the loop
2494     CPPFLAGS=$save_CPPFLAGS
2495     LDFLAGS=$save_LDFLAGS
2496     LIBS=$save_LIBS
2497     export LDFLAGS LIBS CPPFLAGS
2498 done
2499 unset libext
2502 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2503     AC_MSG_WARN([Sufficient support for iconv function was not found.
2504     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2505    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2506    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2507    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2511 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2512 AC_TRY_RUN([
2513 #include <sys/types.h>
2514 #include <fcntl.h>
2515 #ifndef F_GETLEASE
2516 #define F_GETLEASE      1025
2517 #endif
2518 main() {
2519        int fd = open("/dev/null", O_RDONLY);
2520        return fcntl(fd, F_GETLEASE, 0) == -1;
2523 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2524 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2525     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2528 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2529 AC_TRY_RUN([
2530 #include <sys/types.h>
2531 #include <fcntl.h>
2532 #include <signal.h>
2533 #ifndef F_NOTIFY
2534 #define F_NOTIFY 1026
2535 #endif
2536 main() {
2537         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2540 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2541 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2542     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2545 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2546 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2547 AC_CHECK_FUNCS(inotify_init)
2548 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2550 samba_cv_HAVE_INOTIFY=yes,
2551 samba_cv_HAVE_INOTIFY=no,
2552 samba_cv_HAVE_INOTIFY=cross)
2554 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2555     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2558 #################################################
2559 # Check if FAM notifications are available. For FAM info, see
2560 #       http://oss.sgi.com/projects/fam/
2561 #       http://savannah.nongnu.org/projects/fam/
2562 AC_ARG_ENABLE(fam,
2563 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2565 if test x$enable_fam != xno; then
2566     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2567     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2568         # On IRIX, libfam requires libC, but other FAM implementations
2569         # might not need it.
2570         AC_CHECK_LIB(fam, FAMOpen2,
2571             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2572             [samba_cv_HAVE_LIBFAM=no])
2574         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2575             samba_fam_xtra=-lC
2576             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2577                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2578                 [samba_cv_HAVE_LIBFAM=no])
2579             unset samba_fam_xtra
2580         fi
2581     fi
2583     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2584         default_shared_modules="$default_shared_modules vfs_notify_fam"
2585         AC_TRY_COMPILE([#include <fam.h>],
2586                     [FAMCodes code = FAMChanged;],
2587                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2588                         [Whether fam.h contains a typedef for enum FAMCodes]),
2589                     [])
2590     fi
2592     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2593         AC_MSG_ERROR(FAM support requested but FAM library not available )
2594     fi
2597 AC_SUBST(SMB_FAM_LIBS)
2599 #################################################
2600 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2602 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2604 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2605 # Theoretically it should work with AIX JFS2 too but this needs testing
2606 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2607     default_shared_modules="$default_shared_modules vfs_tsmsm"
2610 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2611 AC_TRY_RUN([
2612 #include <sys/types.h>
2613 #include <fcntl.h>
2614 #include <signal.h>
2615 #include <sys/file.h>
2616 #ifndef LOCK_MAND
2617 #define LOCK_MAND       32
2618 #define LOCK_READ       64
2619 #endif
2620 main() {
2621         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2624 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2625 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2626     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2630 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2631 AC_TRY_COMPILE([#include <sys/types.h>
2632 #include <fcntl.h>],
2633 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2634 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2635 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2636     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2639 #################################################
2640 # Check for POSIX capability support
2642 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2643     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2644     [], [])
2646 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2648     ac_save_LIBS=$LIBS
2649     AC_LIBTESTFUNC(cap, cap_get_proc)
2651     AC_CACHE_CHECK([for POSIX capabilities],
2652             samba_cv_HAVE_POSIX_CAPABILITIES,
2653             [
2654                 AC_TRY_RUN([
2655 #include <sys/types.h>
2656 #include <sys/capability.h>
2657 main() {
2658  cap_t cap;
2659  cap_value_t vals[1];
2660  if (!(cap = cap_get_proc()))
2661    exit(1);
2662  vals[0] = CAP_CHOWN;
2663  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2664  cap_set_proc(cap);
2665  exit(0);
2667                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2668                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2669                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2670             ])
2672 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2673     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2674             [Whether POSIX capabilities are available])
2675 else
2676     LIBS=$ac_save_LIBS
2682 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2683 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2686 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2687 AC_TRY_COMPILE([#include <sys/types.h>
2688 #if defined(HAVE_RPC_RPC_H)
2689 #include <rpc/rpc.h>
2690 #endif],
2691 [int16 testvar;],
2692 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2693 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2694     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2697 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2698 AC_TRY_COMPILE([#include <sys/types.h>
2699 #if defined(HAVE_RPC_RPC_H)
2700 #include <rpc/rpc.h>
2701 #endif],
2702 [uint16 testvar;],
2703 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2704 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2705     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2708 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2709 AC_TRY_COMPILE([#include <sys/types.h>
2710 #if defined(HAVE_RPC_RPC_H)
2711 #include <rpc/rpc.h>
2712 #endif],
2713 [int32 testvar;],
2714 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2715 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2716     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2719 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2720 AC_TRY_COMPILE([#include <sys/types.h>
2721 #if defined(HAVE_RPC_RPC_H)
2722 #include <rpc/rpc.h>
2723 #endif],
2724 [uint32 testvar;],
2725 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2726 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2727     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2731 dnl Some systems (SCO) have a problem including
2732 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2733 dnl as a #define in <prot.h> and as part of an enum
2734 dnl in <rpc/rpc.h>.
2737 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2738 AC_TRY_COMPILE([#include <sys/types.h>
2739 #ifdef HAVE_SYS_SECURITY_H
2740 #include <sys/security.h>
2741 #include <prot.h>
2742 #endif  /* HAVE_SYS_SECURITY_H */
2743 #if defined(HAVE_RPC_RPC_H)
2744 #include <rpc/rpc.h>
2745 #endif],
2746 [int testvar;],
2747 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2748 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2749     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2752 AC_MSG_CHECKING([for test routines])
2753 AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
2754            AC_MSG_RESULT(yes),
2755            AC_MSG_ERROR([cant find test code. Aborting config]),
2756            AC_MSG_WARN([cannot run when cross-compiling]))
2758 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2759 AC_TRY_RUN([#include "${srcdir-.}/../tests/ftruncate.c"],
2760            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2761 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2762     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2765 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2766 AC_TRY_RUN([#include "${srcdir-.}/../tests/getgroups.c"],
2767            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2768 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2769     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2772 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2773 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2774 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2775 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2776 AC_CHECK_FUNCS(getpagesize)
2778 ################################################
2779 # look for a method of setting the effective uid
2780 seteuid=no;
2782 if test $seteuid = no; then
2783 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2784 AC_TRY_RUN([
2785 #define AUTOCONF_TEST 1
2786 #define USE_SETREUID 1
2787 #include "confdefs.h"
2788 #include "${srcdir-.}/lib/util_sec.c"],
2789            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2790 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2791     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2795 # we check for setresuid second as it conflicts with AIO on Linux. 
2796 # see http://samba.org/~tridge/junkcode/aio_uid.c
2797 if test $seteuid = no; then
2798 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2799 AC_TRY_RUN([
2800 #define AUTOCONF_TEST 1
2801 #define USE_SETRESUID 1
2802 #include "confdefs.h"
2803 #include "${srcdir-.}/lib/util_sec.c"],
2804            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2805 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2806     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2810 if test $seteuid = no; then
2811 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2812 AC_TRY_RUN([
2813 #define AUTOCONF_TEST 1
2814 #define USE_SETEUID 1
2815 #include "confdefs.h"
2816 #include "${srcdir-.}/lib/util_sec.c"],
2817            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2818 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2819     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2823 if test $seteuid = no; then
2824 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2825 AC_TRY_RUN([
2826 #define AUTOCONF_TEST 1
2827 #define USE_SETUIDX 1
2828 #include "confdefs.h"
2829 #include "${srcdir-.}/lib/util_sec.c"],
2830            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2831 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2832     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2836 AC_CACHE_CHECK([for the Darwin initgroups system call],
2837         samba_cv_DARWIN_INITGROUPS,
2838         AC_TRY_LINK([
2839 #include <sys/syscall.h>
2840 #include <unistd.h>
2841         ],
2842         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2843         samba_cv_DARWIN_INITGROUPS=yes,
2844         samba_cv_DARWIN_INITGROUPS=no)
2847 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2848     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2849         [Whether to use the Darwin-specific initgroups system call])
2852 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2853 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock.c"],
2854            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2855 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2856     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2859 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2860 AC_TRY_RUN([#include "${srcdir-.}/../tests/fcntl_lock64.c"],
2861            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2862 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2863     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2865 else
2868 dnl Don't check for 64 bit fcntl locking if we know that the
2869 dnl glibc2.1 broken check has succeeded.
2872   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2873   AC_TRY_RUN([
2874 #if defined(HAVE_UNISTD_H)
2875 #include <unistd.h>
2876 #endif
2877 #include <stdio.h>
2878 #include <stdlib.h>
2880 #ifdef HAVE_FCNTL_H
2881 #include <fcntl.h>
2882 #endif
2884 #ifdef HAVE_SYS_FCNTL_H
2885 #include <sys/fcntl.h>
2886 #endif
2887 main() { struct flock64 fl64;
2888 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2889 exit(0);
2890 #else
2891 exit(1);
2892 #endif
2894        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2896   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2897       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2898   fi
2901 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2902 AC_TRY_COMPILE([#include <sys/types.h>
2903 #include <sys/stat.h>
2904 #include <unistd.h>],
2905 [struct stat st;  st.st_blocks = 0;],
2906 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2907 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2908     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2911 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2912 AC_TRY_COMPILE([#include <sys/types.h>
2913 #include <sys/stat.h>
2914 #include <unistd.h>],
2915 [struct stat st;  st.st_blksize = 0;],
2916 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2917 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2918     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2921 AC_CACHE_CHECK([for st_flags in struct stat],
2922         samba_cv_HAVE_STAT_ST_FLAGS,
2923         [
2924             AC_TRY_COMPILE([#include <sys/types.h>
2925 #include <sys/stat.h>
2926 #include <unistd.h>],
2927             [struct stat st;  st.st_flags = 0;],
2928             samba_cv_HAVE_STAT_ST_FLAGS=yes,
2929             samba_cv_HAVE_STAT_ST_FLAGS=no,
2930             samba_cv_HAVE_STAT_ST_FLAGS=cross)
2931         ])
2933 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2934     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
2935                 [Whether the stat struct has a st_flags member])
2938 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2939 AC_TRY_COMPILE([
2940 #include <sys/types.h>
2941 #include <sys/acl.h>
2942 #if defined(HAVE_RPCSVC_NIS_H)
2943 #include <rpcsvc/nis.h>
2944 #endif],
2945 [int i;],
2946 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2947 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2948         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2951 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2952 AC_TRY_RUN([
2953 #include <stdio.h>
2954 #include <limits.h>
2955 #include <signal.h>
2957 void exit_on_core(int ignored) {
2958         exit(1);
2961 main() {
2962         char *newpath;
2963         signal(SIGSEGV, exit_on_core);
2964         newpath = realpath("/tmp", NULL);
2965         exit((newpath != NULL) ? 0 : 1);
2968 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2969 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2970     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2973 #################################################
2974 # check for AFS clear-text auth support
2975 samba_cv_WITH_AFS=no
2976 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2977 AC_ARG_WITH(afs,
2978 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
2979 [ case "$withval" in
2980   yes|auto)
2981     AC_MSG_RESULT($withval)
2982     samba_cv_WITH_AFS=$withval
2983     ;;
2984   *)
2985     AC_MSG_RESULT(no)
2986     ;;
2987   esac ],
2988   AC_MSG_RESULT(no)
2991 ####################################################
2992 # check for Linux-specific AFS fake-kaserver support
2993 samba_cv_WITH_FAKE_KASERVER=no
2994 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2995 AC_ARG_WITH(fake-kaserver,
2996 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
2997 [ case "$withval" in
2998   yes|auto)
2999     AC_MSG_RESULT($withval)
3000     samba_cv_WITH_FAKE_KASERVER=$withval
3001     ;;
3002   *)
3003     AC_MSG_RESULT(no)
3004     ;;
3005   esac ],
3006   AC_MSG_RESULT(no)
3009 #################################################
3010 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3011 if test x"$samba_cv_WITH_AFS" != x"no" ||
3012    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3014     # see if this box has the afs-headers in /usr/include/afs
3015     AC_MSG_CHECKING(for /usr/include/afs)
3016     if test -d /usr/include/afs; then
3017           CFLAGS="$CFLAGS -I/usr/include/afs"
3018           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3019           AC_MSG_RESULT(yes)
3020     else
3021       AC_MSG_RESULT(no)
3022     fi
3024     # check for afs.h
3025     have_afs_headers=no
3026     AC_CHECK_HEADERS(afs.h afs/afs.h)
3027     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3028         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3029            test x"$samba_cv_WITH_AFS" = x"auto"; then
3030                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3031         else
3032                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3033         fi
3034     else
3035         have_afs_headers=yes
3036     fi
3039 FAKE_KASERVER_OBJ=""
3040 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3041     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3042     FAKE_KASERVER_OBJ="utils/net_afs.o"
3044 AC_SUBST(FAKE_KASERVER_OBJ)
3046 #################################################
3047 # check whether to compile AFS/NT ACL mapping module
3048 samba_cv_WITH_VFS_AFSACL=no
3049 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3050 AC_ARG_WITH(vfs-afsacl,
3051 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3052 [ case "$withval" in
3053   yes|auto)
3054     AC_MSG_RESULT($withval)
3055     samba_cv_WITH_VFS_AFSACL=yes
3056     ;;
3057   *)
3058     AC_MSG_RESULT(no)
3059     ;;
3060   esac ],
3061   AC_MSG_RESULT(no)
3064 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3065    default_shared_modules="$default_shared_modules vfs_afsacl"
3067         
3068 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3069     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3072 #################################################
3073 # check for the DFS clear-text auth system
3074 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3075 AC_ARG_WITH(dfs,
3076 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3077 [ case "$withval" in
3078   yes)
3079     AC_MSG_RESULT(yes)
3080     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3081     ;;
3082   *)
3083     AC_MSG_RESULT(no)
3084     ;;
3085   esac ],
3086   AC_MSG_RESULT(no)
3089 ########################################################
3090 # Compile with LDAP support?
3092 with_ldap_support=auto
3093 AC_MSG_CHECKING([for LDAP support])
3095 AC_ARG_WITH(ldap,
3096 [AS_HELP_STRING([--with-ldap], [LDAP support (default yes)])],
3097 [ case "$withval" in
3098     yes|no)
3099         with_ldap_support=$withval
3100         ;;
3101   esac ])
3103 AC_MSG_RESULT($with_ldap_support)
3105 SMBLDAP=""
3106 AC_SUBST(SMBLDAP)
3107 SMBLDAPUTIL=""
3108 AC_SUBST(SMBLDAPUTIL)
3109 LDBLDAP=""
3110 AC_SUBST(LDBLDAP)
3112 if test x"$with_ldap_support" != x"no"; then
3114   ##################################################################
3115   # first test for ldap.h and lber.h
3116   # (ldap.h is required for this test)
3117   AC_CHECK_HEADERS(ldap.h lber.h)
3119   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3120         if test x"$with_ldap_support" = x"yes"; then
3121          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3122         else
3123          AC_MSG_WARN(ldap.h is needed for LDAP support)
3124         fi
3125         
3126         with_ldap_support=no
3127   fi
3129   ##################################################################
3130   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3131   # unsigned int in include/includes.h
3132   case $host_os in
3133         *hpux*)
3134          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3135          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3136         with_ldap_support=yes
3137         ;;
3138         *)
3139         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3140         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3141                 if test x"$with_ldap_support" = x"yes"; then
3142                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3143                 else
3144                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3145                 fi
3146                 with_ldap_support=no
3147         fi
3148         ;;
3149   esac
3152 if test x"$with_ldap_support" != x"no"; then
3153   ac_save_LIBS=$LIBS
3155   ##################################################################
3156   # we might need the lber lib on some systems. To avoid link errors
3157   # this test must be before the libldap test
3158   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3160   ########################################################
3161   # If ber_sockbuf_add_io() is available we can add
3162   # SASL wrapping hooks
3163   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3165   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3166                  AC_TRY_COMPILE([#include <ldap.h>],
3167                                 [int val = LDAP_OPT_SOCKBUF;],
3168                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3169                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3171   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3172           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3173         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3174   fi
3176   #######################################################
3177   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3178   # ldap logging and print it out in the samba logs
3179   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3180                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3181                  [AC_TRY_COMPILE([#include <lber.h>],
3182                                  [int val = LBER_OPT_LOG_PRINT_FN;],
3183                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3184                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3186   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3187         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3188                   [Support for LDAP/LBER logging interception])
3189   fi
3191   ########################################################
3192   # now see if we can find the ldap libs in standard paths
3193   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3195   ########################################################
3196   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3197   # Check found in pam_ldap 145.
3198   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3200   LIBS="$LIBS $LDAP_LIBS"
3201   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3202     AC_TRY_COMPILE([
3203         #include <lber.h>
3204         #include <ldap.h>],
3205         [ldap_set_rebind_proc(0, 0, 0);],
3206         [smb_ldap_cv_ldap_set_rebind_proc=3],
3207         [smb_ldap_cv_ldap_set_rebind_proc=2]
3208     )
3209   ])
3211   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3213   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3215   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3216     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3217     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3218     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3219     default_shared_modules="$default_shared_modules";
3220     SMBLDAP="lib/smbldap.o"
3221     SMBLDAPUTIL="lib/smbldap_util.o"
3222     with_ldap_support=yes
3223     AC_MSG_CHECKING(whether LDAP support is used)
3224     AC_MSG_RESULT(yes)
3225   else
3226     if test x"$with_ldap_support" = x"yes"; then
3227         AC_MSG_ERROR(libldap is needed for LDAP support)
3228     else
3229         AC_MSG_WARN(libldap is needed for LDAP support)
3230     fi
3232     LDAP_LIBS=""
3233     with_ldap_support=no
3234   fi
3235   LIBS=$ac_save_LIBS
3239 #################################################
3240 # active directory support
3242 with_ads_support=auto
3243 AC_MSG_CHECKING([for Active Directory and krb5 support])
3245 AC_ARG_WITH(ads,
3246 [AS_HELP_STRING([--with-ads], [Active Directory support (default auto)])],
3247 [ case "$withval" in
3248     yes|no)
3249         with_ads_support="$withval"
3250         ;;
3251   esac ])
3253 AC_MSG_RESULT($with_ads_support)
3255 FOUND_KRB5=no
3256 KRB5_LIBS=""
3258 if test x"$with_ldap_support" != x"yes"; then
3260     if test x"$with_ads_support" = x"yes"; then
3261         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3262     elif test x"$with_ads_support" = x"auto"; then
3263         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3264         with_ads_support=no
3265     fi
3267 else
3269     # Check to see whether there is enough LDAP functionality to be able
3270     # to build AD support.
3272 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3273 case "$host_os" in
3274         *hpux*)
3275     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3277     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3278         if test x"$with_ads_support" = x"yes"; then
3279             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3280         elif test x"$with_ads_support" = x"auto"; then
3281             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3282             with_ads_support=no
3283         fi
3284     fi
3285     ;;
3286         *)
3287     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3289     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3290         if test x"$with_ads_support" = x"yes"; then
3291             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3292         elif test x"$with_ads_support" = x"auto"; then
3293             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3294             with_ads_support=no
3295         fi
3296     fi
3297     ;;
3298 esac
3301     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3303     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3304         if test x"$with_ads_support" = x"yes"; then
3305             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3306         elif test x"$with_ads_support" = x"auto"; then
3307             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3308             with_ads_support=no
3309         fi
3310     fi
3314 if test x"$with_ads_support" != x"no"; then
3316   # Do no harm to the values of CFLAGS and LIBS while testing for
3317   # Kerberos support.
3319   if test x$FOUND_KRB5 = x"no"; then
3320     #################################################
3321     # check for location of Kerberos 5 install
3322     AC_MSG_CHECKING(for kerberos 5 install path)
3323     AC_ARG_WITH(krb5,
3324     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3325     [ case "$withval" in
3326       no)
3327         AC_MSG_RESULT(no krb5-path given)
3328         ;;
3329       yes)
3330         AC_MSG_RESULT(/usr)
3331         FOUND_KRB5=yes
3332         ;;
3333       *)
3334         AC_MSG_RESULT($withval)
3335         KRB5_CFLAGS="-I$withval/include"
3336         KRB5_CPPFLAGS="-I$withval/include"
3337         KRB5_LDFLAGS="-L$withval/lib"
3338         FOUND_KRB5=yes
3339         if test -x "$withval/bin/krb5-config"; then
3340                 KRB5CONFIG=$withval/bin/krb5-config
3341         fi
3342         ;;
3343       esac ],
3344       AC_MSG_RESULT(no krb5-path given)
3345     )
3346   fi
3348   #################################################
3349   # check for krb5-config from recent MIT and Heimdal kerberos 5
3350   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3351   AC_MSG_CHECKING(for working krb5-config)
3352   if test -x "$KRB5CONFIG"; then
3353     ac_save_CFLAGS=$CFLAGS
3354     CFLAGS="";export CFLAGS
3355     ac_save_LDFLAGS=$LDFLAGS
3356     LDFLAGS="";export LDFLAGS
3357     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3358     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3359     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3360     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3361     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3362     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3363     FOUND_KRB5=yes
3364     AC_MSG_RESULT(yes)
3365   else
3366     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3367   fi
3369   if test x$FOUND_KRB5 = x"no"; then
3370     #################################################
3371     # see if this box has the SuSE location for the heimdal krb implementation
3372     AC_MSG_CHECKING(for /usr/include/heimdal)
3373     if test -d /usr/include/heimdal; then
3374       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3375           KRB5_CFLAGS="-I/usr/include/heimdal"
3376           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3377           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3378           FOUND_KRB5=yes
3379           AC_MSG_RESULT(yes)
3380       else
3381           KRB5_CFLAGS="-I/usr/include/heimdal"
3382           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3383           FOUND_KRB5=yes
3384           AC_MSG_RESULT(yes)
3385       fi
3386     else
3387       AC_MSG_RESULT(no)
3388     fi
3389   fi
3391   if test x$FOUND_KRB5 = x"no"; then
3392     #################################################
3393     # see if this box has the RedHat location for kerberos
3394     AC_MSG_CHECKING(for /usr/kerberos)
3395     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3396       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3397       KRB5_CFLAGS="-I/usr/kerberos/include"
3398       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3399       FOUND_KRB5=yes
3400       AC_MSG_RESULT(yes)
3401     else
3402       AC_MSG_RESULT(no)
3403     fi
3404   fi
3406   if test x$FOUND_KRB5 = x"no"; then
3407     #################################################
3408     # see if this box has the OpenBSD location for heimdal krb5
3409     AC_MSG_CHECKING(for /usr/include/kerberosV)
3410     if test -d /usr/include/kerberosV; then
3411       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3412       KRB5_LIBS="-lcrypto"
3413       FOUND_KRB5=yes
3414       AC_MSG_RESULT(yes)
3415     else
3416       AC_MSG_RESULT(no)
3417     fi
3418   fi
3420   ac_save_CFLAGS=$CFLAGS
3421   ac_save_CPPFLAGS=$CPPFLAGS
3422   ac_save_LDFLAGS=$LDFLAGS
3424   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3425   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3426   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3428   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3430   # now check for krb5.h. Some systems have the libraries without the headers!
3431   # note that this check is done here to allow for different kerberos
3432   # include paths
3433   AC_CHECK_HEADERS(krb5.h)
3435   if test x"$ac_cv_header_krb5_h" = x"no"; then
3437     # Give a warning if AD support was not explicitly requested,
3438     # i.e with_ads_support = auto, otherwise die with an error.
3440     if test x"$with_ads_support" = x"yes"; then
3441       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3442     else
3443       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3444     fi
3446     # Turn off AD support and restore CFLAGS and LIBS variables
3448     with_ads_support="no"
3450     CFLAGS=$ac_save_CFLAGS
3451     CPPFLAGS=$ac_save_CPPFLAGS
3452     LDFLAGS=$ac_save_LDFLAGS
3453   fi
3454   AC_CHECK_HEADERS(krb5/locate_plugin.h)
3455   if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3456         WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3457         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3458   fi
3461 # Now we have determined whether we really want ADS support
3462 use_ads=no
3463 if test x"$with_ads_support" != x"no"; then
3464   use_ads=yes
3465   have_gssapi=no
3466   ac_save_LIBS=$LIBS
3468   # now check for gssapi headers.  This is also done here to allow for
3469   # different kerberos include paths
3470   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3472   ##################################################################
3473   # we might need the k5crypto and com_err libraries on some systems
3474   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3475   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3477   # Heimdal checks.
3478   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3479   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3480   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3482   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3483   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3485   ########################################################
3486   # now see if we can find the krb5 libs in standard paths
3487   # or as specified above
3488   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3489   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3491   ########################################################
3492   # now see if we can find the gssapi libs in standard paths
3493   if test x"$have_gssapi" != x"yes"; then
3494      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3495   fi
3497   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3498   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3499   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3500   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3501   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3502   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3503   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3504   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3505   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3506   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3507   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3508   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3509   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3510   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3511   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3512   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3513   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3514   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3515   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3516   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3517   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3518   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3519   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3520   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3521   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3522   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3523   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3524   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3525   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3526   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3527   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3528   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3529   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3530   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3531   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3532   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3533   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3534   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3535   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3536   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3537   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3538   AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3539   AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3541   LIBS="$KRB5_LIBS $LIBS"
3543   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3544         smb_krb5_cv_ticket_has_keyinfo,
3545         [
3546             AC_TRY_COMPILE(
3547             [
3548                 #include <krb5.h>
3549             ],
3550             [
3551                 krb5_ticket ticket;
3552                 krb5_kvno kvno;
3553                 krb5_enctype enctype;
3555                 enctype = ticket.enc_part.enctype;
3556                 kvno = ticket.enc_part.kvno;
3557             ],
3558             [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3559             [ smb_krb5_cv_ticket_has_keyinfo=no ])
3560         ])
3562   if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3563         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3564             [Whether the krb5_ticket structure contains the kvno and enctype])
3565   fi
3567   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3568           smb_krb5_cv_creds_opt_free_context,
3569           [
3570                 AC_TRY_COMPILE([
3571                     #include <krb5.h>],
3572                     [
3573                         krb5_context ctx;
3574                         krb5_get_init_creds_opt *opt = NULL;
3575                         krb5_get_init_creds_opt_free(ctx, opt);
3576                     ],
3577                     [smb_krb5_cv_creds_opt_free_context=yes],
3578                     [smb_krb5_cv_creds_opt_free_context=no]
3579                 )
3580           ])
3582   if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3583         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3584             [Whether krb5_get_init_creds_opt_free takes a context argument])
3585   fi
3587   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3588     AC_TRY_COMPILE([
3589         #include <krb5.h>],
3590         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3591         [smb_krb5_cv_verify_checksum=7],
3592         [smb_krb5_cv_verify_checksum=6],
3593     )
3594   ])
3595   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3597   AC_CACHE_CHECK([for checksum in krb5_checksum],
3598                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3599     AC_TRY_COMPILE([#include <krb5.h>],
3600       [krb5_checksum cksum; cksum.checksum.length = 0;],
3601       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3602       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3604   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3605     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3606                [Whether the krb5_checksum struct has a checksum property])
3607   fi
3609   AC_CACHE_CHECK([for etype in EncryptedData],
3610                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3611     AC_TRY_COMPILE([#include <krb5.h>],
3612       [EncryptedData edata; edata.etype = 0;],
3613       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3614       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3616   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3617     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3618                [Whether the EncryptedData struct has a etype property])
3619   fi
3621   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3622                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3623     AC_TRY_COMPILE([#include <krb5.h>],
3624       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3625       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3626       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3628   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3629     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3630                [Whether the krb5_ap_req struct has a ticket pointer])
3631   fi
3633   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3634                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3635     AC_TRY_COMPILE([#include <krb5.h>],
3636       [krb5_error err; err.e_data = NULL;],
3637       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3638       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3640   if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3641     AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3642                [Whether the krb5_error struct has a e_data pointer])
3643   fi
3645   AC_CACHE_CHECK([for krb5_crypto type],
3646                 samba_cv_HAVE_KRB5_CRYPTO,[
3647     AC_TRY_COMPILE([#include <krb5.h>],
3648       [krb5_crypto crypto;],
3649       samba_cv_HAVE_KRB5_CRYPTO=yes,
3650       samba_cv_HAVE_KRB5_CRYPTO=no)])
3652   if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3653     AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3654                [Whether the type krb5_crypto exists])
3655   fi
3657   AC_CACHE_CHECK([for krb5_encrypt_block type],
3658                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3659     AC_TRY_COMPILE([#include <krb5.h>],
3660       [krb5_encrypt_block block;],
3661       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3662       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3664   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3665     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3666                [Whether the type krb5_encrypt_block exists])
3667   fi
3669   AC_CACHE_CHECK([for addrtype in krb5_address],
3670                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3671     AC_TRY_COMPILE([#include <krb5.h>],
3672       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3673       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3674       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3676   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3677     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3678                [Whether the krb5_address struct has a addrtype property])
3679   fi
3681   AC_CACHE_CHECK([for addr_type in krb5_address],
3682                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3683     AC_TRY_COMPILE([#include <krb5.h>],
3684       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3685       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3686       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3688   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3689     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3690               [Whether the krb5_address struct has a addr_type property])
3691   fi
3693   AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3694                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3695                  [AC_TRY_COMPILE([#include <krb5.h>],
3696     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3697     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3699   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3700     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3701               [Whether the krb5_ticket struct has a enc_part2 property])
3702   fi
3704   AC_CACHE_CHECK([for keyblock in krb5_creds],
3705                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3706     AC_TRY_COMPILE([#include <krb5.h>],
3707       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3708       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3709       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3711   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3712     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3713               [Whether the krb5_creds struct has a keyblock property])
3714   fi
3716   AC_CACHE_CHECK([for session in krb5_creds],
3717                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3718     AC_TRY_COMPILE([#include <krb5.h>],
3719       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3720       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3721       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3723   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3724     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3725               [Whether the krb5_creds struct has a session property])
3726   fi
3728   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3729                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3730     AC_TRY_COMPILE([#include <krb5.h>],
3731       [krb5_keyblock key; key.keyvalue.data = NULL;],
3732       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3733       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3735   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3736     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3737               [Whether the krb5_keyblock struct has a keyvalue property])
3738   fi
3740   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3741                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3742     AC_TRY_COMPILE([#include <krb5.h>],
3743       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3744       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3745       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3746   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3747                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3748     AC_TRY_COMPILE([#include <krb5.h>],
3749       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3750       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3751       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3752 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3753 # w.r.t. arcfour and windows, so we must not enable it here
3754   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3755           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3756     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3757               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3758   fi
3760   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3761                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3762     AC_TRY_COMPILE([#include <krb5.h>],
3763       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3764       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3765       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3767   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3768     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3769               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3770   fi
3772   AC_CACHE_CHECK([for KV5M_KEYTAB],
3773                  samba_cv_HAVE_KV5M_KEYTAB,[
3774     AC_TRY_COMPILE([#include <krb5.h>],
3775       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3776       samba_cv_HAVE_KV5M_KEYTAB=yes,
3777       samba_cv_HAVE_KV5M_KEYTAB=no)])
3779   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3780       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3781              [Whether the KV5M_KEYTAB option is available])
3782   fi
3784   AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3785                  samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3786     AC_TRY_COMPILE([#include <krb5.h>],
3787       [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3788       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3789       samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3791   if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3792     AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3793               [Whether KRB5_KU_OTHER_CKSUM is available])
3794   fi
3796   AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3797                  samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3798     AC_TRY_COMPILE([#include <krb5.h>],
3799       [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3800       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3801       samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3803   if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3804     AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3805               [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3806   fi
3808   AC_CACHE_CHECK([for the krb5_princ_component macro],
3809                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3810     AC_TRY_LINK([#include <krb5.h>],
3811       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3812       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3813       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3815   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3816     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3817                [Whether krb5_princ_component is available])
3818   fi
3820   AC_CACHE_CHECK([for key in krb5_keytab_entry],
3821                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3822     AC_TRY_COMPILE([#include <krb5.h>],
3823       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3824       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3825       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3827   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3828     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3829               [Whether krb5_keytab_entry has key member])
3830   fi
3832   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3833                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3834     AC_TRY_COMPILE([#include <krb5.h>],
3835       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3836       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3837       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3839   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3840     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3841               [Whether krb5_keytab_entry has keyblock member])
3842   fi
3844   AC_CACHE_CHECK([for magic in krb5_address],
3845                  samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3846     AC_TRY_COMPILE([#include <krb5.h>],
3847       [krb5_address addr; addr.magic = 0;],
3848       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3849       samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3851   if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3852     AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3853               [Whether the krb5_address struct has a magic property])
3854   fi
3856   AC_CACHE_CHECK([for WRFILE: keytab support],
3857                 samba_cv_HAVE_WRFILE_KEYTAB,[
3858     AC_TRY_RUN([
3859 #include<krb5.h>
3860   main()
3861   {
3862     krb5_context context;
3863     krb5_keytab keytab;
3865     krb5_init_context(&context);
3866     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3867   }],
3868   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3869   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3871   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3872       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3873                [Whether the WRFILE:-keytab is supported])
3874   fi
3876   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3877                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3878     AC_TRY_COMPILE([#include <krb5.h>],
3879     [
3880     krb5_context context;
3881     krb5_principal principal;
3882     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3883     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3884     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3886   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3887     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3888               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3889   fi
3891   AC_CACHE_CHECK([for krb5_addresses type],
3892                 samba_cv_HAVE_KRB5_ADDRESSES,[
3893     AC_TRY_COMPILE([#include <krb5.h>],
3894       [krb5_addresses addr;],
3895       samba_cv_HAVE_KRB5_ADDRESSES=yes,
3896       samba_cv_HAVE_KRB5_ADDRESSES=no)])
3898   if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3899     AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3900                [Whether the type krb5_addresses type exists])
3901   fi
3903   AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
3904                 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
3905     AC_TRY_COMPILE([#include <krb5.h>],
3906     [
3907     krb5_mk_error(0,0,0);],
3908     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
3909     samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
3911   if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
3912     AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
3913               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
3914   fi
3916   if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
3917     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
3918         smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
3919         AC_TRY_RUN_STRICT([
3920                 #include <stdlib.h>
3921                 #include <krb5.h>
3922                 int main(void) {
3923                         krb5_context context = NULL;
3924                         char *str = NULL;
3925                         krb5_enctype_to_string(context, 1, &str);
3926                         if (str) free (str); 
3927                         return 0;
3928                 }
3929                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3930                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
3931                 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
3933     if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
3934       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
3935                 [whether krb5_enctype_to_string takes krb5_context argument])
3936     fi
3938     AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
3939         smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
3940         AC_TRY_RUN_STRICT([
3941                 #include <krb5.h>
3942                 int main(void) {
3943                         char buf[256];
3944                         krb5_enctype_to_string(1, buf, 256);
3945                         return 0;
3946                 }
3947                 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3948                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
3949                 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
3951     if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
3952       AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
3953                 [whether krb5_enctype_to_string takes size_t argument])
3954     fi
3955   fi
3957   AC_CACHE_CHECK([for krb5_principal_get_realm],
3958                 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
3959     AC_TRY_LINK([#include <krb5.h>],
3960       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
3961       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
3962       samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
3964   if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
3965     AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
3966                [Whether the function krb5_principal_get_realm is defined])
3967   fi
3969   AC_CACHE_CHECK([for krb5_princ_realm],
3970                 samba_cv_HAVE_KRB5_PRINC_REALM,[
3971     AC_TRY_LINK([#include <krb5.h>],
3972       [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
3973       samba_cv_HAVE_KRB5_PRINC_REALM=yes,
3974       samba_cv_HAVE_KRB5_PRINC_REALM=no)])
3976   if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
3977     AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
3978                [Whether the macro krb5_princ_realm is defined])
3979   fi
3981   #
3982   #
3983   # Now the decisions whether we can support krb5
3984   #
3985   # NOTE: all tests should be done before this block!
3986   #
3987   #
3988   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
3989     AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
3990     use_ads=no
3991   fi
3993   if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
3994           x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
3995   then
3996     AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
3997     use_ads=no
3998   fi
4000   if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4001           x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4002   then
4003     AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4004     use_ads=no
4005   fi
4007   if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4008           x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4009   then
4010     AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4011     use_ads=no
4012   fi
4014   if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4015           x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4016   then
4017     AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4018     use_ads=no
4019   fi
4021   if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
4023       # We only need the following functions if we can't get the enctype
4024       # and kvno out of the ticket directly (ie. on Heimdal).
4026       if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4027       then
4028         AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4029         use_ads=no
4030       fi
4032       if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4033       then
4034         AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4035         use_ads=no
4036       fi
4038   fi
4040   if test x"$use_ads" = x"yes"; then
4041     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4042     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4043     if test x"$have_gssapi" = x"yes"; then
4044       AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4045     fi
4046   else
4047     if test x"$with_ads_support" = x"yes"; then
4048         AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4049     else
4050         AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4051     fi
4052     AC_REMOVE_DEFINE(HAVE_KRB5_H)
4053     AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4054     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4055     AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4056     KRB5_LIBS=""
4057     with_ads_support=no
4058   fi
4059   AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4060   AC_MSG_RESULT([$use_ads])
4062 LIBS="$ac_save_LIBS"
4065 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4066 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4069 ########################################################
4070 # Compile with DNS Updates support?
4072 with_dnsupdate_support=no
4073 AC_MSG_CHECKING([whether to enable DNS Updates support])
4075 AC_ARG_WITH(dnsupdate,
4076 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default no)])],
4077 [ case "$withval" in
4078     yes|no)
4079         with_dnsupdate_support=$withval
4080         ;;
4081   esac ])
4083 AC_MSG_RESULT($with_dnsupdate_support)
4085 if test x"$with_dnsupdate_support" != x"no"; then
4087   ################################################################
4088   # first test for Active Directory support being enabled
4089   #if test x"$with_ads_support" = x"no"; then
4090   #             AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4091   #             with_dnsupdate_support=no
4092   #fi           
4093   ##################################################################
4094   # then test for uuid.h (necessary to generate unique DNS keynames
4095   # (uuid.h is required for this test)
4096   AC_CHECK_HEADERS(uuid/uuid.h)
4098   if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4099         if test x"$with_dnsupdate_support" = x"yes"; then
4100          AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4101         else
4102          AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4103         fi
4104         with_dnsupdate_support=no
4105   fi
4108 if test x"$with_dnsupdate_support" != x"no"; then
4110   ########################################################
4111   # Now see if we can find the uuid libs in standard paths
4112   # On some systems, the uuid API is in libc, so we have to
4113   # be careful not to insert a spurious -luuid.
4115   UUID_LIBS=""
4116   AC_LIBTESTFUNC(uuid, uuid_generate,
4117           [
4118             case " $LIBS " in
4119                 *\ -luuid\ *)
4120                 UUID_LIBS="-luuid"
4121                 SMB_REMOVE_LIB(uuid)
4122                 ;;
4123             esac
4125             with_dnsupdate_support=yes
4126             AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4127         ],
4128         [
4129             if test x"$with_dnsupdate_support" = x"yes"; then
4130                 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4131             else
4132                 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4133             fi
4134             with_dnsupdate_support=no
4135         ])
4138 #################################################
4139 # check for automount support
4140 AC_MSG_CHECKING(whether to use automount)
4141 AC_ARG_WITH(automount,
4142 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4143 [ case "$withval" in
4144   yes)
4145     AC_MSG_RESULT(yes)
4146     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4147     ;;
4148   *)
4149     AC_MSG_RESULT(no)
4150     ;;
4151   esac ],
4152   AC_MSG_RESULT(no)
4155 #################################################
4156 # check for mount- and umount.cifs support
4157 CIFSMOUNT_PROGS=""
4158 INSTALL_CIFSMOUNT=""
4159 UNINSTALL_CIFSMOUNT=""
4160 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4161 AC_ARG_WITH(cifsmount,
4162 [AS_HELP_STRING([--with-cifsmount], [Include mount.cifs and umount.cifs (Linux only) support (default=yes)])],
4163 [ case "$withval" in
4164   no)
4165         AC_MSG_RESULT(no)
4166         ;;
4167   *)
4168         case "$host_os" in
4169         *linux*)
4170                 AC_MSG_RESULT(yes)
4171                 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4172                 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4173                 INSTALL_CIFSMOUNT="installcifsmount"
4174                 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4175                 ;;
4176         *)
4177                 AC_MSG_ERROR(not on a linux system!)
4178                 ;;
4179         esac
4180     ;;
4181   esac ],
4182 [ case "$host_os" in
4183   *linux*)
4184         AC_MSG_RESULT(yes)
4185         AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4186         CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4187         INSTALL_CIFSMOUNT="installcifsmount"
4188         UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4189         ;;
4190   *)
4191         AC_MSG_RESULT(no)
4192         ;;
4193   esac ]
4196 #################################################
4197 # check for cifs.upcall support
4198 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4199 CIFSUPCALL_PROGS=""
4200 INSTALL_CIFSUPCALL=""
4201 UNINSTALL_CIFSUPCALL=""
4202 AC_MSG_CHECKING(whether to build cifs.upcall)
4203 AC_ARG_WITH(cifsupcall,
4204 [AS_HELP_STRING([--with-cifsupcall], [Include cifs.upcall (Linux only) support (default=yes)])],
4205 [ case "$withval" in
4206   no)
4207         AC_MSG_RESULT(no)
4208         ;;
4209   *)
4210         case "$host_os" in
4211         *linux*)
4212                 if test x"$use_ads" != x"yes"; then
4213                         AC_MSG_ERROR(ADS support should be enabled for building cifs.upcall)
4214                 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4215                         AC_MSG_ERROR(keyutils package is required for cifs.upcall)
4216                 else
4217                         AC_MSG_RESULT(yes)
4218                         AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4219                         CIFSUPCALL_PROGS="bin/cifs.upcall"
4220                         INSTALL_CIFSUPCALL="installcifsupcall"
4221                         UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4222                 fi
4223                 ;;
4224         *)
4225                 AC_MSG_ERROR(not on a linux system!)
4226                 ;;
4227         esac
4228     ;;
4229   esac ],
4230 [ case "$host_os" in
4231   *linux*)
4232         if test x"$use_ads" != x"yes"; then
4233                 AC_MSG_WARN(ADS support should be enabled for building cifs.upcall)
4234         elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4235                 AC_MSG_WARN(keyutils package is required for cifs.upcall)
4236         else
4237                 AC_MSG_RESULT(yes)
4238                 AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4239                 CIFSUPCALL_PROGS="bin/cifs.upcall"
4240                 INSTALL_CIFSUPCALL="installcifsupcall"
4241                 UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4242         fi
4243         ;;
4244   *)
4245         AC_MSG_RESULT(no)
4246         ;;
4247   esac ]
4251 #################################################
4252 # Check for a PAM clear-text auth, accounts, password
4253 # and session support. Most PAM implementations keep their
4254 # headers in /usr/include/security. Darwin keeps its in
4255 # /usr/include/pam.
4257 with_pam_for_crypt=no
4258 try_pam=no
4259 AC_MSG_CHECKING(whether to try PAM support)
4260 AC_ARG_WITH(pam,
4261 [AS_HELP_STRING([--with-pam], [Include PAM support (default=no)])],
4262 [ case "$withval" in
4263   yes|no)
4264     try_pam=$withval
4265     ;;
4266   esac
4268 AC_MSG_RESULT([$try_pam])
4270 use_pam=no
4271 create_pam_modules=no
4272 if test x"${try_pam}" != x"no";then
4273         use_pam=yes
4274         create_pam_modules=yes
4276         # Most systems have PAM headers in /usr/include/security, but Darwin
4277         # has them in /usr/include/pam.
4278         AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4279         if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4280                 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4281                 if test x"${try_pam}" = x"yes";then
4282                         AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4283                 fi
4284                 use_pam=no
4285                 create_pam_modules=no
4286         fi
4288         AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4289         if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4290                 if test x"${try_pam}" = x"yes";then
4291                         AC_MSG_ERROR([--with-pam=yes but libpam not found])
4292                 fi
4293                 use_pam=no
4294                 create_pam_modules=no
4295         fi
4297         AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4298                 #if HAVE_SECURITY_PAM_APPL_H
4299                 #include <security/pam_appl.h>
4300                 #endif
4301                 #if HAVE_PAM_PAM_APPL_H
4302                 #include <pam/pam_appl.h>
4303                 #endif
4304         ]])
4305         if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4306                 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4307                 if test x"${try_pam}" = x"yes";then
4308                         AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4309        fi
4310                 create_pam_modules=no
4311     fi
4313         if test x"$use_pam" = x"yes"; then
4314     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4315                 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4316                 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4317     with_pam_for_crypt=yes
4319                 if test x"$create_pam_modules" = x"yes"; then
4320                         AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4321                         # this checks are optional,
4322                         # we don't care about the results here
4323                         AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4324                         AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4325                         AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4326                 else
4327                         AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])          
4328                 fi
4329         fi
4330         AC_MSG_CHECKING(whether to use PAM support)
4331         AC_MSG_RESULT([$use_pam])
4333         AC_MSG_CHECKING(whether to have PAM MODULES support)
4334         AC_MSG_RESULT([$create_pam_modules])
4335 fi # try_pam != no
4337 #################################################
4338 # check for pam_smbpass support
4339 PAM_MODULES=""
4340 INSTALL_PAM_MODULES=""
4341 UNINSTALL_PAM_MODULES=""
4342 AC_MSG_CHECKING(whether to use pam_smbpass)
4343 AC_ARG_WITH(pam_smbpass,
4344 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=no)])],
4345 [ case "$withval" in
4346   yes)
4347     AC_MSG_RESULT(yes)
4349        # Conditions under which pam_smbpass should not be built.
4351        if test x"$BLDSHARED" != x"true"; then
4352           AC_MSG_ERROR([No support for shared modules])
4353        elif test x"$create_pam_modules" != x"yes"; then
4354           AC_MSG_ERROR([No support for PAM MODULES])
4355        else
4356           PAM_MODULES="pam_smbpass"
4357           INSTALL_PAM_MODULES="installpammodules"
4358           UNINSTALL_PAM_MODULES="uninstallpammodules"
4359        fi
4360     ;;
4361   *)
4362     AC_MSG_RESULT(no)
4363     ;;
4364   esac ],
4365   AC_MSG_RESULT(no)
4370 ## moved after the check for -lcrypt in order to
4371 ## ensure that the necessary libraries are included
4372 ## check checking for truncated salt.  Wrapped by the
4373 ## $with_pam_for_crypt variable as above   --jerry
4375 if test $with_pam_for_crypt = no; then
4376 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4377 crypt_LIBS="$LIBS"
4378 LIBS="$AUTH_LIBS $LIBS"
4379 AC_TRY_RUN([#include "${srcdir-.}/../tests/crypttest.c"],
4380         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4381 LIBS="$crypt_LIBS"])
4382 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4383         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4387 #################################################
4388 # check for a NISPLUS_HOME support
4389 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4390 AC_ARG_WITH(nisplus-home,
4391 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4392 [ case "$withval" in
4393   yes)
4394     AC_MSG_RESULT(yes)
4395     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4396     ;;
4397   *)
4398     AC_MSG_RESULT(no)
4399     ;;
4400   esac ],
4401   AC_MSG_RESULT(no)
4404 #################################################
4405 # check for syslog logging
4406 AC_MSG_CHECKING(whether to use syslog logging)
4407 AC_ARG_WITH(syslog,
4408 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4409 [ case "$withval" in
4410   yes)
4411     AC_MSG_RESULT(yes)
4412     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4413     ;;
4414   *)
4415     AC_MSG_RESULT(no)
4416     ;;
4417   esac ],
4418   AC_MSG_RESULT(no)
4421 #################################################
4422 # check for custom syslog facility
4423 AC_MSG_CHECKING(whether to use a custom syslog facility)
4424 AC_ARG_WITH(syslog-facility,
4425 [AS_HELP_STRING([--with-syslog-facility], [Use a custom syslog facility (default=none)])],
4427   if test "$withval" = "no" ; then
4428     AC_MSG_ERROR([argument to --with-syslog-facility must be a string])
4429   else
4430      if test "$withval" != "yes" ; then
4431         syslog_facility="$withval"
4432         AC_DEFINE_UNQUOTED(SYSLOG_FACILITY,$syslog_facility, [syslog facility to log to])
4433      fi
4434   fi
4437 #################################################
4438 # check for experimental disk-quotas support
4440 samba_cv_WITH_QUOTAS=auto
4441 samba_cv_TRY_QUOTAS=no
4442 samba_cv_RUN_QUOTA_TESTS=auto
4443 samba_cv_WITH_SYS_QUOTAS=auto
4444 samba_cv_TRY_SYS_QUOTAS=auto
4445 samba_cv_SYSQUOTA_FOUND=no
4447 AC_MSG_CHECKING(whether to try disk-quotas support)
4448 AC_ARG_WITH(quotas,
4449 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4450 [ case "$withval" in
4451   yes)
4452     AC_MSG_RESULT(yes)
4453     samba_cv_WITH_QUOTAS=yes
4454     samba_cv_TRY_QUOTAS=yes
4455     samba_cv_RUN_QUOTA_TESTS=yes
4456     #set sys quotas to auto in this case
4457     samba_cv_TRY_SYS_QUOTAS=auto
4458     ;;
4459   auto)
4460     AC_MSG_RESULT(auto)
4461     samba_cv_WITH_QUOTAS=auto
4462     samba_cv_TRY_QUOTAS=auto
4463     samba_cv_RUN_QUOTA_TESTS=auto
4464     #set sys quotas to auto in this case
4465     samba_cv_TRY_SYS_QUOTAS=auto
4466     ;;
4467   no)
4468     AC_MSG_RESULT(no)
4469     samba_cv_WITH_QUOTAS=no
4470     samba_cv_TRY_QUOTAS=no
4471     samba_cv_RUN_QUOTA_TESTS=no
4472     ;;
4473   *)
4474     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4475     ;;
4476   esac ],
4477   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4480 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4481 AC_ARG_WITH(sys-quotas,
4482 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4483 [ case "$withval" in
4484   yes)
4485     AC_MSG_RESULT(yes)
4486     samba_cv_WITH_SYS_QUOTAS=yes
4487     samba_cv_TRY_SYS_QUOTAS=yes
4488     samba_cv_RUN_QUOTA_TESTS=yes
4489     ;;
4490   auto)
4491     AC_MSG_RESULT(auto)
4492     samba_cv_WITH_SYS_QUOTAS=auto
4493     samba_cv_TRY_SYS_QUOTAS=auto
4494     samba_cv_RUN_QUOTA_TESTS=auto
4495     ;;
4496   no)
4497     AC_MSG_RESULT(no)
4498     samba_cv_WITH_SYS_QUOTAS=no
4499     samba_cv_TRY_SYS_QUOTAS=no
4500     ;;
4501   *)
4502     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4503     ;;
4504   esac ],
4505   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4508 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4509 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4510   case "$host_os" in
4511         *linux*)
4512             AC_MSG_RESULT(yes)
4513             samba_cv_TRY_SYS_QUOTAS=yes
4514             samba_cv_RUN_QUOTA_TESTS=yes
4515             ;;
4516         *)
4517             AC_MSG_RESULT(no)
4518             samba_cv_TRY_SYS_QUOTAS=no
4519             ;;
4520   esac
4523 #############################################
4524 # only check for quota stuff if --with-quotas
4525 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4527 case "$host_os" in
4528         # on linux we didn't need to test we have builtin support
4529         *linux*)
4530             samba_cv_SYSQUOTA_FOUND=yes
4531             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4532             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4533             AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4534             AC_MSG_RESULT(yes)
4536             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4537             samba_cv_found_xfs_header=yes
4538             AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4539             AC_MSG_RESULT(yes)
4540             ;;
4541         *solaris*)
4542             # need to set this define when using static linking (BUG 1473)
4543             CPPFLAGS="$CPPFLAGS -DSUNOS5"
4544             ;;
4545         *)
4546             ;;
4547 esac
4549 # some broken header files need this
4550 AC_CHECK_HEADER(asm/types.h,[
4551             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4552             AC_ADD_INCLUDE(<asm/types.h>)
4553             ])
4555 # For quotas on Veritas VxFS filesystems
4556 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4558 # For quotas on Linux XFS filesystems
4559 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4561 # For sys/quota.h and linux/quota.h
4562 AC_CHECK_HEADERS(sys/quota.h)
4564 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4565 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4566 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4567 AC_TRY_COMPILE([
4568 #include "confdefs.h"
4569 #ifdef HAVE_SYS_TYPES_H
4570 #include <sys/types.h>
4571 #endif
4572 #ifdef HAVE_ASM_TYPES_H
4573 #include <asm/types.h>
4574 #endif
4575 #include <sys/quota.h>
4576 ],[int i = Q_XGETQUOTA;],
4577 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4578 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4579         samba_cv_found_xfs_header=yes
4583 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4584 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4585 AC_TRY_COMPILE([
4586 #include "confdefs.h"
4587 #ifdef HAVE_SYS_QUOTA_H
4588 #include <sys/quota.h>
4589 #endif
4591 struct dqblk D;
4592 D.dqb_fsoftlimit = 0;],
4593 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4594 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4595         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4598 ##################
4599 # look for a working quota system
4601 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4602 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4603 AC_TRY_RUN_STRICT([
4604 #define HAVE_QUOTACTL_4A 1
4605 #define AUTOCONF_TEST 1
4606 #include "confdefs.h"
4607 #include "${srcdir-.}/../tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4608            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4609 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4610     samba_cv_SYSQUOTA_FOUND=yes;
4611     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4612     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4616 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4617 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4618 AC_TRY_RUN_STRICT([
4619 #define HAVE_QUOTACTL_4B 1
4620 #define AUTOCONF_TEST 1
4621 #include "confdefs.h"
4622 #include "${srcdir-.}/../tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4623            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4624 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4625     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4626     samba_cv_SYSQUOTA_FOUND=yes;
4627     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4628     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4632 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4633 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4634 AC_TRY_RUN_STRICT([
4635 #define HAVE_QUOTACTL_3 1
4636 #define AUTOCONF_TEST 1
4637 #include "confdefs.h"
4638 #include "${srcdir-.}/../tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4639            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4640 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4641     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4642     samba_cv_SYSQUOTA_FOUND=yes;
4643     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4644     samba_cv_sysquotas_file="lib/sysquotas_3.c"
4648 #################################################
4649 # check for mntent.h and struct mntent
4650 AC_CHECK_HEADERS(mntent.h)
4651 #################################################
4652 # check for setmntent,getmntent,endmntent
4653 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4655 #################################################
4656 # check for devnm.h and struct mntent
4657 AC_CHECK_HEADERS(devnm.h)
4658 #################################################
4659 # check for devnm
4660 AC_CHECK_FUNCS(devnm)
4662 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4663     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4664         # if --with-sys-quotas=yes then build it
4665         # you have can use the get/set quota command smb.conf
4666         # options then
4667         samba_cv_SYSQUOTA_FOUND=auto
4668     fi
4669     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4670         # if --with-sys-quotas=yes then build it
4671         # you have can use the get/set quota command smb.conf
4672         # options then
4673         samba_cv_TRY_SYS_QUOTAS=auto
4674     fi
4677 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4678 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4679 SAVE_CPPFLAGS="$CPPFLAGS"
4680 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4681 AC_TRY_COMPILE([
4682 #include "confdefs.h"
4683 #define NO_PROTO_H 1
4684 #define NO_CONFIG_H 1
4685 #define HAVE_SYS_QUOTAS 1
4686 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4687 #include "${srcdir-.}/lib/sysquotas.c"
4688 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4689 CPPFLAGS="$SAVE_CPPFLAGS"
4691 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4692 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4693     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4694         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4695         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4696         samba_cv_WE_USE_SYS_QUOTAS=yes
4697         AC_MSG_RESULT(yes)
4698     else
4699         AC_MSG_RESULT(no)
4700     fi
4704 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4705 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4706 SAVE_CPPFLAGS="$CPPFLAGS"
4707 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4708 AC_TRY_COMPILE([
4709 #include "confdefs.h"
4710 #define NO_PROTO_H 1
4711 #define NO_CONFIG_H 1
4712 #define HAVE_SYS_QUOTAS 1
4713 #define HAVE_XFS_QUOTAS 1
4714 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4715 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4716 CPPFLAGS="$SAVE_CPPFLAGS"
4718 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4719     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4720         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4721     fi
4725 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4726 SAVE_CPPFLAGS="$CPPFLAGS"
4727 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4728 AC_TRY_COMPILE([
4729 #include "confdefs.h"
4730 #define NO_PROTO_H 1
4731 #define NO_CONFIG_H 1
4732 #include "${srcdir-.}/smbd/quotas.c"
4733 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4734 CPPFLAGS="$SAVE_CPPFLAGS"
4736 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4737 AC_MSG_CHECKING(whether to use the old quota support)
4738     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4739       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4740         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4741         AC_MSG_RESULT(yes)
4742       else
4743         AC_MSG_RESULT(no)
4744       fi
4745     else
4746       AC_MSG_RESULT(no)
4747     fi
4750 ####################
4751 # End of quota check samba_cv_RUN_QUOTA_TESTS
4754 #################################################
4755 # check for experimental utmp accounting
4757 AC_MSG_CHECKING(whether to support utmp accounting)
4758 WITH_UTMP=yes
4759 AC_ARG_WITH(utmp,
4760 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4761 [ case "$withval" in
4762   no)
4763                 WITH_UTMP=no
4764                 ;;
4765   *)
4766                 WITH_UTMP=yes
4767                 ;;
4768   esac ],
4771 # utmp requires utmp.h
4772 # Note similar check earlier, when checking utmp details.
4774 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4775         utmp_no_reason=", no utmp.h on $host_os"
4776         WITH_UTMP=no
4779 # Display test results
4781 if test x"$WITH_UTMP" = x"yes"; then
4782         AC_MSG_RESULT(yes)
4783         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4784 else
4785         AC_MSG_RESULT(no$utmp_no_reason)
4788 INSTALLLIBCMD_SH=:
4789 INSTALLLIBCMD_A=:
4790 UNINSTALLLIBCMD_SH=:
4791 UNINSTALLLIBCMD_A=:
4793 if test $BLDSHARED = true; then
4794         INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4795         UNINSTALLLIBCMD_SH="rm -f"
4797 if test $enable_static = yes; then
4798         INSTALLLIBCMD_A="\$(INSTALLCMD)"
4799         UNINSTALLLIBCMD_A="rm -f"
4802 #################################################
4803 # --disable-shared-libs
4804 # can be used to disable the internal use of shared libs altogether
4805 # (this only has an effect when building shared libs is enabled)
4807 USESHARED=false
4808 AC_SUBST(USESHARED)
4810 AC_MSG_CHECKING(whether to use shared libraries internally)
4811 AC_ARG_ENABLE([shared-libs],
4812         AS_HELP_STRING([--enable-shared-libs],
4813                 [Use shared libraries internally (default=yes)]),
4814         [enable_shared_libs=$enableval],
4815         [enable_shared_libs=yes])
4817 if test x"$enable_shared_libs" != x"no" ; then
4818         USESHARED=$BLDSHARED
4821 AC_MSG_RESULT([$USESHARED])
4823 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
4824         AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
4827 #################################################
4828 # --with-static-libs=LIBS:
4829 #   link (internal) libs dynamically or statically?
4831 # If a subsystem is built as a library then this controls whether they are
4832 # linked into Samba targets statically or dynamically:
4834 # * If we build the shared library at all, we link dynamically by default.
4836 # * We only link statically if we don't build shared or if the library
4837 #   appears in the --with-static-libs configure option.
4839 # Example:
4840 #   --with-static-libs=libtalloc makes use of libtalloc.a instead
4841 #   of linking the dynamic variant with -ltalloc.
4843 # NOTE: This option only affects libraries that we do not only build
4844 # but that samba also links against as libraries (as opposed to linking
4845 # the plain object files. - This has to be configured in Makefile.in.
4846 # So in particular it does not harm to give invalid or unknown names here.
4849 AC_ARG_WITH([static-libs],
4850         [AS_HELP_STRING([--with-static-libs=LIBS],
4851                 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
4852         [AS_IF([test $withval],
4853                 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
4854                         [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
4855                         eval LINK_$lib=STATIC
4856                 done], [])],
4857         [])
4860 # WORKAROUND:
4861 #   until we have organized other internal subsystems (as util, registry
4862 #   and smbconf) into shared libraries, we CAN NOT link libnetapi
4863 #   dynamically to samba programs.
4865 LINK_LIBNETAPI=STATIC
4867 LINK_LIBSMBCLIENT=STATIC
4870 #  The library versions are hardcoded here
4871 #  and filled into the LIBFOO_SOVER variable.
4873 #  TODO: for talloc and tdb (at least), these should
4874 #  be extracted from their respective source directories
4876 SMB_LIBRARY(talloc, 1)
4877 SMB_LIBRARY(tdb, 1)
4878 SMB_LIBRARY(netapi, 0)
4879 SMB_LIBRARY(smbclient, 0)
4880 SMB_LIBRARY(smbsharemodes, 0)
4881 SMB_LIBRARY(lua, 0)
4882 SMB_LIBRARY(addns, 0, no, [undefined API])
4886 #################################################
4887 # these tests are taken from the GNU fileutils package
4888 AC_CHECKING(how to get filesystem space usage)
4889 space=no
4891 # Test for statvfs64.
4892 if test $space = no; then
4893   # SVR4
4894   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4895   [AC_TRY_RUN([
4896 #if defined(HAVE_UNISTD_H)
4897 #include <unistd.h>
4898 #endif
4899 #include <sys/types.h>
4900 #include <sys/statvfs.h>
4901   main ()
4902   {
4903     struct statvfs64 fsd;
4904     exit (statvfs64 (".", &fsd));
4905   }],
4906   fu_cv_sys_stat_statvfs64=yes,
4907   fu_cv_sys_stat_statvfs64=no,
4908   fu_cv_sys_stat_statvfs64=cross)])
4909   if test $fu_cv_sys_stat_statvfs64 = yes; then
4910     space=yes
4911     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4912   fi
4915 # Perform only the link test since it seems there are no variants of the
4916 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4917 # because that got a false positive on SCO OSR5.  Adding the declaration
4918 # of a `struct statvfs' causes this test to fail (as it should) on such
4919 # systems.  That system is reported to work fine with STAT_STATFS4 which
4920 # is what it gets when this test fails.
4921 if test $space = no; then
4922   # SVR4
4923   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4924                  [AC_TRY_LINK([#include <sys/types.h>
4925 #include <sys/statvfs.h>],
4926                               [struct statvfs fsd; statvfs (0, &fsd);],
4927                               fu_cv_sys_stat_statvfs=yes,
4928                               fu_cv_sys_stat_statvfs=no)])
4929   if test $fu_cv_sys_stat_statvfs = yes; then
4930     space=yes
4931     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4932   fi
4935 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4936 # This is not the case on ancient Linux systems.
4938 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4939     AC_TRY_COMPILE([#include <sys/types.h>
4940 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4941         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4942 if test x"$samba_cv_fsid_int" = x"yes"; then
4943     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4946 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
4947 # systems use f_bsize.
4948 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
4949     AC_TRY_COMPILE([#include <sys/types.h>
4950 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
4951         samba_cv_frsize=yes,samba_cv_frsize=no)])
4952 if test x"$samba_cv_frsize" = x"yes"; then
4953     AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
4956 if test $space = no; then
4957   # DEC Alpha running OSF/1
4958   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4959   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4960   [AC_TRY_RUN([
4961 #include <sys/param.h>
4962 #include <sys/types.h>
4963 #include <sys/mount.h>
4964   main ()
4965   {
4966     struct statfs fsd;
4967     fsd.f_fsize = 0;
4968     exit (statfs (".", &fsd, sizeof (struct statfs)));
4969   }],
4970   fu_cv_sys_stat_statfs3_osf1=yes,
4971   fu_cv_sys_stat_statfs3_osf1=no,
4972   fu_cv_sys_stat_statfs3_osf1=no)])
4973   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4974   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4975     space=yes
4976     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4977   fi
4980 if test $space = no; then
4981 # AIX
4982   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4983 member (AIX, 4.3BSD)])
4984   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4985   [AC_TRY_RUN([
4986 #ifdef HAVE_SYS_PARAM_H
4987 #include <sys/param.h>
4988 #endif
4989 #ifdef HAVE_SYS_MOUNT_H
4990 #include <sys/mount.h>
4991 #endif
4992 #ifdef HAVE_SYS_VFS_H
4993 #include <sys/vfs.h>
4994 #endif
4995   main ()
4996   {
4997   struct statfs fsd;
4998   fsd.f_bsize = 0;
4999   exit (statfs (".", &fsd));
5000   }],
5001   fu_cv_sys_stat_statfs2_bsize=yes,
5002   fu_cv_sys_stat_statfs2_bsize=no,
5003   fu_cv_sys_stat_statfs2_bsize=no)])
5004   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5005   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5006     space=yes
5007     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5008   fi
5011 if test $space = no; then
5012 # SVR3
5013   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5014   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5015   [AC_TRY_RUN([#include <sys/types.h>
5016 #include <sys/statfs.h>
5017   main ()
5018   {
5019   struct statfs fsd;
5020   exit (statfs (".", &fsd, sizeof fsd, 0));
5021   }],
5022     fu_cv_sys_stat_statfs4=yes,
5023     fu_cv_sys_stat_statfs4=no,
5024     fu_cv_sys_stat_statfs4=no)])
5025   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5026   if test $fu_cv_sys_stat_statfs4 = yes; then
5027     space=yes
5028     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5029   fi
5032 if test $space = no; then
5033 # 4.4BSD and NetBSD
5034   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5035 member (4.4BSD and NetBSD)])
5036   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5037   [AC_TRY_RUN([#include <sys/types.h>
5038 #ifdef HAVE_SYS_PARAM_H
5039 #include <sys/param.h>
5040 #endif
5041 #ifdef HAVE_SYS_MOUNT_H
5042 #include <sys/mount.h>
5043 #endif
5044   main ()
5045   {
5046   struct statfs fsd;
5047   fsd.f_fsize = 0;
5048   exit (statfs (".", &fsd));
5049   }],
5050   fu_cv_sys_stat_statfs2_fsize=yes,
5051   fu_cv_sys_stat_statfs2_fsize=no,
5052   fu_cv_sys_stat_statfs2_fsize=no)])
5053   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5054   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5055     space=yes
5056         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5057   fi
5060 if test $space = no; then
5061   # Ultrix
5062   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5063   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5064   [AC_TRY_RUN([#include <sys/types.h>
5065 #ifdef HAVE_SYS_PARAM_H
5066 #include <sys/param.h>
5067 #endif
5068 #ifdef HAVE_SYS_MOUNT_H
5069 #include <sys/mount.h>
5070 #endif
5071 #ifdef HAVE_SYS_FS_TYPES_H
5072 #include <sys/fs_types.h>
5073 #endif
5074   main ()
5075   {
5076   struct fs_data fsd;
5077   /* Ultrix's statfs returns 1 for success,
5078      0 for not mounted, -1 for failure.  */
5079   exit (statfs (".", &fsd) != 1);
5080   }],
5081   fu_cv_sys_stat_fs_data=yes,
5082   fu_cv_sys_stat_fs_data=no,
5083   fu_cv_sys_stat_fs_data=no)])
5084   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5085   if test $fu_cv_sys_stat_fs_data = yes; then
5086     space=yes
5087     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5088   fi
5092 # As a gating factor for large file support, in order to
5093 # use <4GB files we must have the following minimal support
5094 # available.
5095 # long long, and a 64 bit off_t or off64_t.
5096 # If we don't have all of these then disable large
5097 # file support.
5099 AC_MSG_CHECKING([if large file support can be enabled])
5100 AC_TRY_COMPILE([
5101 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5102 #include <sys/types.h>
5103 #else
5104 __COMPILE_ERROR_
5105 #endif
5107 [int i],
5108 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5109 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5110         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5112 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5114 #################################################
5115 # check for cluster extensions
5117 AC_MSG_CHECKING(whether to include cluster support)
5118 AC_ARG_WITH(cluster-support,
5119 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=no)])])
5120 if test "x$with_cluster_support" = "xyes"; then
5121     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5122     AC_MSG_RESULT(yes)
5123 else
5124     AC_MSG_RESULT(no)
5128 #################################################
5129 # check for ACL support
5131 AC_MSG_CHECKING(whether to support ACLs)
5132 AC_ARG_WITH(acl-support,
5133 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5134 [ case "$withval" in
5135         yes|no)
5136                 with_acl_support="$withval"
5137                 ;;
5138   esac ])
5140 if test x"$with_acl_support" = x ; then
5141         with_acl_support="auto"
5144 AC_MSG_RESULT($with_acl_support)
5146 if test x"$with_acl_support" = x"no"; then
5147         AC_MSG_RESULT(Disabling ACL support)
5148         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5149 else
5150         AC_MSG_NOTICE(checking whether ACL support is available:)
5151         case "$host_os" in
5152         *sysv5*)
5153                 AC_MSG_NOTICE(Using UnixWare ACLs)
5154                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5155                 default_static_modules="$default_static_modules vfs_solarisacl"
5156                 ;;
5157         *solaris*)
5158                 AC_MSG_NOTICE(Using solaris ACLs)
5159                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5160                 ACL_LIBS="$ACL_LIBS -lsec"
5161                 default_static_modules="$default_static_modules vfs_solarisacl"
5162                 ;;
5163         *hpux*)
5164                 AC_MSG_NOTICE(Using HPUX ACLs)
5165                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5166                 default_static_modules="$default_static_modules vfs_hpuxacl"
5167                 ;;
5168         *irix*)
5169                 AC_MSG_NOTICE(Using IRIX ACLs)
5170                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5171                 default_static_modules="$default_static_modules vfs_irixacl"
5172                 ;;
5173         *aix*)
5174                 AC_MSG_NOTICE(Using AIX ACLs)
5175                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5176                 default_static_modules="$default_static_modules vfs_aixacl"
5177                 ;;
5178         *osf*)
5179                 AC_MSG_NOTICE(Using Tru64 ACLs)
5180                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5181                 ACL_LIBS="$ACL_LIBS -lpacl"
5182                 default_static_modules="$default_static_modules vfs_tru64acl"
5183                 ;;
5184         *darwin*)
5185                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5186                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5187                 ;;
5188         *)
5189                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5190                 case "$host_os" in
5191                 *linux*)
5192                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5193                         ;;
5194                 esac
5195                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5196                         acl_LIBS=$LIBS
5197                         LIBS="$LIBS $ACL_LIBS"
5198                         AC_TRY_LINK([
5199                                 #include <sys/types.h>
5200                                 #include <sys/acl.h>
5201                         ],[
5202                                 acl_t acl;
5203                                 int entry_id;
5204                                 acl_entry_t *entry_p;
5205                                 return acl_get_entry(acl, entry_id, entry_p);
5206                         ],
5207                         [samba_cv_HAVE_POSIX_ACLS=yes],
5208                         [samba_cv_HAVE_POSIX_ACLS=no])
5209                         LIBS=$acl_LIBS
5210                 ])
5211                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5212                         AC_MSG_NOTICE(Using posix ACLs)
5213                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5214                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5215                                 acl_LIBS=$LIBS
5216                                 LIBS="$LIBS $ACL_LIBS"
5217                                 AC_TRY_LINK([
5218                                         #include <sys/types.h>
5219                                         #include <sys/acl.h>
5220                                 ],[
5221                                         acl_permset_t permset_d;
5222                                         acl_perm_t perm;
5223                                         return acl_get_perm_np(permset_d, perm);
5224                                 ],
5225                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5226                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5227                                 LIBS=$acl_LIBS
5228                         ])
5229                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5230                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5231                         fi
5232                         default_static_modules="$default_static_modules vfs_posixacl"
5233                 else
5234                         AC_MSG_NOTICE(ACL support is not avaliable)
5235                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5236                 fi
5237                 ;;
5238         esac
5239 fi # with_acl_support
5243 #################################################
5244 # check for AIO support
5246 AC_MSG_CHECKING(whether to support asynchronous io)
5247 AC_ARG_WITH(aio-support,
5248 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5249 [ case "$withval" in
5250   yes)
5252         AC_MSG_RESULT(yes)
5253         case "$host_os" in
5254         *)
5255                 AIO_LIBS=$LIBS
5256                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5257                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5258                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5259                 aio_LIBS=$LIBS
5260                 LIBS=$AIO_LIBS
5261                 AC_TRY_LINK([#include <sys/types.h>
5262 #include <aio.h>],
5263 [ struct aiocb a; return aio_read(&a);],
5264 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5265                 LIBS=$aio_LIBS])
5266                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5267                 aio_LIBS=$LIBS
5268                 LIBS=$AIO_LIBS
5269                 AC_TRY_LINK([#include <sys/types.h>
5270 #include <aio.h>],
5271 [ struct aiocb64 a; return aio_read64(&a);],
5272 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5273                 LIBS=$aio_LIBS])
5274                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5275                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5276                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5277                         LIBS=$AIO_LIBS
5278                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5279                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5280                         LIBS=$AIO_LIBS
5281                 fi
5283                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5284                         AC_MSG_CHECKING(for aio_read)
5285                         AC_LINK_IFELSE([#include <aio.h>
5286 int main() { struct aiocb a; return aio_read(&a); }],
5287 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5288 [AC_MSG_RESULT(no)])
5290                         AC_MSG_CHECKING(for aio_write)
5291                         AC_LINK_IFELSE([#include <aio.h>
5292 int main() { struct aiocb a; return aio_write(&a); }],
5293 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5294 [AC_MSG_RESULT(no)])
5296                         AC_MSG_CHECKING(for aio_fsync)
5297                         AC_LINK_IFELSE([#include <aio.h>
5298 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5299 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5300 [AC_MSG_RESULT(no)])
5302                         AC_MSG_CHECKING(for aio_return)
5303                         AC_LINK_IFELSE([#include <aio.h>
5304 int main() { struct aiocb a; return aio_return(&a); }],
5305 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5306 [AC_MSG_RESULT(no)])
5308                         AC_MSG_CHECKING(for aio_error)
5309                         AC_LINK_IFELSE([#include <aio.h>
5310 int main() { struct aiocb a; return aio_error(&a); }],
5311 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5312 [AC_MSG_RESULT(no)])
5314                         AC_MSG_CHECKING(for aio_cancel)
5315                         AC_LINK_IFELSE([#include <aio.h>
5316 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5317 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5318 [AC_MSG_RESULT(no)])
5320                         AC_MSG_CHECKING(for aio_suspend)
5321                         AC_LINK_IFELSE([#include <aio.h>
5322 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5323 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5324 [AC_MSG_RESULT(no)])
5325                 fi
5327                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5328                         AC_MSG_CHECKING(for aio_read64)
5329                         AC_LINK_IFELSE([#include <aio.h>
5330 int main() { struct aiocb a; return aio_read64(&a); }],
5331 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5332 [AC_MSG_RESULT(no)])
5334                         AC_MSG_CHECKING(for aio_write64)
5335                         AC_LINK_IFELSE([#include <aio.h>
5336 int main() { struct aiocb a; return aio_write64(&a); }],
5337 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5338 [AC_MSG_RESULT(no)])
5340                         AC_MSG_CHECKING(for aio_fsync64)
5341                         AC_LINK_IFELSE([#include <aio.h>
5342 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5343 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5344 [AC_MSG_RESULT(no)])
5346                         AC_MSG_CHECKING(for aio_return64)
5347                         AC_LINK_IFELSE([#include <aio.h>
5348 int main() { struct aiocb a; return aio_return64(&a); }],
5349 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5350 [AC_MSG_RESULT(no)])
5352                         AC_MSG_CHECKING(for aio_error64)
5353                         AC_LINK_IFELSE([#include <aio.h>
5354 int main() { struct aiocb a; return aio_error64(&a); }],
5355 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5356 [AC_MSG_RESULT(no)])
5358                         AC_MSG_CHECKING(for aio_cancel64)
5359                         AC_LINK_IFELSE([#include <aio.h>
5360 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5361 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5362 [AC_MSG_RESULT(no)])
5364                         AC_MSG_CHECKING(for aio_suspend64)
5365                         AC_LINK_IFELSE([#include <aio.h>
5366 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5367 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5368 [AC_MSG_RESULT(no)])
5369                 fi
5370             ;;
5371         esac
5372         ;;
5373   *)
5374     AC_MSG_RESULT(no)
5375     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5376     ;;
5377   esac ],
5378   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5379   AC_MSG_RESULT(no)
5382 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5383         if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5384                 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5385                 default_shared_modules="$default_shared_modules vfs_aio_fork"
5386         fi
5389 #################################################
5390 # check for sendfile support
5392 with_sendfile_support=yes
5393 AC_MSG_CHECKING(whether to check to support sendfile)
5394 AC_ARG_WITH(sendfile-support,
5395 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5396 [ case "$withval" in
5397   yes)
5399         AC_MSG_RESULT(yes);
5401         case "$host_os" in
5402         *linux*)
5403                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5404                 AC_TRY_LINK([#include <sys/sendfile.h>],
5406 int tofd, fromfd;
5407 off64_t offset;
5408 size_t total;
5409 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5411 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5413                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5414                 AC_TRY_LINK([#include <sys/sendfile.h>],
5416 int tofd, fromfd;
5417 off_t offset;
5418 size_t total;
5419 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5421 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5423 # Try and cope with broken Linux sendfile....
5424                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5425                 AC_TRY_LINK([\
5426 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5427 #undef _FILE_OFFSET_BITS
5428 #endif
5429 #include <sys/sendfile.h>],
5431 int tofd, fromfd;
5432 off_t offset;
5433 size_t total;
5434 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5436 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5438         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5439                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5440                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5441                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5442         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5443                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5444                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5445                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5446         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5447                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5448                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5449         else
5450                 AC_MSG_RESULT(no);
5451         fi
5453         ;;
5454         *freebsd* | *dragonfly* )
5455                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5456                 AC_TRY_LINK([\
5457 #include <sys/types.h>
5458 #include <unistd.h>
5459 #include <sys/socket.h>
5460 #include <sys/uio.h>],
5462         int fromfd, tofd, ret, total=0;
5463         off_t offset, nwritten;
5464         struct sf_hdtr hdr;
5465         struct iovec hdtrl;
5466         hdr.headers = &hdtrl;
5467         hdr.hdr_cnt = 1;
5468         hdr.trailers = NULL;
5469         hdr.trl_cnt = 0;
5470         hdtrl.iov_base = NULL;
5471         hdtrl.iov_len = 0;
5472         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5474 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5476         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5477                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5478                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5479                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5480         else
5481                 AC_MSG_RESULT(no);
5482         fi
5483         ;;
5485         *hpux*)
5486                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5487                 AC_TRY_LINK([\
5488 #include <sys/socket.h>
5489 #include <sys/uio.h>],
5491         int fromfd, tofd;
5492         size_t total=0;
5493         struct iovec hdtrl[2];
5494         ssize_t nwritten;
5495         off64_t offset;
5497         hdtrl[0].iov_base = 0;
5498         hdtrl[0].iov_len = 0;
5500         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5502 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5503         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5504                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5505                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5506                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5507         else
5508                 AC_MSG_RESULT(no);
5509         fi
5511                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5512                 AC_TRY_LINK([\
5513 #include <sys/socket.h>
5514 #include <sys/uio.h>],
5516         int fromfd, tofd;
5517         size_t total=0;
5518         struct iovec hdtrl[2];
5519         ssize_t nwritten;
5520         off_t offset;
5522         hdtrl[0].iov_base = 0;
5523         hdtrl[0].iov_len = 0;
5525         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5527 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5528         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5529                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5530                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5531                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5532         else
5533                 AC_MSG_RESULT(no);
5534         fi
5535         ;;
5537         *solaris*)
5538                 AC_CHECK_LIB(sendfile,sendfilev)
5539                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5540                 AC_TRY_LINK([\
5541 #include <sys/sendfile.h>],
5543         int sfvcnt;
5544         size_t xferred;
5545         struct sendfilevec vec[2];
5546         ssize_t nwritten;
5547         int tofd;
5549         sfvcnt = 2;
5551         vec[0].sfv_fd = SFV_FD_SELF;
5552         vec[0].sfv_flag = 0;
5553         vec[0].sfv_off = 0;
5554         vec[0].sfv_len = 0;
5556         vec[1].sfv_fd = 0;
5557         vec[1].sfv_flag = 0;
5558         vec[1].sfv_off = 0;
5559         vec[1].sfv_len = 0;
5560         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5562 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5564         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5565                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5566                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5567                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5568         else
5569                 AC_MSG_RESULT(no);
5570         fi
5572                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5573                 AC_TRY_LINK([\
5574 #include <sys/sendfile.h>],
5576         int sfvcnt;
5577         size_t xferred;
5578         struct sendfilevec vec[2];
5579         ssize_t nwritten;
5580         int tofd;
5582         sfvcnt = 2;
5584         vec[0].sfv_fd = SFV_FD_SELF;
5585         vec[0].sfv_flag = 0;
5586         vec[0].sfv_off = 0;
5587         vec[0].sfv_len = 0;
5589         vec[1].sfv_fd = 0;
5590         vec[1].sfv_flag = 0;
5591         vec[1].sfv_off = 0;
5592         vec[1].sfv_len = 0;
5593         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5595 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5597         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5598                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5599                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5600                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5601         else
5602                 AC_MSG_RESULT(no);
5603         fi
5604         ;;
5605         *aix*)
5606                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5607                 AC_TRY_LINK([\
5608 #include <sys/socket.h>],
5610         int fromfd, tofd;
5611         size_t total=0;
5612         struct sf_parms hdtrl;
5613         ssize_t nwritten;
5614         off64_t offset;
5616         hdtrl.header_data = 0;
5617         hdtrl.header_length = 0;
5618         hdtrl.file_descriptor = fromfd;
5619         hdtrl.file_offset = 0;
5620         hdtrl.file_bytes = 0;
5621         hdtrl.trailer_data = 0;
5622         hdtrl.trailer_length = 0;
5624         nwritten = send_file(&tofd, &hdtrl, 0);
5626 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5627         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5628                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5629                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5630                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5631         else
5632                 AC_MSG_RESULT(no);
5633         fi
5634         ;;
5635         *)
5636         ;;
5637         esac
5638         ;;
5639   *)
5640     AC_MSG_RESULT(no)
5641     ;;
5642   esac ],
5643   AC_MSG_RESULT(yes)
5646 ############################################
5647 # See if we have the Linux readahead syscall.
5649 AC_CACHE_CHECK([for Linux readahead],
5650                 samba_cv_HAVE_LINUX_READAHEAD,[
5651     AC_TRY_LINK([
5652 #if defined(HAVE_UNISTD_H)
5653 #include <unistd.h>
5654 #endif
5655 #include <fcntl.h>],
5656     [ssize_t err = readahead(0,0,0x80000);],
5657     samba_cv_HAVE_LINUX_READAHEAD=yes,
5658     samba_cv_HAVE_LINUX_READAHEAD=no)])
5660 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5661   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5662              [Whether Linux readahead is available])
5665 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5667 ############################################
5668 # See if we have the posix_fadvise syscall.
5670 AC_CACHE_CHECK([for posix_fadvise],
5671                 samba_cv_HAVE_POSIX_FADVISE,[
5672     AC_TRY_LINK([
5673 #if defined(HAVE_UNISTD_H)
5674 #include <unistd.h>
5675 #endif
5676 #include <fcntl.h>],
5677     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5678     samba_cv_HAVE_POSIX_FADVISE=yes,
5679     samba_cv_HAVE_POSIX_FADVISE=no)])
5681 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5682   AC_DEFINE(HAVE_POSIX_FADVISE,1,
5683              [Whether posix_fadvise is available])
5686 ############################################
5687 # See if we have the Linux splice syscall.
5689 AC_CACHE_CHECK([for Linux splice],
5690                 samba_cv_HAVE_LINUX_SPLICE,[
5691     AC_TRY_LINK([
5692 #if defined(HAVE_UNISTD_H)
5693 #include <unistd.h>
5694 #endif
5695 #include <fcntl.h>],
5696     [long ret = splice(0,0,1,0,400,0);],
5697     samba_cv_HAVE_LINUX_SPLICE=yes,
5698     samba_cv_HAVE_LINUX_SPLICE=no)])
5700 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5701   AC_DEFINE(HAVE_LINUX_SPLICE,1,
5702              [Whether Linux splice is available])
5705 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5708 #################################################
5709 # Check whether winbind is supported on this platform.  If so we need to
5710 # build and install client programs, sbin programs and shared libraries
5712 AC_MSG_CHECKING(whether to build winbind)
5714 # Initially, the value of $host_os decides whether winbind is supported
5716 HAVE_WINBIND=yes
5718 # Define the winbind shared library name and any specific linker flags
5719 # it needs to be built with.
5721 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
5722 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
5723 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5724 NSSSONAMEVERSIONSUFFIX=""
5725 WINBIND_NSS_PTHREAD=""
5727 case "$host_os" in
5728         *linux*)
5729                 NSSSONAMEVERSIONSUFFIX=".2"
5730                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
5731                 ;;
5732         *freebsd[[5-9]]*)
5733                 # FreeBSD winbind client is implemented as a wrapper around
5734                 # the Linux version.
5735                 NSSSONAMEVERSIONSUFFIX=".1"
5736                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
5737                     ../nsswitch/winbind_nss_linux.o"
5738                 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5739                 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5740                 ;;
5742         *netbsd*[[3-9]]*)
5743                 # NetBSD winbind client is implemented as a wrapper
5744                 # around the Linux version. It needs getpwent_r() to
5745                 # indicate libc's use of the correct nsdispatch API.
5746                 #
5747                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5748                         WINBIND_NSS_EXTRA_OBJS="\
5749                             ../nsswitch/winbind_nss_netbsd.o \
5750                             ../nsswitch/winbind_nss_linux.o"
5751                         WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5752                         WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5753                 else
5754                         HAVE_WINBIND=no
5755                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5756                 fi
5757                 ;;
5758         *irix*)
5759                 # IRIX has differently named shared libraries
5760                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
5761                 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
5762                 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
5763                 ;;
5764         *solaris*)
5765                 # Solaris winbind client is implemented as a wrapper around
5766                 # the Linux version.
5767                 NSSSONAMEVERSIONSUFFIX=".1"
5768                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
5769                     ../nsswitch/winbind_nss_linux.o"
5770                 WINBIND_NSS_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5771                 PAM_WINBIND_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5772                 ;;
5773         *hpux11*)
5774                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
5775                 ;;
5776         *aix*)
5777                 # AIX has even differently named shared libraries.  No
5778                 # WINS support has been implemented yet.
5779                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
5780                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5781                 WINBIND_NSS="../nsswitch/WINBIND"
5782                 WINBIND_WINS_NSS=""
5783                 ;;
5784         *)
5785                 HAVE_WINBIND=no
5786                 winbind_no_reason=", unsupported on $host_os"
5787                 ;;
5788 esac
5790 # Check the setting of --with-winbind
5792 AC_ARG_WITH(winbind,
5793 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
5795   case "$withval" in
5796         yes)
5797                 HAVE_WINBIND=yes
5798                 ;;
5799         no)
5800                 HAVE_WINBIND=no
5801                 winbind_reason=""
5802                 ;;
5803   esac ],
5806 # We need unix domain sockets for winbind
5808 if test x"$HAVE_WINBIND" = x"yes"; then
5809         if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
5810                 winbind_no_reason=", no unix domain socket support on $host_os"
5811                 HAVE_WINBIND=no
5812         fi
5815 # Display test results
5817 if test x"$HAVE_WINBIND" = x"no"; then
5818         WINBIND_NSS=""
5819         WINBIND_WINS_NSS=""
5822 if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
5823         BUILD_LIBWBCLIENT_SHARED=no
5824 else
5825         BUILD_LIBWBCLIENT_SHARED=yes
5828 LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
5829 LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
5830 LIBWBCLIENT_SOVER=0
5831 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
5832         NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5833         ## Only worry about libwbclient if we have shared library support
5834         ## and winbindd
5835         LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
5836         LIBWBCLIENT=libwbclient
5837         INSTALL_LIBWBCLIENT=installlibwbclient
5838         UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
5839         WINBIND_LIBS="-lwbclient"
5840 else
5841         LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
5844 if test x"$HAVE_WINBIND" = x"yes"; then
5845         AC_MSG_RESULT(yes)
5846         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5848         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5849         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5850         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5851                 PAM_MODULES="$PAM_MODULES pam_winbind"
5852                 INSTALL_PAM_MODULES="installpammodules"
5853                 UNINSTALL_PAM_MODULES="uninstallpammodules"
5854         fi
5855 else
5856         AC_MSG_RESULT(no$winbind_no_reason)
5859 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
5860                         AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
5862 AC_SUBST(WINBIND_NSS_PTHREAD)
5863 AC_SUBST(WINBIND_NSS)
5864 AC_SUBST(WINBIND_WINS_NSS)
5865 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5866 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5867 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5868 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5869 AC_SUBST(PAM_WINBIND_EXTRA_LIBS)
5871 AC_SUBST(WINBIND_KRB5_LOCATOR)
5873 # Solaris 10 does have new member in nss_XbyY_key
5874 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5875                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5876                 [#include <nss_dbdefs.h>])
5878 # Solaris has some extra fields in struct passwd that need to be
5879 # initialised otherwise nscd crashes.
5881 AC_CHECK_MEMBER(struct passwd.pw_comment,
5882                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5883                 [#include <pwd.h>])
5885 AC_CHECK_MEMBER(struct passwd.pw_age,
5886                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5887                 [#include <pwd.h>])
5889 # AIX 4.3.x and 5.1 do not have as many members in
5890 # struct secmethod_table as AIX 5.2
5891 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5892        [#include <usersec.h>])
5893 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5894        [#include <usersec.h>])
5896 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
5897 AC_TRY_COMPILE([#include <sys/types.h>
5898 #include <sys/socket.h>],
5899 [struct ucred cred;
5900  socklen_t cred_len;
5901  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
5903 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
5904 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
5905     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
5909 #################################################
5910 # Check to see if we should use the included popt
5912 AC_ARG_WITH(included-popt,
5913 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
5915   case "$withval" in
5916         yes)
5917                 INCLUDED_POPT=yes
5918                 ;;
5919         no)
5920                 INCLUDED_POPT=no
5921                 ;;
5922   esac ],
5924 if test x"$INCLUDED_POPT" != x"yes"; then
5925     AC_CHECK_LIB(popt, poptGetContext,
5926                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
5929 AC_MSG_CHECKING(whether to use included popt)
5930 if test x"$INCLUDED_POPT" = x"yes"; then
5931     AC_MSG_RESULT(yes)
5932     BUILD_POPT='$(POPT_OBJ)'
5933     POPTLIBS='$(POPT_OBJ)'
5934     FLAGS1="-I\$(srcdir)/../lib/popt"
5935 else
5936     AC_MSG_RESULT(no)
5937         BUILD_POPT=""
5938     POPTLIBS="-lpopt"
5940 AC_SUBST(BUILD_POPT)
5941 AC_SUBST(POPTLIBS)
5942 AC_SUBST(FLAGS1)
5944 #################################################
5945 # Check if user wants DNS service discovery support
5947 AC_ARG_ENABLE(dnssd,
5948 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=auto)])])
5950 AC_SUBST(DNSSD_LIBS)
5951 if test x"$enable_dnssd" != x"no"; then
5952     have_dnssd_support=yes
5954     AC_CHECK_HEADERS(dns_sd.h)
5955     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
5956         have_dnssd_support=no
5957     fi
5959     # On Darwin the DNSSD API is in libc, but on other platforms it's
5960     # probably in -ldns_sd
5961     AC_CHECK_FUNCS(DNSServiceRegister)
5962     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
5963     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
5964             x"$ac_cv_lib_ext_DNSServiceRegister" != x"yes"; then
5965         have_dnssd_support=no
5966     fi
5968     if test x"$have_dnssd_support" = x"yes"; then
5969         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
5970                 [Whether to enable DNS service discovery support])
5971     else
5972         if test x"$enable_dnssd" = x"yes"; then
5973             AC_MSG_ERROR(DNS service discovery support not available)
5974         fi
5975     fi
5979 #################################################
5980 # Check to see if we should use the included iniparser
5982 AC_ARG_WITH(included-iniparser,
5983 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
5985   case "$withval" in
5986         yes)
5987                 INCLUDED_INIPARSER=yes
5988                 ;;
5989         no)
5990                 INCLUDED_INIPARSER=no
5991                 ;;
5992   esac ],
5994 if test x"$INCLUDED_INIPARSER" != x"yes"; then
5995     AC_CHECK_LIB(iniparser, iniparser_load,
5996                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
5999 AC_MSG_CHECKING(whether to use included iniparser)
6000 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6001     AC_MSG_RESULT(yes)
6002     BUILD_INIPARSER='$(INIPARSER_OBJ)'
6003         INIPARSERLIBS=""
6004     FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
6005 else
6006     AC_MSG_RESULT(no)
6007         BUILD_INIPARSER=""
6008     INIPARSERLIBS="-liniparser"
6010 AC_SUBST(BUILD_INIPARSER)
6011 AC_SUBST(INIPARSERLIBS)
6012 AC_SUBST(FLAGS1)
6016 # Checks for the vfs_fileid module
6017 # Start
6018 AC_CHECK_FUNC(getmntent)
6020 AC_CHECK_HEADERS(sys/statfs.h)
6022 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6023 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6024              AC_TRY_RUN([
6025                 #include <sys/types.h>
6026                 #include <sys/statfs.h>
6027                 int main(void)
6028                 {
6029                         struct statfs fsd;
6030                         fsid_t fsid = fsd.f_fsid;
6031                         return statfs (".", &fsd);
6032                 }],
6033                 vfsfileid_cv_statfs=yes,
6034                 vfsfileid_cv_statfs=no,
6035                 vfsfileid_cv_statfs=cross)
6037 AC_MSG_RESULT($vfsfileid_cv_statfs)
6039 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6040         x"$vfsfileid_cv_statfs" = x"yes"; then
6041         default_shared_modules="$default_shared_modules vfs_fileid"
6043 # End
6044 # Checks for the vfs_fileid module
6047 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6049         eval MODULE_DEFAULT_$i=STATIC
6050 done
6052 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6054         dnl Fall back to static if we cannot build shared libraries
6055         eval MODULE_DEFAULT_$i=STATIC
6057         if test $BLDSHARED = true; then
6058                 eval MODULE_DEFAULT_$i=SHARED
6059         fi
6060 done
6062 dnl Always build these modules static
6063 MODULE_rpc_spoolss=STATIC
6064 MODULE_rpc_srvsvc=STATIC
6065 MODULE_idmap_tdb=STATIC
6066 MODULE_idmap_passdb=STATIC
6067 MODULE_idmap_nss=STATIC
6069 MODULE_nss_info_template=STATIC
6071 AC_ARG_WITH(static-modules,
6072 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6073 [ if test $withval; then
6074         for i in `echo $withval | sed -e 's/,/ /g'`
6075         do
6076                 eval MODULE_$i=STATIC
6077         done
6078 fi ])
6080 AC_ARG_WITH(shared-modules,
6081 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6082 [ if test $withval; then
6083         for i in `echo $withval | sed -e 's/,/ /g'`
6084         do
6085                         eval MODULE_$i=SHARED
6086         done
6087 fi ])
6089 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6090                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6091 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6092 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6093 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6096 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6097 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6098 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6099 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6100 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6101 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6102 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6103 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6104 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6105 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6106 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6107 SMB_MODULE(rpc_eventlog2, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog2.$SHLIBEXT", RPC)
6108 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6109 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6110 SMB_SUBSYSTEM(RPC,smbd/server.o)
6112 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6113 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6114 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6115 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6116 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6117 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6118 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6119 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6120 SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
6121 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6123 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6124 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6126 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6127 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6128 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6129 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6130 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6132 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6133 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6134 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6135 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6136 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6137 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6138 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6139 SMB_MODULE(auth_netlogond, \$(AUTH_NETLOGOND_OBJ), "bin/netlogond.$SHLIBEXT", AUTH)
6140 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6142 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6143 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6144 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6145 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6146 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6147 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6148 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6149 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6150 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6151 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6152 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6153 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6154 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6155 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6156 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6157 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6158 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6159 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6160 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6161 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6162 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6163 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6164 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6165 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6166 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6167 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6168 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6169 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6170 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6171 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6172 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6173 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6174 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6175 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6176 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6177 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6178 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6179 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6180 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6181 SMB_MODULE(vfs_onefs, \$(VFS_ONEFS), "bin/onefs.$SHLIBEXT", VFS)
6183 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6185 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6186 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6187 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6188 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6190 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6192 #################################################
6193 # do extra things if we are running insure
6195 if test "${ac_cv_prog_CC}" = "insure"; then
6196         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6199 #################################################
6200 # If run from the build farm, enable NASTY hacks
6201 #################################################
6202 AC_MSG_CHECKING(whether to enable build farm hacks)
6203 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6204         AC_MSG_RESULT(yes)
6205         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6206 else
6207         AC_MSG_RESULT(no)
6210 #################################################
6211 # check for bad librt/libpthread interactions
6213 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6214     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6215     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6216     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6218 SMB_IF_RTSIGNAL_BUG(
6219         [
6220             # Have RT_SIGNAL bug, need to check whether the problem will
6221             # affect anything we have configured.
6223             rt_do_error=no
6224             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6225                 if test x"$rt_signal_lease_ok" = x"no" ; then
6226                     rt_do_error=yes
6227                 fi
6228             fi
6230             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6231                 if test x"$rt_signal_notify_ok" = x"no" ; then
6232                     rt_do_error=yes
6233                 fi
6234             fi
6236             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6237                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6238                 if test x"$rt_signal_aio_ok" = x"no" ; then
6239                     rt_do_error=yes
6240                 fi
6241             fi
6243             if test x"$rt_do_error" = x"yes" ; then
6244                 SMB_IS_LIBPTHREAD_LINKED(
6245                     [
6246                         cat<<MSG
6248 *** On this platforms, linking Samba against pthreads causes problems
6249 *** with the oplock and change notification mechanisms. You may be
6250 *** using pthreads as a side-effect of using the --with-aio-support
6251 *** or --with-profiling-data options. Please remove these and try again.
6254                     ],
6255                     [
6256                         cat<<MSG
6258 *** On this platform, the oplock and change notification mechanisms do not
6259 *** appear to work. Please report this problem to samba-technical@samba.org
6260 *** and attach the config.log file from this directory.
6263                     ])
6264                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6265             fi
6266         ],
6267         [
6268             # no RT_SIGNAL bug, we are golden
6269             SMB_IS_LIBPTHREAD_LINKED(
6270                 [
6271                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6272                 ])
6274         ],
6275         [
6276             # cross compiling, I hope you know what you are doing
6277             true
6278         ])
6282 AC_ARG_ENABLE(merged-build, 
6283 [AS_HELP_STRING([--enable-merged-build], [Build Samba 4 as well])], 
6284 [ enable_merged_build=$enableval ], [ enable_merged_build=auto ])
6286 m4_include(../lib/zlib/zlib.m4)
6288 if test x$enable_merged_build = xauto; then
6289         # Check for python
6290         m4_include(../m4/check_python.m4)
6291         AC_SAMBA_PYTHON_DEVEL([true], [merged_build_possible=no])
6293         AC_MSG_CHECKING([whether it would be possible to do a merged build])
6294         AC_MSG_RESULT([$merged_build_possible])
6296         # Enable merged build automatically if possible, when in developer mode
6297         if test "x$developer" = xyes; then
6298                 enable_merged_build=$merged_build_possible
6299         fi
6302 if test x$enable_merged_build = xyes; then
6303         MERGED_BUILD=1
6304         m4_include(samba4.m4)
6307 AC_SUBST(ZLIB_LIBS)
6308 AC_SUBST(ZLIB_OBJS)
6309 AC_ZLIB([ZLIB_OBJS=""], [
6310         ZLIB_LIBS=""
6311         for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6312                      deflate.o trees.o zutil.o inflate.o infback.o \
6313                          inftrees.o inffast.o
6314         do
6315                 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6316         done
6317         CFLAGS="-I../lib/zlib $CFLAGS"
6320 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6321 LIB_REMOVE_USR_LIB(LDFLAGS)
6322 LIB_REMOVE_USR_LIB(LIBS)
6323 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6325 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6326 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6327 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6329 #################################################
6330 # Display summary of libraries detected
6332 AC_MSG_RESULT([Using libraries:])
6333 AC_MSG_RESULT([    LIBS = $LIBS])
6334 if test x"$with_ads_support" != x"no"; then
6335     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6337 if test x"$with_ldap_support" != x"no"; then
6338     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6340 if test x"$with_dnsupdate_support" != x"no"; then
6341     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6343 if test x"$have_dnssd_support" != x"no"; then
6344     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6346 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6348 #################################################
6349 # final configure stuff
6351 AC_MSG_CHECKING([configure summary])
6352 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
6353            AC_MSG_RESULT(yes),
6354            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6355            AC_MSG_WARN([cannot run when cross-compiling]))
6357 dnl Merge in developer cflags from now on
6358 AC_SUBST(DEVELOPER_CFLAGS)
6359 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6360     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6363 # Stuff the smbd-only libraries at the end of the smbd link
6364 # path (if we have them).
6365 SMBD_LIBS="$samba_dmapi_libs"
6366 AC_SUBST(SMBD_LIBS)
6368 CFLAGS="${CFLAGS} \$(FLAGS)"
6370 if test x$MERGED_BUILD != x1; then
6371         CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6372 else
6373         if test x"$BLDSHARED" = x"true" ; then
6374                 LDFLAGS="$LDFLAGS -L./bin"
6375         fi
6378 AC_SUBST(MAKEFILE)
6379 if test x$samba_cv_gnu_make = xyes; then
6380         MAKEFILE=Makefile
6381 else
6382         # When we don't have GNU Make, generate a copy of Makefile.in 
6383         # that doesn't have the "include " statements but just includes 
6384         # the files verbatim.
6385         MAKEFILE=Makefile-noincludes
6386         $PERL ./script/expand-includes.pl Makefile.in > $MAKEFILE.in
6388 AC_OUTPUT($MAKEFILE
6389           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6390           lib/netapi/examples/Makefile
6391           lib/netapi/tests/Makefile
6392           pkgconfig/smbclient.pc
6393           pkgconfig/wbclient.pc
6394           pkgconfig/netapi.pc
6395           pkgconfig/smbsharemodes.pc
6396           ../examples/libsmbclient/Makefile.internal
6397           )
6398 dnl If we had to expand the includes, make tsure the output file is moved back
6399 AC_OUTPUT_COMMANDS([
6400 if test x$MAKEFILE != Makefile; then
6401         mv $MAKEFILE Makefile
6405 #################################################
6406 # Print very concise instructions on building/use
6407 if test "x$enable_dmalloc" = xyes
6408 then
6409         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6410         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])