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