source: vendor/3.5.8/source3/configure.in@ 1036

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

Samba 3.5: Update vendor to version 3.5.8

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