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