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

Last change on this file since 478 was 478, checked in by Silvan Scherrer, 15 years ago

Samba 3.5: vendor update to 3.5.4

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