source: trunk/samba-3.0.25pre1/source/configure.in@ 5

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

Initial code import

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