source: vendor/3.5.0/source3/configure.in

Last change on this file was 414, checked in by Herwig Bauernfeind, 15 years ago

Samba 3.5.0: Initial import

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