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