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