source: branches/samba-3.2.x/source/configure.in@ 493

Last change on this file since 493 was 272, checked in by Herwig Bauernfeind, 16 years ago

Update 3.2 to 3.2.12

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