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

Last change on this file since 860 was 860, checked in by Silvan Scherrer, 11 years ago

Samba 3.6: updated vendor to latest version

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