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

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

Update 3.2 branch to 3.2.4

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