source: vendor/current/source3/configure.in@ 597

Last change on this file since 597 was 597, checked in by Herwig Bauernfeind, 14 years ago

Samba 3.5: Update vendor to version 3.5.9

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