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