source: branches/samba-3.3.x/source/configure.in@ 290

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

Update 3.3 branch to 3.3.5

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