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