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