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