One more possible fix for Solaris CC and GCC
[ira/wip.git] / source3 / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2 AC_INIT(include/includes.h)
3 AC_CONFIG_HEADER(include/config.h)
4 # we want to be compatibe with older versions of Samba
5 AC_PREFIX_DEFAULT(/usr/local/samba)
6
7 dnl Unique-to-Samba variables we'll be playing with.
8 AC_SUBST(SHELL)
9 AC_SUBST(RUNPROG)
10 AC_SUBST(MPROGS)
11 AC_SUBST(LDSHFLAGS)
12 AC_SUBST(SHLD)
13 AC_SUBST(HOST_OS)
14 AC_SUBST(PAM_MOD)
15 AC_SUBST(WRAP)
16 AC_SUBST(WRAP32)
17 AC_SUBST(PICFLAG)
18 AC_SUBST(PICSUFFIX)
19 AC_SUBST(POBAD_CC)
20 AC_SUBST(SHLIBEXT)
21 AC_SUBST(BLDSHARED)
22
23 # compile with optimisation and without debugging by default
24 CFLAGS="-O ${CFLAGS}"
25
26 AC_ARG_ENABLE(debug, [  --enable-debug        turn on debugging [default=no]],
27     [if eval "test x$enable_debug = xyes"; then
28         CFLAGS="${CFLAGS} -g"
29     fi])
30
31
32 dnl Checks for programs.
33 AC_PROG_CC
34 AC_PROG_INSTALL
35 AC_PROG_AWK
36
37 dnl Check if C compiler understands -c and -o at the same time
38 AC_PROG_CC_C_O
39 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
40       BROKEN_CC=
41 else
42       BROKEN_CC=#
43 fi
44 AC_SUBST(BROKEN_CC)
45
46 dnl Check if the C compiler understands volatile (it should, being ANSI).
47 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
48     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
49         samba_cv_volatile=yes,samba_cv_volatile=no)])
50 if test x"$samba_cv_volatile" = x"yes"; then
51    AC_DEFINE(HAVE_VOLATILE)
52 fi
53
54
55 #################################################
56 # set codepage directory location
57 AC_ARG_WITH(codepagedir,
58 [  --with-codepagedir=DIR     Where to put codepage files (\$libdir/codepages)],
59 [ case "$withval" in
60   yes|no)
61   #
62   # Just in case anybody does it
63   #
64     AC_MSG_WARN([--with-codepagedir called without argument - will use default])
65   ;;
66   * )
67     codepagedir="$withval"
68     ;;
69   esac])
70
71
72 AC_CANONICAL_SYSTEM
73
74 dnl Add #include for broken IRIX header files
75   case "$host_os" in
76         *irix6*) AC_ADD_INCLUDE(<standards.h>)
77         ;;
78 esac
79
80 AC_VALIDATE_CACHE_SYSTEM_TYPE
81
82 #
83 # Config CPPFLAG settings for strange OS's that must be set
84 # before other tests.
85 #
86 case "$host_os" in
87 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
88     *hpux*)
89       AC_PROG_CC_FLAG(Ae)
90       if test $ac_cv_prog_cc_Ae = yes; then
91         CPPFLAGS="$CPPFLAGS -Ae"
92       fi
93 #
94 # Defines needed for HPUX support.
95 # HPUX has bigcrypt but (sometimes?) doesn't use it for
96 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
97 #
98       case `uname -r` in
99                         *9*|*10*)
100                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE"
101                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS)
102                                 ;;
103                         *11*)
104                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE"
105                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS)
106                                 ;;
107       esac
108       ;;
109 #
110 # AIX4.x doesn't even admit to having large
111 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
112 #
113     *aix4*)
114           AC_MSG_RESULT([enabling large file support])
115       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
116       ;;    
117 #
118 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
119 # to the existance of large files..
120 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
121 # recommendations on large file support, however it makes the
122 # compile work using gcc 2.7 and 2.8, whereas using the Sun
123 # recommendation makes the compile fail on gcc2.7. JRA.
124 #
125         *solaris*)
126                 case `uname -r` in
127                         5.6*|5.7*)
128                         AC_MSG_RESULT([enabling large file support])
129                         if test "$ac_cv_prog_gcc" = yes; then
130                                 ${CC-cc} -v >conftest.c 2>&1
131                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
132                                 rm -fr conftest.c
133                                 case "$ac_cv_gcc_compiler_version_number" in
134                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
135                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
136                                                 ;;
137                                         *)
138                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
139                                                 ;;
140                                 esac
141                         else
142                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
143                         fi
144                         ;;
145                 esac
146                 ;;
147 #
148 # Tests needed for SINIX large file support.
149 #
150     *sysv4*)
151       if test $host = mips-sni-sysv4 ; then
152         AC_MSG_CHECKING([for LFS support])
153         old_CPPFLAGS="$CPPFLAGS"
154         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
155         AC_TRY_RUN([
156 #include <unistd.h>
157 main () {
158 #if _LFS64_LARGEFILE == 1
159 exit(0);
160 #else
161 exit(1);
162 #endif
163 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
164         CPPFLAGS="$old_CPPFLAGS"
165         if test x$SINIX_LFS_SUPPORT = xyes ; then
166           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
167           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
168           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
169           LIBS="`getconf LFS64_LIBS` $LIBS"
170         fi
171       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
172       fi
173     ;;
174
175 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
176 #
177     *linux*)
178         AC_MSG_CHECKING([for LFS support])
179         old_CPPFLAGS="$CPPFLAGS"
180         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
181        AC_TRY_RUN([
182 #include <unistd.h>
183 #include <sys/utsname.h>
184 main() {
185 #if _LFS64_LARGEFILE == 1
186        struct utsname uts;
187        char *release;
188        int major, minor;
189
190        /* Ensure this is glibc 2.2 or higher */
191 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
192        int libc_major = __GLIBC__;
193        int libc_minor = __GLIBC_MINOR__;
194
195        if (libc_major < 2)
196               exit(1);
197        if (libc_minor < 2)
198               exit(1);
199 #endif
200
201        /* Ensure this is kernel 2.4 or higher */
202
203        uname(&uts);
204        release = uts.release;
205        major = atoi(strsep(&release, "."));
206        minor = atoi(strsep(&release, "."));
207
208        if (major > 2 || (major == 2 && minor > 3))
209                exit(0);
210        exit(1);
211 #else
212        exit(1);
213 #endif
214 }
215 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
216         CPPFLAGS="$old_CPPFLAGS"
217         if test x$LINUX_LFS_SUPPORT = xyes ; then
218           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
219         fi
220        AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
221                 ;;
222
223     *hurd*)
224         AC_MSG_CHECKING([for LFS support])
225         old_CPPFLAGS="$CPPFLAGS"
226         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
227         AC_TRY_RUN([
228 #include <unistd.h>
229 main () {
230 #if _LFS64_LARGEFILE == 1
231 exit(0);
232 #else
233 exit(1);
234 #endif
235 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
236         CPPFLAGS="$old_CPPFLAGS"
237         if test x$GLIBC_LFS_SUPPORT = xyes ; then
238           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
239         fi
240       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
241     ;;
242
243 esac
244
245 AC_INLINE
246 AC_HEADER_STDC
247 AC_HEADER_DIRENT
248 AC_HEADER_TIME
249 AC_HEADER_SYS_WAIT
250 AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
251 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h)
252 AC_CHECK_HEADERS(compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
253 AC_CHECK_HEADERS(sys/param.h ctype.h sys/un.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h)
254 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
255 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
256 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
257 AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h)
258
259 #
260 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
261 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
262 #
263 case "$host_os" in
264     *hpux*)
265                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
266                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
267                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
268                    AC_DEFINE(HAVE_SHADOW_H)
269                 fi
270         ;;
271 esac
272 AC_CHECK_HEADERS(shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
273 AC_CHECK_HEADERS(nss.h nss_common.h sys/security.h security/pam_appl.h security/pam_modules.h)
274 AC_CHECK_HEADERS(stropts.h poll.h)
275 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
276 AC_CHECK_HEADERS(sys/acl.h sys/cdefs.h glob.h)
277
278 # For experimental utmp support (lastlog on some BSD-like systems)
279 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
280  
281 # For quotas on Veritas VxFS filesystems
282 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
283
284 AC_CHECK_SIZEOF(int,cross)
285 AC_CHECK_SIZEOF(long,cross)
286 AC_CHECK_SIZEOF(short,cross)
287
288 AC_C_CONST
289 AC_C_INLINE
290 AC_C_BIGENDIAN
291 AC_C_CHAR_UNSIGNED
292
293 AC_TYPE_SIGNAL
294 AC_TYPE_UID_T
295 AC_TYPE_MODE_T
296 AC_TYPE_OFF_T
297 AC_TYPE_SIZE_T
298 AC_TYPE_PID_T
299 AC_STRUCT_ST_RDEV
300 AC_DIRENT_D_OFF
301 AC_CHECK_TYPE(ino_t,unsigned)
302 AC_CHECK_TYPE(loff_t,off_t)
303 AC_CHECK_TYPE(offset_t,loff_t)
304 AC_CHECK_TYPE(ssize_t, int)
305 AC_CHECK_TYPE(wchar_t, unsigned short)
306
307 # we need libcups for CUPS support...
308 AC_CHECK_LIB(cups,httpConnect)
309
310 # we need libdl for PAM and the new VFS code
311 AC_CHECK_LIB(dl, dlopen, [LIBS="$LIBS -ldl";
312         AC_DEFINE(HAVE_LIBDL)])
313
314 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
315     AC_TRY_COMPILE([
316 #include <sys/types.h>
317 #if STDC_HEADERS
318 #include <stdlib.h>
319 #include <stddef.h>
320 #endif
321 #include <sys/socket.h>],[socklen_t i = 0],
322         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
323 if test x"$samba_cv_socklen_t" = x"yes"; then
324    AC_DEFINE(HAVE_SOCKLEN_T_TYPE)
325 fi
326
327 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
328     AC_TRY_COMPILE([
329 #include <sys/types.h>
330 #if STDC_HEADERS
331 #include <stdlib.h>
332 #include <stddef.h>
333 #endif
334 #include <signal.h>],[sig_atomic_t i = 0],
335         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
336 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
337    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE)
338 fi
339
340 # stupid headers have the functions but no declaration. grrrr.
341 AC_HAVE_DECL(errno, [#include <errno.h>])
342 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
343 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
344 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
345 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
346 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
347 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
348
349 # and glibc has setresuid under linux but the function does
350 # nothing until kernel 2.1.44! very dumb.
351 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
352     AC_TRY_RUN([#include <errno.h>
353 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
354         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
355 if test x"$samba_cv_have_setresuid" = x"yes"; then
356     AC_DEFINE(HAVE_SETRESUID)
357 fi
358
359 # Do the same check for setresguid...
360 #
361 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
362     AC_TRY_RUN([#include <unistd.h>
363 #include <errno.h>
364 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
365         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
366 if test x"$samba_cv_have_setresgid" = x"yes"; then
367     AC_DEFINE(HAVE_SETRESGID)
368 fi
369
370 AC_FUNC_MEMCMP
371
372 ###############################################
373 # test for where we get crypt() from
374 AC_CHECK_FUNCS(crypt)
375 if test x"$ac_cv_func_crypt" = x"no"; then
376     AC_CHECK_LIB(crypt, crypt, [LIBS="$LIBS -lcrypt";
377         AC_DEFINE(HAVE_CRYPT)])
378 fi
379
380
381 ###############################################
382 # Readline included by default unless explicitly asked not to
383 test "${with_readline+set}" != "set" && with_readline=yes
384
385 # test for where we get readline() from
386 AC_MSG_CHECKING(whether to use readline)
387 AC_ARG_WITH(readline,
388 [  --with-readline[=DIR]   Look for readline include/libs in DIR
389   --without-readline      Don't include readline support],
390 [  case "$with_readline" in
391   yes)
392     AC_MSG_RESULT(yes)
393
394     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
395     AC_CHECK_HEADERS(readline/history.h)
396
397     AC_CHECK_HEADERS(readline.h readline/readline.h,[
398       for termlib in ncurses curses termcap terminfo termlib; do
399        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
400       done
401       AC_CHECK_LIB(readline, rl_callback_handler_install,
402        [TERMLIBS="-lreadline $TERMLIBS"
403        AC_DEFINE(HAVE_LIBREADLINE)
404        break], [TERMLIBS=], $TERMLIBS)])
405     ;;
406   no)
407     AC_MSG_RESULT(no)
408     ;;
409   *)
410     AC_MSG_RESULT(yes)
411
412     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
413     # alternate readline path
414     _ldflags=${LDFLAGS}
415     _cppflags=${CPPFLAGS}
416
417     # Add additional search path
418     LDFLAGS="-L$with_readline/lib $LDFLAGS"
419     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
420
421     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
422     AC_CHECK_HEADERS(readline/history.h)
423
424     AC_CHECK_HEADERS(readline.h readline/readline.h,[
425       for termlib in ncurses curses termcap terminfo termlib; do
426        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
427       done
428       AC_CHECK_LIB(readline, rl_callback_handler_install,
429        [TERMLDFLAGS="-L$with_readline/lib"
430        TERMCPPFLAGS="-I$with_readline/include"
431        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
432        TERMLIBS="-lreadline $TERMLIBS"
433        AC_DEFINE(HAVE_LIBREADLINE)
434        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
435
436     LDFLAGS=$_ldflags
437     ;;
438   esac],
439   AC_MSG_RESULT(no)
440 )
441 AC_SUBST(TERMLIBS)
442 AC_SUBST(TERMLDFLAGS)
443
444 # The following test taken from the cvs sources
445 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
446 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
447 # libsocket.so which has a bad implementation of gethostbyname (it
448 # only looks in /etc/hosts), so we only look for -lsocket if we need
449 # it.
450 AC_CHECK_FUNCS(connect)
451 if test x"$ac_cv_func_connect" = x"no"; then
452     case "$LIBS" in
453     *-lnsl*) ;;
454     *) AC_CHECK_LIB(nsl_s, printf) ;;
455     esac
456     case "$LIBS" in
457     *-lnsl*) ;;
458     *) AC_CHECK_LIB(nsl, printf) ;;
459     esac
460     case "$LIBS" in
461     *-lsocket*) ;;
462     *) AC_CHECK_LIB(socket, connect) ;;
463     esac
464     case "$LIBS" in
465     *-linet*) ;;
466     *) AC_CHECK_LIB(inet, connect) ;;
467     esac
468     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
469     dnl has been cached.
470     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
471        test x"$ac_cv_lib_inet_connect" = x"yes"; then
472         # ac_cv_func_connect=yes
473         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
474         AC_DEFINE(HAVE_CONNECT)
475     fi
476 fi
477
478 ###############################################
479 # test for where we get get_yp_default_domain() from
480 AC_CHECK_FUNCS(yp_get_default_domain)
481 if test x"$ac_cv_func_yp_get_default_domain" = x"no"; then
482         AC_CHECK_LIB(nsl, yp_get_default_domain, [LIBS="$LIBS -lnsl";
483         AC_DEFINE(HAVE_YP_GET_DEFAULT_DOMAIN)]) 
484 fi
485
486 # Check if we have execl, if not we need to compile smbrun.
487 AC_CHECK_FUNCS(execl)
488 if test x"$ac_cv_func_execl" = x"no"; then
489     RUNPROG="bin/smbrun"
490 else
491     RUNPROG=""
492 fi
493
494 AC_CHECK_FUNCS(waitpid getcwd strdup strtoul strerror chown fchown chmod fchmod chroot)
495 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset)
496 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
497 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction innetgr setnetgrent getnetgrent endnetgrent)
498 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
499 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
500 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
501 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
502 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
503 # setbuffer is needed for smbtorture
504 AC_CHECK_FUNCS(setbuffer)
505
506 # syscall() is needed for smbwrapper.
507 AC_CHECK_FUNCS(syscall)
508
509 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
510 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
511 AC_CHECK_FUNCS(__getcwd _getcwd)
512 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
513 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
514 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
515 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
516 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
517 AC_CHECK_FUNCS(_write __write _fork __fork)
518 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
519 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
520 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
521 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
522 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
523
524 #
525 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
526 #
527
528 if test x$ac_cv_func_stat64 = xno ; then
529   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
530   AC_TRY_LINK([
531 #if defined(HAVE_UNISTD_H)
532 #include <unistd.h>
533 #endif
534 #include <sys/stat.h>
535 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
536   AC_MSG_RESULT([$ac_cv_func_stat64])
537   if test x$ac_cv_func_stat64 = xyes ; then
538     AC_DEFINE(HAVE_STAT64)
539   fi
540 fi
541
542 if test x$ac_cv_func_lstat64 = xno ; then
543   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
544   AC_TRY_LINK([
545 #if defined(HAVE_UNISTD_H)
546 #include <unistd.h>
547 #endif
548 #include <sys/stat.h>
549 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
550   AC_MSG_RESULT([$ac_cv_func_lstat64])
551   if test x$ac_cv_func_lstat64 = xyes ; then
552     AC_DEFINE(HAVE_LSTAT64)
553   fi
554 fi
555
556 if test x$ac_cv_func_fstat64 = xno ; then
557   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
558   AC_TRY_LINK([
559 #if defined(HAVE_UNISTD_H)
560 #include <unistd.h>
561 #endif
562 #include <sys/stat.h>
563 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
564   AC_MSG_RESULT([$ac_cv_func_fstat64])
565   if test x$ac_cv_func_fstat64 = xyes ; then
566     AC_DEFINE(HAVE_FSTAT64)
567   fi
568 fi
569
570 #
571 # If no strcasecmp, check for it in some known places
572 # It is in -lresolv on ReliantUNIX and UnixWare
573 #   -lresolve *must* follow -lnsl for name resolution to work properly
574 #
575
576 if test x$ac_cv_func_strcasecmp = xno ; then
577         AC_CHECK_LIB(resolv,strcasecmp,[LIBS="$LIBS -lresolv"]
578                 AC_DEFINE(HAVE_STRCASECMP))
579 fi
580
581 #
582 # Check for the functions putprpwnam, set_auth_parameters,
583 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
584 # Needed for OSF1 and HPUX.
585 #
586
587 AC_LIBTESTFUNC(security, putprpwnam)
588 AC_LIBTESTFUNC(sec, putprpwnam)
589
590 AC_LIBTESTFUNC(security, set_auth_parameters)
591 AC_LIBTESTFUNC(sec, set_auth_parameters)
592
593 # UnixWare 7.x has its getspnam in -lgen
594 AC_LIBTESTFUNC(gen, getspnam)
595
596 AC_LIBTESTFUNC(security, getspnam)
597 AC_LIBTESTFUNC(sec, getspnam)
598
599 AC_LIBTESTFUNC(security, bigcrypt)
600 AC_LIBTESTFUNC(sec, bigcrypt)
601
602 AC_LIBTESTFUNC(security, getprpwnam)
603 AC_LIBTESTFUNC(sec, getprpwnam)
604
605 # this bit needs to be modified for each OS that is suported by
606 # smbwrapper. You need to specify how to created a shared library and
607 # how to compile C code to produce PIC object files
608
609 # these are the defaults, good for lots of systems
610 HOST_OS="$host_os"
611 LDSHFLAGS="-shared"
612 SHLD="\${CC}"
613 PICFLAG=""
614 PICSUFFIX="po"
615 POBAD_CC="#"
616 SHLIBEXT="so"
617 BLDSHARED="false"
618
619 # and these are for particular systems
620 case "$host_os" in
621                 *linux*)   AC_DEFINE(LINUX)
622                         BLDSHARED="true"
623                         LDSHFLAGS="-shared" 
624                         PICFLAG="-fPIC"
625                 ;;
626                 *solaris*) AC_DEFINE(SUNOS5)
627                         BLDSHARED="true"
628                         if test "${ac_cv_prog_CC}" = "gcc"; then
629                                 PICFLAG="-fPIC"
630                                 LDSHFLAGS="-shared"
631                         else
632                                 PICFLAG="-KPIC -xO4"
633                                 POBAD_CC=""
634                                 PICSUFFIX="po.o"
635                                 LDSHFLAGS="-Wl,-soname,\$@"
636                         fi
637                 ;;
638                 *sunos*) AC_DEFINE(SUNOS4)
639                         BLDSHARED="true"
640                         LDSHFLAGS="-Wl,-h,\$@ -G"
641                         PICFLAG="-KPIC -O2"   # Is this correct for SunOS
642                 ;;
643                 *bsd*)  BLDSHARED="true"
644                         LDSHFLAGS="-Wl,-soname,\$@ -shared"
645                         PICFLAG="-fPIC -O2"
646                 ;;
647                 *irix*) AC_DEFINE(IRIX)
648                         case "$host_os" in
649                         *irix6*) AC_DEFINE(IRIX6)
650                         ;;
651                         esac
652                         ATTEMPT_WRAP32_BUILD=yes
653                         BLDSHARED="true"
654                         LDSHFLAGS="-Wl,-soname,\$@ -shared"
655                         if test "${ac_cv_prog_CC}" = "gcc"; then
656                                 PICFLAG="-fPIC"
657                         else 
658                                 PICFLAG="-KPIC"
659                         fi
660                 ;;
661                 *aix*) AC_DEFINE(AIX)
662                         BLDSHARED="true"
663                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry"
664                         PICFLAG="-O2 -qmaxmem=6000"
665                 ;;
666                 *hpux*) AC_DEFINE(HPUX)
667                         SHLIBEXT="sl"
668                         # Use special PIC flags for the native HP-UX compiler.
669                         if test $ac_cv_prog_cc_Ae = yes; then
670                                 BLDSHARED="true"
671                                 LDSHFLAGS="-b -z +h \$@"
672                                 PICFLAG="+z"
673                         fi
674                 ;;
675                 *qnx*) AC_DEFINE(QNX);;
676                 *osf*) AC_DEFINE(OSF1)
677                         BLDSHARED="true"
678                         LDSHFLAGS="-Wl,-soname,\$@ -shared"
679                         PICFLAG="-fPIC"
680                 ;;
681                 *sco*) AC_DEFINE(SCO);;
682                 *unixware*) AC_DEFINE(UNIXWARE)
683                         BLDSHARED="true"
684                         LDSHFLAGS="-Wl,-soname,\$@ -shared"
685                         PICFLAG="-KPIC"
686                 ;;
687                 *next2*) AC_DEFINE(NEXT2);;
688                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man]);;
689                 *sysv4*)
690                         case "$host" in
691                                 *-univel-*)     if [ test "$GCC" != yes ]; then
692                                                                         AC_DEFINE(HAVE_MEMSET)
693                                                                 fi
694                                                                 LDSHFLAGS="-G"
695                                 ;;
696                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX);;
697                         esac
698                         ;;
699                 *sysv5*)
700                         if [ test "$GCC" != yes ]; then
701                                 AC_DEFINE(HAVE_MEMSET)
702                         fi
703                         LDSHFLAGS="-G"
704                         ;;
705 esac
706
707 ################
708
709 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
710 AC_TRY_RUN([#include <stdio.h>
711 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
712 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
713 if test x"$samba_cv_have_longlong" = x"yes"; then
714     AC_DEFINE(HAVE_LONGLONG)
715 fi
716
717 #
718 # Check if the compiler supports the LL prefix on long long integers.
719 # AIX needs this.
720
721 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
722     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
723         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
724 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
725    AC_DEFINE(COMPILER_SUPPORTS_LL)
726 fi
727
728   
729 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
730 AC_TRY_RUN([#include <stdio.h>
731 #include <sys/stat.h>
732 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
733 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
734 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
735     AC_DEFINE(SIZEOF_OFF_T,8)
736 fi
737
738 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
739 AC_TRY_RUN([
740 #if defined(HAVE_UNISTD_H)
741 #include <unistd.h>
742 #endif
743 #include <stdio.h>
744 #include <sys/stat.h>
745 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
746 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
747 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
748     AC_DEFINE(HAVE_OFF64_T)
749 fi
750
751 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
752 AC_TRY_RUN([#include <stdio.h>
753 #include <sys/stat.h>
754 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
755 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
756 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
757     AC_DEFINE(SIZEOF_INO_T,8)
758 fi
759
760 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
761 AC_TRY_RUN([
762 #if defined(HAVE_UNISTD_H)
763 #include <unistd.h>
764 #endif
765 #include <stdio.h>
766 #include <sys/stat.h>
767 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
768 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
769 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
770     AC_DEFINE(HAVE_INO64_T)
771 fi
772
773 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
774 AC_TRY_COMPILE([
775 #if defined(HAVE_UNISTD_H)
776 #include <unistd.h>
777 #endif
778 #include <sys/types.h>
779 #include <dirent.h>],
780 [struct dirent64 de;],
781 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
782 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes"; then
783     AC_DEFINE(HAVE_STRUCT_DIRENT64)
784 fi
785
786 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
787 AC_TRY_RUN([#include <stdio.h>
788 main() { char c; c=250; exit((c > 0)?0:1); }],
789 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
790 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
791     AC_DEFINE(HAVE_UNSIGNED_CHAR)
792 fi
793
794 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
795 AC_TRY_COMPILE([#include <sys/types.h>
796 #include <sys/socket.h>
797 #include <netinet/in.h>],
798 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
799 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
800 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
801     AC_DEFINE(HAVE_SOCK_SIN_LEN)
802 fi
803
804 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
805 AC_TRY_COMPILE([#include <sys/types.h>
806 #include <dirent.h>
807 void seekdir(DIR *d, long loc) { return; }],[return 0;],
808 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
809 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
810     AC_DEFINE(SEEKDIR_RETURNS_VOID)
811 fi
812
813 AC_CACHE_CHECK([for __FILE__ macro],samba_cv_HAVE_FILE_MACRO,[
814 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FILE__);],
815 samba_cv_HAVE_FILE_MACRO=yes,samba_cv_HAVE_FILE_MACRO=no)])
816 if test x"$samba_cv_HAVE_FILE_MACRO" = x"yes"; then
817     AC_DEFINE(HAVE_FILE_MACRO)
818 fi
819
820 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
821 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
822 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
823 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
824     AC_DEFINE(HAVE_FUNCTION_MACRO)
825 fi
826
827 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
828 AC_TRY_RUN([
829 #include <sys/time.h>
830 #include <unistd.h>
831 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
832            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
833 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
834     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ)
835 fi
836
837 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
838 AC_TRY_RUN([
839 #include <sys/types.h>
840 #include <stdarg.h>
841 void foo(const char *format, ...) { 
842        va_list ap;
843        int len;
844        char buf[5];
845
846        va_start(ap, format);
847        len = vsnprintf(0, 0, format, ap);
848        va_end(ap);
849        if (len != 5) exit(1);
850
851        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
852
853        exit(0);
854 }
855 main() { foo("hello"); }
856 ],
857 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
858 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
859     AC_DEFINE(HAVE_C99_VSNPRINTF)
860 fi
861
862 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
863 AC_TRY_RUN([#include <sys/types.h>
864 #include <dirent.h>
865 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
866 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
867 di->d_name[0] == 0) exit(0); exit(1);} ],
868 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
869 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
870     AC_DEFINE(HAVE_BROKEN_READDIR)
871 fi
872
873 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
874 AC_TRY_COMPILE([#include <sys/types.h>
875 #include <utime.h>],
876 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
877 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
878 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
879     AC_DEFINE(HAVE_UTIMBUF)
880 fi
881
882 dnl  utmp and utmpx come in many flavours
883 dnl  We need to check for many of them
884 dnl  But we don't need to do each and every one, because our code uses
885 dnl  mostly just the utmp (not utmpx) fields.
886
887 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
888
889 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
890 AC_TRY_COMPILE([#include <sys/types.h>
891 #include <utmp.h>],
892 [struct utmp ut;  ut.ut_name[0] = 'a';],
893 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
894 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
895     AC_DEFINE(HAVE_UT_UT_NAME)
896 fi 
897
898 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
899 AC_TRY_COMPILE([#include <sys/types.h>
900 #include <utmp.h>],
901 [struct utmp ut;  ut.ut_user[0] = 'a';],
902 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
903 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
904     AC_DEFINE(HAVE_UT_UT_USER)
905 fi 
906
907 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
908 AC_TRY_COMPILE([#include <sys/types.h>
909 #include <utmp.h>],
910 [struct utmp ut;  ut.ut_id[0] = 'a';],
911 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
912 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
913     AC_DEFINE(HAVE_UT_UT_ID)
914 fi 
915
916 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
917 AC_TRY_COMPILE([#include <sys/types.h>
918 #include <utmp.h>],
919 [struct utmp ut;  ut.ut_host[0] = 'a';],
920 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
921 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
922     AC_DEFINE(HAVE_UT_UT_HOST)
923 fi 
924
925 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
926 AC_TRY_COMPILE([#include <sys/types.h>
927 #include <utmp.h>],
928 [struct utmp ut;  time_t t; ut.ut_time = t;],
929 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
930 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
931     AC_DEFINE(HAVE_UT_UT_TIME)
932 fi 
933
934 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
935 AC_TRY_COMPILE([#include <sys/types.h>
936 #include <utmp.h>],
937 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
938 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
939 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
940     AC_DEFINE(HAVE_UT_UT_TV)
941 fi 
942
943 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
944 AC_TRY_COMPILE([#include <sys/types.h>
945 #include <utmp.h>],
946 [struct utmp ut;  ut.ut_type = 0;],
947 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
948 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
949     AC_DEFINE(HAVE_UT_UT_TYPE)
950 fi 
951
952 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
953 AC_TRY_COMPILE([#include <sys/types.h>
954 #include <utmp.h>],
955 [struct utmp ut;  ut.ut_pid = 0;],
956 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
957 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
958     AC_DEFINE(HAVE_UT_UT_PID)
959 fi 
960
961 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
962 AC_TRY_COMPILE([#include <sys/types.h>
963 #include <utmp.h>],
964 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
965 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
966 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
967     AC_DEFINE(HAVE_UT_UT_EXIT)
968 fi 
969
970 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
971 AC_TRY_COMPILE([#include <sys/types.h>
972 #include <utmp.h>],
973 [struct utmp ut;  ut.ut_addr = 0;],
974 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
975 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
976     AC_DEFINE(HAVE_UT_UT_ADDR)
977 fi 
978
979 if test x$ac_cv_func_pututline = xyes ; then
980   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
981   AC_TRY_COMPILE([#include <sys/types.h>
982 #include <utmp.h>],
983   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
984   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
985   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
986       AC_DEFINE(PUTUTLINE_RETURNS_UTMP)
987   fi
988 fi
989
990 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
991 AC_TRY_COMPILE([#include <sys/types.h>
992 #include <utmpx.h>],
993 [struct utmpx ux;  ux.ut_syslen = 0;],
994 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
995 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
996     AC_DEFINE(HAVE_UX_UT_SYSLEN)
997 fi 
998
999 ############
1000 # check for iconv in libc, and if not then we build our own
1001 AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
1002 AC_TRY_RUN([
1003 #include <iconv.h>
1004 main() {
1005        iconv_t cd = iconv_open("ASCII", "UCS2");
1006        if (cd == 0 || cd == (iconv_t)-1) return -1;
1007        return 0;
1008 }
1009 ],
1010 samba_cv_HAVE_NATIVE_ICONV=yes,samba_cv_HAVE_NATIVE_ICONV=no,samba_cv_HAVE_NATIVE_ICONV=cross)])
1011 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
1012     AC_DEFINE(HAVE_NATIVE_ICONV)
1013 fi
1014
1015
1016 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1017 AC_TRY_RUN([
1018 #include <sys/types.h>
1019 #include <fcntl.h>
1020 #ifndef F_GETLEASE
1021 #define F_GETLEASE      1025
1022 #endif
1023 main() {
1024        int fd = open("/dev/null", O_RDONLY);
1025        return fcntl(fd, F_GETLEASE, 0) == -1;
1026 }
1027 ],
1028 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1029 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1030     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX)
1031 fi
1032
1033 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1034 AC_TRY_RUN([
1035 #include <sys/types.h>
1036 #include <fcntl.h>
1037 #include <signal.h>
1038 #ifndef F_NOTIFY
1039 #define F_NOTIFY 1026
1040 #endif
1041 main() {
1042         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1043 }
1044 ],
1045 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1046 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
1047     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY)
1048 fi
1049
1050 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1051 AC_TRY_RUN([
1052 #include <sys/types.h>
1053 #include <fcntl.h>
1054 #include <signal.h>
1055 #include <sys/file.h>
1056 #ifndef LOCK_MAND
1057 #define LOCK_MAND       32
1058 #define LOCK_READ       64
1059 #endif
1060 main() {
1061         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1062 }
1063 ],
1064 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1065 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1066     AC_DEFINE(HAVE_KERNEL_SHARE_MODES)
1067 fi
1068
1069
1070
1071
1072 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1073 AC_TRY_COMPILE([#include <sys/types.h>
1074 #include <fcntl.h>],
1075 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1076 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1077 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1078     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX)
1079 fi
1080
1081 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1082 AC_TRY_RUN([#include <sys/types.h>
1083 #include <sys/capability.h>
1084 main() {
1085  cap_t cap;
1086  if ((cap = cap_get_proc()) == NULL)
1087    exit(1);
1088  cap->cap_effective |= CAP_NETWORK_MGT;
1089  cap->cap_inheritable |= CAP_NETWORK_MGT;
1090  cap_set_proc(cap);
1091  exit(0);
1092 }
1093 ],
1094 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1095 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1096     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES)
1097 fi
1098
1099 #
1100 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1101 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1102 #
1103
1104 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1105 AC_TRY_COMPILE([#include <sys/types.h>
1106 #if defined(HAVE_RPC_RPC_H)
1107 #include <rpc/rpc.h>
1108 #endif],
1109 [int16 testvar;],
1110 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1111 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1112     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H)
1113 fi
1114
1115 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1116 AC_TRY_COMPILE([#include <sys/types.h>
1117 #if defined(HAVE_RPC_RPC_H)
1118 #include <rpc/rpc.h>
1119 #endif],
1120 [uint16 testvar;],
1121 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1122 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1123     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H)
1124 fi
1125
1126 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1127 AC_TRY_COMPILE([#include <sys/types.h>
1128 #if defined(HAVE_RPC_RPC_H)
1129 #include <rpc/rpc.h>
1130 #endif],
1131 [int32 testvar;],
1132 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1133 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1134     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H)
1135 fi
1136
1137 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1138 AC_TRY_COMPILE([#include <sys/types.h>
1139 #if defined(HAVE_RPC_RPC_H)
1140 #include <rpc/rpc.h>
1141 #endif],
1142 [uint32 testvar;],
1143 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1144 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1145     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H)
1146 fi
1147
1148 dnl
1149 dnl Some systems (SCO) have a problem including
1150 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1151 dnl as a #define in <prot.h> and as part of an enum
1152 dnl in <rpc/rpc.h>.
1153 dnl
1154
1155 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1156 AC_TRY_COMPILE([#include <sys/types.h>
1157 #ifdef HAVE_SYS_SECURITY_H
1158 #include <sys/security.h>
1159 #include <prot.h>
1160 #endif  /* HAVE_SYS_SECURITY_H */
1161 #if defined(HAVE_RPC_RPC_H)
1162 #include <rpc/rpc.h>
1163 #endif],
1164 [int testvar;],
1165 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1166 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1167     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT)
1168 fi
1169
1170 AC_MSG_CHECKING([for test routines])
1171 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1172            AC_MSG_RESULT(yes),
1173            AC_MSG_ERROR([cant find test code. Aborting config]),
1174            AC_MSG_WARN([cannot run when cross-compiling]))
1175
1176 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1177 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1178            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1179 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1180     AC_DEFINE(HAVE_FTRUNCATE_EXTEND)
1181 fi
1182
1183 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
1184 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
1185            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
1186            samba_cv_HAVE_WORKING_AF_LOCAL=no,
1187            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
1188 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
1189 then
1190     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
1191 fi
1192
1193 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1194 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1195            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1196 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1197     AC_DEFINE(HAVE_BROKEN_GETGROUPS)
1198 fi
1199
1200 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1201 SAVE_CPPFLAGS="$CPPFLAGS"
1202 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/smbwrapper"
1203 AC_TRY_COMPILE([
1204 #define REPLACE_GETPASS 1
1205 #define NO_CONFIG_H 1
1206 #define main dont_declare_main
1207 #include "${srcdir-.}/lib/getsmbpass.c"
1208 #undef main
1209 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1210 CPPFLAGS="$SAVE_CPPFLAGS"
1211 ])
1212 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
1213         AC_DEFINE(REPLACE_GETPASS)
1214 fi
1215
1216 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
1217 AC_TRY_RUN([
1218 #include <stdio.h>
1219 #include <sys/types.h>
1220 #include <netinet/in.h>
1221 #ifdef HAVE_ARPA_INET_H
1222 #include <arpa/inet.h>
1223 #endif
1224 main() { struct in_addr ip; ip.s_addr = 0x12345678;
1225 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
1226     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
1227 exit(1);}],
1228            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
1229 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
1230     AC_DEFINE(REPLACE_INET_NTOA)
1231 fi
1232
1233 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
1234 AC_TRY_RUN([#include <stdlib.h>
1235 #include <sys/types.h>
1236 #include <sys/stat.h>
1237 #include <unistd.h>
1238 main() { 
1239   struct stat st;
1240   char tpl[20]="/tmp/test.XXXXXX"; 
1241   int fd = mkstemp(tpl); 
1242   if (fd == -1) exit(1);
1243   unlink(tpl);
1244   if (fstat(fd, &st) != 0) exit(1);
1245   if ((st.st_mode & 0777) != 0600) exit(1);
1246   exit(0);
1247 }],
1248 samba_cv_HAVE_SECURE_MKSTEMP=yes,
1249 samba_cv_HAVE_SECURE_MKSTEMP=no,
1250 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
1251 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
1252     AC_DEFINE(HAVE_SECURE_MKSTEMP)
1253 fi
1254
1255 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
1256 AC_TRY_RUN([#include <unistd.h>
1257 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
1258 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
1259 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
1260     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX)
1261 fi
1262
1263 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
1264 AC_TRY_RUN([main() { exit(getuid() != 0); }],
1265            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
1266 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
1267     AC_DEFINE(HAVE_ROOT)
1268 else
1269     AC_MSG_WARN(running as non-root will disable some tests)
1270 fi
1271
1272 ##################
1273 # look for a method of finding the list of network interfaces
1274 iface=no;
1275 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
1276 AC_TRY_RUN([
1277 #define HAVE_IFACE_AIX 1
1278 #define AUTOCONF_TEST 1
1279 #include "confdefs.h"
1280 #include "${srcdir-.}/lib/interfaces.c"],
1281            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
1282 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
1283     iface=yes;AC_DEFINE(HAVE_IFACE_AIX)
1284 fi
1285
1286 if test $iface = no; then
1287 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
1288 AC_TRY_RUN([
1289 #define HAVE_IFACE_IFCONF 1
1290 #define AUTOCONF_TEST 1
1291 #include "confdefs.h"
1292 #include "${srcdir-.}/lib/interfaces.c"],
1293            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
1294 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
1295     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF)
1296 fi
1297 fi
1298
1299 if test $iface = no; then
1300 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
1301 AC_TRY_RUN([
1302 #define HAVE_IFACE_IFREQ 1
1303 #define AUTOCONF_TEST 1
1304 #include "confdefs.h"
1305 #include "${srcdir-.}/lib/interfaces.c"],
1306            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
1307 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
1308     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ)
1309 fi
1310 fi
1311
1312
1313 ################################################
1314 # look for a method of setting the effective uid
1315 seteuid=no;
1316 if test $seteuid = no; then
1317 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
1318 AC_TRY_RUN([
1319 #define AUTOCONF_TEST 1
1320 #define USE_SETRESUID 1
1321 #include "confdefs.h"
1322 #include "${srcdir-.}/lib/util_sec.c"],
1323            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
1324 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
1325     seteuid=yes;AC_DEFINE(USE_SETRESUID)
1326 fi
1327 fi
1328
1329
1330 if test $seteuid = no; then
1331 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
1332 AC_TRY_RUN([
1333 #define AUTOCONF_TEST 1
1334 #define USE_SETREUID 1
1335 #include "confdefs.h"
1336 #include "${srcdir-.}/lib/util_sec.c"],
1337            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
1338 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
1339     seteuid=yes;AC_DEFINE(USE_SETREUID)
1340 fi
1341 fi
1342
1343 if test $seteuid = no; then
1344 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
1345 AC_TRY_RUN([
1346 #define AUTOCONF_TEST 1
1347 #define USE_SETEUID 1
1348 #include "confdefs.h"
1349 #include "${srcdir-.}/lib/util_sec.c"],
1350            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
1351 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
1352     seteuid=yes;AC_DEFINE(USE_SETEUID)
1353 fi
1354 fi
1355
1356 if test $seteuid = no; then
1357 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
1358 AC_TRY_RUN([
1359 #define AUTOCONF_TEST 1
1360 #define USE_SETUIDX 1
1361 #include "confdefs.h"
1362 #include "${srcdir-.}/lib/util_sec.c"],
1363            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
1364 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
1365     seteuid=yes;AC_DEFINE(USE_SETUIDX)
1366 fi
1367 fi
1368
1369
1370 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
1371 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
1372            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
1373 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
1374     AC_DEFINE(HAVE_MMAP)
1375 fi
1376
1377 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
1378 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
1379            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
1380 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
1381     AC_DEFINE(FTRUNCATE_NEEDS_ROOT)
1382 fi
1383
1384 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
1385 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
1386            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
1387 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
1388     AC_DEFINE(HAVE_FCNTL_LOCK)
1389 fi
1390
1391 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
1392 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
1393            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
1394 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
1395     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS)
1396
1397 else
1398
1399 dnl
1400 dnl Don't check for 64 bit fcntl locking if we know that the
1401 dnl glibc2.1 broken check has succeeded.
1402 dnl 
1403
1404   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
1405   AC_TRY_RUN([
1406 #if defined(HAVE_UNISTD_H)
1407 #include <unistd.h>
1408 #endif
1409 #include <stdio.h>
1410 #include <stdlib.h>
1411
1412 #ifdef HAVE_FCNTL_H
1413 #include <fcntl.h>
1414 #endif
1415
1416 #ifdef HAVE_SYS_FCNTL_H
1417 #include <sys/fcntl.h>
1418 #endif
1419 main() { struct flock64 fl64;
1420 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
1421 exit(0);
1422 #else
1423 exit(1);
1424 #endif
1425 }],
1426        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
1427
1428   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
1429       AC_DEFINE(HAVE_STRUCT_FLOCK64)
1430   fi
1431 fi
1432
1433 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
1434 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
1435            samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)])
1436 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
1437     AC_DEFINE(HAVE_TRUNCATED_SALT)
1438 fi
1439
1440 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
1441 AC_TRY_COMPILE([#include <sys/acl.h>
1442 #if defined(HAVE_RPCSVC_NIS_H)
1443 #include <rpcsvc/nis.h>
1444 #endif],
1445 [return 0;],
1446 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
1447 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
1448     AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES)
1449 fi
1450
1451
1452 #################################################
1453 # check for smbwrapper support
1454 AC_MSG_CHECKING(whether to use smbwrapper)
1455 AC_ARG_WITH(smbwrapper,
1456 [  --with-smbwrapper     Include SMB wrapper support
1457   --without-smbwrapper  Don't include SMB wrapper support (default)],
1458 [ case "$withval" in
1459   yes)
1460     AC_MSG_RESULT(yes)
1461     AC_DEFINE(WITH_SMBWRAPPER)
1462         WRAP="bin/smbsh bin/smbwrapper.$SHLIBEXT"
1463
1464         if test x$ATTEMPT_WRAP32_BUILD = x; then
1465                 WRAP32=""
1466         else
1467                         WRAP32=bin/smbwrapper.32.$SHLIBEXT
1468         fi
1469
1470 # Conditions under which smbwrapper should not be built.
1471
1472         if test x$PICFLAG = x; then
1473            echo No support for PIC code - disabling smbwrapper and smbsh
1474            WRAP=""
1475            WRAP32=""
1476         elif test x$ac_cv_func_syscall = xno; then
1477            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
1478            WRAP=""
1479            WRAP32=""
1480         fi
1481     ;;
1482   *)
1483     AC_MSG_RESULT(no)
1484     ;;
1485   esac ],
1486   AC_MSG_RESULT(no)
1487 )
1488
1489 #################################################
1490 # check for the AFS filesystem
1491 AC_MSG_CHECKING(whether to use AFS)
1492 AC_ARG_WITH(afs,
1493 [  --with-afs     Include AFS support
1494   --without-afs  Don't include AFS support (default)],
1495 [ case "$withval" in
1496   yes)
1497     AC_MSG_RESULT(yes)
1498     AC_DEFINE(WITH_AFS)
1499     ;;
1500   *)
1501     AC_MSG_RESULT(no)
1502     ;;
1503   esac ],
1504   AC_MSG_RESULT(no)
1505 )
1506
1507
1508 #################################################
1509 # check for the DFS auth system
1510 AC_MSG_CHECKING(whether to use DFS auth)
1511 AC_ARG_WITH(dfs,
1512 [  --with-dfs     Include DFS support
1513   --without-dfs  Don't include DFS support (default)],
1514 [ case "$withval" in
1515   yes)
1516     AC_MSG_RESULT(yes)
1517     AC_DEFINE(WITH_DFS)
1518     ;;
1519   *)
1520     AC_MSG_RESULT(no)
1521     ;;
1522   esac ],
1523   AC_MSG_RESULT(no)
1524 )
1525
1526 #################################################
1527 # check for Kerberos IV auth system
1528 AC_MSG_CHECKING(whether to use Kerberos IV)
1529 AC_ARG_WITH(krb4,
1530 [  --with-krb4=base-dir     Include Kerberos IV support
1531   --without-krb4          Don't include Kerberos IV support (default)],
1532 [ case "$withval" in
1533   yes)
1534     AC_MSG_RESULT(yes)
1535     AC_DEFINE(KRB4_AUTH)
1536     AC_CHECK_LIB(resolv, dn_expand)
1537     LIBS="$LIBS -lkrb -ldes"
1538     CFLAGS="$CFLAGS -I$withval/include"
1539     LDFLAGS="$LDFLAGS -L$withval/lib"
1540     ;;
1541   *)
1542     AC_MSG_RESULT(no)
1543     ;;
1544   esac ],
1545   AC_MSG_RESULT(no)
1546 )
1547
1548 #################################################
1549 # check for Kerberos 5 auth system
1550 AC_MSG_CHECKING(whether to use Kerberos 5)
1551 AC_ARG_WITH(krb5,
1552 [  --with-krb5=base-dir     Include Kerberos 5 support
1553   --without-krb5          Don't include Kerberos 5 support (default)],
1554 [ case "$withval" in
1555   yes)
1556     AC_MSG_RESULT(yes)
1557     AC_DEFINE(KRB5_AUTH)
1558     LIBS="$LIBS -ldes425 -lkrb5 -lcrypto -lcom_err"
1559     CFLAGS="$CFLAGS -I$withval/include"
1560     LDFLAGS="$LDFLAGS -L$withval/lib"
1561     ;;
1562   *)
1563     AC_MSG_RESULT(no)
1564     ;;
1565   esac ],
1566   AC_MSG_RESULT(no)
1567 )
1568
1569 #################################################
1570 # check for automount support
1571 AC_MSG_CHECKING(whether to use AUTOMOUNT)
1572 AC_ARG_WITH(automount,
1573 [  --with-automount     Include AUTOMOUNT support
1574   --without-automount  Don't include AUTOMOUNT support (default)],
1575 [ case "$withval" in
1576   yes)
1577     AC_MSG_RESULT(yes)
1578     AC_DEFINE(WITH_AUTOMOUNT)
1579     ;;
1580   *)
1581     AC_MSG_RESULT(no)
1582     ;;
1583   esac ],
1584   AC_MSG_RESULT(no)
1585 )
1586
1587 #################################################
1588 # check for smbmount support
1589 AC_MSG_CHECKING(whether to use SMBMOUNT)
1590 AC_ARG_WITH(smbmount,
1591 [  --with-smbmount     Include SMBMOUNT (Linux only) support
1592   --without-smbmount  Don't include SMBMOUNT support (default)],
1593 [ case "$withval" in
1594   yes)
1595     AC_MSG_RESULT(yes)
1596     AC_DEFINE(WITH_SMBMOUNT)
1597     MPROGS="bin/smbmount bin/smbmnt bin/smbumount"
1598     ;;
1599   *)
1600     AC_MSG_RESULT(no)
1601     MPROGS=
1602     ;;
1603   esac ],
1604   AC_MSG_RESULT(no)
1605   MPROGS=
1606 )
1607
1608
1609 #################################################
1610 # check for a PAM password database
1611
1612 AC_MSG_CHECKING(whether to use PAM password database)
1613 AC_ARG_WITH(pam,
1614 [  --with-pam     Include PAM password database support
1615   --without-pam  Don't include PAM password database support (default)],
1616 [ case "$withval" in
1617   yes)
1618     AC_MSG_RESULT(yes)
1619     AC_DEFINE(WITH_PAM)
1620     LIBS="$LIBS -lpam"
1621     ;;
1622   *)
1623     AC_MSG_RESULT(no)
1624     ;;
1625   esac ],
1626   AC_MSG_RESULT(no)
1627 )
1628
1629 # we can't build a pam module if we don't have pam.
1630 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM)])
1631
1632 #################################################
1633 # check for pam_smbpass support
1634 AC_MSG_CHECKING(whether to use pam_smbpass)
1635 AC_ARG_WITH(pam_smbpass,
1636 [  --with-pam_smbpass     Include the smbpass PAM module
1637   --without-pam_smbpass  Don't include the smbpass PAM module (default)],
1638 [ case "$withval" in
1639   yes)
1640     AC_MSG_RESULT(yes)
1641
1642 # Conditions under which pam_smbpass should not be built.
1643
1644        if test x$PICFLAG = x; then
1645           AC_MSG_RESULT([No support for PIC code - disabling pam_smbpass])
1646           PAM_MOD=""
1647        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
1648           AC_MSG_RESULT([No libpam found -- disabling pam_smbpass])
1649           PAM_MOD=""
1650        else
1651           AC_DEFINE(WITH_PAM_SMBPASS)
1652           PAM_MOD="bin/pam_smbpass.so"
1653        fi
1654     ;;
1655   *)
1656     AC_MSG_RESULT(no)
1657     ;;
1658   esac ],
1659   AC_MSG_RESULT(no)
1660 )
1661
1662
1663 ###############################################
1664 # test for where we get crypt() from, but only
1665 # if not using PAM
1666 if test "$with_pam" != yes; then
1667 AC_CHECK_FUNCS(crypt)
1668 if test x"$ac_cv_func_crypt" = x"no"; then
1669     AC_CHECK_LIB(crypt, crypt, [LIBS="$LIBS -lcrypt";
1670         AC_DEFINE(HAVE_CRYPT)])
1671 fi
1672 fi
1673
1674
1675 #################################################
1676 # check for a TDB password database
1677 AC_MSG_CHECKING(whether to use TDB password database)
1678 AC_ARG_WITH(tdbsam,
1679 [  --with-tdbsam   Include experimental TDB password database
1680   --without-tdbsam  Don't include experimental TDB password database (default)],
1681 [ case "$withval" in
1682   yes)
1683     AC_MSG_RESULT(yes)
1684     AC_DEFINE(WITH_TDBPWD)
1685 #    AC_MSG_ERROR([TDB password database not supported in this version.])
1686     ;;
1687   *)
1688     AC_MSG_RESULT(no)
1689     ;;
1690   esac ],
1691   AC_MSG_RESULT(no)
1692 )
1693
1694 #################################################
1695 # check for a LDAP password database
1696 AC_MSG_CHECKING(whether to use LDAP password database)
1697 AC_ARG_WITH(ldap,
1698 [  --with-ldap     Include LDAP support
1699   --without-ldap  Don't include LDAP support (default)],
1700 [ case "$withval" in
1701   yes)
1702     AC_MSG_RESULT(yes)
1703     AC_DEFINE(WITH_LDAP)
1704     AC_MSG_ERROR([LDAP password database not supported in this version.])
1705     ;;
1706   *)
1707     AC_MSG_RESULT(no)
1708     ;;
1709   esac ],
1710   AC_MSG_RESULT(no)
1711 )
1712
1713 #################################################
1714 # check for a NISPLUS password database
1715 AC_MSG_CHECKING(whether to use NISPLUS password database)
1716 AC_ARG_WITH(nisplus,
1717 [  --with-nisplus     Include NISPLUS password database support
1718   --without-nisplus  Don't include NISPLUS password database support (default)],
1719 [ case "$withval" in
1720   yes)
1721     AC_MSG_RESULT(yes)
1722     AC_DEFINE(WITH_NISPLUS)
1723     ;;
1724   *)
1725     AC_MSG_RESULT(no)
1726     ;;
1727   esac ],
1728   AC_MSG_RESULT(no)
1729 )
1730
1731 #################################################
1732 # check for a NISPLUS_HOME support 
1733 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
1734 AC_ARG_WITH(nisplus-home,
1735 [  --with-nisplus-home     Include NISPLUS_HOME support
1736   --without-nisplus-home  Don't include NISPLUS_HOME support (default)],
1737 [ case "$withval" in
1738   yes)
1739     AC_MSG_RESULT(yes)
1740     AC_DEFINE(WITH_NISPLUS_HOME)
1741     ;;
1742   *)
1743     AC_MSG_RESULT(no)
1744     ;;
1745   esac ],
1746   AC_MSG_RESULT(no)
1747 )
1748
1749 #################################################
1750 # check for the secure socket layer
1751 AC_MSG_CHECKING(whether to use SSL)
1752 AC_ARG_WITH(ssl,
1753 [  --with-ssl     Include SSL support
1754   --without-ssl  Don't include SSL support (default)
1755   --with-sslinc=DIR Where the SSL includes are (defaults to /usr/local/ssl)],
1756 [ case "$withval" in
1757   yes)
1758     AC_MSG_RESULT(yes)
1759     AC_DEFINE(WITH_SSL)
1760     withval="/usr/local/ssl"     # default
1761
1762     if test "${with_sslinc+set}" = set; then
1763
1764         withval="$with_sslinc"
1765         case "$withval" in
1766         yes|no)
1767           echo "configure: warning: --with-sslinc called without argument - will use default" 1>&w
1768           CFLAGS="-I/usr/local/ssl/include $CFLAGS"
1769           LIBS="-lssl -lcrypto $LIBS"
1770           LDFLAGS="=L/usr/local/ssl/lib $LDFLAGS"
1771         ;;
1772         * )
1773           CFLAGS="-I${withval} $CFLAGS"
1774           LIBS="-lssl -lcrypto $LIBS"
1775           LDFLAGS="-L${withval}/lib $LDFLAGS"
1776         ;;
1777         esac
1778
1779     else
1780
1781         CFLAGS="-I/usr/local/ssl/include $CFLAGS"   
1782         LIBS="-lssl -lcrypto $LIBS"
1783         LDFLAGS="-L/usr/local/ssl/lib $LDFLAGS"
1784
1785     fi
1786
1787     if test ! -d ${withval}; then
1788       echo "configure: error: called with --with-ssl, but ssl base directory ${withval} does not exist or is not a directory. Aborting config" 1>&2
1789       exit 1
1790     fi 
1791
1792     CFLAGS="-DHAVE_CRYPT_DECL $CFLAGS"  # Damn, SSLeay defines its own
1793
1794     ;;
1795   *)
1796     AC_MSG_RESULT(no)
1797     ;;
1798   esac ],
1799   AC_MSG_RESULT(no)
1800 )
1801
1802 #################################################
1803 # check for syslog logging
1804 AC_MSG_CHECKING(whether to use syslog logging)
1805 AC_ARG_WITH(syslog,
1806 [  --with-syslog     Include experimental SYSLOG support
1807   --without-syslog  Don't include SYSLOG support (default)],
1808 [ case "$withval" in
1809   yes)
1810     AC_MSG_RESULT(yes)
1811     AC_DEFINE(WITH_SYSLOG)
1812     ;;
1813   *)
1814     AC_MSG_RESULT(no)
1815     ;;
1816   esac ],
1817   AC_MSG_RESULT(no)
1818 )
1819
1820 #################################################
1821 # check for a shared memory profiling support
1822 AC_MSG_CHECKING(whether to use profiling)
1823 AC_ARG_WITH(profile,
1824 [  --with-profile     Include profile support
1825   --without-profile  Don't include profile support (default)],
1826 [ case "$withval" in
1827   yes)
1828     AC_MSG_RESULT(yes)
1829     AC_DEFINE(WITH_PROFILE)
1830     ;;
1831   *)
1832     AC_MSG_RESULT(no)
1833     ;;
1834   esac ],
1835   AC_MSG_RESULT(no)
1836 )
1837
1838
1839 #################################################
1840 # check for experimental netatalk resource fork support
1841 AC_MSG_CHECKING(whether to support netatalk)
1842 AC_ARG_WITH(netatalk,
1843 [  --with-netatalk     Include experimental Netatalk support
1844   --without-netatalk  Don't include experimental Netatalk support (default)],
1845 [ case "$withval" in
1846   yes)
1847     AC_MSG_RESULT(yes)
1848     AC_DEFINE(WITH_NETATALK)
1849     ;;
1850   *)
1851     AC_MSG_RESULT(no)
1852     ;;
1853   esac ],
1854   AC_MSG_RESULT(no)
1855 )
1856
1857 #################################################
1858 # check for experimental disk-quotas support
1859 QUOTAOBJS=smbd/noquotas.o
1860
1861 AC_MSG_CHECKING(whether to support disk-quotas)
1862 AC_ARG_WITH(quotas,
1863 [  --with-quotas     Include experimental disk-quota support
1864   --without-quotas  Don't include experimental disk-quota support (default)],
1865 [ case "$withval" in
1866   yes)
1867     AC_MSG_RESULT(yes)
1868     QUOTAOBJS=smbd/quotas.o
1869     ;;
1870   *)
1871     AC_MSG_RESULT(no)
1872     ;;
1873   esac ],
1874   AC_MSG_RESULT(no)
1875 )
1876 AC_SUBST(QUOTAOBJS)
1877
1878 #################################################
1879 # check for experimental utmp accounting
1880
1881 AC_MSG_CHECKING(whether to support utmp accounting)
1882 AC_ARG_WITH(utmp,
1883 [  --with-utmp     Include experimental utmp accounting
1884   --without-utmp  Don't include experimental utmp accounting (default)],
1885 [ case "$withval" in
1886   yes)
1887     AC_MSG_RESULT(yes)
1888     AC_DEFINE(WITH_UTMP)
1889     ;;
1890   *)
1891     AC_MSG_RESULT(no)
1892     ;;
1893   esac ],
1894   AC_MSG_RESULT(no)
1895 )
1896
1897 #################################################
1898 # check for MS Dfs support
1899
1900 AC_MSG_CHECKING(whether to support Microsoft Dfs)
1901 AC_ARG_WITH(msdfs,
1902 [  --with-msdfs         Include MS Dfs support
1903   --without-msdfs       Don't include MS Dfs support (default)],
1904 [ case "$withval" in
1905   yes)
1906      AC_MSG_RESULT(yes)
1907      AC_DEFINE(WITH_MSDFS)
1908      ;;
1909   *)
1910     AC_MSG_RESULT(no)
1911     ;;
1912   esac ],
1913   AC_MSG_RESULT(no)
1914 )
1915
1916 #################################################
1917 # set private directory location
1918 AC_ARG_WITH(privatedir,
1919 [  --with-privatedir=DIR     Where to put smbpasswd ($ac_default_prefix/private)],
1920 [ case "$withval" in
1921   yes|no)
1922   #
1923   # Just in case anybody calls it without argument
1924   #
1925     AC_MSG_WARN([--with-privatedir called without argument - will use default])
1926     privatedir='${prefix}/private'
1927   ;;
1928   * )
1929     privatedir="$withval"
1930     ;;
1931   esac
1932   AC_SUBST(privatedir)],
1933   [privatedir='${prefix}/private'
1934    AC_SUBST(privatedir)]
1935 )
1936
1937 #################################################
1938 # set lock directory location
1939 AC_ARG_WITH(lockdir,
1940 [  --with-lockdir=DIR     Where to put lock files ($ac_default_prefix/var/locks)],
1941 [ case "$withval" in
1942   yes|no)
1943   #
1944   # Just in case anybody calls it without argument
1945   #
1946     AC_MSG_WARN([--with-lockdir called without argument - will use default])
1947     lockdir='$(VARDIR)/locks'
1948   ;;
1949   * )
1950     lockdir="$withval"
1951     ;;
1952   esac
1953   AC_SUBST(lockdir)],
1954   [lockdir='$(VARDIR)/locks'
1955    AC_SUBST(lockdir)]
1956 )
1957
1958 #################################################
1959 # set SWAT directory location
1960 AC_ARG_WITH(swatdir,
1961 [  --with-swatdir=DIR     Where to put SWAT files ($ac_default_prefix/swat)],
1962 [ case "$withval" in
1963   yes|no)
1964   #
1965   # Just in case anybody does it
1966   #
1967     AC_MSG_WARN([--with-swatdir called without argument - will use default])
1968     swatdir='${prefix}/swat'
1969   ;;
1970   * )
1971     swatdir="$withval"
1972     ;;
1973   esac
1974   AC_SUBST(swatdir)],
1975   [swatdir='${prefix}/swat'
1976    AC_SUBST(swatdir)]
1977 )
1978
1979 #################################################
1980 # these tests are taken from the GNU fileutils package
1981 AC_CHECKING(how to get filesystem space usage)
1982 space=no
1983
1984 # Test for statvfs64.
1985 if test $space = no; then
1986   # SVR4
1987   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
1988   [AC_TRY_RUN([
1989 #if defined(HAVE_UNISTD_H)
1990 #include <unistd.h>
1991 #endif
1992 #include <sys/types.h>
1993 #include <sys/statvfs.h>
1994   main ()
1995   {
1996     struct statvfs64 fsd;
1997     exit (statvfs64 (".", &fsd));
1998   }],
1999   fu_cv_sys_stat_statvfs64=yes,
2000   fu_cv_sys_stat_statvfs64=no,
2001   fu_cv_sys_stat_statvfs64=cross)])
2002   if test $fu_cv_sys_stat_statvfs64 = yes; then
2003     space=yes
2004     AC_DEFINE(STAT_STATVFS64)
2005   fi
2006 fi
2007
2008 # Perform only the link test since it seems there are no variants of the
2009 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
2010 # because that got a false positive on SCO OSR5.  Adding the declaration
2011 # of a `struct statvfs' causes this test to fail (as it should) on such
2012 # systems.  That system is reported to work fine with STAT_STATFS4 which
2013 # is what it gets when this test fails.
2014 if test $space = no; then
2015   # SVR4
2016   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
2017                  [AC_TRY_LINK([#include <sys/types.h>
2018 #include <sys/statvfs.h>],
2019                               [struct statvfs fsd; statvfs (0, &fsd);],
2020                               fu_cv_sys_stat_statvfs=yes,
2021                               fu_cv_sys_stat_statvfs=no)])
2022   if test $fu_cv_sys_stat_statvfs = yes; then
2023     space=yes
2024     AC_DEFINE(STAT_STATVFS)
2025   fi
2026 fi
2027
2028 if test $space = no; then
2029   # DEC Alpha running OSF/1
2030   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
2031   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
2032   [AC_TRY_RUN([
2033 #include <sys/param.h>
2034 #include <sys/types.h>
2035 #include <sys/mount.h>
2036   main ()
2037   {
2038     struct statfs fsd;
2039     fsd.f_fsize = 0;
2040     exit (statfs (".", &fsd, sizeof (struct statfs)));
2041   }],
2042   fu_cv_sys_stat_statfs3_osf1=yes,
2043   fu_cv_sys_stat_statfs3_osf1=no,
2044   fu_cv_sys_stat_statfs3_osf1=no)])
2045   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
2046   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
2047     space=yes
2048     AC_DEFINE(STAT_STATFS3_OSF1)
2049   fi
2050 fi
2051
2052 if test $space = no; then
2053 # AIX
2054   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
2055 member (AIX, 4.3BSD)])
2056   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
2057   [AC_TRY_RUN([
2058 #ifdef HAVE_SYS_PARAM_H
2059 #include <sys/param.h>
2060 #endif
2061 #ifdef HAVE_SYS_MOUNT_H
2062 #include <sys/mount.h>
2063 #endif
2064 #ifdef HAVE_SYS_VFS_H
2065 #include <sys/vfs.h>
2066 #endif
2067   main ()
2068   {
2069   struct statfs fsd;
2070   fsd.f_bsize = 0;
2071   exit (statfs (".", &fsd));
2072   }],
2073   fu_cv_sys_stat_statfs2_bsize=yes,
2074   fu_cv_sys_stat_statfs2_bsize=no,
2075   fu_cv_sys_stat_statfs2_bsize=no)])
2076   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
2077   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
2078     space=yes
2079     AC_DEFINE(STAT_STATFS2_BSIZE)
2080   fi
2081 fi
2082
2083 if test $space = no; then
2084 # SVR3
2085   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
2086   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
2087   [AC_TRY_RUN([#include <sys/types.h>
2088 #include <sys/statfs.h>
2089   main ()
2090   {
2091   struct statfs fsd;
2092   exit (statfs (".", &fsd, sizeof fsd, 0));
2093   }],
2094     fu_cv_sys_stat_statfs4=yes,
2095     fu_cv_sys_stat_statfs4=no,
2096     fu_cv_sys_stat_statfs4=no)])
2097   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
2098   if test $fu_cv_sys_stat_statfs4 = yes; then
2099     space=yes
2100     AC_DEFINE(STAT_STATFS4)
2101   fi
2102 fi
2103
2104 if test $space = no; then
2105 # 4.4BSD and NetBSD
2106   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
2107 member (4.4BSD and NetBSD)])
2108   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
2109   [AC_TRY_RUN([#include <sys/types.h>
2110 #ifdef HAVE_SYS_PARAM_H
2111 #include <sys/param.h>
2112 #endif
2113 #ifdef HAVE_SYS_MOUNT_H
2114 #include <sys/mount.h>
2115 #endif
2116   main ()
2117   {
2118   struct statfs fsd;
2119   fsd.f_fsize = 0;
2120   exit (statfs (".", &fsd));
2121   }],
2122   fu_cv_sys_stat_statfs2_fsize=yes,
2123   fu_cv_sys_stat_statfs2_fsize=no,
2124   fu_cv_sys_stat_statfs2_fsize=no)])
2125   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
2126   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
2127     space=yes
2128     AC_DEFINE(STAT_STATFS2_FSIZE)
2129   fi
2130 fi
2131
2132 if test $space = no; then
2133   # Ultrix
2134   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
2135   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
2136   [AC_TRY_RUN([#include <sys/types.h>
2137 #ifdef HAVE_SYS_PARAM_H
2138 #include <sys/param.h>
2139 #endif
2140 #ifdef HAVE_SYS_MOUNT_H
2141 #include <sys/mount.h>
2142 #endif
2143 #ifdef HAVE_SYS_FS_TYPES_H
2144 #include <sys/fs_types.h>
2145 #endif
2146   main ()
2147   {
2148   struct fs_data fsd;
2149   /* Ultrix's statfs returns 1 for success,
2150      0 for not mounted, -1 for failure.  */
2151   exit (statfs (".", &fsd) != 1);
2152   }],
2153   fu_cv_sys_stat_fs_data=yes,
2154   fu_cv_sys_stat_fs_data=no,
2155   fu_cv_sys_stat_fs_data=no)])
2156   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
2157   if test $fu_cv_sys_stat_fs_data = yes; then
2158     space=yes
2159     AC_DEFINE(STAT_STATFS2_FS_DATA)
2160   fi
2161 fi
2162
2163 #
2164 # As a gating factor for large file support, in order to
2165 # use <4GB files we must have the following minimal support
2166 # available.
2167 # long long, and a 64 bit off_t or off64_t.
2168 # If we don't have all of these then disable large
2169 # file support.
2170 #
2171 AC_MSG_CHECKING([if large file support can be enabled])
2172 AC_TRY_COMPILE([
2173 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
2174 #include <sys/types.h>
2175 #else
2176 __COMPILE_ERROR_
2177 #endif
2178 ],
2179 [int i],
2180 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
2181 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
2182     AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT)
2183 fi
2184 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
2185
2186 AC_ARG_WITH(spinlocks, [  --with-spinlocks        use spin locks instead of fcntl locks ])
2187 if test "x$with_spinlocks" = "xyes"; then
2188     AC_DEFINE(USE_SPINLOCKS)
2189
2190     case "$host_cpu" in
2191         sparc)
2192             AC_DEFINE(SPARC_SPINLOCKS)
2193             ;;
2194
2195         i386|i486|i586|i686)
2196             AC_DEFINE(INTEL_SPINLOCKS)
2197             ;;
2198
2199         mips)
2200             AC_DEFINE(MIPS_SPINLOCKS)
2201             ;;
2202
2203         powerpc)
2204             AC_DEFINE(POWERPC_SPINLOCKS)
2205             ;;
2206     esac
2207 fi
2208
2209 #################################################
2210 # check for ACL support
2211
2212 AC_MSG_CHECKING(whether to support ACLs)
2213 AC_ARG_WITH(acl-support,
2214 [  --with-acl-support        Include ACL support
2215   --without-acl-support  Don't include ACL support (default)],
2216 [ case "$withval" in
2217   yes)
2218
2219         case "$host_os" in
2220         *sysv5*)
2221             AC_MSG_RESULT(Using UnixWare ACLs)
2222             AC_DEFINE(HAVE_UNIXWARE_ACLS)
2223             ;;
2224         *solaris*)
2225             AC_MSG_RESULT(Using solaris ACLs)
2226             AC_DEFINE(HAVE_SOLARIS_ACLS)
2227             ;;
2228                 *irix*)
2229                         AC_MSG_RESULT(Using IRIX ACLs)
2230                         AC_DEFINE(HAVE_IRIX_ACLS)
2231                         ;;
2232                 *aix*)
2233                         AC_MSG_RESULT(Using AIX ACLs)
2234                         AC_DEFINE(HAVE_AIX_ACLS)
2235                         ;;
2236         *)
2237                         AC_CHECK_LIB(acl,acl_get_file)
2238                         AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
2239                         AC_TRY_LINK([#include <sys/types.h>
2240 #include <sys/acl.h>],
2241 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
2242 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)])
2243                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
2244                                 AC_MSG_RESULT(Using posix ACLs)
2245                                 AC_DEFINE(HAVE_POSIX_ACLS)
2246                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
2247                                 AC_TRY_LINK([#include <sys/types.h>
2248 #include <sys/acl.h>],
2249 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
2250 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)])
2251                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
2252                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP)
2253                                 fi
2254                         fi
2255             ;;
2256         esac
2257         ;;
2258   *)
2259     AC_MSG_RESULT(no)
2260     AC_DEFINE(HAVE_NO_ACLS)
2261     ;;
2262   esac ],
2263   AC_DEFINE(HAVE_NO_ACLS)
2264   AC_MSG_RESULT(no)
2265 )
2266
2267 #################################################
2268 # check whether winbind is supported on this platform
2269
2270 AC_MSG_CHECKING(whether to compile winbind)
2271
2272 case "$host_os" in 
2273         *linux*|*solaris*)
2274                 WINBIND_TARGETS="$WINBIND_TARGETS \$(WINBIND_PROGS)"
2275                 case "$with_pam" in
2276                         yes)
2277                                 WINBIND_TARGETS="$WINBIND_TARGETS \$(WINBIND_PAM_PROGS)"
2278                         ;;
2279                         *)
2280                 esac
2281                 ;;
2282         *)
2283                 winbind_no_reason=", unsupported on $host_os"
2284                 ;;
2285 esac
2286
2287 AC_ARG_WITH(winbind,
2288 [  --with-winbind       Build winbind library (default, if supported by OS)
2289   --without-winbind     Don't build winbind library],
2290
2291   case "$withval" in
2292         no)
2293                 WINBIND_TARGETS=""
2294                 winbind_reason=""
2295                 ;;
2296   esac ],
2297 )
2298
2299 if test x"$WINBIND_TARGETS" = x; then
2300         AC_MSG_RESULT(no$winbind_no_reason)
2301 else
2302         AC_MSG_RESULT(yes)
2303 fi
2304
2305 AC_SUBST(WINBIND_TARGETS)
2306
2307 #################################################
2308 # final configure stuff
2309
2310 echo "checking configure summary"
2311 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
2312            echo "configure OK";,
2313            AC_MSG_ERROR([summary failure. Aborting config]),:)
2314
2315 builddir=`pwd`
2316 AC_SUBST(builddir)
2317
2318 AC_OUTPUT(include/stamp-h Makefile)