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