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