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