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