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