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