r22097: Add detection for linux readahead() syscall.
[nivanova/samba-autobuild/.git] / source3 / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2
3 dnl We must use autotools 2.53 or above
4 AC_PREREQ(2.53)
5 AC_INIT(include/includes.h)
6 AC_CONFIG_HEADER(include/config.h)
7 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
8
9 SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
10 echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
11
12 SAMBA_VERSION_SVN_REVISION=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_SVN_REVISION' | cut -d ' ' -f3-`
13 if test -n "${SAMBA_VERSION_SVN_REVISION}";then
14         echo "BUILD REVISION: ${SAMBA_VERSION_SVN_REVISION}"
15 fi
16
17 AC_LIBREPLACE_LOCATION_CHECKS
18
19 AC_DISABLE_STATIC
20 AC_ENABLE_SHARED
21
22 #################################################
23 # Directory handling stuff to support both the
24 # legacy SAMBA directories and FHS compliant
25 # ones...
26 AC_PREFIX_DEFAULT(/usr/local/samba)
27
28 rootsbindir="\${SBINDIR}"
29 lockdir="\${VARDIR}/locks"
30 piddir="\${VARDIR}/locks"
31 test "${mandir}" || mandir="\${prefix}/man"
32 logfilebase="\${VARDIR}"
33 privatedir="\${prefix}/private"
34 test "${libdir}" || libdir="\${prefix}/lib"
35 pammodulesdir="\${LIBDIR}/security"
36 configdir="\${LIBDIR}"
37 swatdir="\${prefix}/swat"
38
39 AC_ARG_WITH(fhs, 
40 [  --with-fhs              Use FHS-compliant paths (default=no)],
41 [ case "$withval" in
42   yes)
43     lockdir="\${VARDIR}/lib/samba"
44     piddir="\${VARDIR}/run"
45     mandir="\${prefix}/share/man"
46     logfilebase="\${VARDIR}/log/samba"
47     privatedir="\${CONFIGDIR}/private"
48     libdir="\${prefix}/lib/samba"
49     configdir="\${sysconfdir}/samba"
50     swatdir="\${DATADIR}/samba/swat"
51     ;;
52   esac])
53
54 #################################################
55 # set private directory location
56 AC_ARG_WITH(privatedir,
57 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
58 [ case "$withval" in
59   yes|no)
60   #
61   # Just in case anybody calls it without argument
62   #
63     AC_MSG_WARN([--with-privatedir called without argument - will use default])
64   ;;
65   * )
66     privatedir="$withval"
67     ;;
68   esac])
69
70 #################################################
71 # set root sbin directory location
72 AC_ARG_WITH(rootsbindir,
73 [  --with-rootsbindir=DIR  Which directory to use for root sbin ($ac_default_prefix/sbin)],
74 [ case "$withval" in
75   yes|no)
76   #
77   # Just in case anybody calls it without argument
78   #
79     AC_MSG_WARN([--with-rootsbindir called without argument - will use default])
80   ;;
81   * )
82     rootsbindir="$withval"
83     ;;
84   esac])
85
86 #################################################
87 # set lock directory location
88 AC_ARG_WITH(lockdir,
89 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
90 [ case "$withval" in
91   yes|no)
92   #
93   # Just in case anybody calls it without argument
94   #
95     AC_MSG_WARN([--with-lockdir called without argument - will use default])
96   ;;
97   * )
98     lockdir="$withval"
99     ;;
100   esac])
101
102 #################################################
103 # set pid directory location
104 AC_ARG_WITH(piddir,
105 [  --with-piddir=DIR       Where to put pid files ($ac_default_prefix/var/locks)],
106 [ case "$withval" in
107   yes|no)
108   #
109   # Just in case anybody calls it without argument
110   #
111     AC_MSG_WARN([--with-piddir called without argument - will use default])
112   ;;
113   * )
114     piddir="$withval"
115     ;;
116   esac])
117
118 #################################################
119 # set SWAT directory location
120 AC_ARG_WITH(swatdir,
121 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
122 [ case "$withval" in
123   yes|no)
124   #
125   # Just in case anybody does it
126   #
127     AC_MSG_WARN([--with-swatdir called without argument - will use default])
128   ;;
129   * )
130     swatdir="$withval"
131     ;;
132   esac])
133
134 #################################################
135 # set configuration directory location
136 AC_ARG_WITH(configdir,
137 [  --with-configdir=DIR    Where to put configuration files ($libdir)],
138 [ case "$withval" in
139   yes|no)
140   #
141   # Just in case anybody does it
142   #
143     AC_MSG_WARN([--with-configdir called without argument - will use default])
144   ;;
145   * )
146     configdir="$withval"
147     ;;
148   esac])
149
150 #################################################
151 # set log directory location
152 AC_ARG_WITH(logfilebase,
153 [  --with-logfilebase=DIR  Where to put log files ($VARDIR)],
154 [ case "$withval" in
155   yes|no)
156   #
157   # Just in case anybody does it
158   #
159     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
160   ;;
161   * )
162     logfilebase="$withval"
163     ;;
164   esac])
165
166 #################################################
167 # set lib directory location
168 AC_ARG_WITH(libdir,
169 [  --with-libdir=DIR       Where to put libdir ($libdir)],
170 [ case "$withval" in
171   yes|no)
172   #
173   # Just in case anybody does it
174   #
175     AC_MSG_WARN([--with-libdir without argument - will use default])
176   ;;
177   * )
178     libdir="$withval"
179     ;;
180   esac])
181
182 #################################################
183 # set PAM modules directory location
184 AC_ARG_WITH(pammodulesdir,
185 [  --with-pammodulesdir=DIR  Which directory to use for PAM modules ($ac_default_prefix/$libdir/security)],
186 [ case "$withval" in
187   yes|no)
188   #
189   # Just in case anybody calls it without argument
190   #
191     AC_MSG_WARN([--with-pammodulesdir called without argument - will use default])
192   ;;
193   * )
194     pammodulesdir="$withval"
195     ;;
196   esac])
197
198 #################################################
199 # set man directory location
200 AC_ARG_WITH(mandir,
201 [  --with-mandir=DIR       Where to put man pages ($mandir)],
202 [ case "$withval" in
203   yes|no)
204   #
205   # Just in case anybody does it
206   #
207     AC_MSG_WARN([--with-mandir without argument - will use default])
208   ;;
209   * )
210     mandir="$withval"
211     ;;
212   esac])
213
214 AC_ARG_WITH(cfenc,
215 [  --with-cfenc=HEADERDIR  Use internal CoreFoundation encoding API
216                           for optimization (Mac OS X/Darwin only)],
217 [
218 # May be in source $withval/CoreFoundation/StringEncodings.subproj.
219 # Should have been in framework $withval/CoreFoundation.framework/Headers.
220 for d in \
221     $withval/CoreFoundation/StringEncodings.subproj \
222     $withval/StringEncodings.subproj \
223     $withval/CoreFoundation.framework/Headers \
224     $withval/Headers \
225     $withval
226 do
227     if test -r $d/CFStringEncodingConverter.h; then
228         ln -sfh $d include/CoreFoundation
229     fi
230 done
231 ])
232
233 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include  -I. -I${srcdir-.}"
234 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
235 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/talloc"
236 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/tdb/include"
237 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
238 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
239
240 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/popt"
241
242 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
243 if test "x${srcdir-.}" != "x."; then
244         SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
245 fi
246
247 AC_SUBST(configdir)
248 AC_SUBST(lockdir)
249 AC_SUBST(piddir)
250 AC_SUBST(logfilebase)
251 AC_SUBST(privatedir)
252 AC_SUBST(swatdir)
253 AC_SUBST(bindir)
254 AC_SUBST(sbindir)
255 AC_SUBST(rootsbindir)
256 AC_SUBST(pammodulesdir)
257
258 dnl Unique-to-Samba variables we'll be playing with.
259 AC_SUBST(SAMBA_CPPFLAGS)
260 AC_SUBST(SHELL)
261 AC_SUBST(LDSHFLAGS)
262 AC_SUBST(SONAMEFLAG)
263 AC_SUBST(SHLD)
264 AC_SUBST(HOST_OS)
265 AC_SUBST(PICFLAG)
266 AC_SUBST(PIE_CFLAGS)
267 AC_SUBST(PIE_LDFLAGS)
268 AC_SUBST(SHLIBEXT)
269 AC_SUBST(INSTALLLIBCMD_SH)
270 AC_SUBST(INSTALLLIBCMD_A)
271 AC_SUBST(UNINSTALLLIBCMD_SH)
272 AC_SUBST(UNINSTALLLIBCMD_A)
273 AC_SUBST(INSTALL_LIBMSRPC)
274 AC_SUBST(UNINSTALL_LIBMSRPC)
275 AC_SUBST(LIBMSRPC_SHARED)
276 AC_SUBST(LIBMSRPC)
277 AC_SUBST(INSTALL_LIBADDNS)
278 AC_SUBST(UNINSTALL_LIBADDNS)
279 AC_SUBST(LIBADDNS_SHARED)
280 AC_SUBST(LIBADDNS)
281 AC_SUBST(INSTALL_LIBSMBCLIENT)
282 AC_SUBST(UNINSTALL_LIBSMBCLIENT)
283 AC_SUBST(LIBSMBCLIENT_SHARED)
284 AC_SUBST(LIBSMBCLIENT)
285 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
286 AC_SUBST(UNINSTALL_LIBSMBSHAREMODES)
287 AC_SUBST(LIBSMBSHAREMODES_SHARED)
288 AC_SUBST(LIBSMBSHAREMODES)
289 AC_SUBST(PRINT_LIBS)
290 AC_SUBST(AUTH_LIBS)
291 AC_SUBST(ACL_LIBS)
292 AC_SUBST(PASSDB_LIBS)
293 AC_SUBST(IDMAP_LIBS)
294 AC_SUBST(KRB5_LIBS)
295 AC_SUBST(UUID_LIBS)
296 AC_SUBST(LDAP_LIBS)
297 AC_SUBST(SHLIB_PROGS)
298 AC_SUBST(PAM_MODULES)
299 AC_SUBST(INSTALL_PAM_MODULES)
300 AC_SUBST(UNINSTALL_PAM_MODULES)
301 AC_SUBST(SMBWRAPPER)
302 AC_SUBST(SMBWRAP_OBJS)
303 AC_SUBST(SMBWRAP_INC)
304 AC_SUBST(EXTRA_BIN_PROGS)
305 AC_SUBST(SMBMOUNT_PROGS)
306 AC_SUBST(CIFSMOUNT_PROGS)
307 AC_SUBST(INSTALL_CIFSMOUNT)
308 AC_SUBST(UNINSTALL_CIFSMOUNT)
309 AC_SUBST(EXTRA_SBIN_PROGS)
310 AC_SUBST(EXTRA_ALL_TARGETS)
311 AC_SUBST(CONFIG_LIBS)
312 AC_SUBST(NSCD_LIBS)
313
314 ## check for --enable-debug first before checking CFLAGS before
315 ## so that we don't mix -O and -g
316 AC_ARG_ENABLE(debug, 
317 [  --enable-debug          Turn on compiler debugging information (default=no)],
318     [if eval "test x$enable_debug = xyes"; then
319         CFLAGS="${CFLAGS} -g"
320     fi])
321
322 # compile with optimization and without debugging by default, but
323 # allow people to set their own preference.
324 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
325 # if it has no value.  This prevent *very* large debug binaries from occurring
326 # by default.
327 if test "x$CFLAGS" = x; then
328   CFLAGS="-O"
329 fi
330
331 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
332
333 AC_LIBREPLACE_CC_CHECKS
334
335 m4_include(lib/socket_wrapper/config.m4)
336
337 #################################################
338 # set prefix for 'make test'
339 selftest_prefix="./"
340 AC_SUBST(selftest_prefix)
341 AC_ARG_WITH(selftest-prefix,
342 [  --with-selftest-prefix=DIR    The prefix where make test will be runned ($selftest_prefix)],
343 [ case "$withval" in
344   yes|no)
345     AC_MSG_WARN([--with-selftest-prefix called without argument - will use default])
346   ;;
347   * )
348     selftest_prefix="$withval"
349     ;;
350   esac
351 ])
352
353 #################################################
354 # set path of samba4's smbtorture
355 smbtorture4_path=""
356 AC_SUBST(smbtorture4_path)
357 AC_ARG_WITH(smbtorture4_path,
358 [  --with-smbtorture4-path=PATH    The path to a samba4 smbtorture for make test (none)],
359 [ case "$withval" in
360   yes|no)
361     AC_MSG_ERROR([--with-smbtorture4-path should take a path])
362   ;;
363   * )
364     smbtorture4_path="$withval"
365     if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then
366         AC_MSG_ERROR(['$smbtorture_path' does not  exist!]) 
367     fi
368   ;;
369  esac
370 ])
371
372 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
373     [if eval "test x$enable_developer = xyes"; then
374         developer=yes
375         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
376         # Add -Wdeclaration-after-statement if compiler supports it
377         AC_CACHE_CHECK(
378           [that the C compiler understands -Wdeclaration-after-statement],
379           samba_cv_HAVE_Wdeclaration_after_statement, [
380           AC_TRY_RUN_STRICT([
381             int main(void)
382             {
383                 return 0;
384             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
385             samba_cv_HAVE_Wdeclaration_after_statement=yes,
386             samba_cv_HAVE_Wdeclaration_after_statement=no,
387             samba_cv_HAVE_Wdeclaration_after_statement=cross)
388        ])
389        if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
390             CFLAGS="${CFLAGS} -Wdeclaration-after-statement"
391        fi
392     fi])
393
394 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
395     [if eval "test x$enable_krb5developer = xyes"; then
396         developer=yes
397         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
398     fi])
399
400 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
401
402 if test "x$enable_dmalloc" = xyes
403 then
404         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
405         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
406                   [Define to check invariants around some common functions])
407         LIBS="$LIBS -ldmalloc"  
408 fi
409
410 #################################################
411 # check for a shared memory profiling support
412 AC_MSG_CHECKING(whether to use profiling)
413 AC_ARG_WITH(profiling-data,
414 [  --with-profiling-data   Include gathering source code profile information (default=no)],
415 [ case "$withval" in
416   yes)
417     AC_MSG_RESULT(yes)
418     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
419     samba_cv_WITH_PROFILE=yes
420     ;;
421   *)
422     AC_MSG_RESULT(no)
423     samba_cv_WITH_PROFILE=no
424     ;;
425   esac ],
426   AC_MSG_RESULT(no)
427 )
428
429 dnl Checks for programs.
430
431 AC_PROG_INSTALL
432 AC_PROG_AWK
433 AC_PATH_PROG(PERL, perl)
434
435 AC_CHECK_TOOL(AR, ar)
436
437 dnl Check if we use GNU ld
438 LD=ld
439 AC_PROG_LD_GNU
440
441 dnl Certain versions of GNU ld the default is not to have the 
442 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
443 dnl warnings when building modules.
444 if test "$ac_cv_prog_gnu_ld" = "yes"; then
445         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
446         AC_MSG_CHECKING(GNU ld release date)
447         changequote(,)dnl
448         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'`
449         changequote([,])dnl
450         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
451         if test -n "$ac_cv_gnu_ld_date"; then
452         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
453                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
454         fi
455         else
456            AC_MSG_CHECKING(GNU ld release version)
457            changequote(,)dnl
458            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
459            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
460            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
461            changequote([,])dnl
462            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
463            AC_MSG_CHECKING(GNU ld release version major)
464            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
465            AC_MSG_CHECKING(GNU ld release version minor)
466            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
467            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
468              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
469            fi
470         fi
471 fi
472
473 dnl look for executable suffix
474 AC_EXEEXT
475
476 dnl Check if C compiler understands -c and -o at the same time
477 AC_PROG_CC_C_O
478 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
479       BROKEN_CC=
480 else
481       BROKEN_CC=#
482 fi
483 AC_SUBST(BROKEN_CC)
484
485 dnl Check if the C compiler understands -Werror
486 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
487  AC_TRY_RUN_STRICT([
488   int main(void)
489   {
490         return 0;
491   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
492   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
493 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
494    Werror_FLAGS="-Werror"
495 else 
496 dnl Check if the C compiler understands -w2
497 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
498  AC_TRY_RUN_STRICT([
499   int main(void)
500   {
501         return 0;
502   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
503   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
504 if test x"$samba_cv_HAVE_w2" = x"yes"; then
505    Werror_FLAGS="-w2"
506 fi
507 fi
508
509 dnl Check if the C compiler understands volatile (it should, being ANSI).
510 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
511     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
512         samba_cv_volatile=yes,samba_cv_volatile=no)])
513 if test x"$samba_cv_volatile" = x"yes"; then
514    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
515 fi
516
517 ############################################
518 # check if the compiler can handle negative enum values
519 # and don't truncate the values to INT_MAX
520 # a runtime test is needed here
521 AC_SUBST(PIDL_ARGS)
522 AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
523     AC_TRY_RUN(
524 [
525         #include <stdio.h>
526         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
527         int main(void) {
528                 enum negative_values v1 = NEGATIVE_VALUE;
529                 unsigned v2 = NEGATIVE_VALUE;
530
531                 if (v1 != 0xFFFFFFFF) {
532                         printf("%u != 0xFFFFFFFF\n", v1);
533                         return 1;
534                 }
535                 if (v2 != 0xFFFFFFFF) {
536                         printf("%u != 0xFFFFFFFF\n", v2);
537                         return 1;
538                 }
539
540                 return 0;
541         }
542 ],
543         SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
544 if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
545         AC_MSG_WARN([using --unit-enums for pidl])
546         PIDL_ARGS="$PIDL_ARGS --uint-enums"
547 fi
548
549 dnl Figure out the flags to support named structure initializers
550
551 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
552
553 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
554 AC_MSG_CHECKING(uname -s)
555 AC_MSG_RESULT(${UNAME_S})
556
557 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
558 AC_MSG_CHECKING(uname -r)
559 AC_MSG_RESULT(${UNAME_R})
560
561 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
562 AC_MSG_CHECKING(uname -m)
563 AC_MSG_RESULT(${UNAME_M})
564
565 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
566 AC_MSG_CHECKING(uname -p)
567 AC_MSG_RESULT(${UNAME_P})
568
569 dnl Add #include for broken IRIX header files
570   case "$host_os" in
571         *irix6*)
572                 #TODO add to libreplace
573                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
574                         dnl Fix sensible defaults for MIPSPro compilers. The
575                         dnl error numbers are valid for the 7.3 compilers,
576                         dnl hopefully also valid for the 7.4 series.
577                         dnl
578                         dnl Bugzilla 3801. Force an error on warning 1035
579                         dnl so we don't incorrectly detect stdint.h. This
580                         dnl warning is emitted for #error directives.
581                         CFLAGS="$CFLAGS -diag_error 1035"
582                         dnl 1209: Controlling expression is constant
583                         dnl 1174: Function foo declared but never referenced
584                         dnl 3201: Parameter foo was never referenced
585                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
586                 fi
587         ;;
588 esac
589
590 DYNEXP=
591 AC_SUBST(DYNEXP)
592
593 dnl Add modules that have to be built by default here
594 dnl These have to be built static:
595 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_winreg rpc_initshutdown rpc_lsa_ds rpc_wkssvc rpc_svcctl rpc_ntsvcs rpc_net rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog rpc_unixinfo rpc_epmapper auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
596
597 dnl These are preferably build shared, and static if dlopen() is not available
598 default_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"
599
600 if test "x$developer" = xyes; then
601    default_static_modules="$default_static_modules rpc_rpcecho"
602    default_shared_modules="$default_shared_modules charset_weird"
603 fi
604
605 #
606 # Config CPPFLAG settings for strange OS's that must be set
607 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
608 # case statement; its first reference must be unconditional.
609 #
610 case "$host_os" in
611     *hpux*)
612 #
613 # Defines needed for HPUX support.
614 # HPUX has bigcrypt but (sometimes?) doesn't use it for
615 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
616 #
617       case `uname -r` in
618                         *9*|*10*)
619                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
620                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
621                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
622                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
623                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
624                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
625                                 ;;
626                         *11*)
627                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
628                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
629                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
630                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
631                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
632                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
633                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
634                                 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [Unix 98 sources -- needed for socklen_t in getsockopt on HP/UX 11])
635                                 ;;
636       esac
637       ;;
638
639 #
640 # CRAY Unicos has broken const handling
641        *unicos*)
642           AC_MSG_RESULT([disabling const])
643           CPPFLAGS="$CPPFLAGS -Dconst="
644           ;;
645         
646 #
647 # AIX4.x doesn't even admit to having large
648 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
649 #
650     *aix4*)
651           AC_MSG_RESULT([enabling large file support])
652       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
653           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
654       ;;    
655 #
656 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
657 # to the existance of large files..
658 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
659 # recommendations on large file support, however it makes the
660 # compile work using gcc 2.7 and 2.8, whereas using the Sun
661 # recommendation makes the compile fail on gcc2.7. JRA.
662 #
663 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
664 #
665         *solaris*)
666                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
667                 case `uname -r` in
668                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
669                                 AC_MSG_RESULT([no large file support])
670                                 ;;
671                         5.*)
672                         AC_MSG_RESULT([enabling large file support])
673                         if test "$ac_cv_prog_gcc" = yes; then
674                                 ${CC-cc} -v >conftest.c 2>&1
675                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
676                                 rm -fr conftest.c
677                                 case "$ac_cv_gcc_compiler_version_number" in
678                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
679                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
680                                                 LDFLAGS="$LDFLAGS -lthread"
681                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
682                                                 ;;
683                                         *)
684                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
685                                                 LDFLAGS="$LDFLAGS -lthread"
686                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
687                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
688                                                 ;;
689                                 esac
690                         else
691                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
692                                 LDFLAGS="$LDFLAGS -lthread"
693                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
694                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
695                         fi
696                         ;;
697                 esac
698                 ;;
699 #
700 # IRIX uses SYSV printing.  Make sure to set that here
701 #
702         *irix*)
703                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
704                 ;;
705         *freebsd*|*dragonfly*)
706                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
707                 ;;
708 #
709 # VOS may need to have POSIX support and System V compatibility enabled.
710 #
711     *vos*)
712     case "$CPPFLAGS" in
713           *-D_POSIX_C_SOURCE*)
714                 ;;
715           *)
716                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
717                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
718                 ;;
719     esac
720     case "$CPPFLAGS" in
721           *-D_SYSV*|*-D_SVID_SOURCE*)
722                 ;;
723           *)
724                 CPPFLAGS="$CPPFLAGS -D_SYSV"
725                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
726     esac
727     ;;
728 #
729 # Tests needed for SINIX large file support.
730 #
731     *sysv4*)
732       if test $host = mips-sni-sysv4 ; then
733         AC_MSG_CHECKING([for LFS support])
734         old_CPPFLAGS="$CPPFLAGS"
735         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
736         AC_TRY_RUN([
737 #include <unistd.h>
738 main () {
739 #if _LFS64_LARGEFILE == 1
740 exit(0);
741 #else
742 exit(1);
743 #endif
744 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
745         CPPFLAGS="$old_CPPFLAGS"
746         if test x$SINIX_LFS_SUPPORT = xyes ; then
747           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
748                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
749           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
750           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
751           LIBS="`getconf LFS64_LIBS` $LIBS"
752         fi
753       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
754       fi
755     ;;
756
757 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
758 #
759     *linux*)
760         AC_MSG_CHECKING([for LFS support])
761         old_CPPFLAGS="$CPPFLAGS"
762         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
763        AC_TRY_RUN([
764 #include <unistd.h>
765 #include <sys/utsname.h>
766 #include <string.h>
767 #include <stdlib.h>
768 main() {
769 #if _LFS64_LARGEFILE == 1
770        struct utsname uts;
771        char *release;
772        int major, minor;
773
774        /* Ensure this is glibc 2.2 or higher */
775 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
776        int libc_major = __GLIBC__;
777        int libc_minor = __GLIBC_MINOR__;
778
779        if (libc_major < 2)
780               exit(1);
781        if (libc_minor < 2)
782               exit(1);
783 #endif
784
785        /* Ensure this is kernel 2.4 or higher */
786
787        uname(&uts);
788        release = strdup(uts.release);
789        major = atoi(strsep(&release, "."));
790        minor = atoi(strsep(&release, "."));
791
792        if (major > 2 || (major == 2 && minor > 3))
793                exit(0);
794        exit(1);
795 #else
796        exit(1);
797 #endif
798 }
799 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
800         CPPFLAGS="$old_CPPFLAGS"
801         if test x$LINUX_LFS_SUPPORT = xyes ; then
802                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
803                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
804                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
805                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
806         fi
807         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
808         ;;
809
810 #
811 # MacOS X is the *only* system that uses compose character in utf8. This
812 # is so horribly broken....
813 #
814     *darwin*)
815         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
816
817         # Add a system specific charset module.
818         default_shared_modules="$default_shared_modules charset_macosxfs"
819
820         ;;
821     *hurd*)
822         AC_MSG_CHECKING([for LFS support])
823         old_CPPFLAGS="$CPPFLAGS"
824         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
825         AC_TRY_RUN([
826 #include <unistd.h>
827 main () {
828 #if _LFS64_LARGEFILE == 1
829 exit(0);
830 #else
831 exit(1);
832 #endif
833 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
834         CPPFLAGS="$old_CPPFLAGS"
835         if test x$GLIBC_LFS_SUPPORT = xyes ; then
836           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
837                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
838           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
839         fi
840       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
841     ;;
842
843 esac
844
845 AC_LIBREPLACE_BROKEN_CHECKS
846
847 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
848
849 LIBREPLACE_OBJS=""
850 for obj in ${LIBREPLACEOBJ}; do
851         LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
852 done
853 AC_SUBST(LIBREPLACE_OBJS)
854
855 # add -ldl to the global LIBS
856 LIBS="${LIBS} ${LIBDL}"
857
858 AC_CHECK_HEADERS(aio.h arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
859 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
860 AC_CHECK_HEADERS(limits.h float.h)
861 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
862 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
863 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
864 AC_CHECK_HEADERS(sys/un.h)
865 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
866 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
867 AC_CHECK_HEADERS(sys/sysmacros.h)
868 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
869 AC_CHECK_HEADERS(langinfo.h locale.h)
870 AC_CHECK_HEADERS(xfs/libxfs.h)
871
872 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
873 #if HAVE_RPC_RPC_H
874 #include <rpc/rpc.h>
875 #endif
876 ]])
877
878 ## These fail to compile on IRIX so just check for their presence
879 AC_CHECK_HEADERS(sys/mode.h,,,)
880
881 # Look for Darwin headers
882 old_CPPFLAGS="$CPPFLAGS"
883 CPPFLAGS="-Iinclude $CPPFLAGS"
884 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
885 CPPFLAGS="$old_CPPFLAGS"
886
887 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
888 # subdirectory of headers.
889 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
890
891 # check for linux on amd64 since valgrind is not quite there yet
892 case "$host_os" in
893         *linux*)
894                 case "$UNAME_P" in
895                         *x86_64*)
896                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
897                                 ;;
898                 esac
899                 ;;
900 esac
901
902
903 #
904 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
905 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
906 #
907 case "$host_os" in
908     *hpux*)
909                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
910                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
911                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
912                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
913                 fi
914         ;;
915 esac
916 AC_CHECK_HEADERS(shadow.h)
917 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
918 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
919
920 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
921 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
922
923 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
924
925 # For experimental utmp support (lastlog on some BSD-like systems)
926 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
927  
928 AC_CHECK_SIZEOF(int,cross)
929 AC_CHECK_SIZEOF(long,cross)
930 AC_CHECK_SIZEOF(long long,cross)
931 AC_CHECK_SIZEOF(short,cross)
932
933 AC_C_CONST
934 AC_C_INLINE
935 AC_C_BIGENDIAN
936 AC_C_CHAR_UNSIGNED
937
938 AC_TYPE_SIGNAL
939 AC_TYPE_UID_T
940 AC_TYPE_MODE_T
941 AC_TYPE_OFF_T
942 AC_TYPE_SIZE_T
943 AC_TYPE_PID_T
944 AC_STRUCT_ST_RDEV
945 AC_DIRENT_D_OFF
946 AC_CHECK_TYPE(ino_t,unsigned)
947 AC_CHECK_TYPE(loff_t,off_t)
948 AC_CHECK_TYPE(offset_t,loff_t)
949 AC_CHECK_TYPE(ssize_t, int)
950 AC_CHECK_TYPE(wchar_t, unsigned short)
951 AC_CHECK_TYPE(comparison_fn_t, 
952 [AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])])
953
954 ############################################
955 # for cups support we need libcups, and a handful of header files
956
957 AC_ARG_ENABLE(cups,
958 [  --enable-cups           Turn on CUPS support (default=auto)])
959
960 if test x$enable_cups != xno; then
961         AC_PATH_PROG(CUPS_CONFIG, cups-config)
962
963         if test "x$CUPS_CONFIG" != x; then
964                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
965                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
966                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
967                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
968         elif test x"$enable_cups" = x"yes"; then
969                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
970         fi
971 fi
972
973 AC_ARG_ENABLE(iprint,
974 [  --enable-iprint         Turn on iPrint support (default=yes if cups is yes)])
975
976 if test x$enable_iprint != xno; then
977         if test "x$CUPS_CONFIG" != x; then
978                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
979         elif test x"$enable_iprint" = x"yes"; then
980                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
981         fi
982 fi
983
984 ############################################
985 # check if the compiler will optimize out function calls
986 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
987     AC_TRY_LINK([
988 #include <stdio.h>],
989 [
990                 if (0) {
991                    this_function_does_not_exist();
992                 } else {
993                   return 1;
994                 }
995
996 ],
997         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
998 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
999    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
1000 fi
1001
1002 ############################################
1003 # check for unix domain sockets
1004 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
1005     AC_TRY_COMPILE([
1006 #include <sys/types.h>
1007 #include <stdlib.h>
1008 #include <stddef.h>
1009 #include <sys/socket.h>
1010 #include <sys/un.h>],
1011 [
1012   struct sockaddr_un sunaddr; 
1013   sunaddr.sun_family = AF_UNIX;
1014 ],
1015         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1016 if test x"$samba_cv_unixsocket" = x"yes"; then
1017    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1018 fi
1019
1020
1021 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
1022     AC_TRY_COMPILE([
1023 #include <sys/types.h>
1024 #if STDC_HEADERS
1025 #include <stdlib.h>
1026 #include <stddef.h>
1027 #endif
1028 #include <sys/socket.h>],[socklen_t i = 0],
1029         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
1030 if test x"$samba_cv_socklen_t" = x"yes"; then
1031    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
1032 fi
1033
1034 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
1035     AC_TRY_COMPILE([
1036 #include <sys/types.h>
1037 #if STDC_HEADERS
1038 #include <stdlib.h>
1039 #include <stddef.h>
1040 #endif
1041 #include <signal.h>],[sig_atomic_t i = 0],
1042         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
1043 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
1044    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
1045 fi
1046
1047 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
1048     AC_TRY_COMPILE([
1049 #include <sys/types.h>
1050 #if STDC_HEADERS
1051 #include <stdlib.h>
1052 #include <stddef.h>
1053 #endif
1054 #if TIME_WITH_SYS_TIME
1055 # include <sys/time.h>
1056 # include <time.h>
1057 #else
1058 # if HAVE_SYS_TIME_H
1059 #  include <sys/time.h>
1060 # else
1061 #  include <time.h>
1062 # endif
1063 #endif
1064 ],[struct timespec ts;],
1065         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
1066 if test x"$samba_cv_struct_timespec" = x"yes"; then
1067    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1068 fi
1069
1070 # stupid headers have the functions but no declaration. grrrr.
1071 AC_HAVE_DECL(errno, [#include <errno.h>])
1072 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1073 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1074 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1075 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1076 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1077 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1078
1079 # and glibc has setresuid under linux but the function does
1080 # nothing until kernel 2.1.44! very dumb.
1081 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1082     AC_TRY_RUN([#include <errno.h>
1083 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
1084         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1085 if test x"$samba_cv_have_setresuid" = x"yes"; then
1086     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1087 fi
1088
1089 # Do the same check for setresguid...
1090 #
1091 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1092     AC_TRY_RUN([#include <unistd.h>
1093 #include <errno.h>
1094 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1095         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1096 if test x"$samba_cv_have_setresgid" = x"yes"; then
1097     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1098 fi
1099
1100 AC_FUNC_MEMCMP
1101
1102 ###############################################
1103 # Readline included by default unless explicitly asked not to
1104 test "${with_readline+set}" != "set" && with_readline=yes
1105
1106 # test for where we get readline() from
1107 AC_MSG_CHECKING(whether to use readline)
1108 AC_ARG_WITH(readline,
1109 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
1110 [  case "$with_readline" in
1111   yes)
1112     AC_MSG_RESULT(yes)
1113
1114     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1115     AC_CHECK_HEADERS(readline/history.h)
1116
1117     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1118       for termlib in ncurses curses termcap terminfo termlib tinfo; do
1119        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1120       done
1121       AC_CHECK_LIB(readline, rl_callback_handler_install,
1122        [TERMLIBS="-lreadline $TERMLIBS"
1123        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1124        break], [TERMLIBS=], $TERMLIBS)])
1125     ;;
1126   no)
1127     AC_MSG_RESULT(no)
1128     ;;
1129   *)
1130     AC_MSG_RESULT(yes)
1131
1132     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1133     # alternate readline path
1134     _ldflags=${LDFLAGS}
1135     _cppflags=${CPPFLAGS}
1136
1137     # Add additional search path
1138     LDFLAGS="-L$with_readline/lib $LDFLAGS"
1139     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1140
1141     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1142     AC_CHECK_HEADERS(readline/history.h)
1143
1144     AC_CHECK_HEADERS(readline.h readline/readline.h,[
1145       for termlib in ncurses curses termcap terminfo termlib; do
1146        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1147       done
1148       AC_CHECK_LIB(readline, rl_callback_handler_install,
1149        [TERMLDFLAGS="-L$with_readline/lib"
1150        TERMCPPFLAGS="-I$with_readline/include"
1151        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1152        TERMLIBS="-lreadline $TERMLIBS"
1153        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1154        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1155
1156     LDFLAGS=$_ldflags
1157     ;;
1158   esac],
1159   AC_MSG_RESULT(no)
1160 )
1161 AC_SUBST(TERMLIBS)
1162 AC_SUBST(TERMLDFLAGS)
1163
1164 # The readline API changed slightly from readline3 to readline4, so
1165 # code will generate warnings on one of them unless we have a few
1166 # special cases.
1167 AC_CHECK_LIB(readline, rl_completion_matches,
1168              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
1169                         [Do we have rl_completion_matches?])],
1170              [],
1171              [$TERMLIBS])
1172
1173 # not all readline libs have rl_event_hook or history_list
1174 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1175 AC_CHECK_LIB(readline, history_list,
1176              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1177              [],
1178              [$TERMLIBS])
1179
1180 # The following test taken from the cvs sources
1181 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1182 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1183 # libsocket.so which has a bad implementation of gethostbyname (it
1184 # only looks in /etc/hosts), so we only look for -lsocket if we need
1185 # it.
1186 AC_CHECK_FUNCS(connect)
1187 if test x"$ac_cv_func_connect" = x"no"; then
1188     case "$LIBS" in
1189     *-lnsl*) ;;
1190     *) AC_CHECK_LIB(nsl_s, connect) ;;
1191     esac
1192     case "$LIBS" in
1193     *-lnsl*) ;;
1194     *) AC_CHECK_LIB(nsl, connect) ;;
1195     esac
1196     case "$LIBS" in
1197     *-lsocket*) ;;
1198     *) AC_CHECK_LIB(socket, connect) ;;
1199     esac
1200     case "$LIBS" in
1201     *-linet*) ;;
1202     *) AC_CHECK_LIB(inet, connect) ;;
1203     esac
1204     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1205     dnl has been cached.
1206     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
1207        test x"$ac_cv_lib_inet_connect" = x"yes"; then
1208         # ac_cv_func_connect=yes
1209         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
1210         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1211     fi
1212 fi
1213
1214 ###############################################
1215 # test for where we get yp_get_default_domain() from
1216 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1217 AC_CHECK_FUNCS(yp_get_default_domain)
1218
1219 # Check if we have execl, if not we need to compile smbrun.
1220 AC_CHECK_FUNCS(execl)
1221 if test x"$ac_cv_func_execl" = x"no"; then
1222     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1223 fi
1224
1225 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown chmod fchmod chroot link mknod mknod64)
1226 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1227 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1228 AC_CHECK_FUNCS(getrlimit fsync memset strlcpy strlcat setpgid)
1229 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1230 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1231 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1232 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1233 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1234 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1235 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1236 AC_CHECK_FUNCS(getpwent_r)
1237 AC_CHECK_FUNCS(getdents getdents64)
1238 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1239 AC_CHECK_FUNCS(syslog vsyslog timegm)
1240 AC_CHECK_FUNCS(setlocale nl_langinfo)
1241 AC_CHECK_FUNCS(nanosleep)
1242 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1243 AC_CHECK_FUNCS(memalign posix_memalign)
1244 AC_CHECK_HEADERS(sys/mman.h)
1245 # setbuffer, shmget, shm_open are needed for smbtorture
1246 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1247 AC_CHECK_FUNCS(makecontext getcontext setcontext swapcontext)
1248
1249 # Find a method of generating a stack trace
1250 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1251 AC_CHECK_FUNCS(backtrace_symbols)
1252 AC_CHECK_LIB(exc, trace_back_stack)
1253
1254 echo -n "checking for GPFS GPL libs... "
1255 save_LIBS="$LIBS"
1256 LIBS="$LIBS -lgpfs_gpl"
1257 AC_TRY_LINK([#include <gpfs_gpl.h>],
1258           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1259           samba_cv_HAVE_GPFS=yes,
1260           samba_cv_HAVE_GPFS=no)
1261 echo $samba_cv_HAVE_GPFS
1262 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1263     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1264     default_shared_modules="$default_shared_modules vfs_gpfs"
1265 fi
1266 LIBS="$save_LIBS"
1267
1268 # Note that all the libunwind symbols in the API are defined to internal
1269 # platform-specific version, so we must include libunwind.h before checking
1270 # any of them.
1271 AC_MSG_CHECKING([for libunwind])
1272 save_LIBS=$LIBS
1273 if test x"$UNAME_P" = xunknown ; then
1274     # This probably won't link without the platform-specific libunwind.
1275     LIBS="$LIBS -lunwind"
1276 else
1277     # Add the platform-specific libunwind module. uname -p seems the most
1278     # plausible option and works for ia64, where libunwind is most useful.
1279     LIBS="$LIBS -lunwind -lunwind-$UNAME_P"
1280 fi
1281
1282 AC_TRY_LINK(
1283     [
1284 #ifdef HAVE_LIBUNWIND_H
1285 #include <libunwind.h>
1286 #endif
1287     ],
1288     [
1289         unw_context_t ctx; unw_cursor_t cur;
1290         char buf[256]; unw_word_t off; 
1291         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1292         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1293     ],
1294     [
1295         AC_MSG_RESULT(yes)
1296         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1297
1298         # If we have libunwind, test whether we also have libunwind-ptrace
1299         # which would let us unwind arbitrary processes.
1300         save_LIBS=$LIBS
1301         AC_CHECK_HEADERS(libunwind-ptrace.h)
1302         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1303             [
1304                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1305                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1306                     [Whether libunwind-ptrace.a is available.])
1307             ],
1308             [ LIBUNWIND_PTRACE="" ])
1309
1310         LIBS=$save_LIBS
1311     ],
1312     [
1313         AC_MSG_RESULT(no)
1314         LIBS=$save_LIBS
1315     ])
1316
1317 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1318 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1319     AC_CHECK_HEADERS(sys/ptrace.h)
1320     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1321     AC_TRY_LINK(
1322             [
1323 #if HAVE_SYS_TYPES_H
1324 #include <sys/types.h>
1325 #endif
1326 #if HAVE_SYS_PTRACE_H
1327 #include <sys/ptrace.h>
1328 #endif
1329             ],
1330             [
1331                 int main(int argc, const char ** argv)
1332                 {
1333                         pid_t me = (pid_t)-1;
1334                         ptrace(PTRACE_ATTACH, me, 0, 0);
1335                         ptrace(PTRACE_DETACH, me, 0, 0);
1336                         return 0;
1337                 }
1338             ],
1339             [
1340                 AC_MSG_RESULT(yes)
1341                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1342                     [Whether the Linux ptrace(2) interface is available.])
1343             ],
1344             [
1345                 AC_MSG_RESULT(no)
1346                 LIBUNWIND_PTRACE=""
1347             ])
1348 fi
1349
1350 AC_SUBST(LIBUNWIND_PTRACE)
1351
1352 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1353 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1354 AC_CHECK_FUNCS(__getcwd _getcwd)
1355 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1356 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1357 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1358 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1359 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1360 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1361 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1362 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1363 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1364 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1365 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1366 AC_CHECK_FUNCS(prctl)
1367
1368 AC_TRY_COMPILE([
1369 #ifdef HAVE_SYS_PRCTL_H
1370 #include <sys/prctl.h>
1371 #endif
1372 ],
1373 [int i; i = prtcl(0); ],
1374 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1375
1376 #
1377
1378 #
1379 case "$host_os" in
1380     *linux*)
1381        # glibc <= 2.3.2 has a broken getgrouplist
1382        AC_TRY_RUN([
1383 #include <unistd.h>
1384 #include <sys/utsname.h>
1385 main() {
1386        /* glibc up to 2.3 has a broken getgrouplist */
1387 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1388        int libc_major = __GLIBC__;
1389        int libc_minor = __GLIBC_MINOR__;
1390
1391        if (libc_major < 2)
1392               exit(1);
1393        if ((libc_major == 2) && (libc_minor <= 3))
1394               exit(1);
1395 #endif
1396        exit(0);
1397 }
1398 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1399        if test x"$linux_getgrouplist_ok" = x"yes"; then
1400           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1401        fi
1402        ;;
1403     *)
1404        AC_CHECK_FUNCS(getgrouplist)
1405        ;;
1406 esac
1407
1408 #
1409 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1410 #
1411
1412 if test x$ac_cv_func_stat64 = xno ; then
1413   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1414   AC_TRY_LINK([
1415 #if defined(HAVE_UNISTD_H)
1416 #include <unistd.h>
1417 #endif
1418 #include <sys/stat.h>
1419 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1420   AC_MSG_RESULT([$ac_cv_func_stat64])
1421   if test x$ac_cv_func_stat64 = xyes ; then
1422     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1423   fi
1424 fi
1425
1426 if test x$ac_cv_func_lstat64 = xno ; then
1427   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1428   AC_TRY_LINK([
1429 #if defined(HAVE_UNISTD_H)
1430 #include <unistd.h>
1431 #endif
1432 #include <sys/stat.h>
1433 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1434   AC_MSG_RESULT([$ac_cv_func_lstat64])
1435   if test x$ac_cv_func_lstat64 = xyes ; then
1436     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1437   fi
1438 fi
1439
1440 if test x$ac_cv_func_fstat64 = xno ; then
1441   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1442   AC_TRY_LINK([
1443 #if defined(HAVE_UNISTD_H)
1444 #include <unistd.h>
1445 #endif
1446 #include <sys/stat.h>
1447 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1448   AC_MSG_RESULT([$ac_cv_func_fstat64])
1449   if test x$ac_cv_func_fstat64 = xyes ; then
1450     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1451   fi
1452 fi
1453
1454 #################################################
1455 # Check whether struct stat has timestamps with sub-second resolution.
1456 # At least IRIX and Solaris have these.
1457 #
1458 # We check that 
1459 #       all of st_mtim, st_atim and st_ctim exist
1460 #       all of the members are in fact of type struct timespec
1461 #
1462 # There is some conflicting standards weirdness about whether we should use
1463 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1464 # prefer struct timespec.
1465
1466 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1467     [
1468         AC_TRY_COMPILE(
1469             [
1470 #if TIME_WITH_SYS_TIME
1471 # include <sys/time.h>
1472 # include <time.h>
1473 #else
1474 # if HAVE_SYS_TIME_H
1475 #  include <sys/time.h>
1476 # else
1477 #  include <time.h>
1478 # endif
1479 #endif
1480 #ifdef HAVE_SYS_STAT_H
1481 #include <sys/stat.h>
1482 #endif
1483             ],
1484             [
1485                 struct timespec t;
1486                 struct stat s = {0};
1487                 t.tv_sec = s.st_mtim.tv_sec;
1488                 t.tv_nsec = s.st_mtim.tv_nsec;
1489                 t.tv_sec = s.st_ctim.tv_sec;
1490                 t.tv_nsec = s.st_ctim.tv_nsec;
1491                 t.tv_sec = s.st_atim.tv_sec;
1492                 t.tv_nsec = s.st_atim.tv_nsec;
1493             ],
1494             samba_stat_hires=yes, samba_stat_hires=no)
1495     ])
1496
1497 if test x"$samba_stat_hires" = x"yes" ; then
1498     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1499     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1500     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1501     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1502             [whether struct stat has sub-second timestamps])
1503 fi
1504
1505 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1506     [
1507         AC_TRY_COMPILE(
1508             [
1509 #if TIME_WITH_SYS_TIME
1510 # include <sys/time.h>
1511 # include <time.h>
1512 #else
1513 # if HAVE_SYS_TIME_H
1514 #  include <sys/time.h>
1515 # else
1516 #  include <time.h>
1517 # endif
1518 #endif
1519 #ifdef HAVE_SYS_STAT_H
1520 #include <sys/stat.h>
1521 #endif
1522             ],
1523             [
1524                 struct timespec t;
1525                 struct stat s = {0};
1526                 t.tv_sec = s.st_mtime;
1527                 t.tv_nsec = s.st_mtimensec;
1528                 t.tv_sec = s.st_ctime;
1529                 t.tv_nsec = s.st_ctimensec;
1530                 t.tv_sec = s.st_atime;
1531                 t.tv_nsec = s.st_atimensec;
1532             ],
1533             samba_stat_hires=yes, samba_stat_hires=no)
1534     ])
1535
1536 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1537     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1538     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1539     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1540     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1541             [whether struct stat has sub-second timestamps without struct timespec])
1542 fi
1543
1544 #####################################
1545 # needed for SRV lookups
1546 AC_CHECK_LIB(resolv, dn_expand)
1547 AC_CHECK_LIB(resolv, _dn_expand)
1548 AC_CHECK_LIB(resolv, __dn_expand)
1549
1550 #
1551 # Check for the functions putprpwnam, set_auth_parameters,
1552 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1553 # Needed for OSF1 and HPUX.
1554 #
1555
1556 AC_LIBTESTFUNC(security, putprpwnam)
1557 AC_LIBTESTFUNC(sec, putprpwnam)
1558
1559 AC_LIBTESTFUNC(security, set_auth_parameters)
1560 AC_LIBTESTFUNC(sec, set_auth_parameters)
1561
1562 # UnixWare 7.x has its getspnam in -lgen
1563 AC_LIBTESTFUNC(gen, getspnam)
1564
1565 AC_LIBTESTFUNC(security, getspnam)
1566 AC_LIBTESTFUNC(sec, getspnam)
1567
1568 AC_LIBTESTFUNC(security, bigcrypt)
1569 AC_LIBTESTFUNC(sec, bigcrypt)
1570
1571 AC_LIBTESTFUNC(security, getprpwnam)
1572 AC_LIBTESTFUNC(sec, getprpwnam)
1573
1574 AC_CHECK_FUNCS(strsignal)
1575
1576 ############################################
1577 # Check if we have libattr
1578 case "$host_os" in
1579   *osf*)
1580         AC_SEARCH_LIBS(getproplist, [proplist])
1581         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1582         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1583         AC_CHECK_FUNCS(sizeof_proplist_entry)
1584   ;;
1585   *)
1586         AC_SEARCH_LIBS(getxattr, [attr])
1587         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1588         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1589         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1590         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1591         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1592         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1593         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1594   ;;
1595 esac
1596
1597 ########################################################
1598 # Do xattr functions take additional options like on Darwin?
1599 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1600         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1601                 old_LIBS=$LIBS
1602                 LIBS="$LIBS $ACL_LIBS"
1603                 AC_TRY_COMPILE([
1604                         #include <sys/types.h>
1605                         #if HAVE_ATTR_XATTR_H
1606                         #include <attr/xattr.h>
1607                         #elif HAVE_SYS_XATTR_H
1608                         #include <sys/xattr.h>
1609                         #endif
1610                 ],[
1611                         getxattr(0, 0, 0, 0, 0, 0);
1612                 ],
1613                 [smb_attr_cv_xattr_add_opt=yes],
1614                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1615         ])
1616         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1617                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1618         fi
1619 fi
1620
1621 # Check if we have extattr
1622 case "$host_os" in
1623   *freebsd4* | *dragonfly* )
1624     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1625     ;;
1626   *)
1627     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1628     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1629     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1630     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1631     ;;
1632 esac
1633
1634 # Set defaults
1635 PIE_CFLAGS=""
1636 PIE_LDFLAGS=""
1637 AC_ARG_ENABLE(pie, [  --enable-pie            Turn on pie support if available (default=yes)])
1638
1639 if test "x$enable_pie" != xno
1640 then
1641         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1642         [
1643                 cat > conftest.c <<EOF
1644 int foo;
1645 main () { return 0;}
1646 EOF
1647                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1648                 then
1649                         samba_cv_fpie=yes
1650                 else
1651                         samba_cv_fpie=no
1652                 fi
1653                 rm -f conftest*
1654         ])
1655         if test x"${samba_cv_fpie}" = x"yes"
1656         then
1657                 PIE_CFLAGS="-fPIE"
1658                 PIE_LDFLAGS="-pie"
1659         fi
1660 fi
1661
1662 # Assume non-shared by default and override below
1663 BLDSHARED="false"
1664
1665 # these are the defaults, good for lots of systems
1666 HOST_OS="$host_os"
1667 LDSHFLAGS="-shared"
1668 SONAMEFLAG="#"
1669 SHLD="\${CC} \${CFLAGS}"
1670 PICFLAG="${PIE_CFLAGS}"
1671 SHLIBEXT="so"
1672
1673 # this bit needs to be modified for each OS that supports share libs
1674 # You need to specify how to create a shared library and
1675 # how to compile C code to produce PIC object files
1676
1677 AC_MSG_CHECKING([ability to build shared libraries])
1678
1679 # and these are for particular systems
1680 case "$host_os" in
1681                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1682                         BLDSHARED="true"
1683                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1684                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined" 
1685                         else
1686                                 LDSHFLAGS="-shared -Wl,-Bsymbolic" 
1687                         fi
1688                         DYNEXP="-Wl,--export-dynamic"
1689                         PICFLAG="-fPIC"
1690                         SONAMEFLAG="-Wl,-soname="
1691                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1692                         ;;
1693                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1694                         BLDSHARED="true"
1695                         LDSHFLAGS="-G"
1696                         SONAMEFLAG="-h "
1697                         if test "${GCC}" = "yes"; then
1698                                 PICFLAG="-fPIC"
1699                                 SONAMEFLAG="-Wl,-soname="
1700                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1701                                         DYNEXP="-Wl,-E"
1702                                 fi
1703                         else
1704                                 PICFLAG="-KPIC"
1705                                 ## ${CFLAGS} added for building 64-bit shared 
1706                                 ## libs using Sun's Compiler
1707                                 LDSHFLAGS="-G \${CFLAGS}"
1708                         fi
1709                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1710                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1711                         ;;
1712                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1713                         BLDSHARED="true"
1714                         LDSHFLAGS="-G"
1715                         SONAMEFLAG="-Wl,-h,"
1716                         PICFLAG="-KPIC"   # Is this correct for SunOS
1717                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1718                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1719                         ;;
1720                 *netbsd* | *freebsd* | *dragonfly* )  
1721                         BLDSHARED="true"
1722                         LDSHFLAGS="-shared"
1723                         DYNEXP="-Wl,--export-dynamic"
1724                         SONAMEFLAG="-Wl,-soname,"
1725                         PICFLAG="-fPIC -DPIC"
1726                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1727                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1728                         ;;
1729                 *openbsd*)  BLDSHARED="true"
1730                         LDSHFLAGS="-shared"
1731                         DYNEXP="-Wl,-Bdynamic"
1732                         SONAMEFLAG="-Wl,-soname,"
1733                         PICFLAG="-fPIC"
1734                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1735                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1736                         ;;
1737                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1738                         case "$host_os" in
1739                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1740                         ;;
1741                         esac
1742                         BLDSHARED="true"
1743                         LDSHFLAGS="-set_version sgi1.0 -shared"
1744                         SONAMEFLAG="-soname "
1745                         SHLD="\${LD}"
1746                         if test "${GCC}" = "yes"; then
1747                                 PICFLAG="-fPIC"
1748                         else 
1749                                 PICFLAG="-KPIC"
1750                         fi
1751                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1752                         ;;
1753                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1754                         BLDSHARED="true"
1755                         LDSHFLAGS="-Wl,-G,-bexpall,-bbigtoc"
1756                         DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
1757                         PICFLAG="-O2"
1758                         # as AIX code is always position independent...
1759                         # .po will just create compile warnings, use po.o:
1760                         if test "${GCC}" != "yes"; then
1761                                 ## for funky AIX compiler using strncpy()
1762                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1763                         fi
1764
1765                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1766                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1767                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1768                         ;;
1769                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1770                         # Use special PIC flags for the native HP-UX compiler.
1771                                 BLDSHARED="true"
1772                                 SHLD="cc"
1773                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1774                                 SONAMEFLAG="-Wl,+h "
1775                                 PICFLAG="+z"
1776                         if test "${GCC}" = "yes"; then
1777                                 PICFLAG="-fPIC"
1778                         else 
1779                                 PICFLAG="+z"
1780                         fi
1781                         if test "$host_cpu" = "ia64"; then
1782                                 SHLIBEXT="so"
1783                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1784                         else
1785                                 SHLIBEXT="sl"
1786                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1787                         fi
1788                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1789                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1790                         ;;
1791                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1792                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1793                         ;;
1794                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1795                         BLDSHARED="true"
1796                         LDSHFLAGS="-shared"
1797                         SONAMEFLAG="-Wl,-soname,"
1798                         PICFLAG="-fPIC"
1799                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1800                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1801                         ;;
1802                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1803                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1804                         ;;
1805                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1806                         BLDSHARED="true"
1807                         LDSHFLAGS="-shared"
1808                         SONAMEFLAG="-Wl,-soname,"
1809                         PICFLAG="-KPIC"
1810                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1811                         ;;
1812                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1813                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1814                         ;;
1815                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1816                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1817                         ;;
1818                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1819                         case "$host" in
1820                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1821                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1822                                         fi
1823                                         LDSHFLAGS="-G"
1824                                         DYNEXP="-Bexport"
1825                                 ;;
1826                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1827                         esac
1828                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1829                         ;;
1830
1831                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1832                         if [ test "$GCC" != yes ]; then
1833                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1834                         fi
1835                         LDSHFLAGS="-G"
1836                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1837                         ;;
1838                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1839                         BLDSHARED="false"
1840                         LDSHFLAGS=""
1841                         ;;
1842
1843                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1844                         BLDSHARED="true"
1845                         LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1846                         SHLIBEXT="dylib"
1847                         # Since gcc doesn't fail on unrecognised options, the
1848                         # PIE test incorrectly succeeds. Darwin gcc does not
1849                         # actually support the PIE stuff.
1850                         PIE_LDFLAGS=
1851                         PIE_CFLAGS=
1852                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1853                         ;;
1854
1855                 *)
1856                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1857                         ;;
1858 esac
1859
1860 if test "$enable_shared" != "yes"; then
1861         BLDSHARED=false
1862 fi
1863
1864 AC_MSG_RESULT($BLDSHARED)
1865
1866 AC_MSG_CHECKING([LDFLAGS])
1867 AC_MSG_RESULT([$LDFLAGS])
1868 AC_MSG_CHECKING([DYNEXP])
1869 AC_MSG_RESULT([$DYNEXP])
1870
1871 #######################################################
1872 # test whether building a shared library actually works
1873 if test $BLDSHARED = true; then
1874
1875 AC_MSG_CHECKING([SHLD])
1876 AC_MSG_RESULT([$SHLD])
1877 AC_MSG_CHECKING([LDSHFLAGS])
1878 AC_MSG_RESULT([$LDSHFLAGS])
1879
1880 AC_MSG_CHECKING([SHLIBEXT])
1881 AC_MSG_RESULT([$SHLIBEXT])
1882 AC_MSG_CHECKING([SONAMEFLAG])
1883 AC_MSG_RESULT([$SONAMEFLAG])
1884
1885 AC_MSG_CHECKING([PICFLAG])
1886 AC_MSG_RESULT([$PICFLAG])
1887
1888 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1889 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1890
1891 AC_CACHE_CHECK([whether building shared libraries actually works], 
1892                [ac_cv_shlib_works],[
1893    # try building a trivial shared library
1894    ac_cv_shlib_works=no
1895    # The $SHLD and $LDSHFLAGS variables may contain references to other
1896    # variables so they need to be eval'ed.
1897    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1898         shlib.o ${srcdir-.}/tests/shlib.c && \
1899    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1900         shlib.o && ac_cv_shlib_works=yes
1901    rm -f "shlib.$SHLIBEXT" shlib.o
1902
1903 ])
1904 if test $ac_cv_shlib_works = no; then
1905    BLDSHARED=false
1906 fi
1907 fi
1908
1909 if test x"$BLDSHARED" != x"true"; then
1910         LDSHFLAGS="shared-libraries-disabled"
1911         SONAMEFLAG="shared-libraries-disabled"
1912         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1913         SHLD="shared-libraries-disabled"
1914         PICFLAG="${PIE_CFLAGS}"
1915         SHLIBEXT="shared_libraries_disabled"
1916 fi
1917
1918 AC_MSG_CHECKING([used PICFLAG])
1919 AC_MSG_RESULT([$PICFLAG])
1920
1921 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1922
1923 ################
1924
1925 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1926 AC_TRY_RUN([#include <stdio.h>
1927 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1928 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1929 if test x"$samba_cv_have_longlong" = x"yes"; then
1930     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1931     AC_CHECK_TYPE(intptr_t, unsigned long long)
1932 else
1933     AC_CHECK_TYPE(intptr_t, unsigned long)
1934 fi
1935
1936 #
1937 # Check if the compiler supports the LL prefix on long long integers.
1938 # AIX needs this.
1939
1940 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1941     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1942         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1943 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1944    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1945 fi
1946
1947   
1948 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1949 AC_TRY_RUN([#include <stdio.h>
1950 #include <sys/stat.h>
1951 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1952 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1953 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1954     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1955 fi
1956
1957 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1958 AC_TRY_RUN([
1959 #if defined(HAVE_UNISTD_H)
1960 #include <unistd.h>
1961 #endif
1962 #include <stdio.h>
1963 #include <sys/stat.h>
1964 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1965 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1966 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1967     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1968 fi
1969
1970 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1971 AC_TRY_RUN([
1972 #if defined(HAVE_UNISTD_H)
1973 #include <unistd.h>
1974 #endif
1975 #include <stdio.h>
1976 #include <sys/stat.h>
1977 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1978 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1979 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1980     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1981 fi
1982
1983 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1984 AC_TRY_RUN([
1985 #if defined(HAVE_UNISTD_H)
1986 #include <unistd.h>
1987 #endif
1988 #include <stdio.h>
1989 #include <sys/stat.h>
1990 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1991 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1992 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1993     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1994 fi
1995
1996 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
1997 AC_TRY_RUN([
1998 #if defined(HAVE_UNISTD_H)
1999 #include <unistd.h>
2000 #endif
2001 #include <stdio.h>
2002 #include <sys/stat.h>
2003 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2004 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2005 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2006     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2007 fi
2008
2009 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2010 AC_TRY_RUN([
2011 #if defined(HAVE_UNISTD_H)
2012 #include <unistd.h>
2013 #endif
2014 #include <stdio.h>
2015 #include <sys/stat.h>
2016 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2017 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2018 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2019     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2020 fi
2021
2022 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2023 AC_TRY_COMPILE([
2024 #if defined(HAVE_UNISTD_H)
2025 #include <unistd.h>
2026 #endif
2027 #include <sys/types.h>
2028 #include <dirent.h>],
2029 [DIR64 de;],
2030 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2031 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2032     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2033 fi
2034
2035 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2036 AC_TRY_COMPILE([
2037 #if defined(HAVE_UNISTD_H)
2038 #include <unistd.h>
2039 #endif
2040 #include <sys/types.h>
2041 #include <dirent.h>],
2042 [struct dirent64 de;],
2043 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2044 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2045     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2046 fi
2047
2048 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2049 AC_TRY_RUN([
2050 #if defined(HAVE_UNISTD_H)
2051 #include <unistd.h>
2052 #endif
2053 #include <sys/types.h>
2054 main() { dev_t dev; int i = major(dev); return 0; }],
2055 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2056 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2057     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2058 fi
2059
2060 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2061 AC_TRY_RUN([
2062 #if defined(HAVE_UNISTD_H)
2063 #include <unistd.h>
2064 #endif
2065 #include <sys/types.h>
2066 main() { dev_t dev; int i = minor(dev); return 0; }],
2067 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2068 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2069     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2070 fi
2071
2072 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2073 AC_TRY_RUN([
2074 #if defined(HAVE_UNISTD_H)
2075 #include <unistd.h>
2076 #endif
2077 #include <sys/types.h>
2078 main() { dev_t dev = makedev(1,2); return 0; }],
2079 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2080 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2081     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2082 fi
2083
2084 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2085 AC_TRY_RUN([#include <stdio.h>
2086 main() { char c; c=250; exit((c > 0)?0:1); }],
2087 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2088 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2089     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2090 fi
2091
2092 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
2093 AC_TRY_COMPILE([#include <sys/types.h>
2094 #include <sys/socket.h>
2095 #include <netinet/in.h>],
2096 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
2097 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
2098 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
2099     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
2100 fi
2101
2102 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2103 AC_TRY_COMPILE([#include <sys/types.h>
2104 #include <dirent.h>
2105 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2106 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2107 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2108     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2109 fi
2110
2111 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2112 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2113 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2114 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2115     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2116 fi
2117
2118 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2119 AC_TRY_RUN([
2120 #include <sys/time.h>
2121 #include <unistd.h>
2122 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
2123            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
2124 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2125     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
2126 fi
2127
2128 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2129
2130     # On some systems (eg. Linux) librt can pull in libpthread. We
2131     # don't want this to happen because libpthreads changes signal delivery
2132     # semantics in ways we are not prepared for. This breaks Linux oplocks
2133     # which rely on signals.
2134
2135     AC_LIBTESTFUNC(rt, clock_gettime,
2136             [
2137                 AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2138                     [Whether clock_gettime is available])
2139                 SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2140                 SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2141                 SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2142             ])
2143
2144 fi
2145
2146 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
2147 AC_TRY_LINK([#include <stdarg.h>
2148 va_list ap1,ap2;], [va_copy(ap1,ap2);],
2149 samba_cv_HAVE_VA_COPY=yes,
2150 samba_cv_HAVE_VA_COPY=no)])
2151 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
2152     AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
2153 else
2154     AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
2155     AC_TRY_LINK([#include <stdarg.h>
2156     va_list ap1,ap2;], [__va_copy(ap1,ap2);],
2157     samba_cv_HAVE___VA_COPY=yes,
2158     samba_cv_HAVE___VA_COPY=no)])
2159     if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
2160         AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
2161     fi
2162 fi
2163
2164 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
2165 AC_TRY_RUN([
2166 #include <sys/types.h>
2167 #include <stdarg.h>
2168 void foo(const char *format, ...) { 
2169        va_list ap;
2170        int len;
2171        char buf[5];
2172
2173        va_start(ap, format);
2174        len = vsnprintf(buf, 0, format, ap);
2175        va_end(ap);
2176        if (len != 5) exit(1);
2177
2178        va_start(ap, format);
2179        len = vsnprintf(0, 0, format, ap);
2180        va_end(ap);
2181        if (len != 5) exit(1);
2182
2183        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
2184
2185        exit(0);
2186 }
2187 main() { foo("hello"); }
2188 ],
2189 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
2190 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
2191     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
2192 fi
2193
2194 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2195 AC_TRY_RUN([#include <sys/types.h>
2196 #include <dirent.h>
2197 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2198 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2199 di->d_name[0] == 0) exit(0); exit(1);} ],
2200 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2201 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2202     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2203 fi
2204
2205 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2206 AC_TRY_COMPILE([#include <sys/types.h>
2207 #include <utime.h>],
2208 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2209 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2210 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2211     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2212 fi
2213
2214 ##############
2215 # Check utmp details, but only if our OS offers utmp.h
2216 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2217 dnl  utmp and utmpx come in many flavours
2218 dnl  We need to check for many of them
2219 dnl  But we don't need to do each and every one, because our code uses
2220 dnl  mostly just the utmp (not utmpx) fields.
2221
2222 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2223
2224 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2225 AC_TRY_COMPILE([#include <sys/types.h>
2226 #include <utmp.h>],
2227 [struct utmp ut;  ut.ut_name[0] = 'a';],
2228 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2229 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2230     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2231 fi 
2232
2233 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2234 AC_TRY_COMPILE([#include <sys/types.h>
2235 #include <utmp.h>],
2236 [struct utmp ut;  ut.ut_user[0] = 'a';],
2237 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2238 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2239     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2240 fi 
2241
2242 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2243 AC_TRY_COMPILE([#include <sys/types.h>
2244 #include <utmp.h>],
2245 [struct utmp ut;  ut.ut_id[0] = 'a';],
2246 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2247 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2248     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2249 fi 
2250
2251 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2252 AC_TRY_COMPILE([#include <sys/types.h>
2253 #include <utmp.h>],
2254 [struct utmp ut;  ut.ut_host[0] = 'a';],
2255 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2256 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2257     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2258 fi 
2259
2260 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2261 AC_TRY_COMPILE([#include <sys/types.h>
2262 #include <utmp.h>],
2263 [struct utmp ut;  time_t t; ut.ut_time = t;],
2264 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2265 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2266     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2267 fi 
2268
2269 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2270 AC_TRY_COMPILE([#include <sys/types.h>
2271 #include <utmp.h>],
2272 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2273 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2274 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2275     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2276 fi 
2277
2278 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2279 AC_TRY_COMPILE([#include <sys/types.h>
2280 #include <utmp.h>],
2281 [struct utmp ut;  ut.ut_type = 0;],
2282 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2283 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2284     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2285 fi 
2286
2287 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2288 AC_TRY_COMPILE([#include <sys/types.h>
2289 #include <utmp.h>],
2290 [struct utmp ut;  ut.ut_pid = 0;],
2291 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2292 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2293     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2294 fi 
2295
2296 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2297 AC_TRY_COMPILE([#include <sys/types.h>
2298 #include <utmp.h>],
2299 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2300 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2301 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2302     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2303 fi 
2304
2305 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2306 AC_TRY_COMPILE([#include <sys/types.h>
2307 #include <utmp.h>],
2308 [struct utmp ut;  ut.ut_addr = 0;],
2309 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2310 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2311     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2312 fi 
2313
2314 if test x$ac_cv_func_pututline = xyes ; then
2315   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2316   AC_TRY_COMPILE([#include <sys/types.h>
2317 #include <utmp.h>],
2318   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2319   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2320   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2321       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2322   fi
2323 fi
2324
2325 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2326 AC_TRY_COMPILE([#include <sys/types.h>
2327 #include <utmpx.h>],
2328 [struct utmpx ux;  ux.ut_syslen = 0;],
2329 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2330 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2331     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2332 fi 
2333
2334 fi
2335 # end utmp details
2336
2337
2338 ICONV_LOCATION=standard
2339 LOOK_DIRS="/usr /usr/local /sw /opt"
2340 AC_ARG_WITH(libiconv,
2341 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
2342 [
2343   if test "$withval" = "no" ; then
2344     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2345   else
2346      if test "$withval" != "yes" ; then
2347         ICONV_PATH_SPEC=yes
2348         LOOK_DIRS="$withval"
2349      fi
2350   fi
2351 ])
2352
2353 for i in $LOOK_DIRS ; do
2354     save_LIBS=$LIBS
2355     save_LDFLAGS=$LDFLAGS
2356     save_CPPFLAGS=$CPPFLAGS
2357     ICONV_FOUND="no"
2358     unset libext
2359     CPPFLAGS="$CPPFLAGS -I$i/include"
2360 dnl This is here to handle -withval stuff for --with-libiconv
2361 dnl Perhaps we should always add a -L
2362
2363 dnl Check lib and lib32 library variants to cater for IRIX ABI-specific
2364 dnl installation paths. This gets a little tricky since we might have iconv
2365 dnl in both libiconv and in libc. In this case the jm_ICONV test will always
2366 dnl succeed when the header is found. To counter this, make sure the 
2367 dnl library directory is there and check the ABI directory first (which
2368 dnl should be harmless on other systems.
2369 dnl For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2370     for l in "lib32" "lib" "lib/hpux32"; do
2371         if test -d "$i/$l" ; then
2372                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2373         LIBS=
2374         export LDFLAGS LIBS CPPFLAGS
2375 dnl Try to find iconv(3)
2376                 jm_ICONV($i/$l)
2377                 if test x"$ICONV_FOUND" = "xyes" ; then
2378             libext="$l"
2379             break;
2380         fi
2381         fi
2382     done
2383
2384     if test x"$ICONV_FOUND" = "xyes" ; then
2385         LDFLAGS=$save_LDFLAGS
2386         LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2387         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2388         LIBS="$save_LIBS"
2389         ICONV_LOCATION=$i
2390         export LDFLAGS LIBS CPPFLAGS
2391 dnl Now, check for a working iconv ... we want to do it here because
2392 dnl there might be a working iconv further down the list of LOOK_DIRS
2393
2394         ############
2395         # check for iconv in libc
2396         ic_save_LIBS="$LIBS"
2397         if test x"$ICONV_PATH_SPEC" = "xyes" ; then
2398            LIBS="$LIBS -L$ICONV_LOCATION/$libext"
2399         fi
2400         if test x"$jm_cv_lib_iconv" != x; then
2401            LIBS="$LIBS -l$jm_cv_lib_iconv"
2402         fi
2403 dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
2404         default_dos_charset=no
2405         default_display_charset=no
2406         default_unix_charset=no
2407
2408         # check for default dos charset name
2409         for j in CP850 IBM850 ; do
2410             rjs_CHARSET($j)
2411             if test x"$ICONV_CHARSET" = x"$j"; then
2412                 default_dos_charset="\"$j\""
2413                 break
2414             fi
2415         done
2416         # check for default display charset name
2417         for j in ASCII 646 ; do
2418             rjs_CHARSET($j)
2419             if test x"$ICONV_CHARSET" = x"$j"; then
2420                 default_display_charset="\"$j\""
2421                 break
2422             fi
2423         done
2424         # check for default unix charset name
2425         for j in UTF-8 UTF8 ; do
2426             rjs_CHARSET($j)
2427             if test x"$ICONV_CHARSET" = x"$j"; then
2428                 default_unix_charset="\"$j\""
2429                 break
2430             fi
2431         done
2432         
2433         if test "$default_dos_charset" != "no" -a \
2434                 "$default_dos_charset" != "cross" -a \
2435                 "$default_display_charset" != "no" -a \ 
2436                 "$default_display_charset" != "cross" -a \
2437                 "$default_unix_charset" != "no" -a \
2438                 "$default_unix_charset" != "cross"
2439         then
2440                 samba_cv_HAVE_NATIVE_ICONV=yes
2441         else if test "$default_dos_charset" = "cross" -o \
2442                      "$default_display_charset" = "cross" -o \
2443                      "$default_unix_charset" = "cross"
2444         then
2445                 samba_cv_HAVE_NATIVE_ICONV=cross
2446         else
2447                 samba_cv_HAVE_NATIVE_ICONV=no
2448         fi
2449         fi
2450 dnl ])
2451
2452         LIBS="$ic_save_LIBS"
2453         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
2454            CPPFLAGS=$save_CPPFLAGS
2455            LDFLAGS=$save_LDFLAGS
2456            LIBS=$save_LIBS
2457            if test x"$jm_cv_lib_iconv" != x; then
2458               LIBS="$LIBS -l$jm_cv_lib_iconv"
2459            fi
2460            dnl Add the flags we need to CPPFLAGS and LDFLAGS
2461            CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2462            LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2463            export CPPFLAGS
2464            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2465            AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2466            AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2467            AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2468            break
2469         fi
2470 dnl We didn't find a working iconv, so keep going
2471     fi
2472 dnl We only need to clean these up here for the next pass through the loop
2473     CPPFLAGS=$save_CPPFLAGS
2474     LDFLAGS=$save_LDFLAGS
2475     LIBS=$save_LIBS
2476     export LDFLAGS LIBS CPPFLAGS
2477 done
2478 unset libext
2479
2480
2481 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2482     AC_MSG_WARN([Sufficient support for iconv function was not found. 
2483     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2484    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2485    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2486    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2487 fi
2488
2489
2490 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2491 AC_TRY_RUN([
2492 #include <sys/types.h>
2493 #include <fcntl.h>
2494 #ifndef F_GETLEASE
2495 #define F_GETLEASE      1025
2496 #endif
2497 main() {
2498        int fd = open("/dev/null", O_RDONLY);
2499        return fcntl(fd, F_GETLEASE, 0) == -1;
2500 }
2501 ],
2502 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2503 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2504     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2505 fi
2506
2507 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2508 AC_TRY_RUN([
2509 #include <sys/types.h>
2510 #include <fcntl.h>
2511 #include <signal.h>
2512 #ifndef F_NOTIFY
2513 #define F_NOTIFY 1026
2514 #endif
2515 main() {
2516         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2517 }
2518 ],
2519 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2520 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2521     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2522 fi
2523
2524 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2525 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2526 AC_CHECK_FUNC(inotify_init)
2527 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2528 ],
2529 samba_cv_HAVE_INOTIFY=yes,
2530 samba_cv_HAVE_INOTIFY=no,
2531 samba_cv_HAVE_INOTIFY=cross)
2532
2533 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2534     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2535 fi
2536
2537 #################################################
2538 # Check if FAM notifications are available. For FAM info, see
2539 #       http://oss.sgi.com/projects/fam/
2540 #       http://savannah.nongnu.org/projects/fam/
2541 AC_ARG_ENABLE(fam,
2542 [  --enable-fam            Turn on FAM support (default=auto)])
2543
2544 if test x$enable_fam != xno; then
2545     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2546     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2547         # On IRIX, libfam requires libC, but other FAM implementations
2548         # might not need it.
2549         AC_CHECK_LIB(fam, FAMOpen2,
2550             [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam"],
2551             [samba_cv_HAVE_LIBFAM=no])
2552
2553         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2554             samba_fam_xtra=-lC
2555             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2556                 [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam -lC"],
2557                 [samba_cv_HAVE_LIBFAM=no])
2558             unset samba_fam_xtra
2559         fi
2560     fi
2561
2562     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2563         default_shared_modules="$default_shared_modules vfs_notify_fam"
2564         AC_TRY_COMPILE([#include <fam.h>],
2565                     [FAMCodes code = FAMChanged;],
2566                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2567                         [Whether fam.h contains a typedef for enum FAMCodes]),
2568                     [])
2569     fi
2570
2571     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2572         AC_MSG_ERROR(FAM support requested but FAM library not available )
2573     fi
2574 fi
2575
2576 #################################################
2577 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2578
2579 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2580
2581 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2582 AC_TRY_RUN([
2583 #include <sys/types.h>
2584 #include <fcntl.h>
2585 #include <signal.h>
2586 #include <sys/file.h>
2587 #ifndef LOCK_MAND
2588 #define LOCK_MAND       32
2589 #define LOCK_READ       64
2590 #endif
2591 main() {
2592         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2593 }
2594 ],
2595 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2596 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2597     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2598 fi
2599
2600
2601 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2602 AC_TRY_COMPILE([#include <sys/types.h>
2603 #include <fcntl.h>],
2604 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2605 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2606 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2607     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2608 fi
2609
2610 #################################################
2611 # Check for POSIX capability support
2612
2613 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2614     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2615     [], [])
2616
2617 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2618
2619     ac_save_LIBS=$LIBS
2620     AC_LIBTESTFUNC(cap, cap_get_proc)
2621
2622     AC_CACHE_CHECK([for POSIX capabilities],
2623             samba_cv_HAVE_POSIX_CAPABILITIES,
2624             [
2625                 AC_TRY_RUN([
2626 #include <sys/types.h>
2627 #include <sys/capability.h>
2628 main() {
2629  cap_t cap;
2630  cap_value_t vals[1];
2631  if (!(cap = cap_get_proc()))
2632    exit(1);
2633  vals[0] = CAP_CHOWN;
2634  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2635  cap_set_proc(cap);
2636  exit(0);
2637 }],
2638                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2639                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2640                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2641             ])
2642
2643 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2644     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2645             [Whether POSIX capabilities are available])
2646 else
2647     LIBS=$ac_save_LIBS
2648 fi
2649
2650 fi
2651
2652 #
2653 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2654 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2655 #
2656
2657 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2658 AC_TRY_COMPILE([#include <sys/types.h>
2659 #if defined(HAVE_RPC_RPC_H)
2660 #include <rpc/rpc.h>
2661 #endif],
2662 [int16 testvar;],
2663 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2664 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2665     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2666 fi
2667
2668 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2669 AC_TRY_COMPILE([#include <sys/types.h>
2670 #if defined(HAVE_RPC_RPC_H)
2671 #include <rpc/rpc.h>
2672 #endif],
2673 [uint16 testvar;],
2674 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2675 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2676     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2677 fi
2678
2679 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2680 AC_TRY_COMPILE([#include <sys/types.h>
2681 #if defined(HAVE_RPC_RPC_H)
2682 #include <rpc/rpc.h>
2683 #endif],
2684 [int32 testvar;],
2685 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2686 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2687     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2688 fi
2689
2690 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2691 AC_TRY_COMPILE([#include <sys/types.h>
2692 #if defined(HAVE_RPC_RPC_H)
2693 #include <rpc/rpc.h>
2694 #endif],
2695 [uint32 testvar;],
2696 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2697 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2698     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2699 fi
2700
2701 dnl
2702 dnl Some systems (SCO) have a problem including
2703 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2704 dnl as a #define in <prot.h> and as part of an enum
2705 dnl in <rpc/rpc.h>.
2706 dnl
2707
2708 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2709 AC_TRY_COMPILE([#include <sys/types.h>
2710 #ifdef HAVE_SYS_SECURITY_H
2711 #include <sys/security.h>
2712 #include <prot.h>
2713 #endif  /* HAVE_SYS_SECURITY_H */
2714 #if defined(HAVE_RPC_RPC_H)
2715 #include <rpc/rpc.h>
2716 #endif],
2717 [int testvar;],
2718 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2719 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2720     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2721 fi
2722
2723 AC_MSG_CHECKING([for test routines])
2724 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2725            AC_MSG_RESULT(yes),
2726            AC_MSG_ERROR([cant find test code. Aborting config]),
2727            AC_MSG_WARN([cannot run when cross-compiling]))
2728
2729 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2730 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2731            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2732 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2733     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2734 fi
2735
2736 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2737 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2738            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2739            samba_cv_HAVE_WORKING_AF_LOCAL=no,
2740            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2741 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2742 then
2743     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2744 fi
2745
2746 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2747 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2748            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2749 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2750     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2751 fi
2752
2753 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2754 AC_TRY_RUN([#include <stdlib.h>
2755 #include <sys/types.h>
2756 #include <sys/stat.h>
2757 #include <unistd.h>
2758 main() { 
2759   struct stat st;
2760   char tpl[20]="/tmp/test.XXXXXX"; 
2761   int fd = mkstemp(tpl); 
2762   if (fd == -1) exit(1);
2763   unlink(tpl);
2764   if (fstat(fd, &st) != 0) exit(1);
2765   if ((st.st_mode & 0777) != 0600) exit(1);
2766   exit(0);
2767 }],
2768 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2769 samba_cv_HAVE_SECURE_MKSTEMP=no,
2770 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2771 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2772     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2773 fi
2774
2775 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
2776         AC_TRY_RUN([#include "${srcdir-.}/tests/os2_delete.c"],
2777                 [samba_cv_HAVE_BROKEN_READDIR=no],
2778                         [samba_cv_HAVE_BROKEN_READDIR=yes],
2779                         [samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
2780
2781 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
2782 AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
2783         AC_TRY_RUN([
2784 #include "${srcdir-.}/lib/repdir.c"
2785 #include "${srcdir-.}/tests/os2_delete.c"],
2786         samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
2787 fi
2788
2789 if test x"$samba_cv_REPLACE_READDIR" = x"yes"; then
2790         AC_DEFINE(REPLACE_READDIR,1,[replace readdir])
2791 fi
2792
2793 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2794 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2795 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2796 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2797 AC_CHECK_FUNCS(getpagesize)
2798
2799 ##################
2800 # look for a method of finding the list of network interfaces
2801 iface=no;
2802 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
2803 SAVE_CPPFLAGS="$CPPFLAGS"
2804 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2805 AC_TRY_RUN([
2806 #define HAVE_IFACE_AIX 1
2807 #define AUTOCONF_TEST 1
2808 #undef _XOPEN_SOURCE_EXTENDED
2809 #include "${srcdir-.}/lib/interfaces.c"],
2810            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
2811 CPPFLAGS="$SAVE_CPPFLAGS"
2812 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
2813     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
2814 fi
2815
2816 if test $iface = no; then
2817 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
2818 SAVE_CPPFLAGS="$CPPFLAGS"
2819 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2820 AC_TRY_RUN([
2821 #define HAVE_IFACE_IFCONF 1
2822 #define AUTOCONF_TEST 1
2823 #include "${srcdir-.}/lib/interfaces.c"],
2824            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
2825 CPPFLAGS="$SAVE_CPPFLAGS"
2826 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
2827     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
2828 fi
2829 fi
2830
2831 if test $iface = no; then
2832 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
2833 SAVE_CPPFLAGS="$CPPFLAGS"
2834 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2835 AC_TRY_RUN([
2836 #define HAVE_IFACE_IFREQ 1
2837 #define AUTOCONF_TEST 1
2838 #include "${srcdir-.}/lib/interfaces.c"],
2839            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
2840 CPPFLAGS="$SAVE_CPPFLAGS"
2841 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
2842     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
2843 fi
2844 fi
2845
2846
2847 ################################################
2848 # look for a method of setting the effective uid
2849 seteuid=no;
2850 if test $seteuid = no; then
2851 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2852 AC_TRY_RUN([
2853 #define AUTOCONF_TEST 1
2854 #define USE_SETRESUID 1
2855 #include "confdefs.h"
2856 #include "${srcdir-.}/lib/util_sec.c"],
2857            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2858 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2859     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2860 fi
2861 fi
2862
2863
2864 if test $seteuid = no; then
2865 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2866 AC_TRY_RUN([
2867 #define AUTOCONF_TEST 1
2868 #define USE_SETREUID 1
2869 #include "confdefs.h"
2870 #include "${srcdir-.}/lib/util_sec.c"],
2871            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2872 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2873     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2874 fi
2875 fi
2876
2877 if test $seteuid = no; then
2878 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2879 AC_TRY_RUN([
2880 #define AUTOCONF_TEST 1
2881 #define USE_SETEUID 1
2882 #include "confdefs.h"
2883 #include "${srcdir-.}/lib/util_sec.c"],
2884            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2885 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2886     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2887 fi
2888 fi
2889
2890 if test $seteuid = no; then
2891 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2892 AC_TRY_RUN([
2893 #define AUTOCONF_TEST 1
2894 #define USE_SETUIDX 1
2895 #include "confdefs.h"
2896 #include "${srcdir-.}/lib/util_sec.c"],
2897            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2898 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2899     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2900 fi
2901 fi
2902
2903
2904 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2905 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2906            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2907 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2908     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2909 fi
2910
2911 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2912 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2913            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2914 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2915     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2916 fi
2917
2918 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2919 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2920            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2921 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2922     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2923
2924 else
2925
2926 dnl
2927 dnl Don't check for 64 bit fcntl locking if we know that the
2928 dnl glibc2.1 broken check has succeeded.
2929 dnl 
2930
2931   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2932   AC_TRY_RUN([
2933 #if defined(HAVE_UNISTD_H)
2934 #include <unistd.h>
2935 #endif
2936 #include <stdio.h>
2937 #include <stdlib.h>
2938
2939 #ifdef HAVE_FCNTL_H
2940 #include <fcntl.h>
2941 #endif
2942
2943 #ifdef HAVE_SYS_FCNTL_H
2944 #include <sys/fcntl.h>
2945 #endif
2946 main() { struct flock64 fl64;
2947 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2948 exit(0);
2949 #else
2950 exit(1);
2951 #endif
2952 }],
2953        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2954
2955   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2956       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2957   fi
2958 fi
2959
2960 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2961 AC_TRY_COMPILE([#include <sys/types.h>
2962 #include <sys/stat.h>
2963 #include <unistd.h>],
2964 [struct stat st;  st.st_blocks = 0;],
2965 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2966 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2967     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2968 fi 
2969
2970 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2971 AC_TRY_COMPILE([#include <sys/types.h>
2972 #include <sys/stat.h>
2973 #include <unistd.h>],
2974 [struct stat st;  st.st_blksize = 0;],
2975 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2976 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2977     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2978 fi
2979
2980 AC_CACHE_CHECK([for st_flags in struct stat],
2981         samba_cv_HAVE_STAT_ST_FLAGS,
2982         [
2983             AC_TRY_COMPILE([#include <sys/types.h>
2984 #include <sys/stat.h>
2985 #include <unistd.h>],
2986             [struct stat st;  st.st_flags = 0;],
2987             samba_cv_HAVE_STAT_ST_FLAGS=yes,
2988             samba_cv_HAVE_STAT_ST_FLAGS=no,
2989             samba_cv_HAVE_STAT_ST_FLAGS=cross)
2990         ])
2991
2992 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2993     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
2994                 [Whether the stat struct has a st_flags member])
2995 fi
2996
2997 case "$host_os" in
2998 *linux*)
2999 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
3000 AC_TRY_COMPILE([
3001 #ifdef HAVE_SYS_VFS_H
3002 #include <sys/vfs.h>
3003 #endif
3004 #ifdef HAVE_SYS_CAPABILITY_H
3005 #include <sys/capability.h>
3006 #endif
3007 ],[int i;],
3008    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
3009 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
3010    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
3011 fi
3012 ;;
3013 esac
3014
3015 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3016 AC_TRY_COMPILE([
3017 #include <sys/types.h>
3018 #include <sys/acl.h>
3019 #if defined(HAVE_RPCSVC_NIS_H)
3020 #include <rpcsvc/nis.h>
3021 #endif],
3022 [int i;],
3023 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3024 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3025         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3026 fi
3027
3028 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3029 AC_TRY_RUN([
3030 #include <stdio.h>
3031 #include <limits.h>
3032 main() {
3033         char *newpath = realpath("/tmp", NULL);
3034         exit ((newpath != NULL) ? 0 : 1);
3035 }
3036 ],
3037 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3038 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3039     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3040 fi
3041
3042 #################################################
3043 # check for AFS clear-text auth support
3044 samba_cv_WITH_AFS=no
3045 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3046 AC_ARG_WITH(afs,
3047 [  --with-afs              Include AFS clear-text auth support (default=no) ],
3048 [ case "$withval" in
3049   yes|auto)
3050     AC_MSG_RESULT($withval)
3051     samba_cv_WITH_AFS=$withval
3052     ;;
3053   *)
3054     AC_MSG_RESULT(no)
3055     ;;
3056   esac ],
3057   AC_MSG_RESULT(no)
3058 )
3059
3060 ####################################################
3061 # check for Linux-specific AFS fake-kaserver support
3062 samba_cv_WITH_FAKE_KASERVER=no
3063 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3064 AC_ARG_WITH(fake-kaserver,
3065 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
3066 [ case "$withval" in
3067   yes|auto)
3068     AC_MSG_RESULT($withval)
3069     samba_cv_WITH_FAKE_KASERVER=$withval
3070     ;;
3071   *)
3072     AC_MSG_RESULT(no)
3073     ;;
3074   esac ],
3075   AC_MSG_RESULT(no)
3076 )
3077
3078 #################################################
3079 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3080 if test x"$samba_cv_WITH_AFS" != x"no" ||
3081    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3082
3083     # see if this box has the afs-headers in /usr/include/afs
3084     AC_MSG_CHECKING(for /usr/include/afs)
3085     if test -d /usr/include/afs; then
3086           CFLAGS="$CFLAGS -I/usr/include/afs"
3087           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3088           AC_MSG_RESULT(yes)
3089     else
3090       AC_MSG_RESULT(no)
3091     fi
3092    
3093     # check for afs.h
3094     have_afs_headers=no
3095     AC_CHECK_HEADERS(afs.h afs/afs.h)
3096     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3097         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3098            test x"$samba_cv_WITH_AFS" = x"auto"; then
3099                 AC_MSG_WARN([AFS cannot be supported without afs.h])
3100         else
3101                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3102         fi
3103     else
3104         have_afs_headers=yes
3105     fi
3106 fi
3107
3108 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3109     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3110 fi
3111
3112 #################################################
3113 # check whether to compile AFS/NT ACL mapping module
3114 samba_cv_WITH_VFS_AFSACL=no
3115 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3116 AC_ARG_WITH(vfs-afsacl,
3117 [  --with-vfs-afsacl       Include AFS to NT ACL mapping module (default=no) ],
3118 [ case "$withval" in
3119   yes|auto)
3120     AC_MSG_RESULT($withval)
3121     samba_cv_WITH_VFS_AFSACL=yes
3122     ;;
3123   *)
3124     AC_MSG_RESULT(no)
3125     ;;
3126   esac ],
3127   AC_MSG_RESULT(no)
3128 )
3129
3130 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3131    default_shared_modules="$default_shared_modules vfs_afsacl"
3132 fi
3133         
3134 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3135     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3136 fi
3137
3138 #################################################
3139 # check for the DFS clear-text auth system
3140 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3141 AC_ARG_WITH(dfs,
3142 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
3143 [ case "$withval" in
3144   yes)
3145     AC_MSG_RESULT(yes)
3146     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3147     ;;
3148   *)
3149     AC_MSG_RESULT(no)
3150     ;;
3151   esac ],
3152   AC_MSG_RESULT(no)
3153 )
3154
3155 ########################################################
3156 # Compile with LDAP support?
3157
3158 with_ldap_support=auto
3159 AC_MSG_CHECKING([for LDAP support])
3160
3161 AC_ARG_WITH(ldap,
3162 [  --with-ldap             LDAP support (default yes)],
3163 [ case "$withval" in
3164     yes|no)
3165         with_ldap_support=$withval
3166         ;;
3167   esac ])
3168
3169 AC_MSG_RESULT($with_ldap_support)
3170
3171 SMBLDAP=""
3172 AC_SUBST(SMBLDAP)
3173 SMBLDAPUTIL=""
3174 AC_SUBST(SMBLDAPUTIL)
3175 LDBLDAP=""
3176 AC_SUBST(LDBLDAP)
3177
3178 if test x"$with_ldap_support" != x"no"; then
3179
3180   ##################################################################
3181   # first test for ldap.h and lber.h
3182   # (ldap.h is required for this test)
3183   AC_CHECK_HEADERS(ldap.h lber.h)
3184   
3185   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3186         if test x"$with_ldap_support" = x"yes"; then
3187          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3188         else
3189          AC_MSG_WARN(ldap.h is needed for LDAP support)
3190         fi
3191         
3192         with_ldap_support=no
3193   fi
3194
3195   ##################################################################
3196   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3197   # unsigned int in include/includes.h
3198   case $host_os in
3199         *hpux*)
3200          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3201          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3202         with_ldap_support=yes
3203         ;;
3204         *)
3205         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3206         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3207                 if test x"$with_ldap_support" = x"yes"; then
3208                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3209                 else
3210                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3211                 fi
3212                 with_ldap_support=no
3213         fi
3214         ;;
3215   esac
3216 fi
3217
3218 if test x"$with_ldap_support" != x"no"; then
3219   ac_save_LIBS=$LIBS
3220
3221   ##################################################################
3222   # we might need the lber lib on some systems. To avoid link errors
3223   # this test must be before the libldap test
3224   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3225
3226   ########################################################
3227   # now see if we can find the ldap libs in standard paths
3228   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3229
3230   ########################################################
3231   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3232   # Check found in pam_ldap 145.
3233   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3234
3235   LIBS="$LIBS $LDAP_LIBS"
3236   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3237     AC_TRY_COMPILE([
3238         #include <lber.h>
3239         #include <ldap.h>], 
3240         [ldap_set_rebind_proc(0, 0, 0);], 
3241         [smb_ldap_cv_ldap_set_rebind_proc=3], 
3242         [smb_ldap_cv_ldap_set_rebind_proc=2]
3243     ) 
3244   ])
3245   
3246   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3247
3248   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3249   
3250   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3251     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3252     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3253     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3254     default_shared_modules="$default_shared_modules";
3255     SMBLDAP="lib/smbldap.o"
3256     SMBLDAPUTIL="lib/smbldap_util.o"
3257     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3258       AC_MSG_WARN(Disabling ldb_ldap support (requires ldap_initialize))
3259     else
3260       AC_DEFINE(HAVE_LDB_LDAP,1,[Whether ldb_ldap is available])
3261       LDBLDAP="lib/ldb/ldb_ldap/ldb_ldap.o"
3262     fi
3263     with_ldap_support=yes
3264     AC_MSG_CHECKING(whether LDAP support is used)
3265     AC_MSG_RESULT(yes)
3266   else
3267     if test x"$with_ldap_support" = x"yes"; then
3268         AC_MSG_ERROR(libldap is needed for LDAP support)
3269     else
3270         AC_MSG_WARN(libldap is needed for LDAP support)
3271     fi
3272     
3273     LDAP_LIBS=""
3274     with_ldap_support=no
3275   fi
3276   LIBS=$ac_save_LIBS
3277 fi
3278
3279
3280 #################################################
3281 # active directory support
3282
3283 with_ads_support=auto
3284 AC_MSG_CHECKING([for Active Directory and krb5 support])
3285
3286 AC_ARG_WITH(ads,
3287 [  --with-ads              Active Directory support (default auto)],
3288 [ case "$withval" in
3289     yes|no)
3290         with_ads_support="$withval"
3291         ;;
3292   esac ])
3293
3294 AC_MSG_RESULT($with_ads_support)
3295
3296 FOUND_KRB5=no
3297 KRB5_LIBS=""
3298
3299 if test x"$with_ldap_support" != x"yes"; then
3300
3301     if test x"$with_ads_support" = x"yes"; then
3302         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3303     elif test x"$with_ads_support" = x"auto"; then
3304         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3305         with_ads_support=no
3306     fi
3307
3308 else
3309
3310     # Check to see whether there is enough LDAP functionality to be able
3311     # to build AD support.
3312
3313 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3314 case "$host_os" in
3315         *hpux*)
3316     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3317
3318     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3319         if test x"$with_ads_support" = x"yes"; then
3320             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3321         elif test x"$with_ads_support" = x"auto"; then
3322             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3323             with_ads_support=no
3324         fi
3325     fi
3326     ;;
3327         *)
3328     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3329
3330     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3331         if test x"$with_ads_support" = x"yes"; then
3332             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3333         elif test x"$with_ads_support" = x"auto"; then
3334             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3335             with_ads_support=no
3336         fi
3337     fi
3338     ;;
3339 esac
3340
3341
3342     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3343
3344     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3345         if test x"$with_ads_support" = x"yes"; then
3346             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3347         elif test x"$with_ads_support" = x"auto"; then
3348             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3349             with_ads_support=no
3350         fi
3351     fi
3352
3353 fi
3354
3355 if test x"$with_ads_support" != x"no"; then
3356
3357   # Do no harm to the values of CFLAGS and LIBS while testing for
3358   # Kerberos support.
3359  
3360   if test x$FOUND_KRB5 = x"no"; then
3361     #################################################
3362     # check for location of Kerberos 5 install
3363     AC_MSG_CHECKING(for kerberos 5 install path)
3364     AC_ARG_WITH(krb5,
3365     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
3366     [ case "$withval" in
3367       no)
3368         AC_MSG_RESULT(no krb5-path given)
3369         ;;
3370       yes)
3371         AC_MSG_RESULT(/usr)
3372         FOUND_KRB5=yes
3373         ;;
3374       *)
3375         AC_MSG_RESULT($withval)
3376         KRB5_CFLAGS="-I$withval/include"
3377         KRB5_CPPFLAGS="-I$withval/include"
3378         KRB5_LDFLAGS="-L$withval/lib"
3379         FOUND_KRB5=yes
3380         if test -x "$withval/bin/krb5-config"; then
3381                 KRB5CONFIG=$withval/bin/krb5-config
3382         fi
3383         ;;
3384       esac ],
3385       AC_MSG_RESULT(no krb5-path given)
3386     )
3387   fi
3388
3389   #################################################
3390   # check for krb5-config from recent MIT and Heimdal kerberos 5
3391   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3392   AC_MSG_CHECKING(for working krb5-config)
3393   if test -x "$KRB5CONFIG"; then
3394     ac_save_CFLAGS=$CFLAGS
3395     CFLAGS="";export CFLAGS
3396     ac_save_LDFLAGS=$LDFLAGS
3397     LDFLAGS="";export LDFLAGS
3398     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3399     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3400     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`" 
3401     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3402     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3403     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3404     FOUND_KRB5=yes
3405     AC_MSG_RESULT(yes)
3406   else
3407     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3408   fi
3409  
3410   if test x$FOUND_KRB5 = x"no"; then
3411     #################################################