source: branches/samba-3.0/source/configure.in@ 104

Last change on this file since 104 was 62, checked in by Paul Smedley, 18 years ago

Update source to 3.0.25c level

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