82a83a3e06df6f277e232d4b9936d704c1ce31cc
[metze/samba/wip.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 SMB_LIBRARY(netapi, 0)
4779 SMB_LIBRARY(smbclient, 0)
4780 SMB_LIBRARY(smbsharemodes, 0)
4781 SMB_LIBRARY(lua, 0)
4782 SMB_LIBRARY(addns, 0, no, [undefined API])
4783
4784
4785 #################################################
4786 # these tests are taken from the GNU fileutils package
4787 AC_CHECKING(how to get filesystem space usage)
4788 space=no
4789
4790 # Test for statvfs64.
4791 if test $space = no; then
4792   # SVR4
4793   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4794   [AC_TRY_RUN([
4795 #if defined(HAVE_UNISTD_H)
4796 #include <unistd.h>
4797 #endif
4798 #include <sys/types.h>
4799 #include <sys/statvfs.h>
4800   main ()
4801   {
4802     struct statvfs64 fsd;
4803     exit (statvfs64 (".", &fsd));
4804   }],
4805   fu_cv_sys_stat_statvfs64=yes,
4806   fu_cv_sys_stat_statvfs64=no,
4807   fu_cv_sys_stat_statvfs64=cross)])
4808   if test $fu_cv_sys_stat_statvfs64 = yes; then
4809     space=yes
4810     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4811   fi
4812 fi
4813
4814 # Perform only the link test since it seems there are no variants of the
4815 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
4816 # because that got a false positive on SCO OSR5.  Adding the declaration
4817 # of a `struct statvfs' causes this test to fail (as it should) on such
4818 # systems.  That system is reported to work fine with STAT_STATFS4 which
4819 # is what it gets when this test fails.
4820 if test $space = no; then
4821   # SVR4
4822   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4823                  [AC_TRY_LINK([#include <sys/types.h>
4824 #include <sys/statvfs.h>],
4825                               [struct statvfs fsd; statvfs (0, &fsd);],
4826                               fu_cv_sys_stat_statvfs=yes,
4827                               fu_cv_sys_stat_statvfs=no)])
4828   if test $fu_cv_sys_stat_statvfs = yes; then
4829     space=yes
4830     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4831   fi
4832 fi
4833
4834 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4835 # This is not the case on ancient Linux systems.
4836
4837 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4838     AC_TRY_COMPILE([#include <sys/types.h>
4839 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4840         samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4841 if test x"$samba_cv_fsid_int" = x"yes"; then
4842     AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4843 fi
4844
4845 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
4846 # systems use f_bsize.
4847 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
4848     AC_TRY_COMPILE([#include <sys/types.h>
4849 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
4850         samba_cv_frsize=yes,samba_cv_frsize=no)])
4851 if test x"$samba_cv_frsize" = x"yes"; then
4852     AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
4853 fi
4854
4855 # Some systems use f_flag in struct statvfs while others use f_flags
4856 AC_CACHE_CHECK([that statvfs.statvfs_f_flag works],samba_cv_statvfs_f_flag, [
4857     AC_TRY_COMPILE([#include <sys/types.h>
4858 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flag = 0],
4859         samba_cv_statvfs_f_flag=yes,samba_cv_statvfs_f_flag=no)])
4860 if test x"$samba_cv_statvfs_f_flag" = x"yes"; then
4861     AC_DEFINE(HAVE_STATVFS_F_FLAG, 1, [Whether statvfs.f_flag exists])
4862 fi
4863
4864 AC_CACHE_CHECK([that statvfs.statvfs_f_flags works],samba_cv_statvfs_f_flags, [
4865     AC_TRY_COMPILE([#include <sys/types.h>
4866 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_flags = 0],
4867         samba_cv_statvfs_f_flags=yes,samba_cv_statvfs_f_flags=no)])
4868 if test x"$samba_cv_statvfs_f_flags" = x"yes"; then
4869     AC_DEFINE(HAVE_STATVFS_F_FLAGS, 1, [Whether statvfs.f_flags exists])
4870 fi
4871
4872 if test $space = no; then
4873   # DEC Alpha running OSF/1
4874   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4875   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4876   [AC_TRY_RUN([
4877 #include <sys/param.h>
4878 #include <sys/types.h>
4879 #include <sys/mount.h>
4880   main ()
4881   {
4882     struct statfs fsd;
4883     fsd.f_fsize = 0;
4884     exit (statfs (".", &fsd, sizeof (struct statfs)));
4885   }],
4886   fu_cv_sys_stat_statfs3_osf1=yes,
4887   fu_cv_sys_stat_statfs3_osf1=no,
4888   fu_cv_sys_stat_statfs3_osf1=no)])
4889   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4890   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4891     space=yes
4892     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4893   fi
4894 fi
4895
4896 if test $space = no; then
4897 # AIX
4898   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4899 member (AIX, 4.3BSD)])
4900   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4901   [AC_TRY_RUN([
4902 #ifdef HAVE_SYS_PARAM_H
4903 #include <sys/param.h>
4904 #endif
4905 #ifdef HAVE_SYS_MOUNT_H
4906 #include <sys/mount.h>
4907 #endif
4908 #ifdef HAVE_SYS_VFS_H
4909 #include <sys/vfs.h>
4910 #endif
4911   main ()
4912   {
4913   struct statfs fsd;
4914   fsd.f_bsize = 0;
4915   exit (statfs (".", &fsd));
4916   }],
4917   fu_cv_sys_stat_statfs2_bsize=yes,
4918   fu_cv_sys_stat_statfs2_bsize=no,
4919   fu_cv_sys_stat_statfs2_bsize=no)])
4920   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4921   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4922     space=yes
4923     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4924   fi
4925 fi
4926
4927 if test $space = no; then
4928 # SVR3
4929   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4930   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4931   [AC_TRY_RUN([#include <sys/types.h>
4932 #include <sys/statfs.h>
4933   main ()
4934   {
4935   struct statfs fsd;
4936   exit (statfs (".", &fsd, sizeof fsd, 0));
4937   }],
4938     fu_cv_sys_stat_statfs4=yes,
4939     fu_cv_sys_stat_statfs4=no,
4940     fu_cv_sys_stat_statfs4=no)])
4941   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4942   if test $fu_cv_sys_stat_statfs4 = yes; then
4943     space=yes
4944     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4945   fi
4946 fi
4947
4948 if test $space = no; then
4949 # 4.4BSD and NetBSD
4950   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4951 member (4.4BSD and NetBSD)])
4952   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4953   [AC_TRY_RUN([#include <sys/types.h>
4954 #ifdef HAVE_SYS_PARAM_H
4955 #include <sys/param.h>
4956 #endif
4957 #ifdef HAVE_SYS_MOUNT_H
4958 #include <sys/mount.h>
4959 #endif
4960   main ()
4961   {
4962   struct statfs fsd;
4963   fsd.f_fsize = 0;
4964   exit (statfs (".", &fsd));
4965   }],
4966   fu_cv_sys_stat_statfs2_fsize=yes,
4967   fu_cv_sys_stat_statfs2_fsize=no,
4968   fu_cv_sys_stat_statfs2_fsize=no)])
4969   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4970   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4971     space=yes
4972         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4973   fi
4974 fi
4975
4976 if test $space = no; then
4977   # Ultrix
4978   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4979   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4980   [AC_TRY_RUN([#include <sys/types.h>
4981 #ifdef HAVE_SYS_PARAM_H
4982 #include <sys/param.h>
4983 #endif
4984 #ifdef HAVE_SYS_MOUNT_H
4985 #include <sys/mount.h>
4986 #endif
4987 #ifdef HAVE_SYS_FS_TYPES_H
4988 #include <sys/fs_types.h>
4989 #endif
4990   main ()
4991   {
4992   struct fs_data fsd;
4993   /* Ultrix's statfs returns 1 for success,
4994      0 for not mounted, -1 for failure.  */
4995   exit (statfs (".", &fsd) != 1);
4996   }],
4997   fu_cv_sys_stat_fs_data=yes,
4998   fu_cv_sys_stat_fs_data=no,
4999   fu_cv_sys_stat_fs_data=no)])
5000   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5001   if test $fu_cv_sys_stat_fs_data = yes; then
5002     space=yes
5003     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5004   fi
5005 fi
5006
5007 #
5008 # As a gating factor for large file support, in order to
5009 # use <4GB files we must have the following minimal support
5010 # available.
5011 # long long, and a 64 bit off_t or off64_t.
5012 # If we don't have all of these then disable large
5013 # file support.
5014 #
5015 AC_MSG_CHECKING([if large file support can be enabled])
5016 AC_TRY_COMPILE([
5017 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5018 #include <sys/types.h>
5019 #else
5020 __COMPILE_ERROR_
5021 #endif
5022 ],
5023 [int i],
5024 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5025 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5026         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5027 fi
5028 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5029
5030 #################################################
5031 # check for cluster extensions
5032
5033 CTDB_CFLAGS=""
5034 AC_SUBST(CTDB_CFLAGS)
5035 AC_ARG_WITH(ctdb,
5036 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
5037 [ case "$withval" in
5038   yes|no)
5039     AC_MSG_WARN([--with-ctdb called without argument])
5040     ;;
5041   *)
5042     CTDB_CPPFLAGS="-I$withval/include"
5043     ;;
5044   esac])
5045
5046 SAVED_CPPFLAGS="$CPPFLAGS"
5047 CPPFLAGS="$CPPFLAGS $CTDB_CPPFLAGS"
5048 ctdb_broken="missing or broken headers"
5049
5050 AC_CHECK_HEADERS(ctdb.h ctdb_private.h,,,[
5051 #include "confdefs.h"
5052 #define NO_CONFIG_H
5053 #include "replace.h"
5054 #include "system/wait.h"
5055 #include "system/network.h"
5056 #define private #error __USED_RESERVED_WORD_private__
5057 #include <talloc.h>
5058 #include <tdb.h>
5059 #include <ctdb.h>
5060 ])
5061
5062 AC_HAVE_DECL(CTDB_CONTROL_TRANS2_COMMIT_RETRY,[
5063 #include "confdefs.h"
5064 #define NO_CONFIG_H
5065 #include "replace.h"
5066 #include "system/wait.h"
5067 #include "system/network.h"
5068 #include <talloc.h>
5069 #include <tdb.h>
5070 #include <ctdb.h>
5071 #include <ctdb_private.h>
5072 ])
5073 if test x"$ac_cv_have_CTDB_CONTROL_TRANS2_COMMIT_RETRY_decl" = x"yes"; then
5074         ctdb_broken=no
5075 else
5076         ctdb_broken="missing transaction support"
5077 fi
5078
5079 # in ctdb 1.0.57 ctdb_control_tcp was temparary renamed to ctdb_tcp_client
5080 AC_CHECK_TYPE(struct ctdb_tcp_client,[
5081         AC_DEFINE([ctdb_control_tcp],[ctdb_tcp_client],[ctdb ipv4 support])
5082 ],,[
5083 #include "confdefs.h"
5084 #define NO_CONFIG_H
5085 #include "replace.h"
5086 #include "system/wait.h"
5087 #include "system/network.h"
5088 #include <talloc.h>
5089 #include <tdb.h>
5090 #include <ctdb.h>
5091 #include <ctdb_private.h>
5092 ])
5093
5094 AC_CHECK_TYPE(struct ctdb_control_tcp,[
5095         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP],[1],[ctdb ipv4 support])
5096 ],[
5097         ctdb_broken="missing struct ctdb_control_tcp"
5098 ],[
5099 #include "confdefs.h"
5100 #define NO_CONFIG_H
5101 #include "replace.h"
5102 #include "system/wait.h"
5103 #include "system/network.h"
5104 #include <talloc.h>
5105 #include <tdb.h>
5106 #include <ctdb.h>
5107 #include <ctdb_private.h>
5108 ])
5109
5110 AC_CHECK_TYPE(struct ctdb_control_tcp_addr,[
5111         AC_DEFINE([HAVE_STRUCT_CTDB_CONTROL_TCP_ADDR],[1],[ctdb ipv6 support])
5112 ],,[
5113 #include "confdefs.h"
5114 #define NO_CONFIG_H
5115 #include "replace.h"
5116 #include "system/wait.h"
5117 #include "system/network.h"
5118 #include <talloc.h>
5119 #include <tdb.h>
5120 #include <ctdb.h>
5121 #include <ctdb_private.h>
5122 ])
5123 CPPFLAGS="$SAVED_CPPFLAGS"
5124
5125 AC_MSG_CHECKING(cluster support)
5126 AC_ARG_WITH(cluster-support,
5127 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=auto)])])
5128
5129 if test x"$with_cluster_support" = x ; then
5130         with_cluster_support="auto"
5131 fi
5132
5133 if test x"$ac_cv_header_ctdb_private_h" != x"yes"; then
5134         if test "x$with_cluster_support" = "xyes"; then
5135                 AC_MSG_ERROR("ctdb_private.h is required for cluster support")
5136         fi
5137         with_cluster_support=no
5138 fi
5139
5140 if test x"$ctdb_broken" != x"no"; then
5141         if test "x$with_cluster_support" = "xyes"; then
5142                 AC_MSG_ERROR(["cluster support: $ctdb_broken"])
5143         fi
5144         with_cluster_support=no
5145 fi
5146
5147 if test "x$with_cluster_support" != "xno"; then
5148     AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5149     SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${CTDB_CPPFLAGS}"
5150     AC_MSG_RESULT(yes)
5151 else
5152     AC_MSG_RESULT(no)
5153 fi
5154
5155 #################################################
5156 # check for ACL support
5157
5158 AC_MSG_CHECKING(whether to support ACLs)
5159 AC_ARG_WITH(acl-support,
5160 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5161 [ case "$withval" in
5162         yes|no)
5163                 with_acl_support="$withval"
5164                 ;;
5165   esac ])
5166
5167 if test x"$with_acl_support" = x ; then
5168         with_acl_support="auto"
5169 fi
5170
5171 AC_MSG_RESULT($with_acl_support)
5172
5173 if test x"$with_acl_support" = x"no"; then
5174         AC_MSG_RESULT(Disabling ACL support)
5175         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5176 else
5177         AC_MSG_NOTICE(checking whether ACL support is available:)
5178         case "$host_os" in
5179         *sysv5*)
5180                 AC_MSG_NOTICE(Using UnixWare ACLs)
5181                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5182                 default_static_modules="$default_static_modules vfs_solarisacl"
5183                 ;;
5184         *solaris*)
5185                 AC_MSG_NOTICE(Using solaris ACLs)
5186                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5187                 ACL_LIBS="$ACL_LIBS -lsec"
5188                 default_static_modules="$default_static_modules vfs_solarisacl"
5189                 ;;
5190         *hpux*)
5191                 AC_MSG_NOTICE(Using HPUX ACLs)
5192                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5193                 default_static_modules="$default_static_modules vfs_hpuxacl"
5194                 ;;
5195         *irix*)
5196                 AC_MSG_NOTICE(Using IRIX ACLs)
5197                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5198                 default_static_modules="$default_static_modules vfs_irixacl"
5199                 ;;
5200         *aix*)
5201                 AC_MSG_NOTICE(Using AIX ACLs)
5202                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5203                 default_static_modules="$default_static_modules vfs_aixacl"
5204                 ;;
5205         *osf*)
5206                 AC_MSG_NOTICE(Using Tru64 ACLs)
5207                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5208                 ACL_LIBS="$ACL_LIBS -lpacl"
5209                 default_static_modules="$default_static_modules vfs_tru64acl"
5210                 ;;
5211         *darwin*)
5212                 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5213                 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5214                 ;;
5215         *)
5216                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5217                 case "$host_os" in
5218                 *linux*)
5219                         AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5220                         ;;
5221                 esac
5222                 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5223                         acl_LIBS=$LIBS
5224                         LIBS="$LIBS $ACL_LIBS"
5225                         AC_TRY_LINK([
5226                                 #include <sys/types.h>
5227                                 #include <sys/acl.h>
5228                         ],[
5229                                 acl_t acl;
5230                                 int entry_id;
5231                                 acl_entry_t *entry_p;
5232                                 return acl_get_entry(acl, entry_id, entry_p);
5233                         ],
5234                         [samba_cv_HAVE_POSIX_ACLS=yes],
5235                         [samba_cv_HAVE_POSIX_ACLS=no])
5236                         LIBS=$acl_LIBS
5237                 ])
5238                 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5239                         AC_MSG_NOTICE(Using posix ACLs)
5240                         AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5241                         AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5242                                 acl_LIBS=$LIBS
5243                                 LIBS="$LIBS $ACL_LIBS"
5244                                 AC_TRY_LINK([
5245                                         #include <sys/types.h>
5246                                         #include <sys/acl.h>
5247                                 ],[
5248                                         acl_permset_t permset_d;
5249                                         acl_perm_t perm;
5250                                         return acl_get_perm_np(permset_d, perm);
5251                                 ],
5252                                 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5253                                 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5254                                 LIBS=$acl_LIBS
5255                         ])
5256                         if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5257                                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5258                         fi
5259                         default_static_modules="$default_static_modules vfs_posixacl"
5260                 else
5261                         AC_MSG_NOTICE(ACL support is not avaliable)
5262                         AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5263                 fi
5264                 ;;
5265         esac
5266 fi # with_acl_support
5267
5268
5269
5270 #################################################
5271 # check for AIO support
5272
5273 AC_MSG_CHECKING(whether to support asynchronous io)
5274 AC_ARG_WITH(aio-support,
5275 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5276 [ case "$withval" in
5277   yes)
5278
5279         AC_MSG_RESULT(yes)
5280         case "$host_os" in
5281         *)
5282                 AIO_LIBS=$LIBS
5283                 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5284                 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5285                 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5286                 aio_LIBS=$LIBS
5287                 LIBS=$AIO_LIBS
5288                 AC_TRY_LINK([#include <sys/types.h>
5289 #include <aio.h>],
5290 [ struct aiocb a; return aio_read(&a);],
5291 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5292                 LIBS=$aio_LIBS])
5293                 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5294                 aio_LIBS=$LIBS
5295                 LIBS=$AIO_LIBS
5296                 AC_TRY_LINK([#include <sys/types.h>
5297 #include <aio.h>],
5298 [ struct aiocb64 a; return aio_read64(&a);],
5299 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5300                 LIBS=$aio_LIBS])
5301                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5302                         AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5303                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5304                         LIBS=$AIO_LIBS
5305                 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5306                         AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5307                         LIBS=$AIO_LIBS
5308                 fi
5309
5310                 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5311                         AC_MSG_CHECKING(for aio_read)
5312                         AC_LINK_IFELSE([#include <aio.h>
5313 int main() { struct aiocb a; return aio_read(&a); }],
5314 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5315 [AC_MSG_RESULT(no)])
5316
5317                         AC_MSG_CHECKING(for aio_write)
5318                         AC_LINK_IFELSE([#include <aio.h>
5319 int main() { struct aiocb a; return aio_write(&a); }],
5320 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5321 [AC_MSG_RESULT(no)])
5322
5323                         AC_MSG_CHECKING(for aio_fsync)
5324                         AC_LINK_IFELSE([#include <aio.h>
5325 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5326 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5327 [AC_MSG_RESULT(no)])
5328
5329                         AC_MSG_CHECKING(for aio_return)
5330                         AC_LINK_IFELSE([#include <aio.h>
5331 int main() { struct aiocb a; return aio_return(&a); }],
5332 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5333 [AC_MSG_RESULT(no)])
5334
5335                         AC_MSG_CHECKING(for aio_error)
5336                         AC_LINK_IFELSE([#include <aio.h>
5337 int main() { struct aiocb a; return aio_error(&a); }],
5338 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5339 [AC_MSG_RESULT(no)])
5340
5341                         AC_MSG_CHECKING(for aio_cancel)
5342                         AC_LINK_IFELSE([#include <aio.h>
5343 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5344 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5345 [AC_MSG_RESULT(no)])
5346
5347                         AC_MSG_CHECKING(for aio_suspend)
5348                         AC_LINK_IFELSE([#include <aio.h>
5349 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5350 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5351 [AC_MSG_RESULT(no)])
5352                 fi
5353
5354                 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5355                         AC_MSG_CHECKING(for aio_read64)
5356                         AC_LINK_IFELSE([#include <aio.h>
5357 int main() { struct aiocb a; return aio_read64(&a); }],
5358 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5359 [AC_MSG_RESULT(no)])
5360
5361                         AC_MSG_CHECKING(for aio_write64)
5362                         AC_LINK_IFELSE([#include <aio.h>
5363 int main() { struct aiocb a; return aio_write64(&a); }],
5364 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5365 [AC_MSG_RESULT(no)])
5366
5367                         AC_MSG_CHECKING(for aio_fsync64)
5368                         AC_LINK_IFELSE([#include <aio.h>
5369 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5370 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5371 [AC_MSG_RESULT(no)])
5372
5373                         AC_MSG_CHECKING(for aio_return64)
5374                         AC_LINK_IFELSE([#include <aio.h>
5375 int main() { struct aiocb a; return aio_return64(&a); }],
5376 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5377 [AC_MSG_RESULT(no)])
5378
5379                         AC_MSG_CHECKING(for aio_error64)
5380                         AC_LINK_IFELSE([#include <aio.h>
5381 int main() { struct aiocb a; return aio_error64(&a); }],
5382 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5383 [AC_MSG_RESULT(no)])
5384
5385                         AC_MSG_CHECKING(for aio_cancel64)
5386                         AC_LINK_IFELSE([#include <aio.h>
5387 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5388 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5389 [AC_MSG_RESULT(no)])
5390
5391                         AC_MSG_CHECKING(for aio_suspend64)
5392                         AC_LINK_IFELSE([#include <aio.h>
5393 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5394 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5395 [AC_MSG_RESULT(no)])
5396                 fi
5397             ;;
5398         esac
5399         ;;
5400   *)
5401     AC_MSG_RESULT(no)
5402     AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5403     ;;
5404   esac ],
5405   AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5406   AC_MSG_RESULT(no)
5407 )
5408
5409 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5410         if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5411                 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5412                 default_shared_modules="$default_shared_modules vfs_aio_fork"
5413         fi
5414 fi
5415
5416 #################################################
5417 # check for sendfile support
5418
5419 with_sendfile_support=yes
5420 AC_MSG_CHECKING(whether to check to support sendfile)
5421 AC_ARG_WITH(sendfile-support,
5422 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5423 [ case "$withval" in
5424   yes)
5425
5426         AC_MSG_RESULT(yes);
5427
5428         case "$host_os" in
5429         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5430                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5431                 AC_TRY_LINK([#include <sys/sendfile.h>],
5432 [\
5433 int tofd, fromfd;
5434 off64_t offset;
5435 size_t total;
5436 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5437 ],
5438 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5439
5440                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5441                 AC_TRY_LINK([#include <sys/sendfile.h>],
5442 [\
5443 int tofd, fromfd;
5444 off_t offset;
5445 size_t total;
5446 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5447 ],
5448 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5449
5450 # Try and cope with broken Linux sendfile....
5451                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5452                 AC_TRY_LINK([\
5453 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5454 #undef _FILE_OFFSET_BITS
5455 #endif
5456 #include <sys/sendfile.h>],
5457 [\
5458 int tofd, fromfd;
5459 off_t offset;
5460 size_t total;
5461 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5462 ],
5463 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5464
5465         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5466                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5467                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5468                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5469         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5470                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5471                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5472                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5473         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5474                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5475                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5476         else
5477                 AC_MSG_RESULT(no);
5478         fi
5479
5480         ;;
5481         *freebsd* | *dragonfly* )
5482                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5483                 AC_TRY_LINK([\
5484 #include <sys/types.h>
5485 #include <unistd.h>
5486 #include <sys/socket.h>
5487 #include <sys/uio.h>],
5488 [\
5489         int fromfd, tofd, ret, total=0;
5490         off_t offset, nwritten;
5491         struct sf_hdtr hdr;
5492         struct iovec hdtrl;
5493         hdr.headers = &hdtrl;
5494         hdr.hdr_cnt = 1;
5495         hdr.trailers = NULL;
5496         hdr.trl_cnt = 0;
5497         hdtrl.iov_base = NULL;
5498         hdtrl.iov_len = 0;
5499         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5500 ],
5501 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5502
5503         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5504                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5505                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5506                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5507         else
5508                 AC_MSG_RESULT(no);
5509         fi
5510         ;;
5511
5512         *hpux*)
5513                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5514                 AC_TRY_LINK([\
5515 #include <sys/socket.h>
5516 #include <sys/uio.h>],
5517 [\
5518         int fromfd, tofd;
5519         size_t total=0;
5520         struct iovec hdtrl[2];
5521         ssize_t nwritten;
5522         off64_t offset;
5523
5524         hdtrl[0].iov_base = 0;
5525         hdtrl[0].iov_len = 0;
5526
5527         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5528 ],
5529 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5530         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5531                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5532                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5533                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5534         else
5535                 AC_MSG_RESULT(no);
5536         fi
5537
5538                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5539                 AC_TRY_LINK([\
5540 #include <sys/socket.h>
5541 #include <sys/uio.h>],
5542 [\
5543         int fromfd, tofd;
5544         size_t total=0;
5545         struct iovec hdtrl[2];
5546         ssize_t nwritten;
5547         off_t offset;
5548
5549         hdtrl[0].iov_base = 0;
5550         hdtrl[0].iov_len = 0;
5551
5552         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5553 ],
5554 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5555         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5556                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5557                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5558                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5559         else
5560                 AC_MSG_RESULT(no);
5561         fi
5562         ;;
5563
5564         *solaris*)
5565                 AC_CHECK_LIB(sendfile,sendfilev)
5566                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5567                 AC_TRY_LINK([\
5568 #include <sys/sendfile.h>],
5569 [\
5570         int sfvcnt;
5571         size_t xferred;
5572         struct sendfilevec vec[2];
5573         ssize_t nwritten;
5574         int tofd;
5575
5576         sfvcnt = 2;
5577
5578         vec[0].sfv_fd = SFV_FD_SELF;
5579         vec[0].sfv_flag = 0;
5580         vec[0].sfv_off = 0;
5581         vec[0].sfv_len = 0;
5582
5583         vec[1].sfv_fd = 0;
5584         vec[1].sfv_flag = 0;
5585         vec[1].sfv_off = 0;
5586         vec[1].sfv_len = 0;
5587         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5588 ],
5589 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5590
5591         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5592                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5593                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5594                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5595         else
5596                 AC_MSG_RESULT(no);
5597         fi
5598
5599                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5600                 AC_TRY_LINK([\
5601 #include <sys/sendfile.h>],
5602 [\
5603         int sfvcnt;
5604         size_t xferred;
5605         struct sendfilevec vec[2];
5606         ssize_t nwritten;
5607         int tofd;
5608
5609         sfvcnt = 2;
5610
5611         vec[0].sfv_fd = SFV_FD_SELF;
5612         vec[0].sfv_flag = 0;
5613         vec[0].sfv_off = 0;
5614         vec[0].sfv_len = 0;
5615
5616         vec[1].sfv_fd = 0;
5617         vec[1].sfv_flag = 0;
5618         vec[1].sfv_off = 0;
5619         vec[1].sfv_len = 0;
5620         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5621 ],
5622 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5623
5624         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5625                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5626                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5627                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5628         else
5629                 AC_MSG_RESULT(no);
5630         fi
5631         ;;
5632         *aix*)
5633                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5634                 AC_TRY_LINK([\
5635 #include <sys/socket.h>],
5636 [\
5637         int fromfd, tofd;
5638         size_t total=0;
5639         struct sf_parms hdtrl;
5640         ssize_t nwritten;
5641         off64_t offset;
5642
5643         hdtrl.header_data = 0;
5644         hdtrl.header_length = 0;
5645         hdtrl.file_descriptor = fromfd;
5646         hdtrl.file_offset = 0;
5647         hdtrl.file_bytes = 0;
5648         hdtrl.trailer_data = 0;
5649         hdtrl.trailer_length = 0;
5650
5651         nwritten = send_file(&tofd, &hdtrl, 0);
5652 ],
5653 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5654         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5655                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5656                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5657                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5658         else
5659                 AC_MSG_RESULT(no);
5660         fi
5661         ;;
5662         *)
5663         ;;
5664         esac
5665         ;;
5666   *)
5667     AC_MSG_RESULT(no)
5668     ;;
5669   esac ],
5670   AC_MSG_RESULT(yes)
5671 )
5672
5673 ############################################
5674 # See if we have the Linux readahead syscall.
5675
5676 AC_CACHE_CHECK([for Linux readahead],
5677                 samba_cv_HAVE_LINUX_READAHEAD,[
5678     AC_TRY_LINK([
5679 #if defined(HAVE_UNISTD_H)
5680 #include <unistd.h>
5681 #endif
5682 #include <fcntl.h>],
5683     [ssize_t err = readahead(0,0,0x80000);],
5684     samba_cv_HAVE_LINUX_READAHEAD=yes,
5685     samba_cv_HAVE_LINUX_READAHEAD=no)])
5686
5687 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5688   AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5689              [Whether Linux readahead is available])
5690 fi
5691
5692 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5693
5694 ############################################
5695 # See if we have the posix_fadvise syscall.
5696
5697 AC_CACHE_CHECK([for posix_fadvise],
5698                 samba_cv_HAVE_POSIX_FADVISE,[
5699     AC_TRY_LINK([
5700 #if defined(HAVE_UNISTD_H)
5701 #include <unistd.h>
5702 #endif
5703 #include <fcntl.h>],
5704     [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5705     samba_cv_HAVE_POSIX_FADVISE=yes,
5706     samba_cv_HAVE_POSIX_FADVISE=no)])
5707
5708 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5709   AC_DEFINE(HAVE_POSIX_FADVISE,1,
5710              [Whether posix_fadvise is available])
5711 fi
5712
5713 ############################################
5714 # See if we have the Linux splice syscall.
5715
5716 case "$host_os" in
5717 *linux*)
5718 AC_CACHE_CHECK([for Linux splice],
5719                 samba_cv_HAVE_LINUX_SPLICE,[
5720     AC_TRY_LINK([
5721 #if defined(HAVE_UNISTD_H)
5722 #include <unistd.h>
5723 #endif
5724 #include <fcntl.h>],
5725     [long ret = splice(0,0,1,0,400,0);],
5726     samba_cv_HAVE_LINUX_SPLICE=yes,
5727     samba_cv_HAVE_LINUX_SPLICE=no)])
5728 ;;
5729 *)
5730 samba_cv_HAVE_LINUX_SPLICE=no
5731 ;;
5732 esac
5733
5734 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5735   AC_DEFINE(HAVE_LINUX_SPLICE,1,
5736              [Whether Linux splice is available])
5737 fi
5738
5739 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5740
5741 ############################################
5742 # See if we have the a broken readlink syscall.
5743
5744 AC_CACHE_CHECK([for a broken readlink syscall],samba_cv_HAVE_BROKEN_READLINK,[
5745 AC_TRY_RUN([#include "${srcdir-.}/../tests/readlink.c"],
5746         samba_cv_HAVE_BROKEN_READLINK=no,samba_cv_HAVE_BROKEN_READLINK=yes,samba_cv_HAVE_BROKEN_READLINK=cross)
5747 ])
5748 if test x"$samba_cv_HAVE_BROKEN_READLINK" = x"yes"; then
5749         AC_DEFINE(HAVE_BROKEN_READLINK,1,[Whether the readlink syscall is broken])
5750 fi
5751
5752 #################################################
5753 # Check whether winbind is supported on this platform.  If so we need to
5754 # build and install client programs, sbin programs and shared libraries
5755
5756 AC_MSG_CHECKING(whether to build winbind)
5757
5758 # Initially, the value of $host_os decides whether winbind is supported
5759
5760 HAVE_WINBIND=yes
5761 HAVE_WBCLIENT=no
5762
5763 # Define external wbclient library to link against.  This disables winbind.
5764 # We define this here so --with-winbind can override it.
5765 AC_ARG_WITH(wbclient,
5766 [AS_HELP_STRING([--with-wbclient], [Use external wbclient (optional)])],
5767 [
5768   case "$withval" in
5769         no)
5770                 HAVE_WBCLIENT=no
5771                 ;;
5772         yes)
5773                 HAVE_WBCLIENT=yes
5774                 HAVE_WINBIND=no
5775                 ;;
5776         *)
5777                 HAVE_WBCLIENT=yes
5778                 HAVE_WINBIND=no
5779                 WBCLIENT_INCLUDES="-I$withval/include"
5780                 WBCLIENT_LDFLAGS="-L$withval/lib"
5781                 ;;
5782   esac ],
5783 )
5784
5785 AC_SUBST(WBCLIENT_INCLUDES)
5786 AC_SUBST(WBCLIENT_LDFLAGS)
5787 AC_SUBST(WBCLIENT_LIBS)
5788
5789
5790 # Define the winbind shared library name and any specific linker flags
5791 # it needs to be built with.
5792
5793 WINBIND_NSS="../nsswitch/libnss_winbind.$SHLIBEXT"
5794 WINBIND_WINS_NSS="../nsswitch/libnss_wins.$SHLIBEXT"
5795 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5796 NSSSONAMEVERSIONSUFFIX=""
5797 WINBIND_NSS_PTHREAD=""
5798
5799 case "$host_os" in
5800         *linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu)
5801                 NSSSONAMEVERSIONSUFFIX=".2"
5802                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_linux.o"
5803                 ;;
5804         *freebsd[[5-9]]*)
5805                 # FreeBSD winbind client is implemented as a wrapper around
5806                 # the Linux version.
5807                 NSSSONAMEVERSIONSUFFIX=".1"
5808                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
5809                     ../nsswitch/winbind_nss_linux.o"
5810                 WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5811                 WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5812                 ;;
5813
5814         *netbsd*[[3-9]]*)
5815                 # NetBSD winbind client is implemented as a wrapper
5816                 # around the Linux version. It needs getpwent_r() to
5817                 # indicate libc's use of the correct nsdispatch API.
5818                 #
5819                 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5820                         WINBIND_NSS_EXTRA_OBJS="\
5821                             ../nsswitch/winbind_nss_netbsd.o \
5822                             ../nsswitch/winbind_nss_linux.o"
5823                         WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
5824                         WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
5825                 else
5826                         HAVE_WINBIND=no
5827                         winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5828                 fi
5829                 ;;
5830         *irix*)
5831                 # IRIX has differently named shared libraries
5832                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_irix.o"
5833                 WINBIND_NSS="../nsswitch/libns_winbind.$SHLIBEXT"
5834                 WINBIND_WINS_NSS="../nsswitch/libns_wins.$SHLIBEXT"
5835                 ;;
5836         *solaris*)
5837                 # Solaris winbind client is implemented as a wrapper around
5838                 # the Linux version.
5839                 NSSSONAMEVERSIONSUFFIX=".1"
5840                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o \
5841                     ../nsswitch/winbind_nss_linux.o"
5842                 WINBIND_NSS_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5843                 PAM_WINBIND_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5844                 ;;
5845         *hpux11*)
5846                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_solaris.o"
5847                 ;;
5848         *aix*)
5849                 # AIX has even differently named shared libraries.  No
5850                 # WINS support has been implemented yet.
5851                 WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_aix.o"
5852                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5853                 WINBIND_NSS="../nsswitch/WINBIND"
5854                 WINBIND_WINS_NSS=""
5855                 ;;
5856         *)
5857                 HAVE_WINBIND=no
5858                 winbind_no_reason=", unsupported on $host_os"
5859                 ;;
5860 esac
5861
5862 # Check the setting of --with-winbind
5863
5864 AC_ARG_WITH(winbind,
5865 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
5866 [
5867   case "$withval" in
5868         yes)
5869                 HAVE_WINBIND=yes
5870                 HAVE_WBCLIENT=no
5871                 ;;
5872         no)
5873                 HAVE_WINBIND=no
5874                 winbind_reason=""
5875                 ;;
5876   esac ],
5877 )
5878
5879 # We need unix domain sockets for winbind
5880
5881 if test x"$HAVE_WINBIND" = x"yes"; then
5882         if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
5883                 winbind_no_reason=", no unix domain socket support on $host_os"
5884                 HAVE_WINBIND=no
5885         fi
5886 fi
5887
5888 # Display test results
5889
5890 if test x"$HAVE_WINBIND" = x"no"; then
5891         WINBIND_NSS=""
5892         WINBIND_WINS_NSS=""
5893 fi
5894 if test x"$HAVE_WBCLIENT" = x"yes"; then
5895         AC_CHECK_LIB(wbclient, wbcInterfaceDetails,
5896                      [LIBWBCLIENT_LIBS="-lwbclient"], AC_MSG_ERROR([Could not find wbclient]), [$WBCLIENT_LDFLAGS])
5897         LIBWBCLIENT_LIBS="$LIBWBCLIENT_LIBS $WBCLIENT_LDFLAGS"
5898         AC_MSG_RESULT(yes)
5899         AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
5900         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5901 else
5902         if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
5903                 BUILD_LIBWBCLIENT_SHARED=no
5904         else
5905                 BUILD_LIBWBCLIENT_SHARED=yes
5906         fi
5907
5908         LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
5909         LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
5910         LIBWBCLIENT_SOVER=0
5911         if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
5912                 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5913                 ## Only worry about libwbclient if we have shared
5914                 # library support
5915                 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
5916                 LIBWBCLIENT_TARGET=$LIBWBCLIENT_SHARED_TARGET
5917                 LIBWBCLIENT=libwbclient
5918                 INSTALL_LIBWBCLIENT=installlibwbclient
5919                 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
5920                 LIBWBCLIENT_LIBS="-lwbclient"
5921         else
5922                 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
5923                 LIBWBCLIENT_TARGET=$LIBWBCLIENT_STATIC_TARGET
5924                 LIBWBCLIENT_LIBS=$LIBWBCLIENT_STATIC_TARGET
5925         fi
5926 fi
5927
5928 if test x"$HAVE_WINBIND" = x"yes"; then
5929         AC_MSG_RESULT(yes)
5930         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5931
5932         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5933         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5934         if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5935                 PAM_MODULES="$PAM_MODULES pam_winbind"
5936                 INSTALL_PAM_MODULES="installpammodules"
5937                 UNINSTALL_PAM_MODULES="uninstallpammodules"
5938         fi
5939 else
5940         AC_MSG_RESULT(no$winbind_no_reason)
5941 fi
5942
5943 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
5944                         AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])
5945                         samba_cv_HAVE_PTHREAD=yes],
5946                         samba_cv_HAVE_PTHREAD=no)
5947
5948 AC_SUBST(WINBIND_NSS_PTHREAD)
5949 AC_SUBST(WINBIND_NSS)
5950 AC_SUBST(WINBIND_WINS_NSS)
5951 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5952 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5953 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5954 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5955 AC_SUBST(PAM_WINBIND_EXTRA_LIBS)
5956
5957 AC_SUBST(WINBIND_KRB5_LOCATOR)
5958
5959 # Solaris 10 does have new member in nss_XbyY_key
5960 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5961                 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5962                 [#include <nss_dbdefs.h>])
5963
5964 # Solaris has some extra fields in struct passwd that need to be
5965 # initialised otherwise nscd crashes.
5966
5967 AC_CHECK_MEMBER(struct passwd.pw_comment,
5968                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5969                 [#include <pwd.h>])
5970
5971 AC_CHECK_MEMBER(struct passwd.pw_age,
5972                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5973                 [#include <pwd.h>])
5974
5975 # AIX 4.3.x and 5.1 do not have as many members in
5976 # struct secmethod_table as AIX 5.2
5977 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5978        [#include <usersec.h>])
5979 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5980        [#include <usersec.h>])
5981
5982 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
5983 AC_TRY_COMPILE([#include <sys/types.h>
5984 #include <sys/socket.h>],
5985 [struct ucred cred;
5986  socklen_t cred_len;
5987  int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
5988 ],
5989 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
5990 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
5991     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
5992 fi
5993
5994
5995 #################################################
5996 # Check to see if we should use the included popt
5997
5998 AC_ARG_WITH(included-popt,
5999 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
6000 [
6001   case "$withval" in
6002         yes)
6003                 INCLUDED_POPT=yes
6004                 ;;
6005         no)
6006                 INCLUDED_POPT=no
6007                 ;;
6008   esac ],
6009 )
6010 if test x"$INCLUDED_POPT" != x"yes"; then
6011     AC_CHECK_LIB(popt, poptGetContext,
6012                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
6013 fi
6014
6015 AC_MSG_CHECKING(whether to use included popt)
6016 if test x"$INCLUDED_POPT" = x"yes"; then
6017     AC_MSG_RESULT(yes)
6018     BUILD_POPT='$(POPT_OBJ)'
6019     POPTLIBS='$(POPT_OBJ)'
6020     FLAGS1="-I\$(srcdir)/../lib/popt"
6021 else
6022     AC_MSG_RESULT(no)
6023         BUILD_POPT=""
6024     POPTLIBS="-lpopt"
6025 fi
6026 AC_SUBST(BUILD_POPT)
6027 AC_SUBST(POPTLIBS)
6028 AC_SUBST(FLAGS1)
6029
6030 #################################################
6031 # Check if user wants DNS service discovery support
6032
6033 AC_ARG_ENABLE(dnssd,
6034 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=no)])])
6035
6036 AC_SUBST(DNSSD_LIBS)
6037 if test x"$enable_dnssd" = x"yes"; then
6038     have_dnssd_support=yes
6039
6040     AC_CHECK_HEADERS(dns_sd.h)
6041     if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6042         have_dnssd_support=no
6043     fi
6044
6045     # On Darwin the DNSSD API is in libc, but on other platforms it's
6046     # probably in -ldns_sd
6047     AC_CHECK_FUNCS(DNSServiceRegister)
6048     AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6049     if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6050             x"$ac_cv_lib_ext_dns_sd_DNSServiceRegister" != x"yes"; then
6051         have_dnssd_support=no
6052     fi
6053
6054     if test x"$have_dnssd_support" = x"yes"; then
6055         AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6056                 [Whether to enable DNS service discovery support])
6057     else
6058         if test x"$enable_dnssd" = x"yes"; then
6059             AC_MSG_ERROR(DNS service discovery support not available)
6060         fi
6061     fi
6062
6063 fi
6064
6065 #################################################
6066 # Check if user wants avahi support
6067
6068 AC_ARG_ENABLE(avahi,
6069 [AS_HELP_STRING([--enable-avahi], [Enable Avahi support (default=auto)])])
6070
6071 AC_SUBST(AVAHI_LIBS)
6072 if test x"$enable_avahi" != x"no"; then
6073     have_avahi_support=yes
6074
6075     AC_CHECK_HEADERS(avahi-common/watch.h)
6076     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6077         have_avahi_support=no
6078     fi
6079
6080     AC_CHECK_HEADERS(avahi-client/client.h)
6081     if test x"$ac_cv_header_avahi_common_watch_h" != x"yes"; then
6082         have_avahi_support=no
6083     fi
6084
6085     AC_CHECK_LIB_EXT(avahi-client, AVAHI_LIBS, avahi_client_new)
6086     if test x"$ac_cv_lib_ext_avahi_client_avahi_client_new" != x"yes"; then
6087         have_avahi_support=no
6088     fi
6089
6090     if test x"$have_avahi_support" = x"yes"; then
6091         AC_DEFINE(WITH_AVAHI_SUPPORT, 1,
6092                 [Whether to enable avahi support])
6093         AC_SUBST(AVAHI_OBJ, "lib/avahi.o smbd/avahi_register.o")
6094     else
6095         if test x"$enable_avahi" = x"yes"; then
6096             AC_MSG_ERROR(avahi support not available)
6097         fi
6098     fi
6099 fi
6100
6101 #################################################
6102 # Check if user wants pthreadpool support
6103
6104 AC_ARG_ENABLE(pthreadpool,
6105 [AS_HELP_STRING([--enable-pthreadpool], [Enable pthreads pool helper support (default=auto)])])
6106
6107 if test x"$enable_pthreadpool" != x"no" -a x"$samba_cv_HAVE_PTHREAD" = x"yes"; then
6108     AC_TRY_LINK([#include "pthread.h"],
6109     [pthread_create(NULL, NULL, NULL, NULL)],
6110                     ,LIBS="$LIBS -lpthread")
6111     AC_DEFINE(WITH_PTHREADPOOL, 1, [Whether to include pthreadpool helpers])
6112     AC_SUBST(PTHREADPOOL_OBJ, "lib/pthreadpool.o")
6113 fi
6114
6115 #################################################
6116 # Check to see if we should use the included iniparser
6117
6118 AC_ARG_WITH(included-iniparser,
6119 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6120 [
6121   case "$withval" in
6122         yes)
6123                 INCLUDED_INIPARSER=yes
6124                 ;;
6125         no)
6126                 INCLUDED_INIPARSER=no
6127                 ;;
6128   esac ],
6129 )
6130 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6131     AC_CHECK_LIB(iniparser, iniparser_load,
6132                  INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6133 fi
6134
6135 AC_MSG_CHECKING(whether to use included iniparser)
6136 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6137     AC_MSG_RESULT(yes)
6138     BUILD_INIPARSER='$(INIPARSER_OBJ)'
6139         INIPARSERLIBS=""
6140     FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
6141 else
6142     AC_MSG_RESULT(no)
6143         BUILD_INIPARSER=""
6144     INIPARSERLIBS="-liniparser"
6145 fi
6146 AC_SUBST(BUILD_INIPARSER)
6147 AC_SUBST(INIPARSERLIBS)
6148 AC_SUBST(FLAGS1)
6149
6150
6151
6152 # Checks for the vfs_fileid module
6153 # Start
6154 AC_CHECK_FUNC(getmntent)
6155
6156 AC_CHECK_HEADERS(sys/statfs.h)
6157
6158 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6159 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6160              AC_TRY_RUN([
6161                 #include <sys/types.h>
6162                 #include <sys/statfs.h>
6163                 int main(void)
6164                 {
6165                         struct statfs fsd;
6166                         fsid_t fsid = fsd.f_fsid;
6167                         return statfs (".", &fsd);
6168                 }],
6169                 vfsfileid_cv_statfs=yes,
6170                 vfsfileid_cv_statfs=no,
6171                 vfsfileid_cv_statfs=cross)
6172 ])
6173 AC_MSG_RESULT($vfsfileid_cv_statfs)
6174
6175 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6176         x"$vfsfileid_cv_statfs" = x"yes"; then
6177         default_shared_modules="$default_shared_modules vfs_fileid"
6178 fi
6179 # End
6180 # Checks for the vfs_fileid module
6181
6182
6183 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6184 do
6185         eval MODULE_DEFAULT_$i=STATIC
6186 done
6187
6188 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6189 do
6190         dnl Fall back to static if we cannot build shared libraries
6191         eval MODULE_DEFAULT_$i=STATIC
6192
6193         if test $BLDSHARED = true; then
6194                 eval MODULE_DEFAULT_$i=SHARED
6195         fi
6196 done
6197
6198 dnl Always build these modules static
6199 MODULE_rpc_spoolss=STATIC
6200 MODULE_rpc_srvsvc=STATIC
6201 MODULE_idmap_tdb=STATIC
6202 MODULE_idmap_passdb=STATIC
6203 MODULE_idmap_nss=STATIC
6204
6205 MODULE_nss_info_template=STATIC
6206
6207 AC_ARG_WITH(static-modules,
6208 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6209 [ if test $withval; then
6210         for i in `echo $withval | sed -e 's/,/ /g'`
6211         do
6212                 eval MODULE_$i=STATIC
6213         done
6214 fi ])
6215
6216 AC_ARG_WITH(shared-modules,
6217 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6218 [ if test $withval; then
6219         for i in `echo $withval | sed -e 's/,/ /g'`
6220         do
6221                         eval MODULE_$i=SHARED
6222         done
6223 fi ])
6224
6225 if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \
6226                 x"$MODULE_vfs_notify_fam" = xSTATIC ; then
6227         SMBD_FAM_LIBS="$SMB_FAM_LIBS"
6228         AC_SUBST(SMBD_FAM_LIBS)
6229 fi
6230
6231 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6232                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6233 SMB_MODULE(pdb_ads, passdb/pdb_ads.o \$(TLDAP_OBJ), "bin/ads.$SHLIBEXT", PDB)
6234 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6235 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6236 SMB_MODULE(pdb_wbc_sam, passdb/pdb_wbc_sam.o, "bin/wbc_sam.$SHLIBEXT", PDB)
6237 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6238
6239
6240 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6241 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6242 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6243 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6244 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6245 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6246 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6247 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6248 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6249 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6250 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6251 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6252 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6253 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6254 SMB_SUBSYSTEM(RPC,smbd/server.o)
6255
6256 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6257 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6258 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6259 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6260 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6261 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6262 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6263 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6264 SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
6265 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6266
6267 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6268 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6269
6270 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6271 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6272 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6273 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6274 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6275
6276 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6277 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6278 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6279 SMB_MODULE(auth_wbc, \$(AUTH_WBC_OBJ), "bin/wbc.$SHLIBEXT", AUTH)
6280 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6281 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6282 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6283 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6284 SMB_MODULE(auth_netlogond, \$(AUTH_NETLOGOND_OBJ), "bin/netlogond.$SHLIBEXT", AUTH)
6285 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6286
6287 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6288 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6289 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6290 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6291 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6292 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6293 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6294 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6295 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6296 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6297 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6298 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6299 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6300 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6301 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6302 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6303 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6304 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6305 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6306 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6307 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6308 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6309 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6310 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6311 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6312 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6313 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6314 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6315 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6316 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6317 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6318 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6319 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6320 SMB_MODULE(vfs_preopen, \$(VFS_PREOPEN_OBJ), "bin/preopen.$SHLIBEXT", VFS)
6321 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6322 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6323 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6324 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6325 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6326 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6327 SMB_MODULE(vfs_onefs, \$(VFS_ONEFS), "bin/onefs.$SHLIBEXT", VFS)
6328 SMB_MODULE(vfs_onefs_shadow_copy, \$(VFS_ONEFS_SHADOW_COPY), "bin/onefs_shadow_copy.$SHLIBEXT", VFS)
6329 SMB_MODULE(vfs_dirsort, \$(VFS_DIRSORT_OBJ), "bin/dirsort.$SHLIBEXT", VFS)
6330
6331 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6332
6333 SMB_MODULE(perfcount_onefs, \$(PERFCOUNT_ONEFS), "bin/pc_onefs.$SHLIBEXT", PERFCOUNT)
6334 SMB_MODULE(perfcount_test, \$(PERFCOUNT_TEST), "bin/pc_test.$SHLIBEXT", PERFCOUNT)
6335 SMB_SUBSYSTEM(PERFCOUNT,smbd/perfcount.o)
6336
6337 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6338 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6339 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6340 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6341
6342 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6343
6344 #################################################
6345 # do extra things if we are running insure
6346
6347 if test "${ac_cv_prog_CC}" = "insure"; then
6348         CPPFLAGS="$CPPFLAGS -D__INSURE__"
6349 fi
6350
6351 #################################################
6352 # If run from the build farm, enable NASTY hacks
6353 #################################################
6354 AC_MSG_CHECKING(whether to enable build farm hacks)
6355 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6356         AC_MSG_RESULT(yes)
6357         AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6358 else
6359         AC_MSG_RESULT(no)
6360 fi
6361
6362 #################################################
6363 # check for bad librt/libpthread interactions
6364
6365 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6366     x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6367     x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6368     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6369
6370 SMB_IF_RTSIGNAL_BUG(
6371         [
6372             # Have RT_SIGNAL bug, need to check whether the problem will
6373             # affect anything we have configured.
6374
6375             rt_do_error=no
6376             if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6377                 if test x"$rt_signal_lease_ok" = x"no" ; then
6378                     rt_do_error=yes
6379                 fi
6380             fi
6381
6382             if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6383                 if test x"$rt_signal_notify_ok" = x"no" ; then
6384                     rt_do_error=yes
6385                 fi
6386             fi
6387
6388             if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6389                     x"$samba_cv_HAVE_AIO" = x"yes" ; then
6390                 if test x"$rt_signal_aio_ok" = x"no" ; then
6391                     rt_do_error=yes
6392                 fi
6393             fi
6394
6395             if test x"$rt_do_error" = x"yes" ; then
6396                 SMB_IS_LIBPTHREAD_LINKED(
6397                     [
6398                         cat<<MSG
6399
6400 *** On this platforms, linking Samba against pthreads causes problems
6401 *** with the oplock and change notification mechanisms. You may be
6402 *** using pthreads as a side-effect of using the --with-aio-support
6403 *** or --with-profiling-data options. Please remove these and try again.
6404
6405 MSG
6406                     ],
6407                     [
6408                         cat<<MSG
6409
6410 *** On this platform, the oplock and change notification mechanisms do not
6411 *** appear to work. Please report this problem to samba-technical@samba.org
6412 *** and attach the config.log file from this directory.
6413
6414 MSG
6415                     ])
6416                 AC_MSG_ERROR(unable to use realtime signals on this platform)
6417             fi
6418         ],
6419         [
6420             # no RT_SIGNAL bug, we are golden
6421             SMB_IS_LIBPTHREAD_LINKED(
6422                 [
6423                     AC_MSG_WARN(using libpthreads - this may degrade performance)
6424                 ])
6425
6426         ],
6427         [
6428             # cross compiling, I hope you know what you are doing
6429             true
6430         ])
6431
6432 fi
6433
6434 AC_ARG_ENABLE(merged-build, 
6435 [AS_HELP_STRING([--enable-merged-build], [Build Samba 4 as well])], 
6436 [ enable_merged_build=$enableval ], [ enable_merged_build=auto ])
6437
6438 if test x"$enable_merged_build" = x"yes" -a \
6439         x"$merged_build_possible" = x"no" ; then
6440         AC_MSG_ERROR(Merged build required but not possible)
6441 fi
6442
6443 m4_include(../lib/zlib/zlib.m4)
6444
6445 if test x$enable_merged_build = xauto; then
6446         # Check for python
6447         m4_include(../m4/check_python.m4)
6448         AC_SAMBA_PYTHON_DEVEL([true], [merged_build_possible=no])
6449
6450         AC_MSG_CHECKING([whether it would be possible to do a merged build])
6451         AC_MSG_RESULT([$merged_build_possible])
6452
6453         # Enable merged build automatically if possible, when in developer mode
6454         if test "x$developer" = xyes; then
6455                 enable_merged_build=$merged_build_possible
6456         fi
6457 fi
6458
6459 if test x$enable_merged_build = xyes; then
6460         MERGED_BUILD=1
6461         saved_USESHARED="$USESHARED"
6462         USESHARED="false"
6463         m4_include(samba4.m4)
6464         USESHARED="$saved_USESHARED"
6465 fi
6466
6467 AC_SUBST(ZLIB_LIBS)
6468 AC_SUBST(ZLIB_OBJS)
6469 AC_ZLIB([ZLIB_OBJS=""], [
6470         ZLIB_LIBS=""
6471         for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6472                      deflate.o trees.o zutil.o inflate.o infback.o \
6473                          inftrees.o inffast.o
6474         do
6475                 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6476         done
6477         CFLAGS="-I../lib/zlib $CFLAGS"
6478 ])
6479
6480 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
6481
6482 if test "x$enable_dmalloc" = xyes
6483 then
6484         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
6485         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
6486                   [Define to check invariants around some common functions])
6487         LIBS="$LIBS -ldmalloc"
6488 fi
6489
6490 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6491 LIB_REMOVE_USR_LIB(LDFLAGS)
6492 LIB_REMOVE_USR_LIB(LIBS)
6493
6494 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6495 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6496 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6497
6498 #################################################
6499 # Display summary of libraries detected
6500
6501 AC_MSG_RESULT([Using libraries:])
6502 AC_MSG_RESULT([    LIBS = $LIBS])
6503 if test x"$with_ads_support" != x"no"; then
6504     AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
6505 fi
6506 if test x"$with_ldap_support" != x"no"; then
6507     AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
6508 fi
6509 if test x"$with_dnsupdate_support" != x"no"; then
6510     AC_MSG_RESULT([    UUID_LIBS = $UUID_LIBS])
6511 fi
6512 if test x"$have_dnssd_support" != x"no"; then
6513     AC_MSG_RESULT([    DNSSD_LIBS = $DNSSD_LIBS])
6514 fi
6515 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
6516
6517 #################################################
6518 # final configure stuff
6519
6520 AC_MSG_CHECKING([configure summary])
6521 AC_TRY_RUN([#include "${srcdir-.}/../tests/summary.c"],
6522            AC_MSG_RESULT(yes),
6523            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6524            AC_MSG_WARN([cannot run when cross-compiling]))
6525
6526 dnl Merge in developer cflags from now on
6527 AC_SUBST(DEVELOPER_CFLAGS)
6528 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6529     CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6530 fi
6531
6532 # Stuff the smbd-only libraries at the end of the smbd link
6533 # path (if we have them).
6534 SMBD_LIBS="$samba_dmapi_libs"
6535 AC_SUBST(SMBD_LIBS)
6536
6537 CFLAGS="${CFLAGS} \$(FLAGS)"
6538
6539 if test x$MERGED_BUILD != x1; then
6540         CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6541 else
6542         if test x"$BLDSHARED" = x"true" ; then
6543                 LDFLAGS="$LDFLAGS -L./bin"
6544         fi
6545 fi
6546
6547 AC_SUBST(MAKEFILE)
6548 if test x$samba_cv_gnu_make = xyes; then
6549         MAKEFILE=Makefile
6550 else
6551         # When we don't have GNU Make, generate a copy of Makefile.in 
6552         # that doesn't have the "include " statements but just includes 
6553         # the files verbatim.
6554         MAKEFILE=Makefile-noincludes
6555         $PERL ./script/expand-includes.pl Makefile.in > $MAKEFILE.in
6556 fi
6557 AC_OUTPUT($MAKEFILE
6558           script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6559           lib/netapi/examples/Makefile
6560           lib/netapi/tests/Makefile
6561           pkgconfig/smbclient.pc
6562           pkgconfig/wbclient.pc
6563           pkgconfig/netapi.pc
6564           pkgconfig/smbsharemodes.pc
6565           ../examples/libsmbclient/Makefile.internal
6566           )
6567 dnl If we had to expand the includes, make tsure the output file is moved back
6568 AC_OUTPUT_COMMANDS([
6569 if test x$MAKEFILE != Makefile; then
6570         mv $MAKEFILE Makefile
6571 fi
6572 ])
6573
6574 #################################################
6575 # Print very concise instructions on building/use
6576 if test "x$enable_dmalloc" = xyes
6577 then
6578         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
6579         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])
6580 fi