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

Last change on this file since 198 was 149, checked in by Paul Smedley, 17 years ago

Update trunk to v3.2.2

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