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

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

Samba 3.5: Update vendor to version 3.5.6

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