r6253: Add FreeBSD EA API support. Bug #2576 - patch donated by Timur Bakeyev <timur...
[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
8 AC_DISABLE_STATIC
9 AC_ENABLE_SHARED
10
11 SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
12 echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
13
14 SAMBA_VERSION_SVN_REVISION=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_SVN_REVISION' | cut -d ' ' -f3-`
15 if test -n "${SAMBA_VERSION_SVN_REVISION}";then
16         echo "BUILD REVISION: ${SAMBA_VERSION_SVN_REVISION}"
17 fi
18
19 #################################################
20 # Directory handling stuff to support both the
21 # legacy SAMBA directories and FHS compliant
22 # ones...
23 AC_PREFIX_DEFAULT(/usr/local/samba)
24
25 lockdir="\${VARDIR}/locks"
26 piddir="\${VARDIR}/locks"
27 mandir="\${prefix}/man"
28 logfilebase="\${VARDIR}"
29 privatedir="\${prefix}/private"
30 libdir="\${prefix}/lib"
31 configdir="\${LIBDIR}"
32 swatdir="\${prefix}/swat"
33
34 AC_ARG_WITH(fhs, 
35 [  --with-fhs              Use FHS-compliant paths (default=no)],
36 [ case "$withval" in
37   yes)
38     lockdir="\${VARDIR}/lib/samba"
39     piddir="\${VARDIR}/run"
40     mandir="\${prefix}/share/man"
41     logfilebase="\${VARDIR}/log/samba"
42     privatedir="\${CONFIGDIR}/private"
43     libdir="\${prefix}/lib/samba"
44     configdir="${sysconfdir}/samba"
45     swatdir="\${DATADIR}/samba/swat"
46     ;;
47   esac])
48
49 #################################################
50 # set private directory location
51 AC_ARG_WITH(privatedir,
52 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
53 [ case "$withval" in
54   yes|no)
55   #
56   # Just in case anybody calls it without argument
57   #
58     AC_MSG_WARN([--with-privatedir called without argument - will use default])
59   ;;
60   * )
61     privatedir="$withval"
62     ;;
63   esac])
64
65 #################################################
66 # set lock directory location
67 AC_ARG_WITH(lockdir,
68 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
69 [ case "$withval" in
70   yes|no)
71   #
72   # Just in case anybody calls it without argument
73   #
74     AC_MSG_WARN([--with-lockdir called without argument - will use default])
75   ;;
76   * )
77     lockdir="$withval"
78     ;;
79   esac])
80
81 #################################################
82 # set pid directory location
83 AC_ARG_WITH(piddir,
84 [  --with-piddir=DIR       Where to put pid files ($ac_default_prefix/var/locks)],
85 [ case "$withval" in
86   yes|no)
87   #
88   # Just in case anybody calls it without argument
89   #
90     AC_MSG_WARN([--with-piddir called without argument - will use default])
91   ;;
92   * )
93     piddir="$withval"
94     ;;
95   esac])
96
97 #################################################
98 # set SWAT directory location
99 AC_ARG_WITH(swatdir,
100 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
101 [ case "$withval" in
102   yes|no)
103   #
104   # Just in case anybody does it
105   #
106     AC_MSG_WARN([--with-swatdir called without argument - will use default])
107   ;;
108   * )
109     swatdir="$withval"
110     ;;
111   esac])
112
113 #################################################
114 # set configuration directory location
115 AC_ARG_WITH(configdir,
116 [  --with-configdir=DIR    Where to put configuration files ($libdir)],
117 [ case "$withval" in
118   yes|no)
119   #
120   # Just in case anybody does it
121   #
122     AC_MSG_WARN([--with-configdir called without argument - will use default])
123   ;;
124   * )
125     configdir="$withval"
126     ;;
127   esac])
128
129 #################################################
130 # set log directory location
131 AC_ARG_WITH(logfilebase,
132 [  --with-logfilebase=DIR  Where to put log files ($VARDIR)],
133 [ case "$withval" in
134   yes|no)
135   #
136   # Just in case anybody does it
137   #
138     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
139   ;;
140   * )
141     logfilebase="$withval"
142     ;;
143   esac])
144
145 #################################################
146 # set lib directory location
147 AC_ARG_WITH(libdir,
148 [  --with-libdir=DIR       Where to put libdir ($libdir)],
149 [ case "$withval" in
150   yes|no)
151   #
152   # Just in case anybody does it
153   #
154     AC_MSG_WARN([--with-libdir without argument - will use default])
155   ;;
156   * )
157     libdir="$withval"
158     ;;
159   esac])
160
161 #################################################
162 # set lib directory location
163 AC_ARG_WITH(mandir,
164 [  --with-mandir=DIR       Where to put man pages ($mandir)],
165 [ case "$withval" in
166   yes|no)
167   #
168   # Just in case anybody does it
169   #
170     AC_MSG_WARN([--with-mandir without argument - will use default])
171   ;;
172   * )
173     mandir="$withval"
174     ;;
175   esac])
176
177 AC_ARG_WITH(cfenc,
178 [  --with-cfenc=HEADERDIR  Use internal CoreFoundation encoding API
179                           for optimization (Mac OS X/Darwin only)],
180 [
181 # May be in source $withval/CoreFoundation/StringEncodings.subproj.
182 # Should have been in framework $withval/CoreFoundation.framework/Headers.
183 for d in \
184     $withval/CoreFoundation/StringEncodings.subproj \
185     $withval/StringEncodings.subproj \
186     $withval/CoreFoundation.framework/Headers \
187     $withval/Headers \
188     $withval
189 do
190     if test -r $d/CFStringEncodingConverter.h; then
191         ln -sfh $d include/CoreFoundation
192     fi
193 done
194 ])
195
196 AC_SUBST(configdir)
197 AC_SUBST(lockdir)
198 AC_SUBST(piddir)
199 AC_SUBST(logfilebase)
200 AC_SUBST(privatedir)
201 AC_SUBST(swatdir)
202 AC_SUBST(bindir)
203 AC_SUBST(sbindir)
204
205 dnl Unique-to-Samba variables we'll be playing with.
206 AC_SUBST(SHELL)
207 AC_SUBST(LDSHFLAGS)
208 AC_SUBST(SONAMEFLAG)
209 AC_SUBST(SHLD)
210 AC_SUBST(HOST_OS)
211 AC_SUBST(PICFLAGS)
212 AC_SUBST(PICSUFFIX)
213 AC_SUBST(SHLIBEXT)
214 AC_SUBST(INSTALLCLIENT)
215 AC_SUBST(INSTALLCLIENTCMD_SH)
216 AC_SUBST(INSTALLCLIENTCMD_A)
217 AC_SUBST(LIBSMBCLIENT_SHARED)
218 AC_SUBST(LIBSMBCLIENT)
219 AC_SUBST(PRINT_LIBS)
220 AC_SUBST(AUTH_LIBS)
221 AC_SUBST(ACL_LIBS)
222 AC_SUBST(PASSDB_LIBS)
223 AC_SUBST(IDMAP_LIBS)
224 AC_SUBST(KRB5_LIBS)
225 AC_SUBST(LDAP_LIBS)
226 AC_SUBST(SHLIB_PROGS)
227 AC_SUBST(SMBWRAPPER)
228 AC_SUBST(EXTRA_BIN_PROGS)
229 AC_SUBST(EXTRA_SBIN_PROGS)
230 AC_SUBST(EXTRA_ALL_TARGETS)
231
232 AC_ARG_ENABLE(debug, 
233 [  --enable-debug          Turn on compiler debugging information (default=no)],
234     [if eval "test x$enable_debug = xyes"; then
235         CFLAGS="${CFLAGS} -g"
236     fi])
237
238 # compile with optimization and without debugging by default, but
239 # allow people to set their own preference.
240 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
241 # if it has no value.  This prevent *very* large debug binaries from occurring
242 # by default.
243 if test "x$CFLAGS" = x; then
244   CFLAGS="-O"
245 fi
246
247
248 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
249     [if eval "test x$enable_developer = xyes"; then
250         developer=yes
251         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
252         # Add -Wdeclaration-after-statement if compiler supports it
253         AC_CACHE_CHECK(
254           [that the C compiler understands -Wdeclaration-after-statement],
255           samba_cv_HAVE_Wdeclaration_after_statement, [
256           AC_TRY_RUN_STRICT([
257             int main(void)
258             {
259                 return 0;
260             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
261             samba_cv_HAVE_Wdeclaration_after_statement=yes,
262             samba_cv_HAVE_Wdeclaration_after_statement=no,
263             samba_cv_HAVE_Wdeclaration_after_statement=cross)
264        ])
265        if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
266             CFLAGS="${CFLAGS} -Wdeclaration-after-statement"
267        fi
268     fi])
269
270 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
271     [if eval "test x$enable_krb5developer = xyes"; then
272         developer=yes
273         CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
274     fi])
275
276 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
277
278 if test "x$enable_dmalloc" = xyes
279 then
280         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
281         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
282                   [Define to check invariants around some common functions])
283         LIBS="$LIBS -ldmalloc"  
284 fi
285
286 dnl Checks for programs.
287
288 ##
289 ## for some reason this macro resets the CFLAGS
290 ## so save and restore
291 ##
292 OLD_CFLAGS=${CFLAGS}
293 AC_PROG_CC
294 CFLAGS=${OLD_CFLAGS}
295
296 OLD_CFLAGS=${CFLAGS}
297 AC_PROG_CPP
298 CFLAGS=${OLD_CFLAGS}
299
300 AC_PROG_INSTALL
301 AC_PROG_AWK
302 AC_PATH_PROG(PERL, perl)
303
304 AC_CHECK_TOOL(AR, ar)
305
306 dnl Check if we use GNU ld
307 LD=ld
308 AC_PROG_LD_GNU
309
310 dnl Certain versions of GNU ld the default is not to have the 
311 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
312 dnl warnings when building modules.
313 if test "$ac_cv_prog_gnu_ld" = "yes"; then
314         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
315         AC_MSG_CHECKING(GNU ld release date)
316         changequote(,)dnl
317         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'`
318         changequote([,])dnl
319         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
320         if test -n "$ac_cv_gnu_ld_date"; then
321            if test "$ac_cv_gnu_ld_date" -lt 20030217; then
322               ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
323            fi
324         else
325            AC_MSG_CHECKING(GNU ld release version)
326            changequote(,)dnl
327            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
328            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
329            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
330            changequote([,])dnl
331            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
332            AC_MSG_CHECKING(GNU ld release version major)
333            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
334            AC_MSG_CHECKING(GNU ld release version minor)
335            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
336            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
337              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
338            fi
339         fi
340 fi
341
342 dnl needed before AC_TRY_COMPILE
343 AC_ISC_POSIX
344
345 dnl look for executable suffix
346 AC_EXEEXT
347
348 dnl Check if C compiler understands -c and -o at the same time
349 AC_PROG_CC_C_O
350 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
351       BROKEN_CC=
352 else
353       BROKEN_CC=#
354 fi
355 AC_SUBST(BROKEN_CC)
356
357 dnl Check if the C compiler understands -Werror
358 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
359  AC_TRY_RUN_STRICT([
360   int main(void)
361   {
362         return 0;
363   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
364   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
365 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
366    Werror_FLAGS="-Werror"
367 else 
368 dnl Check if the C compiler understands -w2
369 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
370  AC_TRY_RUN_STRICT([
371   int main(void)
372   {
373         return 0;
374   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
375   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
376 if test x"$samba_cv_HAVE_w2" = x"yes"; then
377    Werror_FLAGS="-w2"
378 fi
379 fi
380
381 dnl Check if the C compiler understands volatile (it should, being ANSI).
382 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
383     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
384         samba_cv_volatile=yes,samba_cv_volatile=no)])
385 if test x"$samba_cv_volatile" = x"yes"; then
386    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
387 fi
388
389 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
390 AC_MSG_CHECKING(uname -s)
391 AC_MSG_RESULT(${UNAME_S})
392
393 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
394 AC_MSG_CHECKING(uname -r)
395 AC_MSG_RESULT(${UNAME_R})
396
397 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
398 AC_MSG_CHECKING(uname -m)
399 AC_MSG_RESULT(${UNAME_M})
400
401 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
402 AC_MSG_CHECKING(uname -p)
403 AC_MSG_RESULT(${UNAME_P})
404
405 AC_CANONICAL_SYSTEM
406
407 dnl Add #include for broken IRIX header files
408   case "$host_os" in
409         *irix6*) AC_ADD_INCLUDE(<standards.h>)
410         ;;
411 esac
412
413 AC_VALIDATE_CACHE_SYSTEM_TYPE
414
415 DYNEXP=
416
417 dnl Add modules that have to be built by default here
418 dnl These have to be built static:
419 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_reg rpc_lsa_ds rpc_wks rpc_svcctl rpc_net rpc_dfs rpc_srv rpc_spoolss rpc_eventlog auth_rhosts auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin printerdb_file"
420
421 dnl These are preferably build shared, and static if dlopen() is not available
422 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"
423
424 if test "x$developer" = xyes; then
425    default_static_modules="$default_static_modules rpc_echo"
426    default_shared_modules="$default_shared_modules charset_weird"
427 fi
428
429 #
430 # Config CPPFLAG settings for strange OS's that must be set
431 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
432 # case statement; its first reference must be unconditional.
433 #
434 case "$host_os" in
435 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
436     *hpux*)
437     
438       AC_PROG_CC_FLAG(Ae)
439       # mmap on HPUX is completely broken...
440       AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
441       if test $ac_cv_prog_cc_Ae = yes; then
442         CPPFLAGS="$CPPFLAGS -Ae"
443       fi
444 #
445 # Defines needed for HPUX support.
446 # HPUX has bigcrypt but (sometimes?) doesn't use it for
447 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
448 #
449       case `uname -r` in
450                         *9*|*10*)
451                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
452                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
453                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
454                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
455                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
456                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
457                                 ;;
458                         *11*)
459                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
460                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
461                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
462                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
463                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
464                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
465                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
466                                 ;;
467       esac
468       ;;
469
470 #
471 # CRAY Unicos has broken const handling
472        *unicos*)
473           AC_MSG_RESULT([disabling const])
474           CPPFLAGS="$CPPFLAGS -Dconst="
475           ;;
476         
477 #
478 # AIX4.x doesn't even admit to having large
479 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
480 #
481     *aix4*)
482           AC_MSG_RESULT([enabling large file support])
483       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
484           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
485       ;;    
486 #
487 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
488 # to the existance of large files..
489 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
490 # recommendations on large file support, however it makes the
491 # compile work using gcc 2.7 and 2.8, whereas using the Sun
492 # recommendation makes the compile fail on gcc2.7. JRA.
493 #
494 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
495 #
496         *solaris*)
497                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
498                 case `uname -r` in
499                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
500                                 AC_MSG_RESULT([no large file support])
501                                 ;;
502                         5.*)
503                         AC_MSG_RESULT([enabling large file support])
504                         if test "$ac_cv_prog_gcc" = yes; then
505                                 ${CC-cc} -v >conftest.c 2>&1
506                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
507                                 rm -fr conftest.c
508                                 case "$ac_cv_gcc_compiler_version_number" in
509                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
510                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
511                                                 LDFLAGS="$LDFLAGS -lthread"
512                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
513                                                 ;;
514                                         *)
515                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
516                                                 LDFLAGS="$LDFLAGS -lthread"
517                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
518                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
519                                                 ;;
520                                 esac
521                         else
522                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
523                                 LDFLAGS="$LDFLAGS -lthread"
524                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
525                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
526                         fi
527                         ;;
528                 esac
529                 ;;
530 #
531 # IRIX uses SYSV printing.  Make sure to set that here
532 #
533         *irix*)
534                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
535                 ;;
536         *freebsd*|*DragonFly*)
537                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
538                 ;;
539 #
540 # VOS may need to have POSIX support and System V compatibility enabled.
541 #
542     *vos*)
543     case "$CPPFLAGS" in
544           *-D_POSIX_C_SOURCE*)
545                 ;;
546           *)
547                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
548                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
549                 ;;
550     esac
551     case "$CPPFLAGS" in
552           *-D_SYSV*|*-D_SVID_SOURCE*)
553                 ;;
554           *)
555                 CPPFLAGS="$CPPFLAGS -D_SYSV"
556                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
557     esac
558     ;;
559 #
560 # Tests needed for SINIX large file support.
561 #
562     *sysv4*)
563       if test $host = mips-sni-sysv4 ; then
564         AC_MSG_CHECKING([for LFS support])
565         old_CPPFLAGS="$CPPFLAGS"
566         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
567         AC_TRY_RUN([
568 #include <unistd.h>
569 main () {
570 #if _LFS64_LARGEFILE == 1
571 exit(0);
572 #else
573 exit(1);
574 #endif
575 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
576         CPPFLAGS="$old_CPPFLAGS"
577         if test x$SINIX_LFS_SUPPORT = xyes ; then
578           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
579                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
580           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
581           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
582           LIBS="`getconf LFS64_LIBS` $LIBS"
583         fi
584       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
585       fi
586     ;;
587
588 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
589 #
590     *linux*)
591         AC_MSG_CHECKING([for LFS support])
592         old_CPPFLAGS="$CPPFLAGS"
593         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
594        AC_TRY_RUN([
595 #include <unistd.h>
596 #include <sys/utsname.h>
597 #include <string.h>
598 #include <stdlib.h>
599 main() {
600 #if _LFS64_LARGEFILE == 1
601        struct utsname uts;
602        char *release;
603        int major, minor;
604
605        /* Ensure this is glibc 2.2 or higher */
606 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
607        int libc_major = __GLIBC__;
608        int libc_minor = __GLIBC_MINOR__;
609
610        if (libc_major < 2)
611               exit(1);
612        if (libc_minor < 2)
613               exit(1);
614 #endif
615
616        /* Ensure this is kernel 2.4 or higher */
617
618        uname(&uts);
619        release = strdup(uts.release);
620        major = atoi(strsep(&release, "."));
621        minor = atoi(strsep(&release, "."));
622
623        if (major > 2 || (major == 2 && minor > 3))
624                exit(0);
625        exit(1);
626 #else
627        exit(1);
628 #endif
629 }
630 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
631         CPPFLAGS="$old_CPPFLAGS"
632         if test x$LINUX_LFS_SUPPORT = xyes ; then
633                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
634                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
635                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
636                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
637         fi
638         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
639         ;;
640
641 #
642 # MacOS X is the *only* system that uses compose character in utf8. This
643 # is so horribly broken....
644 #
645     *darwin*)
646         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
647 # Add Fink directories for various packages, like dlcompat.
648 # Note: iconv does that explicitly below, but other packages
649 # don't.
650         CPPFLAGS="$CPPFLAGS -I/sw/include"
651         LDFLAGS="$LDFLAGS -L/sw/lib"
652
653 # If we have dlsym_prepend_underscore (from Fink's dlcompat),
654 # use that instead of plain dlsym.
655
656         AC_CHECK_LIB(dl,dlopen)
657         AC_CHECK_FUNCS(dlsym_prepend_underscore,[CPPFLAGS="$CPPFLAGS -Ddlsym=dlsym_prepend_underscore"])
658
659 # Add a system specific charset module.
660
661         default_shared_modules="$default_shared_modules charset_macosxfs"
662         ;;
663     *hurd*)
664         AC_MSG_CHECKING([for LFS support])
665         old_CPPFLAGS="$CPPFLAGS"
666         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
667         AC_TRY_RUN([
668 #include <unistd.h>
669 main () {
670 #if _LFS64_LARGEFILE == 1
671 exit(0);
672 #else
673 exit(1);
674 #endif
675 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
676         CPPFLAGS="$old_CPPFLAGS"
677         if test x$GLIBC_LFS_SUPPORT = xyes ; then
678           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
679                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
680           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
681         fi
682       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
683     ;;
684
685 esac
686
687 AC_INLINE
688 AC_HEADER_STDC
689 AC_HEADER_DIRENT
690 AC_HEADER_TIME
691 AC_HEADER_SYS_WAIT
692 AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
693 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h)
694 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
695 ## These fail to compile on IRIX so just check for their presence
696 AC_CHECK_HEADERS(rpcsvc/yp_prot.h, sys/mode.h, [], [] -)
697 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h)
698 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
699 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
700 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
701 AC_CHECK_HEADERS(sys/sysmacros.h security/_pam_macros.h dlfcn.h)
702 AC_CHECK_HEADERS(sys/syslog.h syslog.h execinfo.h)
703 AC_CHECK_HEADERS(langinfo.h locale.h)
704
705 # Look for Darwin headers
706 old_CPPFLAGS="$CPPFLAGS"
707 CPPFLAGS="-Iinclude $CPPFLAGS"
708 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
709 CPPFLAGS="$old_CPPFLAGS"
710
711 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
712 # subdirectory of headers.
713 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
714
715 #
716 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
717 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
718 #
719 case "$host_os" in
720     *hpux*)
721                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
722                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
723                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
724                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
725                 fi
726         ;;
727 esac
728 AC_CHECK_HEADERS(shadow.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
729 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h security/pam_appl.h)
730 AC_CHECK_HEADERS(stropts.h poll.h)
731 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
732 AC_CHECK_HEADERS(sys/acl.h sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
733 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
734
735 ## These faile to compile on Solaris so just check for their presence
736 AC_CHECK_HEADERS(security/pam_modules.h net/if.h netinet/ip.h, [], [], -)
737
738 # For experimental utmp support (lastlog on some BSD-like systems)
739 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
740  
741 AC_CHECK_SIZEOF(int,cross)
742 AC_CHECK_SIZEOF(long,cross)
743 AC_CHECK_SIZEOF(short,cross)
744
745 AC_C_CONST
746 AC_C_INLINE
747 AC_C_BIGENDIAN
748 AC_C_CHAR_UNSIGNED
749
750 AC_TYPE_SIGNAL
751 AC_TYPE_UID_T
752 AC_TYPE_MODE_T
753 AC_TYPE_OFF_T
754 AC_TYPE_SIZE_T
755 AC_TYPE_PID_T
756 AC_STRUCT_ST_RDEV
757 AC_DIRENT_D_OFF
758 AC_CHECK_TYPE(ino_t,unsigned)
759 AC_CHECK_TYPE(loff_t,off_t)
760 AC_CHECK_TYPE(offset_t,loff_t)
761 AC_CHECK_TYPE(ssize_t, int)
762 AC_CHECK_TYPE(wchar_t, unsigned short)
763
764 ############################################
765 # for cups support we need libcups, and a handful of header files
766
767 AC_ARG_ENABLE(cups,
768 [  --enable-cups           Turn on CUPS support (default=auto)])
769
770 if test x$enable_cups != xno; then
771         AC_PATH_PROG(CUPS_CONFIG, cups-config)
772
773         if test "x$CUPS_CONFIG" != x; then
774                 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
775                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
776                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
777                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
778         elif test x"$enable_cups" = x"yes"; then
779                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
780         fi
781 fi
782
783 ############################################
784 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
785 AC_SEARCH_LIBS(dlopen, [dl])
786 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
787
788 ############################################
789 # check if the compiler can do immediate structures
790 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
791     AC_TRY_COMPILE([
792 #include <stdio.h>],
793 [
794    typedef struct {unsigned x;} FOOBAR;
795    #define X_FOOBAR(x) ((FOOBAR) { x })
796    #define FOO_ONE X_FOOBAR(1)
797    FOOBAR f = FOO_ONE;   
798    static struct {
799         FOOBAR y; 
800         } f2[] = {
801                 {FOO_ONE}
802         };   
803 ],
804         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
805 if test x"$samba_cv_immediate_structures" = x"yes"; then
806    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
807 fi
808
809 ############################################
810 # check if the compiler can do immediate structures
811 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
812     AC_TRY_LINK([
813 #include <stdio.h>],
814 [
815                 if (0) {
816                    this_function_does_not_exist();
817                 } else {
818                   return 1;
819                 }
820
821 ],
822         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
823 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
824    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
825 fi
826
827 ############################################
828 # check for unix domain sockets
829 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
830     AC_TRY_COMPILE([
831 #include <sys/types.h>
832 #include <stdlib.h>
833 #include <stddef.h>
834 #include <sys/socket.h>
835 #include <sys/un.h>],
836 [
837   struct sockaddr_un sunaddr; 
838   sunaddr.sun_family = AF_UNIX;
839 ],
840         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
841 if test x"$samba_cv_unixsocket" = x"yes"; then
842    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
843 fi
844
845
846 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
847     AC_TRY_COMPILE([
848 #include <sys/types.h>
849 #if STDC_HEADERS
850 #include <stdlib.h>
851 #include <stddef.h>
852 #endif
853 #include <sys/socket.h>],[socklen_t i = 0],
854         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
855 if test x"$samba_cv_socklen_t" = x"yes"; then
856    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
857 fi
858
859 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
860     AC_TRY_COMPILE([
861 #include <sys/types.h>
862 #if STDC_HEADERS
863 #include <stdlib.h>
864 #include <stddef.h>
865 #endif
866 #include <signal.h>],[sig_atomic_t i = 0],
867         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
868 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
869    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
870 fi
871
872 # stupid headers have the functions but no declaration. grrrr.
873 AC_HAVE_DECL(errno, [#include <errno.h>])
874 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
875 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
876 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
877 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
878 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
879 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
880
881 # and glibc has setresuid under linux but the function does
882 # nothing until kernel 2.1.44! very dumb.
883 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
884     AC_TRY_RUN([#include <errno.h>
885 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
886         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
887 if test x"$samba_cv_have_setresuid" = x"yes"; then
888     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
889 fi
890
891 # Do the same check for setresguid...
892 #
893 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
894     AC_TRY_RUN([#include <unistd.h>
895 #include <errno.h>
896 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
897         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
898 if test x"$samba_cv_have_setresgid" = x"yes"; then
899     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
900 fi
901
902 AC_FUNC_MEMCMP
903
904 ###############################################
905 # Readline included by default unless explicitly asked not to
906 test "${with_readline+set}" != "set" && with_readline=yes
907
908 # test for where we get readline() from
909 AC_MSG_CHECKING(whether to use readline)
910 AC_ARG_WITH(readline,
911 [  --with-readline[=DIR]     Look for readline include/libs in DIR (default=auto) ],
912 [  case "$with_readline" in
913   yes)
914     AC_MSG_RESULT(yes)
915
916     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
917     AC_CHECK_HEADERS(readline/history.h)
918
919     AC_CHECK_HEADERS(readline.h readline/readline.h,[
920       for termlib in ncurses curses termcap terminfo termlib tinfo; do
921        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
922       done
923       AC_CHECK_LIB(readline, rl_callback_handler_install,
924        [TERMLIBS="-lreadline $TERMLIBS"
925        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
926        break], [TERMLIBS=], $TERMLIBS)])
927     ;;
928   no)
929     AC_MSG_RESULT(no)
930     ;;
931   *)
932     AC_MSG_RESULT(yes)
933
934     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
935     # alternate readline path
936     _ldflags=${LDFLAGS}
937     _cppflags=${CPPFLAGS}
938
939     # Add additional search path
940     LDFLAGS="-L$with_readline/lib $LDFLAGS"
941     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
942
943     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
944     AC_CHECK_HEADERS(readline/history.h)
945
946     AC_CHECK_HEADERS(readline.h readline/readline.h,[
947       for termlib in ncurses curses termcap terminfo termlib; do
948        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
949       done
950       AC_CHECK_LIB(readline, rl_callback_handler_install,
951        [TERMLDFLAGS="-L$with_readline/lib"
952        TERMCPPFLAGS="-I$with_readline/include"
953        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
954        TERMLIBS="-lreadline $TERMLIBS"
955        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
956        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
957
958     LDFLAGS=$_ldflags
959     ;;
960   esac],
961   AC_MSG_RESULT(no)
962 )
963 AC_SUBST(TERMLIBS)
964 AC_SUBST(TERMLDFLAGS)
965
966 # The readline API changed slightly from readline3 to readline4, so
967 # code will generate warnings on one of them unless we have a few
968 # special cases.
969 AC_CHECK_LIB(readline, rl_completion_matches,
970              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
971                         [Do we have rl_completion_matches?])],
972              [],
973              [$TERMLIBS])
974
975 # The following test taken from the cvs sources
976 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
977 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
978 # libsocket.so which has a bad implementation of gethostbyname (it
979 # only looks in /etc/hosts), so we only look for -lsocket if we need
980 # it.
981 AC_CHECK_FUNCS(connect)
982 if test x"$ac_cv_func_connect" = x"no"; then
983     case "$LIBS" in
984     *-lnsl*) ;;
985     *) AC_CHECK_LIB(nsl_s, printf) ;;
986     esac
987     case "$LIBS" in
988     *-lnsl*) ;;
989     *) AC_CHECK_LIB(nsl, printf) ;;
990     esac
991     case "$LIBS" in
992     *-lsocket*) ;;
993     *) AC_CHECK_LIB(socket, connect) ;;
994     esac
995     case "$LIBS" in
996     *-linet*) ;;
997     *) AC_CHECK_LIB(inet, connect) ;;
998     esac
999     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1000     dnl has been cached.
1001     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
1002        test x"$ac_cv_lib_inet_connect" = x"yes"; then
1003         # ac_cv_func_connect=yes
1004         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
1005         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1006     fi
1007 fi
1008
1009 ###############################################
1010 # test for where we get yp_get_default_domain() from
1011 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1012 AC_CHECK_FUNCS(yp_get_default_domain)
1013
1014 # Check if we have execl, if not we need to compile smbrun.
1015 AC_CHECK_FUNCS(execl)
1016 if test x"$ac_cv_func_execl" = x"no"; then
1017     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1018 fi
1019
1020 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
1021 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync memset strlcpy strlcat setpgid)
1022 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1023 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1024 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1025 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
1026 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
1027 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1028 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1029 AC_CHECK_FUNCS(syslog vsyslog timegm)
1030 AC_CHECK_FUNCS(setlocale nl_langinfo)
1031 AC_CHECK_FUNCS(nanosleep)
1032 # setbuffer, shmget, shm_open are needed for smbtorture
1033 AC_CHECK_FUNCS(setbuffer shmget shm_open backtrace_symbols)
1034 AC_CHECK_HEADERS(libexc.h)
1035 AC_CHECK_LIB(exc, trace_back_stack)
1036
1037 # syscall() is needed for smbwrapper.
1038 AC_CHECK_FUNCS(syscall)
1039
1040 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1041 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1042 AC_CHECK_FUNCS(__getcwd _getcwd)
1043 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1044 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1045 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1046 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1047 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
1048 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1049 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1050 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1051 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1052 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1053 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1054
1055 #
1056
1057 #
1058 case "$host_os" in
1059     *linux*)
1060        # glibc <= 2.3.2 has a broken getgrouplist
1061        AC_TRY_RUN([
1062 #include <unistd.h>
1063 #include <sys/utsname.h>
1064 main() {
1065        /* glibc up to 2.3 has a broken getgrouplist */
1066 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1067        int libc_major = __GLIBC__;
1068        int libc_minor = __GLIBC_MINOR__;
1069
1070        if (libc_major < 2)
1071               exit(1);
1072        if ((libc_major == 2) && (libc_minor <= 3))
1073               exit(1);
1074 #endif
1075        exit(0);
1076 }
1077 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1078        if test x"$linux_getgrouplist_ok" = x"yes"; then
1079           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1080        fi
1081        ;;
1082     *)
1083        AC_CHECK_FUNCS(getgrouplist)
1084        ;;
1085 esac
1086
1087 #
1088 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1089 #
1090
1091 if test x$ac_cv_func_stat64 = xno ; then
1092   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1093   AC_TRY_LINK([
1094 #if defined(HAVE_UNISTD_H)
1095 #include <unistd.h>
1096 #endif
1097 #include <sys/stat.h>
1098 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1099   AC_MSG_RESULT([$ac_cv_func_stat64])
1100   if test x$ac_cv_func_stat64 = xyes ; then
1101     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1102   fi
1103 fi
1104
1105 if test x$ac_cv_func_lstat64 = xno ; then
1106   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1107   AC_TRY_LINK([
1108 #if defined(HAVE_UNISTD_H)
1109 #include <unistd.h>
1110 #endif
1111 #include <sys/stat.h>
1112 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1113   AC_MSG_RESULT([$ac_cv_func_lstat64])
1114   if test x$ac_cv_func_lstat64 = xyes ; then
1115     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1116   fi
1117 fi
1118
1119 if test x$ac_cv_func_fstat64 = xno ; then
1120   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1121   AC_TRY_LINK([
1122 #if defined(HAVE_UNISTD_H)
1123 #include <unistd.h>
1124 #endif
1125 #include <sys/stat.h>
1126 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1127   AC_MSG_RESULT([$ac_cv_func_fstat64])
1128   if test x$ac_cv_func_fstat64 = xyes ; then
1129     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1130   fi
1131 fi
1132
1133 #####################################
1134 # we might need the resolv library on some systems
1135 AC_CHECK_LIB(resolv, dn_expand)
1136
1137 #
1138 # Check for the functions putprpwnam, set_auth_parameters,
1139 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1140 # Needed for OSF1 and HPUX.
1141 #
1142
1143 AC_LIBTESTFUNC(security, putprpwnam)
1144 AC_LIBTESTFUNC(sec, putprpwnam)
1145
1146 AC_LIBTESTFUNC(security, set_auth_parameters)
1147 AC_LIBTESTFUNC(sec, set_auth_parameters)
1148
1149 # UnixWare 7.x has its getspnam in -lgen
1150 AC_LIBTESTFUNC(gen, getspnam)
1151
1152 AC_LIBTESTFUNC(security, getspnam)
1153 AC_LIBTESTFUNC(sec, getspnam)
1154
1155 AC_LIBTESTFUNC(security, bigcrypt)
1156 AC_LIBTESTFUNC(sec, bigcrypt)
1157
1158 AC_LIBTESTFUNC(security, getprpwnam)
1159 AC_LIBTESTFUNC(sec, getprpwnam)
1160
1161 ############################################
1162 # Check if we have libattr
1163 AC_SEARCH_LIBS(getxattr, [attr])
1164 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1165 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1166 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1167 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1168 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1169 # Check if we have extattr
1170 case "$host_os" in
1171   *freebsd4* | *DragonFly* )
1172     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1173     ;;
1174   *)
1175     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1176     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1177     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1178     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1179     ;;
1180 esac
1181
1182 # Assume non-shared by default and override below
1183 BLDSHARED="false"
1184
1185 # these are the defaults, good for lots of systems
1186 HOST_OS="$host_os"
1187 LDSHFLAGS="-shared"
1188 SONAMEFLAG="#"
1189 SHLD="\${CC} \${CFLAGS}"
1190 PICFLAGS=""
1191 PICSUFFIX="po"
1192 SHLIBEXT="so"
1193
1194 if test "$enable_shared" = "yes"; then
1195   # this bit needs to be modified for each OS that is suported by
1196   # smbwrapper. You need to specify how to created a shared library and
1197   # how to compile C code to produce PIC object files
1198
1199   AC_MSG_CHECKING([ability to build shared libraries])
1200
1201   # and these are for particular systems
1202   case "$host_os" in
1203                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1204                         BLDSHARED="true"
1205                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1206                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined" 
1207                         else
1208                                 LDSHFLAGS="-shared -Wl,-Bsymbolic" 
1209                         fi
1210                         DYNEXP="-Wl,--export-dynamic"
1211                         PICFLAGS="-fPIC"
1212                         SONAMEFLAG="-Wl,-soname="
1213                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1214                         ;;
1215                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1216                         BLDSHARED="true"
1217                         LDSHFLAGS="-G"
1218                         SONAMEFLAG="-h "
1219                         if test "${GCC}" = "yes"; then
1220                                 PICFLAGS="-fPIC"
1221                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1222                                         DYNEXP="-Wl,-E"
1223                                 fi
1224                         else
1225                                 PICFLAGS="-KPIC"
1226                                 ## ${CFLAGS} added for building 64-bit shared 
1227                                 ## libs using Sun's Compiler
1228                                 LDSHFLAGS="-G \${CFLAGS}"
1229                                 PICSUFFIX="po.o"
1230                         fi
1231                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1232                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1233                         ;;
1234                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1235                         BLDSHARED="true"
1236                         LDSHFLAGS="-G"
1237                         SONAMEFLAG="-Wl,-h,"
1238                         PICFLAGS="-KPIC"   # Is this correct for SunOS
1239                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1240                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1241                         ;;
1242                 *netbsd* | *freebsd* | *DragonFly* )  
1243                         BLDSHARED="true"
1244                         LDSHFLAGS="-shared"
1245                         DYNEXP="-Wl,--export-dynamic"
1246                         SONAMEFLAG="-Wl,-soname,"
1247                         PICFLAGS="-fPIC -DPIC"
1248                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1249                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1250                         ;;
1251                 *openbsd*)  BLDSHARED="true"
1252                         LDSHFLAGS="-shared"
1253                         DYNEXP="-Wl,-Bdynamic"
1254                         SONAMEFLAG="-Wl,-soname,"
1255                         PICFLAGS="-fPIC"
1256                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1257                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1258                         ;;
1259                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1260                         case "$host_os" in
1261                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1262                         ;;
1263                         esac
1264                         BLDSHARED="true"
1265                         LDSHFLAGS="-set_version sgi1.0 -shared"
1266                         SONAMEFLAG="-soname "
1267                         SHLD="\${LD}"
1268                         if test "${GCC}" = "yes"; then
1269                                 PICFLAGS="-fPIC"
1270                         else 
1271                                 PICFLAGS="-KPIC"
1272                         fi
1273                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1274                         ;;
1275                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1276                         BLDSHARED="true"
1277                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry,-berok"
1278                         DYNEXP="-Wl,-brtl,-bexpall"
1279                         PICFLAGS="-O2"
1280                         if test "${GCC}" != "yes"; then
1281                                 ## for funky AIX compiler using strncpy()
1282                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1283                         fi
1284
1285                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1286                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1287                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1288                         ;;
1289                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1290                         SHLIBEXT="sl"
1291                         # Use special PIC flags for the native HP-UX compiler.
1292                         if test $ac_cv_prog_cc_Ae = yes; then
1293                                 BLDSHARED="true"
1294                                 SHLD="cc"
1295                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1296                                 SONAMEFLAG="-Wl,+h "
1297                                 PICFLAGS="+z"
1298                         elif test "${GCC}" = "yes"; then
1299                                 PICFLAGS="-fPIC"
1300                         fi
1301                         DYNEXP="-Wl,-E"
1302                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1303                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1304                         ;;
1305                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1306                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1307                         ;;
1308                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1309                         BLDSHARED="true"
1310                         LDSHFLAGS="-shared"
1311                         SONAMEFLAG="-Wl,-soname,"
1312                         PICFLAGS="-fPIC"
1313                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1314                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1315                         ;;
1316                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1317                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1318                         ;;
1319                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1320                         BLDSHARED="true"
1321                         LDSHFLAGS="-shared"
1322                         SONAMEFLAG="-Wl,-soname,"
1323                         PICFLAGS="-KPIC"
1324                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1325                         ;;
1326                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1327                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1328                         ;;
1329                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1330                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1331                         ;;
1332                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1333                         case "$host" in
1334                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1335                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1336                                         fi
1337                                         LDSHFLAGS="-G"
1338                                         DYNEXP="-Bexport"
1339                                 ;;
1340                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1341                         esac
1342                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1343                         ;;
1344
1345                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1346                         if [ test "$GCC" != yes ]; then
1347                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1348                         fi
1349                         LDSHFLAGS="-G"
1350                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1351                         ;;
1352                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1353                         BLDSHARED="false"
1354                         LDSHFLAGS=""
1355                         ;;
1356
1357                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1358                         BLDSHARED="true"
1359                         LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1360                         SHLIBEXT="dylib"
1361                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1362                         ;;
1363
1364                 *)
1365                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1366                         ;;
1367   esac
1368   AC_SUBST(DYNEXP)
1369   AC_MSG_RESULT($BLDSHARED)
1370   AC_MSG_CHECKING([linker flags for shared libraries])
1371   AC_MSG_RESULT([$LDSHFLAGS])
1372   AC_MSG_CHECKING([compiler flags for position-independent code])
1373   AC_MSG_RESULT([$PICFLAGS])
1374 fi
1375
1376 #######################################################
1377 # test whether building a shared library actually works
1378 if test $BLDSHARED = true; then
1379 AC_CACHE_CHECK([whether building shared libraries actually works], 
1380                [ac_cv_shlib_works],[
1381    # try building a trivial shared library
1382    ac_cv_shlib_works=no
1383    # The $SHLD and $LDSHFLAGS variables may contain references to other
1384    # variables so they need to be eval'ed.
1385    $CC $CPPFLAGS $CFLAGS $PICFLAGS -c -o \
1386         shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c && \
1387    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1388         shlib.$PICSUFFIX && ac_cv_shlib_works=yes
1389    rm -f "shlib.$SHLIBEXT" shlib.$PICSUFFIX
1390 ])
1391 if test $ac_cv_shlib_works = no; then
1392    BLDSHARED=false
1393 fi
1394 fi
1395
1396 ################
1397
1398 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1399 AC_TRY_RUN([#include <stdio.h>
1400 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1401 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1402 if test x"$samba_cv_have_longlong" = x"yes"; then
1403     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1404 fi
1405
1406 #
1407 # Check if the compiler supports the LL prefix on long long integers.
1408 # AIX needs this.
1409
1410 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1411     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1412         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1413 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1414    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1415 fi
1416
1417   
1418 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1419 AC_TRY_RUN([#include <stdio.h>
1420 #include <sys/stat.h>
1421 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1422 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1423 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1424     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1425 fi
1426
1427 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1428 AC_TRY_RUN([
1429 #if defined(HAVE_UNISTD_H)
1430 #include <unistd.h>
1431 #endif
1432 #include <stdio.h>
1433 #include <sys/stat.h>
1434 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1435 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1436 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1437     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1438 fi
1439
1440 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1441 AC_TRY_RUN([#include <stdio.h>
1442 #include <sys/stat.h>
1443 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1444 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1445 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1446     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1447 fi
1448
1449 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1450 AC_TRY_RUN([
1451 #if defined(HAVE_UNISTD_H)
1452 #include <unistd.h>
1453 #endif
1454 #include <stdio.h>
1455 #include <sys/stat.h>
1456 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1457 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1458 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1459     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1460 fi
1461
1462 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1463 AC_TRY_RUN([
1464 #if defined(HAVE_UNISTD_H)
1465 #include <unistd.h>
1466 #endif
1467 #include <stdio.h>
1468 #include <sys/stat.h>
1469 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1470 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1471 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1472     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1473 fi
1474
1475 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1476 AC_TRY_COMPILE([
1477 #if defined(HAVE_UNISTD_H)
1478 #include <unistd.h>
1479 #endif
1480 #include <sys/types.h>
1481 #include <dirent.h>],
1482 [struct dirent64 de;],
1483 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1484 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1485     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1486 fi
1487
1488 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1489 AC_TRY_RUN([
1490 #if defined(HAVE_UNISTD_H)
1491 #include <unistd.h>
1492 #endif
1493 #include <sys/types.h>
1494 main() { dev_t dev; int i = major(dev); return 0; }],
1495 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1496 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1497     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1498 fi
1499
1500 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1501 AC_TRY_RUN([
1502 #if defined(HAVE_UNISTD_H)
1503 #include <unistd.h>
1504 #endif
1505 #include <sys/types.h>
1506 main() { dev_t dev; int i = minor(dev); return 0; }],
1507 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1508 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1509     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1510 fi
1511
1512 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
1513 AC_TRY_RUN([
1514 #if defined(HAVE_UNISTD_H)
1515 #include <unistd.h>
1516 #endif
1517 #include <sys/types.h>
1518 main() { dev_t dev = makedev(1,2); return 0; }],
1519 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
1520 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
1521     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
1522 fi
1523
1524 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1525 AC_TRY_RUN([#include <stdio.h>
1526 main() { char c; c=250; exit((c > 0)?0:1); }],
1527 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1528 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1529     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1530 fi
1531
1532 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1533 AC_TRY_COMPILE([#include <sys/types.h>
1534 #include <sys/socket.h>
1535 #include <netinet/in.h>],
1536 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1537 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1538 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1539     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
1540 fi
1541
1542 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1543 AC_TRY_COMPILE([#include <sys/types.h>
1544 #include <dirent.h>
1545 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1546 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1547 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1548     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1549 fi
1550
1551 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1552 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1553 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1554 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1555     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1556 fi
1557
1558 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1559 AC_TRY_RUN([
1560 #include <sys/time.h>
1561 #include <unistd.h>
1562 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1563            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1564 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1565     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
1566 fi
1567
1568 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
1569 AC_TRY_LINK([#include <stdarg.h>
1570 va_list ap1,ap2;], [va_copy(ap1,ap2);],
1571 samba_cv_HAVE_VA_COPY=yes,
1572 samba_cv_HAVE_VA_COPY=no)])
1573 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1574     AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
1575 else
1576     AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
1577     AC_TRY_LINK([#include <stdarg.h>
1578     va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1579     samba_cv_HAVE___VA_COPY=yes,
1580     samba_cv_HAVE___VA_COPY=no)])
1581     if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
1582         AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
1583     fi
1584 fi
1585
1586 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1587 AC_TRY_RUN([
1588 #include <sys/types.h>
1589 #include <stdarg.h>
1590 void foo(const char *format, ...) { 
1591        va_list ap;
1592        int len;
1593        char buf[5];
1594
1595        va_start(ap, format);
1596        len = vsnprintf(buf, 0, format, ap);
1597        va_end(ap);
1598        if (len != 5) exit(1);
1599
1600        va_start(ap, format);
1601        len = vsnprintf(0, 0, format, ap);
1602        va_end(ap);
1603        if (len != 5) exit(1);
1604
1605        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1606
1607        exit(0);
1608 }
1609 main() { foo("hello"); }
1610 ],
1611 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1612 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1613     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
1614 fi
1615
1616 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1617 AC_TRY_RUN([#include <sys/types.h>
1618 #include <dirent.h>
1619 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1620 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1621 di->d_name[0] == 0) exit(0); exit(1);} ],
1622 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1623 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1624     AC_DEFINE(HAVE_BROKEN_READDIR,1,[Whether readdir() is broken])
1625 fi
1626
1627 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1628 AC_TRY_COMPILE([#include <sys/types.h>
1629 #include <utime.h>],
1630 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1631 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1632 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1633     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
1634 fi
1635
1636 ##############
1637 # Check utmp details, but only if our OS offers utmp.h
1638 if test x"$ac_cv_header_utmp_h" = x"yes"; then
1639 dnl  utmp and utmpx come in many flavours
1640 dnl  We need to check for many of them
1641 dnl  But we don't need to do each and every one, because our code uses
1642 dnl  mostly just the utmp (not utmpx) fields.
1643
1644 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1645
1646 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1647 AC_TRY_COMPILE([#include <sys/types.h>
1648 #include <utmp.h>],
1649 [struct utmp ut;  ut.ut_name[0] = 'a';],
1650 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1651 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1652     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
1653 fi 
1654
1655 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1656 AC_TRY_COMPILE([#include <sys/types.h>
1657 #include <utmp.h>],
1658 [struct utmp ut;  ut.ut_user[0] = 'a';],
1659 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1660 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1661     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
1662 fi 
1663
1664 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1665 AC_TRY_COMPILE([#include <sys/types.h>
1666 #include <utmp.h>],
1667 [struct utmp ut;  ut.ut_id[0] = 'a';],
1668 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1669 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1670     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
1671 fi 
1672
1673 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1674 AC_TRY_COMPILE([#include <sys/types.h>
1675 #include <utmp.h>],
1676 [struct utmp ut;  ut.ut_host[0] = 'a';],
1677 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1678 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1679     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
1680 fi 
1681
1682 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1683 AC_TRY_COMPILE([#include <sys/types.h>
1684 #include <utmp.h>],
1685 [struct utmp ut;  time_t t; ut.ut_time = t;],
1686 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1687 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1688     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
1689 fi 
1690
1691 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1692 AC_TRY_COMPILE([#include <sys/types.h>
1693 #include <utmp.h>],
1694 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1695 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1696 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1697     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
1698 fi 
1699
1700 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1701 AC_TRY_COMPILE([#include <sys/types.h>
1702 #include <utmp.h>],
1703 [struct utmp ut;  ut.ut_type = 0;],
1704 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1705 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1706     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
1707 fi 
1708
1709 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1710 AC_TRY_COMPILE([#include <sys/types.h>
1711 #include <utmp.h>],
1712 [struct utmp ut;  ut.ut_pid = 0;],
1713 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1714 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1715     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
1716 fi 
1717
1718 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1719 AC_TRY_COMPILE([#include <sys/types.h>
1720 #include <utmp.h>],
1721 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1722 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1723 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1724     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
1725 fi 
1726
1727 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1728 AC_TRY_COMPILE([#include <sys/types.h>
1729 #include <utmp.h>],
1730 [struct utmp ut;  ut.ut_addr = 0;],
1731 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1732 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1733     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
1734 fi 
1735
1736 if test x$ac_cv_func_pututline = xyes ; then
1737   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1738   AC_TRY_COMPILE([#include <sys/types.h>
1739 #include <utmp.h>],
1740   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1741   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1742   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1743       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
1744   fi
1745 fi
1746
1747 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1748 AC_TRY_COMPILE([#include <sys/types.h>
1749 #include <utmpx.h>],
1750 [struct utmpx ux;  ux.ut_syslen = 0;],
1751 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1752 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1753     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
1754 fi 
1755
1756 fi
1757 # end utmp details
1758
1759
1760 ICONV_LOCATION=standard
1761 LOOK_DIRS="/usr /usr/local /sw /opt"
1762 AC_ARG_WITH(libiconv,
1763 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
1764 [
1765   if test "$withval" = "no" ; then
1766     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
1767   else
1768      if test "$withval" != "yes" ; then
1769         ICONV_PATH_SPEC=yes
1770         LOOK_DIRS="$withval"
1771      fi
1772   fi
1773 ])
1774
1775 for i in $LOOK_DIRS ; do
1776     save_LIBS=$LIBS
1777     save_LDFLAGS=$LDFLAGS
1778     save_CPPFLAGS=$CPPFLAGS
1779     ICONV_FOUND="no"
1780     unset libext
1781     CPPFLAGS="$CPPFLAGS -I$i/include"
1782 dnl This is here to handle -withval stuff for --with-libiconv
1783 dnl Perhaps we should always add a -L
1784
1785 dnl Check lib and lib32 library variants to cater for IRIX ABI-specific
1786 dnl installation paths. This gets a little tricky since we might have iconv
1787 dnl in both libiconv and in libc. In this case the jm_ICONV test will always
1788 dnl succeed when the header is found. To counter this, make sure the 
1789 dnl library directory is there and check the ABI directory first (which
1790 dnl should be harmless on other systems.
1791     for l in "lib32" "lib" ; do
1792         if test -d "$i/$l" ; then
1793                 LDFLAGS="$save_LDFLAGS -L$i/$l"
1794                 LIBS=
1795                 export LDFLAGS LIBS CPPFLAGS
1796 dnl Try to find iconv(3)
1797                 jm_ICONV($i/$l)
1798                 if test x"$ICONV_FOUND" = "xyes" ; then
1799                     libext="$l"
1800                     break;
1801                 fi
1802         fi
1803     done
1804
1805     if test x"$ICONV_FOUND" = "xyes" ; then
1806         LDFLAGS=$save_LDFLAGS
1807         LIB_ADD_DIR(LDFLAGS, "$i/$libext")
1808         CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
1809         LIBS="$save_LIBS"
1810         ICONV_LOCATION=$i
1811         export LDFLAGS LIBS CPPFLAGS
1812 dnl Now, check for a working iconv ... we want to do it here because
1813 dnl there might be a working iconv further down the list of LOOK_DIRS
1814
1815         ############
1816         # check for iconv in libc
1817         ic_save_LIBS="$LIBS"
1818         if test x"$ICONV_PATH_SPEC" = "xyes" ; then
1819            LIBS="$LIBS -L$ICONV_LOCATION/$libext"
1820         fi
1821         if test x"$jm_cv_lib_iconv" != x; then
1822            LIBS="$LIBS -l$jm_cv_lib_iconv"
1823         fi
1824 dnl        AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
1825         default_dos_charset=no
1826         default_display_charset=no
1827         default_unix_charset=no
1828
1829         # check for default dos charset name
1830         for j in CP850 IBM850 ; do
1831             rjs_CHARSET($j)
1832             if test x"$ICONV_CHARSET" = x"$j"; then
1833                 default_dos_charset="\"$j\""
1834                 break
1835             fi
1836         done
1837         # check for default display charset name
1838         for j in ASCII 646 ; do
1839             rjs_CHARSET($j)
1840             if test x"$ICONV_CHARSET" = x"$j"; then
1841                 default_display_charset="\"$j\""
1842                 break
1843             fi
1844         done
1845         # check for default unix charset name
1846         for j in UTF-8 UTF8 ; do
1847             rjs_CHARSET($j)
1848             if test x"$ICONV_CHARSET" = x"$j"; then
1849                 default_unix_charset="\"$j\""
1850                 break
1851             fi
1852         done
1853         
1854         if test "$default_dos_charset" != "no" -a \
1855                 "$default_dos_charset" != "cross" -a \
1856                 "$default_display_charset" != "no" -a \ 
1857                 "$default_display_charset" != "cross" -a \
1858                 "$default_unix_charset" != "no" -a \
1859                 "$default_unix_charset" != "cross"
1860         then
1861                 samba_cv_HAVE_NATIVE_ICONV=yes
1862         else if test "$default_dos_charset" = "cross" -o \
1863                      "$default_display_charset" = "cross" -o \
1864                      "$default_unix_charset" = "cross"
1865         then
1866                 samba_cv_HAVE_NATIVE_ICONV=cross
1867         else
1868                 samba_cv_HAVE_NATIVE_ICONV=no
1869         fi
1870         fi
1871 dnl ])
1872
1873         LIBS="$ic_save_LIBS"
1874         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
1875            CPPFLAGS=$save_CPPFLAGS
1876            LDFLAGS=$save_LDFLAGS
1877            LIBS=$save_LIBS
1878            if test x"$jm_cv_lib_iconv" != x; then
1879               LIBS="$LIBS -l$jm_cv_lib_iconv"
1880            fi
1881            dnl Add the flags we need to CPPFLAGS and LDFLAGS
1882            CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
1883            LIB_ADD_DIR(LDFLAGS, "$i/$libext")
1884            export CPPFLAGS
1885            AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
1886            AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
1887            AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
1888            AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
1889            break
1890         fi
1891 dnl We didn't find a working iconv, so keep going
1892     fi
1893 dnl We only need to clean these up here for the next pass through the loop
1894     CPPFLAGS=$save_CPPFLAGS
1895     LDFLAGS=$save_LDFLAGS
1896     LIBS=$save_LIBS
1897     export LDFLAGS LIBS CPPFLAGS
1898 done
1899 unset libext
1900
1901
1902 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
1903     AC_MSG_WARN([Sufficient support for iconv function was not found. 
1904     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
1905    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
1906    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
1907    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
1908 fi
1909
1910
1911 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1912 AC_TRY_RUN([
1913 #include <sys/types.h>
1914 #include <fcntl.h>
1915 #ifndef F_GETLEASE
1916 #define F_GETLEASE      1025
1917 #endif
1918 main() {
1919        int fd = open("/dev/null", O_RDONLY);
1920        return fcntl(fd, F_GETLEASE, 0) == -1;
1921 }
1922 ],
1923 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1924 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1925     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
1926 fi
1927
1928 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1929 AC_TRY_RUN([
1930 #include <sys/types.h>
1931 #include <fcntl.h>
1932 #include <signal.h>
1933 #ifndef F_NOTIFY
1934 #define F_NOTIFY 1026
1935 #endif
1936 main() {
1937         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1938 }
1939 ],
1940 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1941 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
1942     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
1943 fi
1944
1945 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1946 AC_TRY_RUN([
1947 #include <sys/types.h>
1948 #include <fcntl.h>
1949 #include <signal.h>
1950 #include <sys/file.h>
1951 #ifndef LOCK_MAND
1952 #define LOCK_MAND       32
1953 #define LOCK_READ       64
1954 #endif
1955 main() {
1956         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1957 }
1958 ],
1959 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1960 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1961     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
1962 fi
1963
1964
1965
1966
1967 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1968 AC_TRY_COMPILE([#include <sys/types.h>
1969 #include <fcntl.h>],
1970 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1971 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1972 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1973     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
1974 fi
1975
1976 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1977 AC_TRY_RUN([#include <sys/types.h>
1978 #include <sys/capability.h>
1979 main() {
1980  cap_t cap;
1981  if ((cap = cap_get_proc()) == NULL)
1982    exit(1);
1983  cap->cap_effective |= CAP_NETWORK_MGT;
1984  cap->cap_inheritable |= CAP_NETWORK_MGT;
1985  cap_set_proc(cap);
1986  exit(0);
1987 }
1988 ],
1989 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1990 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1991     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
1992 fi
1993
1994 #
1995 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1996 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1997 #
1998
1999 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2000 AC_TRY_COMPILE([#include <sys/types.h>
2001 #if defined(HAVE_RPC_RPC_H)
2002 #include <rpc/rpc.h>
2003 #endif],
2004 [int16 testvar;],
2005 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2006 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2007     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2008 fi
2009
2010 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2011 AC_TRY_COMPILE([#include <sys/types.h>
2012 #if defined(HAVE_RPC_RPC_H)
2013 #include <rpc/rpc.h>
2014 #endif],
2015 [uint16 testvar;],
2016 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2017 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2018     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2019 fi
2020
2021 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2022 AC_TRY_COMPILE([#include <sys/types.h>
2023 #if defined(HAVE_RPC_RPC_H)
2024 #include <rpc/rpc.h>
2025 #endif],
2026 [int32 testvar;],
2027 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2028 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2029     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2030 fi
2031
2032 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2033 AC_TRY_COMPILE([#include <sys/types.h>
2034 #if defined(HAVE_RPC_RPC_H)
2035 #include <rpc/rpc.h>
2036 #endif],
2037 [uint32 testvar;],
2038 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2039 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2040     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2041 fi
2042
2043 dnl
2044 dnl Some systems (SCO) have a problem including
2045 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2046 dnl as a #define in <prot.h> and as part of an enum
2047 dnl in <rpc/rpc.h>.
2048 dnl
2049
2050 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2051 AC_TRY_COMPILE([#include <sys/types.h>
2052 #ifdef HAVE_SYS_SECURITY_H
2053 #include <sys/security.h>
2054 #include <prot.h>
2055 #endif  /* HAVE_SYS_SECURITY_H */
2056 #if defined(HAVE_RPC_RPC_H)
2057 #include <rpc/rpc.h>
2058 #endif],
2059 [int testvar;],
2060 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2061 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2062     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2063 fi
2064
2065 AC_MSG_CHECKING([for test routines])
2066 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2067            AC_MSG_RESULT(yes),
2068            AC_MSG_ERROR([cant find test code. Aborting config]),
2069            AC_MSG_WARN([cannot run when cross-compiling]))
2070
2071 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2072 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2073            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2074 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2075     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2076 fi
2077
2078 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2079 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2080            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2081            samba_cv_HAVE_WORKING_AF_LOCAL=no,
2082            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2083 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2084 then
2085     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2086 fi
2087
2088 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2089 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2090            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2091 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2092     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2093 fi
2094
2095 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
2096 SAVE_CPPFLAGS="$CPPFLAGS"
2097 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper"
2098 AC_TRY_COMPILE([
2099 #define REPLACE_GETPASS 1
2100 #define NO_PROTO_H 1
2101 #define NO_CONFIG_H 1
2102 #define main dont_declare_main
2103 #include "${srcdir-.}/lib/getsmbpass.c"
2104 #undef main
2105 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
2106 CPPFLAGS="$SAVE_CPPFLAGS"
2107 ])
2108 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
2109         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
2110 fi
2111
2112 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
2113 AC_TRY_RUN([
2114 #include <stdio.h>
2115 #include <sys/types.h>
2116 #include <netinet/in.h>
2117 #ifdef HAVE_ARPA_INET_H
2118 #include <arpa/inet.h>
2119 #endif
2120 main() { struct in_addr ip; ip.s_addr = 0x12345678;
2121 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
2122     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
2123 exit(1);}],
2124            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
2125 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
2126     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
2127 fi
2128
2129 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2130 AC_TRY_RUN([#include <stdlib.h>
2131 #include <sys/types.h>
2132 #include <sys/stat.h>
2133 #include <unistd.h>
2134 main() { 
2135   struct stat st;
2136   char tpl[20]="/tmp/test.XXXXXX"; 
2137   int fd = mkstemp(tpl); 
2138   if (fd == -1) exit(1);
2139   unlink(tpl);
2140   if (fstat(fd, &st) != 0) exit(1);
2141   if ((st.st_mode & 0777) != 0600) exit(1);
2142   exit(0);
2143 }],
2144 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2145 samba_cv_HAVE_SECURE_MKSTEMP=no,
2146 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2147 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2148     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2149 fi
2150
2151 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
2152 AC_TRY_RUN([#include <unistd.h>
2153 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
2154 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
2155 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
2156     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
2157 fi
2158
2159 AC_CACHE_CHECK([for sysconf(_SC_NPROC_ONLN)],samba_cv_SYSCONF_SC_NPROC_ONLN,[
2160 AC_TRY_RUN([#include <unistd.h>
2161 main() { exit(sysconf(_SC_NPROC_ONLN) == -1 ? 1 : 0); }],
2162 samba_cv_SYSCONF_SC_NPROC_ONLN=yes,samba_cv_SYSCONF_SC_NPROC_ONLN=no,samba_cv_SYSCONF_SC_NPROC_ONLN=cross)])
2163 if test x"$samba_cv_SYSCONF_SC_NPROC_ONLN" = x"yes"; then
2164     AC_DEFINE(SYSCONF_SC_NPROC_ONLN,1,[Whether sysconf(_SC_NPROC_ONLN) is available])
2165 fi
2166
2167 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
2168 AC_TRY_RUN([main() { exit(getuid() != 0); }],
2169            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
2170 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
2171     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
2172 else
2173     AC_MSG_WARN(running as non-root will disable some tests)
2174 fi
2175
2176 ##################
2177 # look for a method of finding the list of network interfaces
2178 iface=no;
2179 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
2180 AC_TRY_RUN([
2181 #define HAVE_IFACE_AIX 1
2182 #define AUTOCONF_TEST 1
2183 #include "confdefs.h"
2184 #include "${srcdir-.}/lib/interfaces.c"],
2185            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
2186 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
2187     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
2188 fi
2189
2190 if test $iface = no; then
2191 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
2192 AC_TRY_RUN([
2193 #define HAVE_IFACE_IFCONF 1
2194 #define AUTOCONF_TEST 1
2195 #include "confdefs.h"
2196 #include "${srcdir-.}/lib/interfaces.c"],
2197            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
2198 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
2199     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
2200 fi
2201 fi
2202
2203 if test $iface = no; then
2204 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
2205 AC_TRY_RUN([
2206 #define HAVE_IFACE_IFREQ 1
2207 #define AUTOCONF_TEST 1
2208 #include "confdefs.h"
2209 #include "${srcdir-.}/lib/interfaces.c"],
2210            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
2211 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
2212     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
2213 fi
2214 fi
2215
2216
2217 ################################################
2218 # look for a method of setting the effective uid
2219 seteuid=no;
2220 if test $seteuid = no; then
2221 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2222 AC_TRY_RUN([
2223 #define AUTOCONF_TEST 1
2224 #define USE_SETRESUID 1
2225 #include "confdefs.h"
2226 #include "${srcdir-.}/lib/util_sec.c"],
2227            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2228 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2229     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2230 fi
2231 fi
2232
2233
2234 if test $seteuid = no; then
2235 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2236 AC_TRY_RUN([
2237 #define AUTOCONF_TEST 1
2238 #define USE_SETREUID 1
2239 #include "confdefs.h"
2240 #include "${srcdir-.}/lib/util_sec.c"],
2241            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2242 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2243     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2244 fi
2245 fi
2246
2247 if test $seteuid = no; then
2248 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2249 AC_TRY_RUN([
2250 #define AUTOCONF_TEST 1
2251 #define USE_SETEUID 1
2252 #include "confdefs.h"
2253 #include "${srcdir-.}/lib/util_sec.c"],
2254            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2255 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2256     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2257 fi
2258 fi
2259
2260 if test $seteuid = no; then
2261 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2262 AC_TRY_RUN([
2263 #define AUTOCONF_TEST 1
2264 #define USE_SETUIDX 1
2265 #include "confdefs.h"
2266 #include "${srcdir-.}/lib/util_sec.c"],
2267            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2268 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2269     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2270 fi
2271 fi
2272
2273
2274 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2275 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2276            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2277 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2278     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2279 fi
2280
2281 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
2282 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
2283            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
2284 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
2285     AC_DEFINE(FTRUNCATE_NEEDS_ROOT,1,[Whether ftruncate() needs root])
2286 fi
2287
2288 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2289 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2290            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2291 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2292     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2293 fi
2294
2295 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2296 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2297            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2298 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2299     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2300
2301 else
2302
2303 dnl
2304 dnl Don't check for 64 bit fcntl locking if we know that the
2305 dnl glibc2.1 broken check has succeeded.
2306 dnl 
2307
2308   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2309   AC_TRY_RUN([
2310 #if defined(HAVE_UNISTD_H)
2311 #include <unistd.h>
2312 #endif
2313 #include <stdio.h>
2314 #include <stdlib.h>
2315
2316 #ifdef HAVE_FCNTL_H
2317 #include <fcntl.h>
2318 #endif
2319
2320 #ifdef HAVE_SYS_FCNTL_H
2321 #include <sys/fcntl.h>
2322 #endif
2323 main() { struct flock64 fl64;
2324 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2325 exit(0);
2326 #else
2327 exit(1);
2328 #endif
2329 }],
2330        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2331
2332   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2333       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2334   fi
2335 fi
2336
2337 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2338 AC_TRY_COMPILE([#include <sys/types.h>
2339 #include <sys/stat.h>
2340 #include <unistd.h>],
2341 [struct stat st;  st.st_blocks = 0;],
2342 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2343 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2344     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2345 fi 
2346
2347 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2348 AC_TRY_COMPILE([#include <sys/types.h>
2349 #include <sys/stat.h>
2350 #include <unistd.h>],
2351 [struct stat st;  st.st_blksize = 0;],
2352 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2353 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2354     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2355 fi
2356
2357 case "$host_os" in
2358 *linux*)
2359 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
2360 AC_TRY_COMPILE([
2361 #ifdef HAVE_SYS_VFS_H
2362 #include <sys/vfs.h>
2363 #endif
2364 #ifdef HAVE_SYS_CAPABILITY_H
2365 #include <sys/capability.h>
2366 #endif
2367 ],[int i;],
2368    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
2369 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
2370    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
2371 fi
2372 ;;
2373 esac
2374
2375 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2376 AC_TRY_COMPILE([
2377 #include <sys/types.h>
2378 #include <sys/acl.h>
2379 #if defined(HAVE_RPCSVC_NIS_H)
2380 #include <rpcsvc/nis.h>
2381 #endif],
2382 [int i;],
2383 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2384 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2385         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2386 fi
2387
2388 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2389 AC_TRY_RUN([
2390 #include <stdio.h>
2391 #include <limits.h>
2392 main() {
2393         char *newpath = realpath("/tmp", NULL);
2394         exit ((newpath != NULL) ? 0 : 1);
2395 }
2396 ],
2397 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2398 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2399     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2400 fi
2401
2402 #################################################
2403 # check for smbwrapper support
2404 AC_MSG_CHECKING(whether to use smbwrapper)
2405 AC_ARG_WITH(smbwrapper,
2406 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
2407 [ case "$withval" in
2408   yes)
2409     AC_MSG_RESULT(yes)
2410     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
2411         WRAPPROG="bin/smbsh\$(EXEEXT)"
2412         WRAP="bin/smbwrapper.$SHLIBEXT"
2413
2414 # Conditions under which smbwrapper should not be built.
2415
2416         if test x$PICFLAGS = x; then
2417            echo No support for PIC code - disabling smbwrapper and smbsh
2418            WRAPPROG=""
2419            WRAP=""
2420         elif test x$ac_cv_func_syscall = xno; then
2421            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
2422            WRAPPROG=""
2423            WRAP=""
2424         fi
2425         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP"
2426         SMBWRAPPER="$WRAPPROG $WRAP"
2427     ;;
2428   *)
2429     AC_MSG_RESULT(no)
2430     ;;
2431   esac ],
2432   AC_MSG_RESULT(no)
2433 )
2434
2435 #################################################
2436 # check for AFS clear-text auth support
2437 samba_cv_WITH_AFS=no
2438 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2439 AC_ARG_WITH(afs,
2440 [  --with-afs              Include AFS clear-text auth support (default=no) ],
2441 [ case "$withval" in
2442   yes|auto)
2443     AC_MSG_RESULT($withval)
2444     samba_cv_WITH_AFS=$withval
2445     ;;
2446   *)
2447     AC_MSG_RESULT(no)
2448     ;;
2449   esac ],
2450   AC_MSG_RESULT(no)
2451 )
2452
2453 ####################################################
2454 # check for Linux-specific AFS fake-kaserver support
2455 samba_cv_WITH_FAKE_KASERVER=no
2456 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2457 AC_ARG_WITH(fake-kaserver,
2458 [  --with-fake-kaserver    Include AFS fake-kaserver support (default=no) ],
2459 [ case "$withval" in
2460   yes|auto)
2461     AC_MSG_RESULT($withval)
2462     samba_cv_WITH_FAKE_KASERVER=$withval
2463     ;;
2464   *)
2465     AC_MSG_RESULT(no)
2466     ;;
2467   esac ],
2468   AC_MSG_RESULT(no)
2469 )
2470
2471 #################################################
2472 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2473 if test x"$samba_cv_WITH_AFS" != x"no" ||
2474    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2475
2476     # see if this box has the afs-headers in /usr/include/afs
2477     AC_MSG_CHECKING(for /usr/include/afs)
2478     if test -d /usr/include/afs; then
2479           CFLAGS="$CFLAGS -I/usr/include/afs"
2480           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
2481           AC_MSG_RESULT(yes)
2482     else
2483       AC_MSG_RESULT(no)
2484     fi
2485    
2486     # check for afs.h
2487     have_afs_headers=no
2488     AC_CHECK_HEADERS(afs.h afs/afs.h)
2489     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2490         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2491            test x"$samba_cv_WITH_AFS" = x"auto"; then
2492                 AC_MSG_WARN([AFS cannot be supported without afs.h])
2493         else
2494                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2495         fi
2496     else
2497         have_afs_headers=yes
2498     fi
2499 fi
2500
2501 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
2502     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2503 fi
2504
2505 #################################################
2506 # check whether to compile AFS/NT ACL mapping module
2507 samba_cv_WITH_VFS_AFSACL=no
2508 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2509 AC_ARG_WITH(vfs-afsacl,
2510 [  --with-vfs-afsacl       Include AFS to NT ACL mapping module (default=no) ],
2511 [ case "$withval" in
2512   yes|auto)
2513     AC_MSG_RESULT($withval)
2514     samba_cv_WITH_VFS_AFSACL=yes
2515     ;;
2516   *)
2517     AC_MSG_RESULT(no)
2518     ;;
2519   esac ],
2520   AC_MSG_RESULT(no)
2521 )
2522
2523 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
2524    default_shared_modules="$default_shared_modules vfs_afsacl"
2525 fi
2526         
2527 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
2528     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
2529 fi
2530
2531 #################################################
2532 # check for the DFS clear-text auth system
2533 AC_MSG_CHECKING(whether to use DFS clear-text auth)
2534 AC_ARG_WITH(dfs,
2535 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
2536 [ case "$withval" in
2537   yes)
2538     AC_MSG_RESULT(yes)
2539     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
2540     ;;
2541   *)
2542     AC_MSG_RESULT(no)
2543     ;;
2544   esac ],
2545   AC_MSG_RESULT(no)
2546 )
2547
2548 ########################################################
2549 # Compile with LDAP support?
2550
2551 with_ldap_support=auto
2552 AC_MSG_CHECKING([for LDAP support])
2553
2554 AC_ARG_WITH(ldap,
2555 [  --with-ldap             LDAP support (default yes)],
2556 [ case "$withval" in
2557     yes|no)
2558         with_ldap_support=$withval
2559         ;;
2560   esac ])
2561
2562 AC_MSG_RESULT($with_ldap_support)
2563
2564 SMBLDAP=""
2565 AC_SUBST(SMBLDAP)
2566 if test x"$with_ldap_support" != x"no"; then
2567
2568   ##################################################################
2569   # first test for ldap.h and lber.h
2570   # (ldap.h is required for this test)
2571   AC_CHECK_HEADERS(ldap.h lber.h)
2572   
2573   if test x"$ac_cv_header_ldap_h" != x"yes"; then
2574         if test x"$with_ldap_support" = x"yes"; then
2575          AC_MSG_ERROR(ldap.h is needed for LDAP support)
2576         else
2577          AC_MSG_WARN(ldap.h is needed for LDAP support)
2578         fi
2579         
2580         with_ldap_support=no
2581   fi
2582 fi
2583
2584 if test x"$with_ldap_support" != x"no"; then
2585   ac_save_LIBS=$LIBS
2586
2587   ##################################################################
2588   # we might need the lber lib on some systems. To avoid link errors
2589   # this test must be before the libldap test
2590   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
2591
2592   ########################################################
2593   # now see if we can find the ldap libs in standard paths
2594   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
2595
2596   AC_CHECK_FUNC_EXT(ldap_domain2hostlist,$LDAP_LIBS)
2597   
2598   ########################################################
2599   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2600   # Check found in pam_ldap 145.
2601   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
2602
2603   LIBS="$LIBS $LDAP_LIBS"
2604   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
2605     AC_TRY_COMPILE([
2606         #include <lber.h>
2607         #include <ldap.h>], 
2608         [ldap_set_rebind_proc(0, 0, 0);], 
2609         [smb_ldap_cv_ldap_set_rebind_proc=3], 
2610         [smb_ldap_cv_ldap_set_rebind_proc=2]
2611     ) 
2612   ])
2613   
2614   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
2615
2616   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS) 
2617   
2618   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes" -a x"$ac_cv_func_ext_ldap_domain2hostlist" = x"yes"; then
2619     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
2620     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
2621     SMBLDAP="lib/smbldap.o"
2622     with_ldap_support=yes
2623     AC_MSG_CHECKING(whether LDAP support is used)
2624     AC_MSG_RESULT(yes)
2625   else
2626     if test x"$with_ldap_support" = x"yes"; then
2627         AC_MSG_ERROR(libldap is needed for LDAP support)
2628     else
2629         AC_MSG_WARN(libldap is needed for LDAP support)
2630     fi
2631     
2632     LDAP_LIBS=""
2633     with_ldap_support=no
2634   fi
2635   LIBS=$ac_save_LIBS
2636 fi
2637
2638
2639 #################################################
2640 # active directory support
2641
2642 with_ads_support=auto
2643 AC_MSG_CHECKING([for Active Directory and krb5 support])
2644
2645 AC_ARG_WITH(ads,
2646 [  --with-ads              Active Directory support (default auto)],
2647 [ case "$withval" in
2648     yes|no)
2649         with_ads_support="$withval"
2650         ;;
2651   esac ])
2652
2653 AC_MSG_RESULT($with_ads_support)
2654
2655 FOUND_KRB5=no
2656 KRB5_LIBS=""
2657
2658 if test x"$with_ldap_support" != x"yes"; then
2659     if test x"$with_ads_support" = x"yes"; then
2660         AC_MSG_ERROR(Active Directory Support requires LDAP support)
2661     elif test x"$with_ads_support" != x"no"; then
2662         AC_MSG_WARN(Active Directory Support requires LDAP support)
2663     fi
2664     with_ads_support=no
2665 fi
2666
2667 if test x"$with_ads_support" != x"no"; then
2668
2669   # Do no harm to the values of CFLAGS and LIBS while testing for
2670   # Kerberos support.
2671  
2672   if test x$FOUND_KRB5 = x"no"; then
2673     #################################################
2674     # check for location of Kerberos 5 install
2675     AC_MSG_CHECKING(for kerberos 5 install path)
2676     AC_ARG_WITH(krb5,
2677     [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
2678     [ case "$withval" in
2679       no)
2680         AC_MSG_RESULT(no krb5-path given)
2681         ;;
2682       yes)
2683         AC_MSG_RESULT(/usr)
2684         FOUND_KRB5=yes
2685         ;;
2686       *)
2687         AC_MSG_RESULT($withval)
2688         KRB5_CFLAGS="-I$withval/include"
2689         KRB5_CPPFLAGS="-I$withval/include"
2690         KRB5_LDFLAGS="-L$withval/lib"
2691         FOUND_KRB5=yes
2692         if test -x "$withval/bin/krb5-config"; then
2693                 KRB5CONFIG=$withval/bin/krb5-config
2694         fi
2695         ;;
2696       esac ],
2697       AC_MSG_RESULT(no krb5-path given)
2698     )
2699   fi
2700
2701   #################################################
2702   # check for krb5-config from recent MIT and Heimdal kerberos 5
2703   AC_PATH_PROG(KRB5CONFIG, krb5-config)
2704   AC_MSG_CHECKING(for working krb5-config)
2705   if test -x "$KRB5CONFIG"; then
2706     ac_save_CFLAGS=$CFLAGS
2707     CFLAGS="";export CFLAGS
2708     ac_save_LDFLAGS=$LDFLAGS
2709     LDFLAGS="";export LDFLAGS
2710     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
2711     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
2712     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`" 
2713     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
2714     CFLAGS=$ac_save_CFLAGS;export CFLAGS
2715     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
2716     FOUND_KRB5=yes
2717     AC_MSG_RESULT(yes)
2718   else
2719     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
2720   fi
2721  
2722   if test x$FOUND_KRB5 = x"no"; then
2723     #################################################
2724     # see if this box has the SuSE location for the heimdal krb implementation
2725     AC_MSG_CHECKING(for /usr/include/heimdal)
2726     if test -d /usr/include/heimdal; then
2727       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
2728           KRB5_CFLAGS="-I/usr/include/heimdal"
2729           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2730           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
2731           AC_MSG_RESULT(yes)
2732       else
2733           KRB5_CFLAGS="-I/usr/include/heimdal"
2734           KRB5_CPPFLAGS="-I/usr/include/heimdal"
2735           AC_MSG_RESULT(yes)
2736       fi
2737     else
2738       AC_MSG_RESULT(no)
2739     fi
2740   fi
2741
2742   if test x$FOUND_KRB5 = x"no"; then
2743     #################################################
2744     # see if this box has the RedHat location for kerberos
2745     AC_MSG_CHECKING(for /usr/kerberos)
2746     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
2747       KRB5_LDFLAGS="-L/usr/kerberos/lib"
2748       KRB5_CFLAGS="-I/usr/kerberos/include"
2749       KRB5_CPPFLAGS="-I/usr/kerberos/include"
2750       AC_MSG_RESULT(yes)
2751     else
2752       AC_MSG_RESULT(no)
2753     fi
2754   fi
2755
2756   ac_save_CFLAGS=$CFLAGS
2757   ac_save_CPPFLAGS=$CPPFLAGS
2758   ac_save_LDFLAGS=$LDFLAGS
2759
2760   CFLAGS="$KRB5_CFLAGS $CFLAGS"
2761   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
2762   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
2763
2764   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
2765
2766   # now check for krb5.h. Some systems have the libraries without the headers!
2767   # note that this check is done here to allow for different kerberos
2768   # include paths
2769   AC_CHECK_HEADERS(krb5.h)
2770
2771   if test x"$ac_cv_header_krb5_h" = x"no"; then
2772
2773     # Give a warning if AD support was not explicitly requested,
2774     # i.e with_ads_support = auto, otherwise die with an error.
2775
2776     if test x"$with_ads_support" = x"yes"; then
2777       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
2778     else
2779       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
2780     fi
2781
2782     # Turn off AD support and restore CFLAGS and LIBS variables
2783
2784     with_ads_support="no"
2785     
2786     CFLAGS=$ac_save_CFLAGS
2787     CPPFLAGS=$ac_save_CPPFLAGS
2788     LDFLAGS=$ac_save_LDFLAGS
2789   fi
2790 fi
2791
2792 # Now we have determined whether we really want ADS support
2793
2794 if test x"$with_ads_support" != x"no"; then
2795   ac_save_LIBS=$LIBS
2796
2797   # now check for gssapi headers.  This is also done here to allow for
2798   # different kerberos include paths
2799   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
2800
2801   ##################################################################
2802   # we might need the k5crypto and com_err libraries on some systems
2803   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
2804   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
2805
2806   # Heimdal checks.
2807   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
2808   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
2809   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
2810
2811   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
2812   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],
2813                                 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2814
2815   ########################################################
2816   # now see if we can find the krb5 libs in standard paths
2817   # or as specified above
2818   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
2819   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
2820
2821   ########################################################
2822   # now see if we can find the gssapi libs in standard paths
2823   AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],
2824             AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available]))
2825
2826   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
2827   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
2828   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
2829   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
2830   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
2831   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) 
2832   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
2833   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) 
2834   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
2835   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) 
2836   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
2837   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) 
2838   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) 
2839   AC_CHECK_FUNC_EXT(krb5_free_ktypes, $KRB5_LIBS)
2840   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
2841   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
2842   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
2843   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
2844   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
2845   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
2846   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
2847   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
2848
2849   LIBS="$KRB5_LIBS $LIBS"
2850   
2851   AC_CACHE_CHECK([for krb5_encrypt_block type],
2852                 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
2853     AC_TRY_COMPILE([#include <krb5.h>],
2854       [krb5_encrypt_block block;],
2855       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
2856       samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
2857
2858   if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
2859     AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
2860                [Whether the type krb5_encrypt_block exists])
2861   fi
2862
2863   AC_CACHE_CHECK([for addrtype in krb5_address],
2864                 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
2865     AC_TRY_COMPILE([#include <krb5.h>],
2866       [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
2867       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
2868       samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
2869
2870   if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
2871     AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
2872                [Whether the krb5_address struct has a addrtype property])
2873   fi
2874
2875   AC_CACHE_CHECK([for addr_type in krb5_address],
2876                  samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
2877     AC_TRY_COMPILE([#include <krb5.h>],
2878       [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
2879       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
2880       samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
2881
2882   if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
2883     AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
2884               [Whether the krb5_address struct has a addr_type property])
2885   fi
2886
2887   AC_CACHE_CHECK([for enc_part2 in krb5_ticket], 
2888                  samba_cv_HAVE_KRB5_TKT_ENC_PART2,
2889                  [AC_TRY_COMPILE([#include <krb5.h>],
2890     [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
2891     samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
2892
2893   if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
2894     AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
2895               [Whether the krb5_ticket struct has a enc_part2 property])
2896   fi
2897
2898   AC_CACHE_CHECK([for keyblock in krb5_creds],
2899                  samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
2900     AC_TRY_COMPILE([#include <krb5.h>],
2901       [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
2902       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
2903       samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
2904
2905   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
2906     AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
2907               [Whether the krb5_creds struct has a keyblock property])
2908   fi
2909
2910   AC_CACHE_CHECK([for session in krb5_creds],
2911                  samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
2912     AC_TRY_COMPILE([#include <krb5.h>],
2913       [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
2914       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
2915       samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
2916
2917   if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
2918     AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
2919               [Whether the krb5_creds struct has a session property])
2920   fi
2921
2922   AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
2923                  samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
2924     AC_TRY_COMPILE([#include <krb5.h>],
2925       [krb5_keyblock key; key.keyvalue.data = NULL;],
2926       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
2927       samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
2928
2929   if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
2930     AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
2931               [Whether the krb5_keyblock struct has a keyvalue property])
2932   fi
2933
2934   AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
2935                  samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
2936     AC_TRY_COMPILE([#include <krb5.h>],
2937       [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
2938       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
2939       samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
2940   AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
2941                  samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
2942     AC_TRY_COMPILE([#include <krb5.h>],
2943       [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
2944       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
2945       samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
2946 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
2947 # w.r.t. arcfour and windows, so we must not enable it here
2948   if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
2949           x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
2950     AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
2951               [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
2952   fi
2953
2954   AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
2955                  samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
2956     AC_TRY_COMPILE([#include <krb5.h>],
2957       [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
2958       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
2959       samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
2960
2961   if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
2962     AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
2963               [Whether the AP_OPTS_USE_SUBKEY ap option is available])
2964   fi
2965
2966   AC_CACHE_CHECK([for KV5M_KEYTAB],
2967                  samba_cv_HAVE_KV5M_KEYTAB,[
2968     AC_TRY_COMPILE([#include <krb5.h>],
2969       [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
2970       samba_cv_HAVE_KV5M_KEYTAB=yes,
2971       samba_cv_HAVE_KV5M_KEYTAB=no)])
2972
2973   if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
2974       AC_DEFINE(HAVE_KV5M_KEYTAB,1,
2975              [Whether the KV5M_KEYTAB option is available])
2976   fi
2977
2978   AC_CACHE_CHECK([for the krb5_princ_component macro],
2979                 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
2980     AC_TRY_LINK([#include <krb5.h>],
2981       [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
2982       samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
2983       samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
2984
2985   if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
2986     AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
2987                [Whether krb5_princ_component is available])
2988   fi
2989
2990   AC_CACHE_CHECK([for key in krb5_keytab_entry],
2991                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
2992     AC_TRY_COMPILE([#include <krb5.h>],
2993       [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
2994       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
2995       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
2996
2997   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
2998     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
2999               [Whether krb5_keytab_entry has key member])
3000   fi
3001
3002   AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3003                  samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3004     AC_TRY_COMPILE([#include <krb5.h>],
3005       [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3006       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3007       samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3008
3009   if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3010     AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3011               [Whether krb5_keytab_entry has keyblock member])
3012   fi
3013
3014   if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" = x"yes"; then
3015     AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3016     AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3017     AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
3018     AC_MSG_RESULT(yes)
3019   else
3020     if test x"$with_ads_support" = x"yes"; then
3021         AC_MSG_ERROR(libkrb5 is needed for Active Directory support)
3022     else
3023         AC_MSG_WARN(libkrb5 is needed for Active Directory support)
3024     fi
3025     KRB5_LIBS=""
3026     with_ads_support=no 
3027   fi
3028
3029   AC_CACHE_CHECK([for WRFILE: keytab support],
3030                 samba_cv_HAVE_WRFILE_KEYTAB,[
3031     AC_TRY_RUN([
3032 #include<krb5.h>
3033   main()
3034   {
3035     krb5_context context;
3036     krb5_keytab keytab;
3037
3038     krb5_init_context(&context);
3039     return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3040   }],
3041   samba_cv_HAVE_WRFILE_KEYTAB=yes,
3042   samba_cv_HAVE_WRFILE_KEYTAB=no)])
3043
3044   if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3045       AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3046                [Whether the WRFILE:-keytab is supported])
3047   fi
3048
3049   AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3050                samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3051     AC_TRY_COMPILE([#include <krb5.h>],
3052     [
3053     krb5_context context;
3054     krb5_principal principal;
3055     krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3056     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3057     samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3058
3059   if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3060     AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3061               [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3062   fi
3063
3064 LIBS="$ac_save_LIBS"
3065 fi
3066
3067 ########################################################
3068 # Compile experimental passdb backends?
3069 # (pdb_xml, pdb_mysql, pdb_pgsql)
3070 AC_MSG_CHECKING(whether to build experimental passdb libraries)
3071 AC_ARG_WITH(expsam,
3072 [  --with-expsam=<list>    Include experimental passdb libraries (default=no)]
3073 [                          Valid choices include (comma separated list): ]
3074 [                              xml, mysql & pgsql],
3075 [ expsam_pdb_modules=`echo "$withval" | sed 's/,/ /g'`
3076   if test "z$expsam_pdb_modules" = "zyes"; then
3077     expsam_pdb_modules="xml mysql pgsql"
3078   fi
3079   AC_MSG_RESULT($expsam_pdb_modules)
3080   for i in $expsam_pdb_modules
3081   do 
3082     case "$i" in
3083     xml|all|yes)
3084       ## pdb_xml
3085           AM_PATH_XML2([2.0.0],[default_shared_modules="$default_shared_modules pdb_xml"],[AC_MSG_ERROR([Can't find XML libraries while XML support is requested])])
3086       CFLAGS="$CFLAGS $XML_CFLAGS"
3087       ;;
3088     mysql|all|yes)
3089       ## pdb_mysql
3090           AM_PATH_MYSQL([default_shared_modules="$default_shared_modules pdb_mysql"],[AC_MSG_ERROR([Can't find MySQL libraries while MySQL support is requested])])
3091       CFLAGS="$CFLAGS $MYSQL_CFLAGS"
3092       ;;
3093      pgsql|all|yes)
3094       ## pdb_pgsql
3095       AM_PATH_PGSQL([default_shared_modules="$default_shared_modules pdb_pgsql"],[])
3096       CFLAGS="$CFLAGS $PGSQL_CFLAGS"
3097       ;;
3098     no)
3099       ;;
3100     *)
3101       echo "Unknown module name \"$i\"!  Exiting..."
3102       exit 1
3103       ;;
3104     esac
3105   done ],
3106   AC_MSG_RESULT(no)
3107 )
3108
3109 #################################################
3110 # check for automount support
3111 AC_MSG_CHECKING(whether to use automount)
3112 AC_ARG_WITH(automount,
3113 [  --with-automount        Include automount support (default=no)],
3114 [ case "$withval" in
3115   yes)
3116     AC_MSG_RESULT(yes)
3117     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
3118     ;;
3119   *)
3120     AC_MSG_RESULT(no)
3121     ;;
3122   esac ],
3123   AC_MSG_RESULT(no)
3124 )
3125
3126 #################################################
3127 # check for smbmount support
3128 AC_MSG_CHECKING(whether to use smbmount)
3129 AC_ARG_WITH(smbmount,
3130 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
3131 [ case "$withval" in
3132   yes)
3133         case "$host_os" in
3134         *linux*)
3135                 AC_MSG_RESULT(yes)
3136                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
3137                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
3138                 ;;
3139         *)
3140                 AC_MSG_ERROR(not on a linux system!)
3141                 ;;
3142         esac
3143     ;;
3144   *)
3145     AC_MSG_RESULT(no)
3146     ;;
3147   esac ],
3148   AC_MSG_RESULT(no)
3149 )
3150
3151
3152
3153 #################################################
3154 # check for a PAM clear-text auth, accounts, password and session support
3155 with_pam_for_crypt=no
3156 AC_MSG_CHECKING(whether to use PAM)
3157 AC_ARG_WITH(pam,
3158 [  --with-pam              Include PAM support (default=no)],
3159 [ case "$withval" in
3160   yes)
3161     AC_MSG_RESULT(yes)
3162     if test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3163        if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
3164           if test x"$ac_cv_header_security__pam_macros_h" = x"no"; then
3165              AC_MSG_ERROR(--with-pam specified but no PAM headers found)
3166           fi
3167        fi
3168     fi
3169     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
3170     AUTH_LIBS="$AUTH_LIBS -lpam"
3171     with_pam_for_crypt=yes
3172     ;;
3173   *)
3174     AC_MSG_RESULT(no)
3175     ;;
3176   esac ],
3177   AC_MSG_RESULT(no)
3178 )
3179
3180 # we can't build a pam module if we don't have pam.
3181 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
3182
3183 #################################################
3184 # check for pam_smbpass support
3185 AC_MSG_CHECKING(whether to use pam_smbpass)
3186 AC_ARG_WITH(pam_smbpass,
3187 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
3188 [ case "$withval" in
3189   yes)
3190     AC_MSG_RESULT(yes)
3191
3192        # Conditions under which pam_smbpass should not be built.
3193
3194        if test x$PICFLAGS = x; then
3195           AC_MSG_ERROR([No support for PIC code])
3196        elif test x"$ac_cv_header_security_pam_appl_h" = x"no"; then
3197           AC_MSG_ERROR([No security/pam_appl.h found])
3198        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
3199           AC_MSG_ERROR([No libpam found])
3200        else
3201           AUTH_LIBS="$AUTH_LIBS -lpam"
3202           SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.$SHLIBEXT"
3203        fi
3204     ;;
3205   *)
3206     AC_MSG_RESULT(no)
3207     ;;
3208   esac ],
3209   AC_MSG_RESULT(no)
3210 )
3211
3212
3213 ###############################################
3214 # test for where we get crypt() from
3215 AC_SEARCH_LIBS(crypt, [crypt],
3216   [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
3217   AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
3218
3219 ##
3220 ## moved after the check for -lcrypt in order to
3221 ## ensure that the necessary libraries are included
3222 ## check checking for truncated salt.  Wrapped by the
3223 ## $with_pam_for_crypt variable as above   --jerry
3224 ##
3225 if test $with_pam_for_crypt = no; then
3226 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
3227 crypt_LIBS="$LIBS"
3228 LIBS="$AUTH_LIBS $LIBS"
3229 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
3230         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
3231 LIBS="$crypt_LIBS"])
3232 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
3233         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
3234 fi
3235 fi
3236
3237
3238 ########################################################################################
3239 ##
3240 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
3241 ##
3242 ########################################################################################
3243
3244 #################################################
3245 # check for a LDAP password database configuration backwards compatibility
3246 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
3247 AC_ARG_WITH(ldapsam,
3248 [  --with-ldapsam          Include LDAP SAM 2.2 compatible configuration (default=no)],
3249 [ case "$withval" in
3250   yes)
3251     AC_MSG_RESULT(yes)
3252     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatible LDAP SAM configuration])
3253     ;;
3254   *)
3255     AC_MSG_RESULT(no)
3256     ;;
3257   esac ],
3258   AC_MSG_RESULT(no)
3259 )
3260
3261 ########################################################################################
3262 ##
3263 ## END OF TESTS FOR SAM BACKENDS.  
3264 ##
3265 ########################################################################################
3266
3267 #################################################
3268 # check for a NISPLUS_HOME support 
3269 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
3270 AC_ARG_WITH(nisplus-home,
3271 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
3272 [ case "$withval" in
3273   yes)
3274     AC_MSG_RESULT(yes)
3275     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
3276     ;;
3277   *)
3278     AC_MSG_RESULT(no)
3279     ;;
3280   esac ],
3281   AC_MSG_RESULT(no)
3282 )
3283
3284 #################################################
3285 # check for syslog logging
3286 AC_MSG_CHECKING(whether to use syslog logging)
3287 AC_ARG_WITH(syslog,
3288 [  --with-syslog           Include experimental SYSLOG support (default=no)],
3289 [ case "$withval" in
3290   yes)
3291     AC_MSG_RESULT(yes)
3292     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
3293     ;;
3294   *)
3295     AC_MSG_RESULT(no)
3296     ;;
3297   esac ],
3298   AC_MSG_RESULT(no)
3299 )
3300
3301 #################################################
3302 # check for a shared memory profiling support
3303 AC_MSG_CHECKING(whether to use profiling)
3304 AC_ARG_WITH(profiling-data,
3305 [  --with-profiling-data   Include gathering source code profile information (default=no)],
3306 [ case "$withval" in
3307   yes)
3308     AC_MSG_RESULT(yes)
3309     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
3310     ;;
3311   *)
3312     AC_MSG_RESULT(no)
3313     ;;
3314   esac ],
3315   AC_MSG_RESULT(no)
3316 )
3317
3318
3319 #################################################
3320 # check for experimental disk-quotas support
3321
3322 samba_cv_WITH_QUOTAS=auto
3323 samba_cv_TRY_QUOTAS=no
3324 samba_cv_RUN_QUOTA_TESTS=auto
3325 samba_cv_WITH_SYS_QUOTAS=auto
3326 samba_cv_TRY_SYS_QUOTAS=no
3327 samba_cv_SYSQUOTA_FOUND=no;
3328
3329 AC_MSG_CHECKING(whether to try disk-quotas support)
3330 AC_ARG_WITH(quotas,
3331 [  --with-quotas           Include disk-quota support (default=no)],
3332 [ case "$withval" in
3333   yes)
3334     AC_MSG_RESULT(yes)
3335     samba_cv_WITH_QUOTAS=yes
3336     samba_cv_TRY_QUOTAS=yes
3337     samba_cv_RUN_QUOTA_TESTS=yes
3338     #set sys quotas to auto in this case
3339     samba_cv_TRY_SYS_QUOTAS=auto
3340     ;;
3341   auto)
3342     AC_MSG_RESULT(auto)
3343     samba_cv_WITH_QUOTAS=auto
3344     samba_cv_TRY_QUOTAS=auto
3345     samba_cv_RUN_QUOTA_TESTS=auto
3346     #set sys quotas to auto in this case
3347     samba_cv_TRY_SYS_QUOTAS=auto
3348     ;;
3349   no)
3350     AC_MSG_RESULT(no)
3351     samba_cv_WITH_QUOTAS=no
3352     samba_cv_TRY_QUOTAS=no
3353     samba_cv_RUN_QUOTA_TESTS=no
3354     ;;
3355   *)
3356     AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3357     ;;
3358   esac ],
3359   AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
3360 )
3361
3362 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
3363 AC_ARG_WITH(sys-quotas,
3364 [  --with-sys-quotas       Include lib/sysquotas.c support (default=auto)],
3365 [ case "$withval" in
3366   yes)
3367     AC_MSG_RESULT(yes)
3368     samba_cv_WITH_SYS_QUOTAS=yes
3369     samba_cv_TRY_SYS_QUOTAS=yes
3370     samba_cv_RUN_QUOTA_TESTS=yes
3371     ;;
3372   auto)
3373     AC_MSG_RESULT(auto)
3374     samba_cv_WITH_SYS_QUOTAS=auto
3375     samba_cv_TRY_SYS_QUOTAS=auto
3376     samba_cv_RUN_QUOTA_TESTS=auto
3377     ;;
3378   no)
3379     AC_MSG_RESULT(no)
3380     samba_cv_WITH_SYS_QUOTAS=no
3381     samba_cv_TRY_SYS_QUOTAS=no
3382     ;;
3383   *)
3384     AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3385     ;;
3386   esac ],
3387   AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
3388 )
3389
3390 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
3391 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
3392   case "$host_os" in
3393         *linux*)
3394             AC_MSG_RESULT(yes)
3395             samba_cv_TRY_SYS_QUOTAS=yes
3396             samba_cv_RUN_QUOTA_TESTS=yes
3397             samba_cv_SYSQUOTA_FOUND=yes
3398             AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
3399             samba_cv_sysquotas_file="lib/sysquotas_linux.c"
3400             AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
3401             samba_cv_found_xfs_header=yes
3402             ;;
3403         *)
3404             AC_MSG_RESULT(no)
3405             samba_cv_TRY_SYS_QUOTAS=no
3406             ;;
3407   esac
3408 fi
3409
3410 #############################################
3411 # only check for quota stuff if --with-quotas
3412 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
3413
3414 # some broken header files need this
3415 AC_CHECK_HEADER(asm/types.h,[
3416             AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
3417             AC_ADD_INCLUDE(<asm/types.h>)
3418             ])
3419
3420 # For quotas on Veritas VxFS filesystems
3421 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
3422
3423 # For sys/quota.h and linux/quota.h
3424 AC_CHECK_HEADERS(sys/quota.h)
3425
3426 if test x"$samba_cv_found_xfs_header" != x"yes"; then
3427 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
3428 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
3429 AC_TRY_COMPILE([
3430 #include "confdefs.h"
3431 #ifdef HAVE_SYS_TYPES_H
3432 #include <sys/types.h>
3433 #endif
3434 #ifdef HAVE_ASM_TYPES_H
3435 #include <asm/types.h>
3436 #endif
3437 #include <sys/quota.h>
3438 ],[int i = Q_XGETQUOTA;],
3439 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
3440 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
3441         samba_cv_found_xfs_header=yes
3442 fi
3443 fi
3444
3445 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX 
3446 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
3447 AC_TRY_COMPILE([
3448 #include "confdefs.h"
3449 #ifdef HAVE_SYS_QUOTA_H
3450 #include <sys/quota.h>
3451 #endif
3452 ],[
3453 struct dqblk D;
3454 D.dqb_fsoftlimit = 0;],
3455 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
3456 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
3457         AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
3458 fi
3459
3460 ##################
3461 # look for a working quota system
3462
3463 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3464 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
3465 AC_TRY_RUN_STRICT([
3466 #define HAVE_QUOTACTL_4A 1
3467 #define AUTOCONF_TEST 1
3468 #include "confdefs.h"
3469 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3470            samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
3471 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
3472     samba_cv_SYSQUOTA_FOUND=yes;
3473     AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
3474     samba_cv_sysquotas_file="lib/sysquotas_4A.c"
3475 fi
3476 fi
3477
3478 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3479 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
3480 AC_TRY_RUN_STRICT([
3481 #define HAVE_QUOTACTL_4B 1
3482 #define AUTOCONF_TEST 1
3483 #include "confdefs.h"
3484 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3485            samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
3486 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
3487     echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
3488     samba_cv_SYSQUOTA_FOUND=yes;
3489     AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
3490     samba_cv_sysquotas_file="lib/sysquotas_4B.c"
3491 fi
3492 fi
3493
3494 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3495 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
3496 AC_TRY_RUN_STRICT([
3497 #define HAVE_QUOTACTL_3 1
3498 #define AUTOCONF_TEST 1
3499 #include "confdefs.h"
3500 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3501            samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
3502 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
3503     echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
3504     samba_cv_SYSQUOTA_FOUND=yes;
3505     AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
3506     samba_cv_sysquotas_file="lib/sysquotas_3.c"
3507 fi
3508 fi
3509
3510 #################################################
3511 # check for mntent.h and struct mntent
3512 AC_CHECK_HEADERS(mntent.h)
3513 #################################################
3514 # check for setmntent,getmntent,endmntent
3515 AC_CHECK_FUNCS(setmntent getmntent endmntent)
3516
3517 #################################################
3518 # check for devnm.h and struct mntent
3519 AC_CHECK_HEADERS(devnm.h)
3520 #################################################
3521 # check for devnm
3522 AC_CHECK_FUNCS(devnm)
3523
3524 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
3525     if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
3526         # if --with-sys-quotas=yes then build it 
3527         # you have can use the get/set quota command smb.conf
3528         # options then
3529         samba_cv_SYSQUOTA_FOUND=auto
3530     fi
3531     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
3532         # if --with-sys-quotas=yes then build it 
3533         # you have can use the get/set quota command smb.conf
3534         # options then
3535         samba_cv_TRY_SYS_QUOTAS=auto
3536     fi
3537 fi
3538
3539 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
3540 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
3541 SAVE_CPPFLAGS="$CPPFLAGS"
3542 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3543 AC_TRY_COMPILE([
3544 #include "confdefs.h"
3545 #define NO_PROTO_H 1
3546 #define NO_CONFIG_H 1
3547 #define HAVE_SYS_QUOTAS 1
3548 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
3549 #include "${srcdir-.}/lib/sysquotas.c"
3550 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
3551 CPPFLAGS="$SAVE_CPPFLAGS"
3552 ])
3553 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
3554 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
3555     if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then 
3556         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3557         AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
3558         samba_cv_WE_USE_SYS_QUOTAS=yes
3559         AC_MSG_RESULT(yes)
3560     else
3561         AC_MSG_RESULT(no)
3562     fi
3563 fi
3564 fi
3565
3566 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
3567 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
3568 SAVE_CPPFLAGS="$CPPFLAGS"
3569 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3570 AC_TRY_COMPILE([
3571 #include "confdefs.h"
3572 #define NO_PROTO_H 1
3573 #define NO_CONFIG_H 1
3574 #define HAVE_SYS_QUOTAS 1
3575 #define HAVE_XFS_QUOTAS 1
3576 #include "${srcdir-.}/lib/sysquotas_xfs.c"
3577 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
3578 CPPFLAGS="$SAVE_CPPFLAGS"
3579 ])
3580 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
3581     if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
3582         AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
3583     fi
3584 fi
3585 fi
3586
3587 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
3588 SAVE_CPPFLAGS="$CPPFLAGS"
3589 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I. -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper -I${srcdir-.}/nsswitch"
3590 AC_TRY_COMPILE([
3591 #include "confdefs.h"
3592 #define NO_PROTO_H 1
3593 #define NO_CONFIG_H 1
3594 #include "${srcdir-.}/smbd/quotas.c"
3595 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
3596 CPPFLAGS="$SAVE_CPPFLAGS"
3597 ])
3598 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
3599 AC_MSG_CHECKING(whether to use the old quota support)
3600     if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
3601       if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
3602         AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
3603         AC_MSG_RESULT(yes)
3604       else
3605         AC_MSG_RESULT(no)
3606       fi
3607     else
3608       AC_MSG_RESULT(no)
3609     fi
3610 fi
3611
3612 ####################
3613 # End of quota check samba_cv_RUN_QUOTA_TESTS
3614 fi
3615
3616 #################################################
3617 # check for experimental utmp accounting
3618
3619 AC_MSG_CHECKING(whether to support utmp accounting)
3620 WITH_UTMP=yes
3621 AC_ARG_WITH(utmp,
3622 [  --with-utmp             Include utmp accounting (default, if supported by OS)],
3623 [ case "$withval" in
3624   no)
3625                 WITH_UTMP=no
3626                 ;;
3627   *)
3628                 WITH_UTMP=yes
3629                 ;;
3630   esac ],
3631 )
3632
3633 # utmp requires utmp.h
3634 # Note similar check earlier, when checking utmp details.
3635
3636 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
3637         utmp_no_reason=", no utmp.h on $host_os"
3638         WITH_UTMP=no
3639 fi
3640
3641 # Display test results
3642
3643 if test x"$WITH_UTMP" = x"yes"; then
3644         AC_MSG_RESULT(yes)
3645         AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
3646 else
3647         AC_MSG_RESULT(no$utmp_no_reason)
3648 fi
3649
3650 #################################################
3651 # should we build libsmbclient?
3652
3653 INSTALLCLIENTCMD_SH=:
3654 INSTALLCLIENTCMD_A=:
3655 INSTALLCLIENT=
3656 LIBSMBCLIENT_SHARED=
3657 LIBSMBCLIENT=
3658 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
3659 AC_ARG_WITH(libsmbclient,
3660 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes if shared libs supported)],
3661 [ case "$withval" in
3662   no) 
3663      AC_MSG_RESULT(no)
3664      ;;
3665   *)
3666      if test $BLDSHARED = true; then
3667         INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3668         ## build the static version of libsmbclient as well
3669         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3670         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3671         LIBSMBCLIENT=libsmbclient
3672         AC_MSG_RESULT(yes)
3673      else
3674         enable_static=yes
3675         AC_MSG_RESULT(no shared library support -- will supply static library)
3676      fi
3677      if test $enable_static = yes; then
3678         INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3679         LIBSMBCLIENT=libsmbclient
3680      fi
3681      INSTALLCLIENT=installclientlib
3682      ;;
3683   esac ],
3684 [
3685 # if unspecified, default is to built it iff possible.
3686   if test $BLDSHARED = true; then
3687      INSTALLCLIENTCMD_SH="\$(INSTALLCMD)"
3688      LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
3689      LIBSMBCLIENT=libsmbclient
3690      AC_MSG_RESULT(yes)
3691    else
3692      enable_static=yes
3693      AC_MSG_RESULT(no shared library support -- will supply static library)
3694    fi
3695    if test $enable_static = yes; then
3696      INSTALLCLIENTCMD_A="\$(INSTALLCMD)"
3697      LIBSMBCLIENT=libsmbclient
3698   fi]
3699   INSTALLCLIENT=installclientlib
3700 )
3701
3702
3703 #################################################
3704 # these tests are taken from the GNU fileutils package
3705 AC_CHECKING(how to get filesystem space usage)
3706 space=no
3707
3708 # Test for statvfs64.
3709 if test $space = no; then
3710   # SVR4
3711   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
3712   [AC_TRY_RUN([
3713 #if defined(HAVE_UNISTD_H)
3714 #include <unistd.h>
3715 #endif
3716 #include <sys/types.h>
3717 #include <sys/statvfs.h>
3718   main ()
3719   {
3720     struct statvfs64 fsd;
3721     exit (statvfs64 (".", &fsd));
3722   }],
3723   fu_cv_sys_stat_statvfs64=yes,
3724   fu_cv_sys_stat_statvfs64=no,
3725   fu_cv_sys_stat_statvfs64=cross)])
3726   if test $fu_cv_sys_stat_statvfs64 = yes; then
3727     space=yes
3728     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
3729   fi
3730 fi
3731
3732 # Perform only the link test since it seems there are no variants of the
3733 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
3734 # because that got a false positive on SCO OSR5.  Adding the declaration
3735 # of a `struct statvfs' causes this test to fail (as it should) on such
3736 # systems.  That system is reported to work fine with STAT_STATFS4 which
3737 # is what it gets when this test fails.
3738 if test $space = no; then
3739   # SVR4
3740   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
3741                  [AC_TRY_LINK([#include <sys/types.h>
3742 #include <sys/statvfs.h>],
3743                               [struct statvfs fsd; statvfs (0, &fsd);],
3744                               fu_cv_sys_stat_statvfs=yes,
3745                               fu_cv_sys_stat_statvfs=no)])
3746   if test $fu_cv_sys_stat_statvfs = yes; then
3747     space=yes
3748     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
3749   fi
3750 fi
3751
3752 if test $space = no; then
3753   # DEC Alpha running OSF/1
3754   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
3755   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
3756   [AC_TRY_RUN([
3757 #include <sys/param.h>
3758 #include <sys/types.h>
3759 #include <sys/mount.h>
3760   main ()
3761   {
3762     struct statfs fsd;
3763     fsd.f_fsize = 0;
3764     exit (statfs (".", &fsd, sizeof (struct statfs)));
3765   }],
3766   fu_cv_sys_stat_statfs3_osf1=yes,
3767   fu_cv_sys_stat_statfs3_osf1=no,
3768   fu_cv_sys_stat_statfs3_osf1=no)])
3769   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
3770   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
3771     space=yes
3772     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
3773   fi
3774 fi
3775
3776 if test $space = no; then
3777 # AIX
3778   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
3779 member (AIX, 4.3BSD)])
3780   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
3781   [AC_TRY_RUN([
3782 #ifdef HAVE_SYS_PARAM_H
3783 #include <sys/param.h>
3784 #endif
3785 #ifdef HAVE_SYS_MOUNT_H
3786 #include <sys/mount.h>
3787 #endif
3788 #ifdef HAVE_SYS_VFS_H
3789 #include <sys/vfs.h>
3790 #endif
3791   main ()
3792   {
3793   struct statfs fsd;
3794   fsd.f_bsize = 0;
3795   exit (statfs (".", &fsd));
3796   }],
3797   fu_cv_sys_stat_statfs2_bsize=yes,
3798   fu_cv_sys_stat_statfs2_bsize=no,
3799   fu_cv_sys_stat_statfs2_bsize=no)])
3800   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
3801   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
3802     space=yes
3803     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
3804   fi
3805 fi
3806
3807 if test $space = no; then
3808 # SVR3
3809   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
3810   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
3811   [AC_TRY_RUN([#include <sys/types.h>
3812 #include <sys/statfs.h>
3813   main ()
3814   {
3815   struct statfs fsd;
3816   exit (statfs (".", &fsd, sizeof fsd, 0));
3817   }],
3818     fu_cv_sys_stat_statfs4=yes,
3819     fu_cv_sys_stat_statfs4=no,
3820     fu_cv_sys_stat_statfs4=no)])
3821   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
3822   if test $fu_cv_sys_stat_statfs4 = yes; then
3823     space=yes
3824     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
3825   fi
3826 fi
3827
3828 if test $space = no; then
3829 # 4.4BSD and NetBSD
3830   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
3831 member (4.4BSD and NetBSD)])
3832   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
3833   [AC_TRY_RUN([#include <sys/types.h>
3834 #ifdef HAVE_SYS_PARAM_H
3835 #include <sys/param.h>
3836 #endif
3837 #ifdef HAVE_SYS_MOUNT_H
3838 #include <sys/mount.h>
3839 #endif
3840   main ()
3841   {
3842   struct statfs fsd;
3843   fsd.f_fsize = 0;
3844   exit (statfs (".", &fsd));
3845   }],
3846   fu_cv_sys_stat_statfs2_fsize=yes,
3847   fu_cv_sys_stat_statfs2_fsize=no,
3848   fu_cv_sys_stat_statfs2_fsize=no)])
3849   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
3850   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
3851     space=yes
3852         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
3853   fi
3854 fi
3855
3856 if test $space = no; then
3857   # Ultrix
3858   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
3859   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
3860   [AC_TRY_RUN([#include <sys/types.h>
3861 #ifdef HAVE_SYS_PARAM_H
3862 #include <sys/param.h>
3863 #endif
3864 #ifdef HAVE_SYS_MOUNT_H
3865 #include <sys/mount.h>
3866 #endif
3867 #ifdef HAVE_SYS_FS_TYPES_H
3868 #include <sys/fs_types.h>
3869 #endif
3870   main ()
3871   {
3872   struct fs_data fsd;
3873   /* Ultrix's statfs returns 1 for success,
3874      0 for not mounted, -1 for failure.  */
3875   exit (statfs (".", &fsd) != 1);
3876   }],
3877   fu_cv_sys_stat_fs_data=yes,
3878   fu_cv_sys_stat_fs_data=no,
3879   fu_cv_sys_stat_fs_data=no)])
3880   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
3881   if test $fu_cv_sys_stat_fs_data = yes; then
3882     space=yes
3883     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
3884   fi
3885 fi
3886
3887 #
3888 # As a gating factor for large file support, in order to
3889 # use <4GB files we must have the following minimal support
3890 # available.
3891 # long long, and a 64 bit off_t or off64_t.
3892 # If we don't have all of these then disable large
3893 # file support.
3894 #
3895 AC_MSG_CHECKING([if large file support can be enabled])
3896 AC_TRY_COMPILE([
3897 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
3898 #include <sys/types.h>
3899 #else
3900 __COMPILE_ERROR_
3901 #endif
3902 ],
3903 [int i],
3904 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
3905 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
3906         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
3907 fi
3908 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
3909
3910 AC_ARG_WITH(spinlocks, 
3911 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
3912 if test "x$with_spinlocks" = "xyes"; then
3913     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
3914
3915     case "$host_cpu" in
3916         sparc)
3917             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
3918             ;;
3919
3920         i386|i486|i586|i686)
3921             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
3922             ;;
3923
3924         mips)
3925             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
3926             ;;
3927
3928         powerpc)
3929             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
3930             ;;
3931     esac
3932 fi
3933
3934 #################################################
3935 # check for ACL support
3936
3937 AC_MSG_CHECKING(whether to support ACLs)
3938 AC_ARG_WITH(acl-support,
3939 [  --with-acl-support      Include ACL support (default=no)],
3940 [ case "$withval" in
3941   yes)
3942
3943         case "$host_os" in
3944         *sysv5*)
3945                 AC_MSG_RESULT(Using UnixWare ACLs)
3946                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
3947                 ;;
3948         *solaris*)
3949                 AC_MSG_RESULT(Using solaris ACLs)
3950                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
3951                 ;;
3952         *hpux*)
3953                 AC_MSG_RESULT(Using HPUX ACLs)
3954                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
3955                 ;;
3956         *irix*)
3957                 AC_MSG_RESULT(Using IRIX ACLs)
3958                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
3959                 ;;
3960         *aix*)
3961                 AC_MSG_RESULT(Using AIX ACLs)
3962                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
3963                 ;;
3964         *osf*)
3965                 AC_MSG_RESULT(Using Tru64 ACLs)
3966                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
3967                 ACL_LIBS="$ACL_LIBS -lpacl"
3968                 ;;
3969         *freebsd5*|*freebsd6*)
3970                 AC_MSG_RESULT(Using FreeBSD posix ACLs)
3971                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
3972                 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3973                 ;;
3974         *linux*)
3975                 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
3976                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
3977                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
3978                 acl_LIBS=$LIBS
3979                 LIBS="$LIBS -lacl"
3980                 AC_TRY_LINK([#include <sys/types.h>
3981 #include <sys/acl.h>],
3982 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
3983 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
3984                 LIBS=$acl_LIBS])
3985                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
3986                                 AC_MSG_RESULT(Using posix ACLs)
3987                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
3988                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
3989                                 acl_LIBS=$LIBS
3990                                 LIBS="$LIBS -lacl"
3991                                 AC_TRY_LINK([#include <sys/types.h>
3992 #include <sys/acl.h>],
3993 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
3994 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
3995                                 LIBS=$acl_LIBS])
3996                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
3997                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
3998                                 fi
3999                         fi
4000             ;;
4001          *)
4002                 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
4003                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
4004                 acl_LIBS=$LIBS
4005                 LIBS="$LIBS -lacl"
4006                 AC_TRY_LINK([#include <sys/types.h>
4007 #include <sys/acl.h>],
4008 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
4009 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)
4010                 LIBS=$acl_LIBS])
4011                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
4012                                 AC_MSG_RESULT(Using posix ACLs)
4013                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
4014                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
4015                                 acl_LIBS=$LIBS
4016                                 LIBS="$LIBS -lacl"
4017                                 AC_TRY_LINK([#include <sys/types.h>
4018 #include <sys/acl.h>],
4019 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
4020 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)
4021                                 LIBS=$acl_LIBS])
4022                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
4023                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
4024                                 fi
4025                         fi
4026             ;;
4027         esac
4028         ;;
4029   *)
4030     AC_MSG_RESULT(no)
4031     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
4032     ;;
4033   esac ],
4034   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
4035   AC_MSG_RESULT(no)
4036 )
4037
4038 #################################################
4039 # check for sendfile support
4040
4041 with_sendfile_support=yes
4042 AC_MSG_CHECKING(whether to check to support sendfile)
4043 AC_ARG_WITH(sendfile-support,
4044 [  --with-sendfile-support Check for sendfile support (default=yes)],
4045 [ case "$withval" in
4046   yes)
4047
4048         AC_MSG_RESULT(yes);
4049
4050         case "$host_os" in
4051         *linux*)
4052                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
4053                 AC_TRY_LINK([#include <sys/sendfile.h>],
4054 [\
4055 int tofd, fromfd;
4056 off64_t offset;
4057 size_t total;
4058 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
4059 ],
4060 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
4061
4062                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
4063                 AC_TRY_LINK([#include <sys/sendfile.h>],
4064 [\
4065 int tofd, fromfd;
4066 off_t offset;
4067 size_t total;
4068 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
4069 ],
4070 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4071
4072 # Try and cope with broken Linux sendfile....
4073                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
4074                 AC_TRY_LINK([\
4075 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
4076 #undef _FILE_OFFSET_BITS
4077 #endif
4078 #include <sys/sendfile.h>],
4079 [\
4080 int tofd, fromfd;
4081 off_t offset;
4082 size_t total;
4083 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
4084 ],
4085 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
4086
4087         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
4088                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
4089                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
4090                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
4091         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4092                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4093                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
4094                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
4095         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
4096                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
4097                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
4098         else
4099                 AC_MSG_RESULT(no);
4100         fi
4101
4102         ;;
4103         *freebsd* | *DragonFly* )
4104                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
4105                 AC_TRY_LINK([\
4106 #include <sys/types.h>
4107 #include <unistd.h>
4108 #include <sys/socket.h>
4109 #include <sys/uio.h>],
4110 [\
4111         int fromfd, tofd, ret, total=0;
4112         off_t offset, nwritten;
4113         struct sf_hdtr hdr;
4114         struct iovec hdtrl;
4115         hdr.headers = &hdtrl;
4116         hdr.hdr_cnt = 1;
4117         hdr.trailers = NULL;
4118         hdr.trl_cnt = 0;
4119         hdtrl.iov_base = NULL;
4120         hdtrl.iov_len = 0;
4121         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
4122 ],
4123 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4124
4125         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4126                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
4127                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
4128                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4129         else
4130                 AC_MSG_RESULT(no);
4131         fi
4132         ;;
4133
4134         *hpux*)
4135                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
4136                 AC_TRY_LINK([\
4137 #include <sys/socket.h>
4138 #include <sys/uio.h>],
4139 [\
4140         int fromfd, tofd;
4141         size_t total=0;
4142         struct iovec hdtrl[2];
4143         ssize_t nwritten;
4144         off64_t offset;
4145
4146         hdtrl[0].iov_base = 0;
4147         hdtrl[0].iov_len = 0;
4148
4149         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
4150 ],
4151 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
4152         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
4153                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
4154                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4155                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4156         else
4157                 AC_MSG_RESULT(no);
4158         fi
4159
4160                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
4161                 AC_TRY_LINK([\
4162 #include <sys/socket.h>
4163 #include <sys/uio.h>],
4164 [\
4165         int fromfd, tofd;
4166         size_t total=0;
4167         struct iovec hdtrl[2];
4168         ssize_t nwritten;
4169         off_t offset;
4170
4171         hdtrl[0].iov_base = 0;
4172         hdtrl[0].iov_len = 0;
4173
4174         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
4175 ],
4176 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4177         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4178                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4179                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
4180                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4181         else
4182                 AC_MSG_RESULT(no);
4183         fi
4184         ;;
4185
4186         *solaris*)
4187                 AC_CHECK_LIB(sendfile,sendfilev)
4188                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
4189                 AC_TRY_LINK([\
4190 #include <sys/sendfile.h>],
4191 [\
4192         int sfvcnt;
4193         size_t xferred;
4194         struct sendfilevec vec[2];
4195         ssize_t nwritten;
4196         int tofd;
4197
4198         sfvcnt = 2;
4199
4200         vec[0].sfv_fd = SFV_FD_SELF;
4201         vec[0].sfv_flag = 0;
4202         vec[0].sfv_off = 0;
4203         vec[0].sfv_len = 0;
4204
4205         vec[1].sfv_fd = 0;
4206         vec[1].sfv_flag = 0;
4207         vec[1].sfv_off = 0;
4208         vec[1].sfv_len = 0;
4209         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
4210 ],
4211 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
4212
4213         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
4214                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
4215                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
4216                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
4217         else
4218                 AC_MSG_RESULT(no);
4219         fi
4220
4221                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
4222                 AC_TRY_LINK([\
4223 #include <sys/sendfile.h>],
4224 [\
4225         int sfvcnt;
4226         size_t xferred;
4227         struct sendfilevec vec[2];
4228         ssize_t nwritten;
4229         int tofd;
4230
4231         sfvcnt = 2;
4232
4233         vec[0].sfv_fd = SFV_FD_SELF;
4234         vec[0].sfv_flag = 0;
4235         vec[0].sfv_off = 0;
4236         vec[0].sfv_len = 0;
4237
4238         vec[1].sfv_fd = 0;
4239         vec[1].sfv_flag = 0;
4240         vec[1].sfv_off = 0;
4241         vec[1].sfv_len = 0;
4242         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
4243 ],
4244 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
4245
4246         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
4247                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
4248                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
4249                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
4250         else
4251                 AC_MSG_RESULT(no);
4252         fi
4253         ;;
4254         *aix*)
4255                 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
4256                 AC_TRY_LINK([\
4257 #include <sys/socket.h>],
4258 [\
4259         int fromfd, tofd;
4260         size_t total=0;
4261         struct sf_parms hdtrl;
4262         ssize_t nwritten;
4263         off64_t offset;
4264
4265         hdtrl.header_data = 0;
4266         hdtrl.header_length = 0;
4267         hdtrl.file_descriptor = fromfd;
4268         hdtrl.file_offset = 0;
4269         hdtrl.file_bytes = 0;
4270         hdtrl.trailer_data = 0;
4271         hdtrl.trailer_length = 0;
4272
4273         nwritten = send_file(&tofd, &hdtrl, 0);
4274 ],
4275 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
4276         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
4277                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
4278                 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
4279                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
4280         else
4281                 AC_MSG_RESULT(no);
4282         fi
4283         ;;
4284         *)
4285         ;;
4286         esac
4287         ;;
4288   *)
4289     AC_MSG_RESULT(no)
4290     ;;
4291   esac ],
4292   AC_MSG_RESULT(yes)
4293 )
4294
4295
4296 #################################################
4297 # Check whether winbind is supported on this platform.  If so we need to
4298 # build and install client programs, sbin programs and shared libraries
4299
4300 AC_MSG_CHECKING(whether to build winbind)
4301
4302 # Initially, the value of $host_os decides whether winbind is supported
4303
4304 HAVE_WINBIND=yes
4305
4306 # Define the winbind shared library name and any specific linker flags
4307 # it needs to be built with.
4308
4309 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
4310 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
4311 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
4312
4313 case "$host_os" in
4314         *linux*)
4315                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
4316                 ;;
4317         *freebsd5*|*freebsd6*)
4318                 # FreeBSD winbind client is implemented as a wrapper around
4319                 # the Linux version.
4320                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
4321                     nsswitch/winbind_nss_linux.o"
4322                 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
4323                 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
4324                 ;;
4325         *irix*)
4326                 # IRIX has differently named shared libraries
4327                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
4328                 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
4329                 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
4330                 ;;
4331         *solaris*)
4332                 # Solaris winbind client is implemented as a wrapper around
4333                 # the Linux version.
4334                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
4335                     nsswitch/winbind_nss_linux.o"
4336                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
4337                 ;;
4338         *hpux11*)
4339                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
4340                 ;;
4341         *aix*)
4342                 # AIX has even differently named shared libraries.  No
4343                 # WINS support has been implemented yet.
4344                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
4345                 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
4346                 WINBIND_NSS="nsswitch/WINBIND"
4347                 WINBIND_WINS_NSS=""
4348                 ;;
4349         *)
4350                 HAVE_WINBIND=no
4351                 winbind_no_reason=", unsupported on $host_os"
4352                 ;;
4353 esac
4354
4355 AC_SUBST(WINBIND_NSS)
4356 AC_SUBST(WINBIND_WINS_NSS)
4357 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
4358 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
4359 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
4360
4361 # Check the setting of --with-winbind
4362
4363 AC_ARG_WITH(winbind,
4364 [  --with-winbind          Build winbind (default, if supported by OS)],
4365
4366   case "$withval" in
4367         yes)
4368                 HAVE_WINBIND=yes
4369                 ;;
4370         no)
4371                 HAVE_WINBIND=no
4372                 winbind_reason=""
4373                 ;;
4374   esac ],
4375 )
4376
4377 # We need unix domain sockets for winbind
4378
4379 if test x"$HAVE_WINBIND" = x"yes"; then
4380         if test x"$samba_cv_unixsocket" = x"no"; then
4381                 winbind_no_reason=", no unix domain socket support on $host_os"
4382                 HAVE_WINBIND=no
4383         fi
4384 fi
4385
4386 # Display test results
4387
4388 if test x"$HAVE_WINBIND" = x"yes"; then
4389         AC_MSG_RESULT(yes)
4390         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
4391
4392         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
4393         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
4394         if test $BLDSHARED = true; then
4395                 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
4396
4397                 if test x"$with_pam" = x"yes"; then
4398                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.$SHLIBEXT"
4399                 fi
4400         fi
4401 else
4402         AC_MSG_RESULT(no$winbind_no_reason)
4403 fi
4404
4405 # Solaris has some extra fields in struct passwd that need to be
4406 # initialised otherwise nscd crashes.  
4407  
4408 AC_CHECK_MEMBER(struct passwd.pw_comment,
4409                 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
4410                 [#include <pwd.h>])
4411
4412 AC_CHECK_MEMBER(struct passwd.pw_age,
4413                 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
4414                 [#include <pwd.h>])
4415
4416 # AIX 4.3.x and 5.1 do not have as many members in
4417 # struct secmethod_table as AIX 5.2
4418 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
4419        [#include <usersec.h>])
4420 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
4421        [#include <usersec.h>])
4422
4423
4424 #################################################
4425 # Check to see if we should use the included popt 
4426
4427 AC_ARG_WITH(included-popt,
4428 [  --with-included-popt    use bundled popt library, not from system],
4429
4430   case "$withval" in
4431         yes)
4432                 INCLUDED_POPT=yes
4433                 ;;
4434         no)
4435                 INCLUDED_POPT=no
4436                 ;;
4437   esac ],
4438 )
4439 if test x"$INCLUDED_POPT" != x"yes"; then
4440     AC_CHECK_LIB(popt, poptGetContext,
4441                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
4442 fi
4443
4444 AC_MSG_CHECKING(whether to use included popt)
4445 if test x"$INCLUDED_POPT" = x"yes"; then
4446     AC_MSG_RESULT(yes)
4447     BUILD_POPT='$(POPT_OBJS)'
4448         POPTLIBS='$(POPT_OBJS)'
4449     FLAGS1="-I$srcdir/popt"
4450 else
4451     AC_MSG_RESULT(no)
4452         BUILD_POPT=""
4453     POPTLIBS="-lpopt"
4454 fi
4455 AC_SUBST(BUILD_POPT)
4456 AC_SUBST(POPTLIBS)
4457 AC_SUBST(FLAGS1)
4458
4459 #################################################
4460 # Check if the user wants Python
4461
4462 # At the moment, you can use this to set which Python binary to link
4463 # against.  (Libraries built for Python2.2 can't be used by 2.1,
4464 # though they can coexist in different directories.)  In the future
4465 # this might make the Python stuff be built by default.
4466
4467 # Defaulting python breaks the clean target if python isn't installed
4468
4469 PYTHON=
4470
4471 AC_ARG_WITH(python,
4472 [  --with-python=PYTHONNAME  build Python libraries],
4473 [ case "${withval-python}" in
4474   yes)
4475         PYTHON=python
4476         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
4477         ;;
4478   no)
4479         PYTHON=
4480         ;;
4481   *)
4482         PYTHON=${withval-python}
4483         ;;
4484   esac ])
4485 AC_SUBST(PYTHON)
4486
4487 for i in `echo $default_static_modules | sed -e's/,/ /g'`
4488 do
4489         eval MODULE_DEFAULT_$i=STATIC
4490 done
4491
4492 for i in `echo $default_shared_modules | sed -e's/,/ /g'`
4493 do
4494         dnl Fall back to static if we cannot build shared libraries
4495         eval MODULE_DEFAULT_$i=STATIC
4496
4497         if test $BLDSHARED = true; then
4498                 eval MODULE_DEFAULT_$i=SHARED
4499         fi
4500 done
4501
4502 dnl Always built these modules static
4503 MODULE_pdb_guest=STATIC
4504 MODULE_rpc_spoolss=STATIC
4505 MODULE_rpc_srv=STATIC
4506 MODULE_idmap_tdb=STATIC
4507
4508 AC_ARG_WITH(static-modules,
4509 [  --with-static-modules=MODULES  Comma-seperated list of names of modules to statically link in],
4510 [ if test $withval; then
4511         for i in `echo $withval | sed -e's/,/ /g'`
4512         do
4513                 eval MODULE_$i=STATIC
4514         done
4515 fi ])
4516
4517 AC_ARG_WITH(shared-modules,
4518 [  --with-shared-modules=MODULES  Comma-seperated list of names of modules to build shared],
4519 [ if test $withval; then
4520         for i in `echo $withval | sed -e's/,/ /g'`
4521         do
4522                         eval MODULE_$i=SHARED
4523         done
4524 fi ])
4525
4526 ###########################################################################
4527 ## contributed pdb_modules
4528
4529 SMB_MODULE(pdb_xml, passdb/pdb_xml.o, "bin/xml.$SHLIBEXT", PDB,
4530                   [ PASSDB_LIBS="$PASSDB_LIBS $XML_LIBS" ] )
4531 SMB_MODULE(pdb_mysql, passdb/pdb_mysql.o, "bin/mysql.$SHLIBEXT", PDB, 
4532                    [ PASSDB_LIBS="$PASSDB_LIBS $MYSQL_LIBS" ]   )
4533 SMB_MODULE(pdb_pgsql, passdb/pdb_pgsql.o, "bin/pgsql.$SHLIBEXT", PDB, 
4534                    [ PASSDB_LIBS="$PASSDB_LIBS $PGSQL_LIBS" ]   )
4535
4536 ## end of contributed pdb_modules
4537 ###########################################################################
4538
4539 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB, 
4540                    [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
4541 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
4542 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
4543 SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
4544 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
4545
4546 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
4547 SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
4548 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
4549 SMB_MODULE(rpc_wks, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
4550 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
4551 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
4552 SMB_MODULE(rpc_dfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
4553 SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
4554 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
4555 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
4556 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
4557 SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
4558 SMB_SUBSYSTEM(RPC,smbd/server.o)
4559
4560 SMB_MODULE(idmap_ldap, sam/idmap_ldap.o, "bin/idmap_ldap.$SHLIBEXT", IDMAP)
4561 SMB_MODULE(idmap_tdb, sam/idmap_tdb.o, "bin/idmap_tdb.$SHLIBEXT", IDMAP)
4562 SMB_MODULE(idmap_rid, sam/idmap_rid.o, "bin/idmap_rid.$SHLIBEXT", IDMAP)
4563 SMB_SUBSYSTEM(IDMAP,sam/idmap.o)
4564
4565 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
4566 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
4567 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
4568 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
4569 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
4570
4571 SMB_MODULE(auth_rhosts, \$(AUTH_RHOSTS_OBJ), "bin/rhosts.$SHLIBEXT", AUTH)
4572 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
4573 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
4574 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
4575 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
4576 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
4577 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
4578 SMB_SUBSYSTEM(AUTH,auth/auth.o)
4579
4580 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
4581 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
4582 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
4583 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
4584 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
4585 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
4586 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
4587 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
4588 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
4589 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
4590 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
4591 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
4592 SMB_MODULE(vfs_catia, \$(VFS_AFSACL_OBJ), "bin/catia.$SHLIBEXT", VFS)
4593 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
4594
4595 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
4596
4597 #################################################
4598 # do extra things if we are running insure
4599
4600 if test "${ac_cv_prog_CC}" = "insure"; then
4601         CPPFLAGS="$CPPFLAGS -D__INSURE__"
4602 fi
4603
4604 #################################################
4605 # Display summary of libraries detected
4606
4607 AC_MSG_RESULT([Using libraries:])
4608 AC_MSG_RESULT([    LIBS = $LIBS])
4609 if test x"$with_ads_support" != x"no"; then
4610    AC_MSG_RESULT([    KRB5_LIBS = $KRB5_LIBS])
4611 fi
4612 if test x"$with_ldap_support" != x"no"; then
4613    AC_MSG_RESULT([    LDAP_LIBS = $LDAP_LIBS])
4614 fi
4615 AC_MSG_RESULT([    AUTH_LIBS = $AUTH_LIBS])
4616
4617 #################################################
4618 # final configure stuff
4619
4620 AC_MSG_CHECKING([configure summary])
4621 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
4622            AC_MSG_RESULT(yes),
4623            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
4624            AC_MSG_WARN([cannot run when cross-compiling]))
4625
4626 builddir=`pwd`
4627 AC_SUBST(builddir)
4628
4629 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
4630 LIB_REMOVE_USR_LIB(LDFLAGS)
4631 LIB_REMOVE_USR_LIB(LIBS)
4632
4633 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
4634 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
4635 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
4636
4637 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh)
4638
4639 #################################################
4640 # Print very concise instructions on building/use
4641 if test "x$enable_dmalloc" = xyes
4642 then
4643         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
4644         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])
4645 fi