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

Last change on this file since 165 was 165, checked in by Paul Smedley, 16 years ago

Add 'missing' 3.0.34 diffs

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