Try to fix build by adding autoconf tests for pam headers.
[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/ipc.h sys/mode.h)
252 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.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 AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h)
256
257 #
258 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
259 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
260 #
261 case "$host_os" in
262     *hpux*)
263                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
264                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
265                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
266                    AC_DEFINE(HAVE_SHADOW_H)
267                 fi
268         ;;
269 esac
270 AC_CHECK_HEADERS(shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
271 AC_CHECK_HEADERS(nss.h sys/security.h security/pam_appl.h security/pam_modules.h)
272 AC_CHECK_HEADERS(stropts.h poll.h)
273 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
274 AC_CHECK_HEADERS(sys/acl.h sys/cdefs.h glob.h acl/acl.h)
275
276 # For experimental utmp support (lastlog on some BSD-like systems)
277 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
278  
279 # For quotas on Veritas VxFS filesystems
280 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
281
282 AC_CHECK_SIZEOF(int,cross)
283 AC_CHECK_SIZEOF(long,cross)
284 AC_CHECK_SIZEOF(short,cross)
285
286 AC_C_CONST
287 AC_C_INLINE
288 AC_C_BIGENDIAN
289 AC_C_CHAR_UNSIGNED
290
291 AC_TYPE_SIGNAL
292 AC_TYPE_UID_T
293 AC_TYPE_MODE_T
294 AC_TYPE_OFF_T
295 AC_TYPE_SIZE_T
296 AC_TYPE_PID_T
297 AC_STRUCT_ST_RDEV
298 AC_DIRENT_D_OFF
299 AC_CHECK_TYPE(ino_t,unsigned)
300 AC_CHECK_TYPE(loff_t,off_t)
301 AC_CHECK_TYPE(offset_t,loff_t)
302 AC_CHECK_TYPE(ssize_t, int)
303 AC_CHECK_TYPE(wchar_t, unsigned short)
304
305 # we need libcups for CUPS support...
306 AC_CHECK_LIB(cups,httpConnect)
307
308 # we need libdl for PAM and the new VFS code
309 AC_CHECK_LIB(dl, dlopen, [LIBS="$LIBS -ldl";
310         AC_DEFINE(HAVE_LIBDL)])
311
312 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
313     AC_TRY_COMPILE([
314 #include <sys/types.h>
315 #if STDC_HEADERS
316 #include <stdlib.h>
317 #include <stddef.h>
318 #endif
319 #include <signal.h>],[sig_atomic_t i = 0],
320         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
321 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
322    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE)
323 fi
324
325 AC_CACHE_CHECK([for errno in errno.h],samba_cv_errno, [
326     AC_TRY_COMPILE([#include <errno.h>],[int i = errno],
327         samba_cv_errno=yes,samba_cv_have_errno=no)])
328 if test x"$samba_cv_errno" = x"yes"; then
329    AC_DEFINE(HAVE_ERRNO_DECL)
330 fi
331
332 # stupid glibc has the functions but no declaration. grrrr.
333 AC_CACHE_CHECK([for setresuid declaration],samba_cv_have_setresuid_decl,[
334     AC_TRY_COMPILE([#include <unistd.h>],[int i = (int)setresuid],
335         samba_cv_have_setresuid_decl=yes,samba_cv_have_setresuid_decl=no)])
336 if test x"$samba_cv_have_setresuid_decl" = x"yes"; then
337     AC_DEFINE(HAVE_SETRESUID_DECL)
338 fi
339
340 # stupid glibc has the functions but no declaration. grrrr.
341 AC_CACHE_CHECK([for setresgid declaration],samba_cv_have_setresgid_decl,[
342     AC_TRY_COMPILE([#include <unistd.h>],[int i = (int)setresgid],
343         samba_cv_have_setresgid_decl=yes,samba_cv_have_setresgid_decl=no)])
344 if test x"$samba_cv_have_setresgid_decl" = x"yes"; then
345     AC_DEFINE(HAVE_SETRESGID_DECL)
346 fi
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)
502
503 # syscall() is needed for smbwrapper.
504 AC_CHECK_FUNCS(syscall)
505
506 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
507 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
508 AC_CHECK_FUNCS(__getcwd _getcwd)
509 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
510 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
511 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
512 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
513 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
514 AC_CHECK_FUNCS(_write __write _fork __fork)
515 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
516 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
517 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
518 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
519 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
520
521 #
522 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
523 #
524
525 if test x$ac_cv_func_stat64 = xno ; then
526   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
527   AC_TRY_LINK([
528 #if defined(HAVE_UNISTD_H)
529 #include <unistd.h>
530 #endif
531 #include <sys/stat.h>
532 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
533   AC_MSG_RESULT([$ac_cv_func_stat64])
534   if test x$ac_cv_func_stat64 = xyes ; then
535     AC_DEFINE(HAVE_STAT64)
536   fi
537 fi
538
539 if test x$ac_cv_func_lstat64 = xno ; then
540   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
541   AC_TRY_LINK([
542 #if defined(HAVE_UNISTD_H)
543 #include <unistd.h>
544 #endif
545 #include <sys/stat.h>
546 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
547   AC_MSG_RESULT([$ac_cv_func_lstat64])
548   if test x$ac_cv_func_lstat64 = xyes ; then
549     AC_DEFINE(HAVE_LSTAT64)
550   fi
551 fi
552
553 if test x$ac_cv_func_fstat64 = xno ; then
554   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
555   AC_TRY_LINK([
556 #if defined(HAVE_UNISTD_H)
557 #include <unistd.h>
558 #endif
559 #include <sys/stat.h>
560 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
561   AC_MSG_RESULT([$ac_cv_func_fstat64])
562   if test x$ac_cv_func_fstat64 = xyes ; then
563     AC_DEFINE(HAVE_FSTAT64)
564   fi
565 fi
566
567 #
568 # If no strcasecmp, check for it in some known places
569 # It is in -lresolv on ReliantUNIX and UnixWare
570 #   -lresolve *must* follow -lnsl for name resolution to work properly
571 #
572
573 if test x$ac_cv_func_strcasecmp = xno ; then
574         AC_CHECK_LIB(resolv,strcasecmp,[LIBS="$LIBS -lresolv"]
575                 AC_DEFINE(HAVE_STRCASECMP))
576 fi
577
578 #
579 # Check for the functions putprpwnam, set_auth_parameters,
580 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
581 # Needed for OSF1 and HPUX.
582 #
583
584 AC_LIBTESTFUNC(security, putprpwnam)
585 AC_LIBTESTFUNC(sec, putprpwnam)
586
587 AC_LIBTESTFUNC(security, set_auth_parameters)
588 AC_LIBTESTFUNC(sec, set_auth_parameters)
589
590 # UnixWare 7.x has its getspnam in -lgen
591 AC_LIBTESTFUNC(gen, getspnam)
592
593 AC_LIBTESTFUNC(security, getspnam)
594 AC_LIBTESTFUNC(sec, getspnam)
595
596 AC_LIBTESTFUNC(security, bigcrypt)
597 AC_LIBTESTFUNC(sec, bigcrypt)
598
599 AC_LIBTESTFUNC(security, getprpwnam)
600 AC_LIBTESTFUNC(sec, getprpwnam)
601
602 # this bit needs to be modified for each OS that is suported by
603 # smbwrapper. You need to specify how to created a shared library and
604 # how to compile C code to produce PIC object files
605
606 # these are the defaults, good for lots of systems
607 HOST_OS="$host_os"
608 LDSHFLAGS="-shared"
609 PICFLAG=""
610 SHLIBEXT="so"
611
612 # and these are for particular systems
613 case "$host_os" in
614                 *linux*)   AC_DEFINE(LINUX);;
615                 *solaris*) AC_DEFINE(SUNOS5)
616                                         LDSHFLAGS="-G"
617                 ;;
618                 *sunos*) AC_DEFINE(SUNOS4)
619                                         LDSHFLAGS=""
620                 ;;
621                 *bsd*) LDSHFLAGS="-shared -Bshareable"
622                 ;;
623                 *irix*) AC_DEFINE(IRIX)
624                         case "$host_os" in
625                         *irix6*) AC_DEFINE(IRIX6)
626                         ;;
627                         esac
628                         ATTEMPT_WRAP32_BUILD=yes
629                 ;;
630                 *aix*) AC_DEFINE(AIX);;
631                 *hpux*) AC_DEFINE(HPUX)
632                         SHLIBEXT="sl"
633                         # Use special PIC flags for the native HP-UX compiler.
634                         if test $ac_cv_prog_cc_Ae = yes; then
635                                 LDSHFLAGS="-b"
636                                 PICFLAG="+z"
637                         fi
638                 ;;
639                 *qnx*) AC_DEFINE(QNX);;
640                 *osf*) AC_DEFINE(OSF1);;
641                 *sco*) AC_DEFINE(SCO);;
642                 *next2*) AC_DEFINE(NEXT2);;
643                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man]);;
644                 *sysv4*)
645                         case "$host" in
646                                 *-univel-*)     if [ test "$GCC" != yes ]; then
647                                                                         AC_DEFINE(HAVE_MEMSET)
648                                                                 fi
649                                                                 LDSHFLAGS="-G"
650                                 ;;
651                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX);;
652                         esac
653                         ;;
654                 *sysv5*)
655                         if [ test "$GCC" != yes ]; then
656                                 AC_DEFINE(HAVE_MEMSET)
657                         fi
658                         LDSHFLAGS="-G"
659                         ;;
660 esac
661
662 # try to work out how to produce PIC code with this compiler
663 AC_PROG_CC_FLAG(fPIC)
664 if test $ac_cv_prog_cc_fPIC = yes; then
665     PICFLAG="-fPIC";
666 fi
667 if test x$PICFLAG = x; then
668   AC_PROG_CC_FLAG(KPIC)
669   if test $ac_cv_prog_cc_KPIC = yes; then
670     PICFLAG="-KPIC";
671   fi
672 fi
673 if test x$PICFLAG = x; then
674   AC_PROG_CC_FLAG(Kpic)
675   if test $ac_cv_prog_cc_Kpic = yes; then
676     PICFLAG="-Kpic";
677   fi
678 fi
679
680 ################
681
682 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
683 AC_TRY_RUN([#include <stdio.h>
684 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
685 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
686 if test x"$samba_cv_have_longlong" = x"yes"; then
687     AC_DEFINE(HAVE_LONGLONG)
688 fi
689
690 #
691 # Check if the compiler supports the LL prefix on long long integers.
692 # AIX needs this.
693
694 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
695     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
696         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
697 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
698    AC_DEFINE(COMPILER_SUPPORTS_LL)
699 fi
700
701   
702 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
703 AC_TRY_RUN([#include <stdio.h>
704 #include <sys/stat.h>
705 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
706 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
707 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
708     AC_DEFINE(SIZEOF_OFF_T,8)
709 fi
710
711 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
712 AC_TRY_RUN([
713 #if defined(HAVE_UNISTD_H)
714 #include <unistd.h>
715 #endif
716 #include <stdio.h>
717 #include <sys/stat.h>
718 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
719 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
720 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
721     AC_DEFINE(HAVE_OFF64_T)
722 fi
723
724 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
725 AC_TRY_RUN([#include <stdio.h>
726 #include <sys/stat.h>
727 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
728 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
729 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
730     AC_DEFINE(SIZEOF_INO_T,8)
731 fi
732
733 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
734 AC_TRY_RUN([
735 #if defined(HAVE_UNISTD_H)
736 #include <unistd.h>
737 #endif
738 #include <stdio.h>
739 #include <sys/stat.h>
740 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
741 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
742 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
743     AC_DEFINE(HAVE_INO64_T)
744 fi
745
746 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
747 AC_TRY_COMPILE([
748 #if defined(HAVE_UNISTD_H)
749 #include <unistd.h>
750 #endif
751 #include <sys/types.h>
752 #include <dirent.h>],
753 [struct dirent64 de;],
754 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
755 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes"; then
756     AC_DEFINE(HAVE_STRUCT_DIRENT64)
757 fi
758
759 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
760 AC_TRY_RUN([#include <stdio.h>
761 main() { char c; c=250; exit((c > 0)?0:1); }],
762 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
763 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
764     AC_DEFINE(HAVE_UNSIGNED_CHAR)
765 fi
766
767 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
768 AC_TRY_COMPILE([#include <sys/types.h>
769 #include <sys/socket.h>
770 #include <netinet/in.h>],
771 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
772 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
773 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
774     AC_DEFINE(HAVE_SOCK_SIN_LEN)
775 fi
776
777 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
778 AC_TRY_COMPILE([#include <sys/types.h>
779 #include <dirent.h>
780 void seekdir(DIR *d, long loc) { return; }],[return 0;],
781 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
782 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
783     AC_DEFINE(SEEKDIR_RETURNS_VOID)
784 fi
785
786 AC_CACHE_CHECK([for __FILE__ macro],samba_cv_HAVE_FILE_MACRO,[
787 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FILE__);],
788 samba_cv_HAVE_FILE_MACRO=yes,samba_cv_HAVE_FILE_MACRO=no)])
789 if test x"$samba_cv_HAVE_FILE_MACRO" = x"yes"; then
790     AC_DEFINE(HAVE_FILE_MACRO)
791 fi
792
793 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
794 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
795 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
796 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
797     AC_DEFINE(HAVE_FUNCTION_MACRO)
798 fi
799
800 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
801 AC_TRY_RUN([
802 #include <sys/time.h>
803 #include <unistd.h>
804 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
805            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
806 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
807     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ)
808 fi
809
810 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
811 AC_TRY_RUN([
812 #include <sys/types.h>
813 #include <stdarg.h>
814 void foo(const char *format, ...) { 
815        va_list ap;
816        int len;
817        char buf[5];
818
819        va_start(ap, format);
820        len = vsnprintf(0, 0, format, ap);
821        va_end(ap);
822        if (len != 5) exit(1);
823
824        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
825
826        exit(0);
827 }
828 main() { foo("hello"); }
829 ],
830 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
831 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
832     AC_DEFINE(HAVE_C99_VSNPRINTF)
833 fi
834
835 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
836 AC_TRY_RUN([#include <sys/types.h>
837 #include <dirent.h>
838 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
839 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
840 di->d_name[0] == 0) exit(0); exit(1);} ],
841 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
842 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
843     AC_DEFINE(HAVE_BROKEN_READDIR)
844 fi
845
846 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
847 AC_TRY_COMPILE([#include <sys/types.h>
848 #include <utime.h>],
849 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
850 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
851 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
852     AC_DEFINE(HAVE_UTIMBUF)
853 fi
854
855 dnl  utmp and utmpx come in many flavours
856 dnl  We need to check for many of them
857 dnl  But we don't need to do each and every one, because our code uses
858 dnl  mostly just the utmp (not utmpx) fields.
859
860 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
861
862 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
863 AC_TRY_COMPILE([#include <sys/types.h>
864 #include <utmp.h>],
865 [struct utmp ut;  ut.ut_name[0] = 'a';],
866 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
867 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
868     AC_DEFINE(HAVE_UT_UT_NAME)
869 fi 
870
871 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
872 AC_TRY_COMPILE([#include <sys/types.h>
873 #include <utmp.h>],
874 [struct utmp ut;  ut.ut_user[0] = 'a';],
875 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
876 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
877     AC_DEFINE(HAVE_UT_UT_USER)
878 fi 
879
880 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
881 AC_TRY_COMPILE([#include <sys/types.h>
882 #include <utmp.h>],
883 [struct utmp ut;  ut.ut_id[0] = 'a';],
884 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
885 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
886     AC_DEFINE(HAVE_UT_UT_ID)
887 fi 
888
889 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
890 AC_TRY_COMPILE([#include <sys/types.h>
891 #include <utmp.h>],
892 [struct utmp ut;  ut.ut_host[0] = 'a';],
893 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
894 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
895     AC_DEFINE(HAVE_UT_UT_HOST)
896 fi 
897
898 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
899 AC_TRY_COMPILE([#include <sys/types.h>
900 #include <utmp.h>],
901 [struct utmp ut;  time_t t; ut.ut_time = t;],
902 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
903 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
904     AC_DEFINE(HAVE_UT_UT_TIME)
905 fi 
906
907 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
908 AC_TRY_COMPILE([#include <sys/types.h>
909 #include <utmp.h>],
910 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
911 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
912 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
913     AC_DEFINE(HAVE_UT_UT_TV)
914 fi 
915
916 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
917 AC_TRY_COMPILE([#include <sys/types.h>
918 #include <utmp.h>],
919 [struct utmp ut;  ut.ut_type = 0;],
920 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
921 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
922     AC_DEFINE(HAVE_UT_UT_TYPE)
923 fi 
924
925 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
926 AC_TRY_COMPILE([#include <sys/types.h>
927 #include <utmp.h>],
928 [struct utmp ut;  ut.ut_pid = 0;],
929 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
930 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
931     AC_DEFINE(HAVE_UT_UT_PID)
932 fi 
933
934 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
935 AC_TRY_COMPILE([#include <sys/types.h>
936 #include <utmp.h>],
937 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
938 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
939 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
940     AC_DEFINE(HAVE_UT_UT_EXIT)
941 fi 
942
943 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
944 AC_TRY_COMPILE([#include <sys/types.h>
945 #include <utmp.h>],
946 [struct utmp ut;  ut.ut_addr = 0;],
947 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
948 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
949     AC_DEFINE(HAVE_UT_UT_ADDR)
950 fi 
951
952 if test x$ac_cv_func_pututline = xyes ; then
953   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
954   AC_TRY_COMPILE([#include <sys/types.h>
955 #include <utmp.h>],
956   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
957   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
958   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
959       AC_DEFINE(PUTUTLINE_RETURNS_UTMP)
960   fi
961 fi
962
963 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
964 AC_TRY_COMPILE([#include <sys/types.h>
965 #include <utmpx.h>],
966 [struct utmpx ux;  ux.ut_syslen = 0;],
967 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
968 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
969     AC_DEFINE(HAVE_UX_UT_SYSLEN)
970 fi 
971
972 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
973 AC_TRY_RUN([
974 #include <sys/types.h>
975 #include <fcntl.h>
976 #ifndef F_GETLEASE
977 #define F_GETLEASE      1025
978 #endif
979 main() {
980        int fd = open("/dev/null", O_RDONLY);
981        return fcntl(fd, F_GETLEASE, 0) == -1;
982 }
983 ],
984 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
985 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
986     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX)
987 fi
988
989 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
990 AC_TRY_RUN([
991 #include <sys/types.h>
992 #include <fcntl.h>
993 #include <signal.h>
994 #ifndef F_NOTIFY
995 #define F_NOTIFY 1026
996 #endif
997 main() {
998         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
999 }
1000 ],
1001 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1002 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
1003     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY)
1004 fi
1005
1006 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1007 AC_TRY_RUN([
1008 #include <sys/types.h>
1009 #include <fcntl.h>
1010 #include <signal.h>
1011 #include <sys/file.h>
1012 #ifndef LOCK_MAND
1013 #define LOCK_MAND       32
1014 #define LOCK_READ       64
1015 #endif
1016 main() {
1017         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1018 }
1019 ],
1020 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1021 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1022     AC_DEFINE(HAVE_KERNEL_SHARE_MODES)
1023 fi
1024
1025
1026
1027
1028 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1029 AC_TRY_COMPILE([#include <sys/types.h>
1030 #include <fcntl.h>],
1031 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1032 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1033 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1034     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX)
1035 fi
1036
1037 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1038 AC_TRY_RUN([#include <sys/types.h>
1039 #include <sys/capability.h>
1040 main() {
1041  cap_t cap;
1042  if ((cap = cap_get_proc()) == NULL)
1043    exit(1);
1044  cap->cap_effective |= CAP_NETWORK_MGT;
1045  cap->cap_inheritable |= CAP_NETWORK_MGT;
1046  cap_set_proc(cap);
1047  exit(0);
1048 }
1049 ],
1050 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1051 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1052     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES)
1053 fi
1054
1055 #
1056 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1057 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1058 #
1059
1060 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1061 AC_TRY_COMPILE([#include <sys/types.h>
1062 #if defined(HAVE_RPC_RPC_H)
1063 #include <rpc/rpc.h>
1064 #endif],
1065 [int16 testvar;],
1066 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1067 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1068     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H)
1069 fi
1070
1071 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1072 AC_TRY_COMPILE([#include <sys/types.h>
1073 #if defined(HAVE_RPC_RPC_H)
1074 #include <rpc/rpc.h>
1075 #endif],
1076 [uint16 testvar;],
1077 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1078 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1079     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H)
1080 fi
1081
1082 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1083 AC_TRY_COMPILE([#include <sys/types.h>
1084 #if defined(HAVE_RPC_RPC_H)
1085 #include <rpc/rpc.h>
1086 #endif],
1087 [int32 testvar;],
1088 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1089 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1090     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H)
1091 fi
1092
1093 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1094 AC_TRY_COMPILE([#include <sys/types.h>
1095 #if defined(HAVE_RPC_RPC_H)
1096 #include <rpc/rpc.h>
1097 #endif],
1098 [uint32 testvar;],
1099 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1100 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1101     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H)
1102 fi
1103
1104 dnl
1105 dnl Some systems (SCO) have a problem including
1106 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1107 dnl as a #define in <prot.h> and as part of an enum
1108 dnl in <rpc/rpc.h>.
1109 dnl
1110
1111 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1112 AC_TRY_COMPILE([#include <sys/types.h>
1113 #ifdef HAVE_SYS_SECURITY_H
1114 #include <sys/security.h>
1115 #include <prot.h>
1116 #endif  /* HAVE_SYS_SECURITY_H */
1117 #if defined(HAVE_RPC_RPC_H)
1118 #include <rpc/rpc.h>
1119 #endif],
1120 [int testvar;],
1121 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1122 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1123     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT)
1124 fi
1125
1126 AC_MSG_CHECKING([for test routines])
1127 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1128            AC_MSG_RESULT(yes),
1129            AC_MSG_ERROR([cant find test code. Aborting config]),
1130            AC_MSG_WARN([cannot run when cross-compiling]))
1131
1132 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1133 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1134            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1135 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1136     AC_DEFINE(HAVE_FTRUNCATE_EXTEND)
1137 fi
1138
1139 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1140 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1141            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1142 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1143     AC_DEFINE(HAVE_BROKEN_GETGROUPS)
1144 fi
1145
1146 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1147 SAVE_CPPFLAGS="$CPPFLAGS"
1148 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/smbwrapper"
1149 AC_TRY_COMPILE([
1150 #define REPLACE_GETPASS 1
1151 #define NO_CONFIG_H 1
1152 #define main dont_declare_main
1153 #include "${srcdir-.}/lib/getsmbpass.c"
1154 #undef main
1155 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1156 CPPFLAGS="$SAVE_CPPFLAGS"
1157 ])
1158 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
1159         AC_DEFINE(REPLACE_GETPASS)
1160 fi
1161
1162 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
1163 AC_TRY_RUN([
1164 #include <stdio.h>
1165 #include <sys/types.h>
1166 #include <netinet/in.h>
1167 #ifdef HAVE_ARPA_INET_H
1168 #include <arpa/inet.h>
1169 #endif
1170 main() { struct in_addr ip; ip.s_addr = 0x12345678;
1171 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
1172     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
1173 exit(1);}],
1174            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
1175 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
1176     AC_DEFINE(REPLACE_INET_NTOA)
1177 fi
1178
1179 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
1180 AC_TRY_RUN([#include <stdlib.h>
1181 #include <sys/types.h>
1182 #include <sys/stat.h>
1183 #include <unistd.h>
1184 main() { 
1185   struct stat st;
1186   char tpl[20]="/tmp/test.XXXXXX"; 
1187   int fd = mkstemp(tpl); 
1188   if (fd == -1) exit(1);
1189   unlink(tpl);
1190   if (fstat(fd, &st) != 0) exit(1);
1191   if ((st.st_mode & 0777) != 0600) exit(1);
1192   exit(0);
1193 }],
1194 samba_cv_HAVE_SECURE_MKSTEMP=yes,
1195 samba_cv_HAVE_SECURE_MKSTEMP=no,
1196 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
1197 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
1198     AC_DEFINE(HAVE_SECURE_MKSTEMP)
1199 fi
1200
1201 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
1202 AC_TRY_RUN([#include <unistd.h>
1203 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
1204 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
1205 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
1206     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX)
1207 fi
1208
1209 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
1210 AC_TRY_RUN([main() { exit(getuid() != 0); }],
1211            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
1212 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
1213     AC_DEFINE(HAVE_ROOT)
1214 else
1215     AC_MSG_WARN(running as non-root will disable some tests)
1216 fi
1217
1218 ##################
1219 # look for a method of finding the list of network interfaces
1220 iface=no;
1221 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
1222 AC_TRY_RUN([
1223 #define HAVE_IFACE_AIX 1
1224 #define AUTOCONF_TEST 1
1225 #include "confdefs.h"
1226 #include "${srcdir-.}/lib/interfaces.c"],
1227            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
1228 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
1229     iface=yes;AC_DEFINE(HAVE_IFACE_AIX)
1230 fi
1231
1232 if test $iface = no; then
1233 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
1234 AC_TRY_RUN([
1235 #define HAVE_IFACE_IFCONF 1
1236 #define AUTOCONF_TEST 1
1237 #include "confdefs.h"
1238 #include "${srcdir-.}/lib/interfaces.c"],
1239            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
1240 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
1241     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF)
1242 fi
1243 fi
1244
1245 if test $iface = no; then
1246 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
1247 AC_TRY_RUN([
1248 #define HAVE_IFACE_IFREQ 1
1249 #define AUTOCONF_TEST 1
1250 #include "confdefs.h"
1251 #include "${srcdir-.}/lib/interfaces.c"],
1252            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
1253 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
1254     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ)
1255 fi
1256 fi
1257
1258
1259 ################################################
1260 # look for a method of setting the effective uid
1261 seteuid=no;
1262 if test $seteuid = no; then
1263 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
1264 AC_TRY_RUN([
1265 #define AUTOCONF_TEST 1
1266 #define USE_SETRESUID 1
1267 #include "confdefs.h"
1268 #include "${srcdir-.}/lib/util_sec.c"],
1269            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
1270 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
1271     seteuid=yes;AC_DEFINE(USE_SETRESUID)
1272 fi
1273 fi
1274
1275
1276 if test $seteuid = no; then
1277 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
1278 AC_TRY_RUN([
1279 #define AUTOCONF_TEST 1
1280 #define USE_SETREUID 1
1281 #include "confdefs.h"
1282 #include "${srcdir-.}/lib/util_sec.c"],
1283            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
1284 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
1285     seteuid=yes;AC_DEFINE(USE_SETREUID)
1286 fi
1287 fi
1288
1289 if test $seteuid = no; then
1290 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
1291 AC_TRY_RUN([
1292 #define AUTOCONF_TEST 1
1293 #define USE_SETEUID 1
1294 #include "confdefs.h"
1295 #include "${srcdir-.}/lib/util_sec.c"],
1296            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
1297 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
1298     seteuid=yes;AC_DEFINE(USE_SETEUID)
1299 fi
1300 fi
1301
1302 if test $seteuid = no; then
1303 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
1304 AC_TRY_RUN([
1305 #define AUTOCONF_TEST 1
1306 #define USE_SETUIDX 1
1307 #include "confdefs.h"
1308 #include "${srcdir-.}/lib/util_sec.c"],
1309            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
1310 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
1311     seteuid=yes;AC_DEFINE(USE_SETUIDX)
1312 fi
1313 fi
1314
1315
1316 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
1317 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
1318            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
1319 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
1320     AC_DEFINE(HAVE_MMAP)
1321 fi
1322
1323 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
1324 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
1325            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
1326 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
1327     AC_DEFINE(FTRUNCATE_NEEDS_ROOT)
1328 fi
1329
1330 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
1331 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
1332            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
1333 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
1334     AC_DEFINE(HAVE_FCNTL_LOCK)
1335 fi
1336
1337 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
1338 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
1339            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
1340 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
1341     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS)
1342
1343 else
1344
1345 dnl
1346 dnl Don't check for 64 bit fcntl locking if we know that the
1347 dnl glibc2.1 broken check has succeeded.
1348 dnl 
1349
1350   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
1351   AC_TRY_RUN([
1352 #if defined(HAVE_UNISTD_H)
1353 #include <unistd.h>
1354 #endif
1355 #include <stdio.h>
1356 #include <stdlib.h>
1357
1358 #ifdef HAVE_FCNTL_H
1359 #include <fcntl.h>
1360 #endif
1361
1362 #ifdef HAVE_SYS_FCNTL_H
1363 #include <sys/fcntl.h>
1364 #endif
1365 main() { struct flock64 fl64;
1366 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
1367 exit(0);
1368 #else
1369 exit(1);
1370 #endif
1371 }],
1372        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
1373
1374   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
1375       AC_DEFINE(HAVE_STRUCT_FLOCK64)
1376   fi
1377 fi
1378
1379 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
1380 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
1381            samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)])
1382 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
1383     AC_DEFINE(HAVE_TRUNCATED_SALT)
1384 fi
1385
1386 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
1387 AC_TRY_COMPILE([#include <sys/acl.h>
1388 #if defined(HAVE_RPCSVC_NIS_H)
1389 #include <rpcsvc/nis.h>
1390 #endif],
1391 [return 0;],
1392 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
1393 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
1394     AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES)
1395 fi
1396
1397
1398 #################################################
1399 # check for smbwrapper support
1400 AC_MSG_CHECKING(whether to use smbwrapper)
1401 AC_ARG_WITH(smbwrapper,
1402 [  --with-smbwrapper     Include SMB wrapper support
1403   --without-smbwrapper  Don't include SMB wrapper support (default)],
1404 [ case "$withval" in
1405   yes)
1406     AC_MSG_RESULT(yes)
1407     AC_DEFINE(WITH_SMBWRAPPER)
1408         WRAP="bin/smbsh bin/smbwrapper.$SHLIBEXT"
1409
1410         if test x$ATTEMPT_WRAP32_BUILD = x; then
1411                 WRAP32=""
1412         else
1413                         WRAP32=bin/smbwrapper.32.$SHLIBEXT
1414         fi
1415
1416 # Conditions under which smbwrapper should not be built.
1417
1418         if test x$PICFLAG = x; then
1419            echo No support for PIC code - disabling smbwrapper and smbsh
1420            WRAP=""
1421            WRAP32=""
1422         elif test x$ac_cv_func_syscall = xno; then
1423            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
1424            WRAP=""
1425            WRAP32=""
1426         fi
1427     ;;
1428   *)
1429     AC_MSG_RESULT(no)
1430     ;;
1431   esac ],
1432   AC_MSG_RESULT(no)
1433 )
1434
1435 #################################################
1436 # check for the AFS filesystem
1437 AC_MSG_CHECKING(whether to use AFS)
1438 AC_ARG_WITH(afs,
1439 [  --with-afs     Include AFS support
1440   --without-afs  Don't include AFS support (default)],
1441 [ case "$withval" in
1442   yes)
1443     AC_MSG_RESULT(yes)
1444     AC_DEFINE(WITH_AFS)
1445     ;;
1446   *)
1447     AC_MSG_RESULT(no)
1448     ;;
1449   esac ],
1450   AC_MSG_RESULT(no)
1451 )
1452
1453
1454 #################################################
1455 # check for the DFS auth system
1456 AC_MSG_CHECKING(whether to use DFS auth)
1457 AC_ARG_WITH(dfs,
1458 [  --with-dfs     Include DFS support
1459   --without-dfs  Don't include DFS support (default)],
1460 [ case "$withval" in
1461   yes)
1462     AC_MSG_RESULT(yes)
1463     AC_DEFINE(WITH_DFS)
1464     ;;
1465   *)
1466     AC_MSG_RESULT(no)
1467     ;;
1468   esac ],
1469   AC_MSG_RESULT(no)
1470 )
1471
1472 #################################################
1473 # check for Kerberos IV auth system
1474 AC_MSG_CHECKING(whether to use Kerberos IV)
1475 AC_ARG_WITH(krb4,
1476 [  --with-krb4=base-dir     Include Kerberos IV support
1477   --without-krb4          Don't include Kerberos IV support (default)],
1478 [   AC_MSG_RESULT(yes)
1479     AC_DEFINE(KRB4_AUTH)
1480     AC_CHECK_LIB(resolv, dn_expand)
1481     LIBS="$LIBS -lkrb -ldes"
1482     CFLAGS="$CFLAGS -I$withval/include"
1483     LDFLAGS="$LDFLAGS -L$withval/lib"],
1484   AC_MSG_RESULT(no)
1485 )
1486
1487 #################################################
1488 # check for Kerberos 5 auth system
1489 AC_MSG_CHECKING(whether to use Kerberos 5)
1490 AC_ARG_WITH(krb5,
1491 [  --with-krb5=base-dir     Include Kerberos 5 support
1492   --without-krb5          Don't include Kerberos 5 support (default)],
1493 [   AC_MSG_RESULT(yes)
1494     AC_DEFINE(KRB5_AUTH)
1495     LIBS="$LIBS -ldes425 -lkrb5 -lcrypto -lcom_err"
1496     CFLAGS="$CFLAGS -I$withval/include"
1497     LDFLAGS="$LDFLAGS -L$withval/lib"],
1498   AC_MSG_RESULT(no)
1499 )
1500
1501 #################################################
1502 # check for automount support
1503 AC_MSG_CHECKING(whether to use AUTOMOUNT)
1504 AC_ARG_WITH(automount,
1505 [  --with-automount     Include AUTOMOUNT support
1506   --without-automount  Don't include AUTOMOUNT support (default)],
1507 [ case "$withval" in
1508   yes)
1509     AC_MSG_RESULT(yes)
1510     AC_DEFINE(WITH_AUTOMOUNT)
1511     ;;
1512   *)
1513     AC_MSG_RESULT(no)
1514     ;;
1515   esac ],
1516   AC_MSG_RESULT(no)
1517 )
1518
1519 #################################################
1520 # check for smbmount support
1521 AC_MSG_CHECKING(whether to use SMBMOUNT)
1522 AC_ARG_WITH(smbmount,
1523 [  --with-smbmount     Include SMBMOUNT (Linux only) support
1524   --without-smbmount  Don't include SMBMOUNT support (default)],
1525 [ case "$withval" in
1526   yes)
1527     AC_MSG_RESULT(yes)
1528     AC_DEFINE(WITH_SMBMOUNT)
1529     MPROGS="bin/smbmount bin/smbmnt bin/smbumount"
1530     ;;
1531   *)
1532     AC_MSG_RESULT(no)
1533     MPROGS=
1534     ;;
1535   esac ],
1536   AC_MSG_RESULT(no)
1537   MPROGS=
1538 )
1539
1540
1541 #################################################
1542 # check for a PAM password database
1543 with_pam_for_crypt=no
1544 AC_MSG_CHECKING(whether to use PAM password database)
1545 AC_ARG_WITH(pam,
1546 [  --with-pam     Include PAM password database support
1547   --without-pam  Don't include PAM password database support (default)],
1548 [ case "$withval" in
1549   yes)
1550     AC_MSG_RESULT(yes)
1551     AC_DEFINE(WITH_PAM)
1552     LIBS="$LIBS -lpam"
1553     with_pam_for_crypt=yes
1554     ;;
1555   *)
1556     AC_MSG_RESULT(no)
1557     ;;
1558   esac ],
1559   AC_MSG_RESULT(no)
1560 )
1561
1562 # we can't build a pam module if we don't have pam.
1563 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM)])
1564
1565 #################################################
1566 # check for pam_smbpass support
1567 AC_MSG_CHECKING(whether to use pam_smbpass)
1568 AC_ARG_WITH(pam_smbpass,
1569 [  --with-pam_smbpass     Include the smbpass PAM module
1570   --without-pam_smbpass  Don't include the smbpass PAM module (default)],
1571 [ case "$withval" in
1572   yes)
1573     AC_MSG_RESULT(yes)
1574
1575 # Conditions under which pam_smbpass should not be built.
1576
1577        if test x$PICFLAG = x; then
1578           AC_MSG_RESULT([No support for PIC code - disabling pam_smbpass])
1579           PAM_MOD=""
1580        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
1581           AC_MSG_RESULT([No libpam found -- disabling pam_smbpass])
1582           PAM_MOD=""
1583        else
1584           AC_DEFINE(WITH_PAM_SMBPASS)
1585           PAM_MOD="bin/pam_smbpass.so"
1586        fi
1587     ;;
1588   *)
1589     AC_MSG_RESULT(no)
1590     ;;
1591   esac ],
1592   AC_MSG_RESULT(no)
1593 )
1594
1595
1596 ###############################################
1597 # test for where we get crypt() from, but only
1598 # if not using PAM
1599 if test $with_pam_for_crypt = no; then
1600 AC_CHECK_FUNCS(crypt)
1601 if test x"$ac_cv_func_crypt" = x"no"; then
1602     AC_CHECK_LIB(crypt, crypt, [LIBS="$LIBS -lcrypt";
1603         AC_DEFINE(HAVE_CRYPT)])
1604 fi
1605 fi
1606
1607
1608 #################################################
1609 # check for a TDB password database
1610 AC_MSG_CHECKING(whether to use TDB password database)
1611 AC_ARG_WITH(tdbsam,
1612 [  --with-tdbsam   Include experimental TDB password database
1613   --without-tdbsam  Don't include experimental TDB password database (default)],
1614 [ case "$withval" in
1615   yes)
1616     AC_MSG_RESULT(yes)
1617     AC_DEFINE(WITH_TDBPWD)
1618 #    AC_MSG_ERROR([TDB password database not supported in this version.])
1619     ;;
1620   *)
1621     AC_MSG_RESULT(no)
1622     ;;
1623   esac ],
1624   AC_MSG_RESULT(no)
1625 )
1626
1627 #################################################
1628 # check for a LDAP password database
1629 AC_MSG_CHECKING(whether to use LDAP password database)
1630 AC_ARG_WITH(ldap,
1631 [  --with-ldap     Include LDAP support
1632   --without-ldap  Don't include LDAP support (default)],
1633 [ case "$withval" in
1634   yes)
1635     AC_MSG_RESULT(yes)
1636     AC_DEFINE(WITH_LDAP)
1637     AC_MSG_ERROR([LDAP password database not supported in this version.])
1638     ;;
1639   *)
1640     AC_MSG_RESULT(no)
1641     ;;
1642   esac ],
1643   AC_MSG_RESULT(no)
1644 )
1645
1646 #################################################
1647 # check for a NISPLUS password database
1648 AC_MSG_CHECKING(whether to use NISPLUS password database)
1649 AC_ARG_WITH(nisplus,
1650 [  --with-nisplus     Include NISPLUS password database support
1651   --without-nisplus  Don't include NISPLUS password database support (default)],
1652 [ case "$withval" in
1653   yes)
1654     AC_MSG_RESULT(yes)
1655     AC_DEFINE(WITH_NISPLUS)
1656     ;;
1657   *)
1658     AC_MSG_RESULT(no)
1659     ;;
1660   esac ],
1661   AC_MSG_RESULT(no)
1662 )
1663
1664 #################################################
1665 # check for a NISPLUS_HOME support 
1666 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
1667 AC_ARG_WITH(nisplus-home,
1668 [  --with-nisplus-home     Include NISPLUS_HOME support
1669   --without-nisplus-home  Don't include NISPLUS_HOME support (default)],
1670 [ case "$withval" in
1671   yes)
1672     AC_MSG_RESULT(yes)
1673     AC_DEFINE(WITH_NISPLUS_HOME)
1674     ;;
1675   *)
1676     AC_MSG_RESULT(no)
1677     ;;
1678   esac ],
1679   AC_MSG_RESULT(no)
1680 )
1681
1682 #################################################
1683 # check for the secure socket layer
1684 AC_MSG_CHECKING(whether to use SSL)
1685 AC_ARG_WITH(ssl,
1686 [  --with-ssl     Include SSL support
1687   --without-ssl  Don't include SSL support (default)
1688   --with-sslinc=DIR Where the SSL includes are (defaults to /usr/local/ssl)],
1689 [ case "$withval" in
1690   yes)
1691     AC_MSG_RESULT(yes)
1692     AC_DEFINE(WITH_SSL)
1693     withval="/usr/local/ssl"     # default
1694
1695     if test "${with_sslinc+set}" = set; then
1696
1697         withval="$with_sslinc"
1698         case "$withval" in
1699         yes|no)
1700           echo "configure: warning: --with-sslinc called without argument - will use default" 1>&w
1701           CFLAGS="-I/usr/local/ssl/include $CFLAGS"
1702           LIBS="-lssl -lcrypto $LIBS"
1703           LDFLAGS="=L/usr/local/ssl/lib $LDFLAGS"
1704         ;;
1705         * )
1706           CFLAGS="-I${withval}/include $CFLAGS"
1707           LIBS="-lssl -lcrypto $LIBS"
1708           LDFLAGS="-L${withval}/lib $LDFLAGS"
1709         ;;
1710         esac
1711
1712     else
1713
1714         CFLAGS="-I/usr/local/ssl/include $CFLAGS"   
1715         LIBS="-lssl -lcrypto $LIBS"
1716         LDFLAGS="-L/usr/local/ssl/lib $LDFLAGS"
1717
1718     fi
1719
1720     if test ! -d ${withval}; then
1721       echo "configure: error: called with --with-ssl, but ssl base directory ${withval} does not exist or is not a directory. Aborting config" 1>&2
1722       exit 1
1723     fi 
1724
1725     CFLAGS="-DHAVE_CRYPT_DECL $CFLAGS"  # Damn, SSLeay defines its own
1726
1727     ;;
1728   *)
1729     AC_MSG_RESULT(no)
1730     ;;
1731   esac ],
1732   AC_MSG_RESULT(no)
1733 )
1734
1735 #################################################
1736 # check for syslog logging
1737 AC_MSG_CHECKING(whether to use syslog logging)
1738 AC_ARG_WITH(syslog,
1739 [  --with-syslog     Include experimental SYSLOG support
1740   --without-syslog  Don't include SYSLOG support (default)],
1741 [ case "$withval" in
1742   yes)
1743     AC_MSG_RESULT(yes)
1744     AC_DEFINE(WITH_SYSLOG)
1745     ;;
1746   *)
1747     AC_MSG_RESULT(no)
1748     ;;
1749   esac ],
1750   AC_MSG_RESULT(no)
1751 )
1752
1753 #################################################
1754 # check for a shared memory profiling support
1755 AC_MSG_CHECKING(whether to use profiling)
1756 AC_ARG_WITH(profile,
1757 [  --with-profile     Include profile support
1758   --without-profile  Don't include profile support (default)],
1759 [ case "$withval" in
1760   yes)
1761     AC_MSG_RESULT(yes)
1762     AC_DEFINE(WITH_PROFILE)
1763     ;;
1764   *)
1765     AC_MSG_RESULT(no)
1766     ;;
1767   esac ],
1768   AC_MSG_RESULT(no)
1769 )
1770
1771
1772 #################################################
1773 # check for experimental netatalk resource fork support
1774 AC_MSG_CHECKING(whether to support netatalk)
1775 AC_ARG_WITH(netatalk,
1776 [  --with-netatalk     Include experimental Netatalk support
1777   --without-netatalk  Don't include experimental Netatalk support (default)],
1778 [ case "$withval" in
1779   yes)
1780     AC_MSG_RESULT(yes)
1781     AC_DEFINE(WITH_NETATALK)
1782     ;;
1783   *)
1784     AC_MSG_RESULT(no)
1785     ;;
1786   esac ],
1787   AC_MSG_RESULT(no)
1788 )
1789
1790 #################################################
1791 # check for experimental disk-quotas support
1792 QUOTAOBJS=smbd/noquotas.o
1793
1794 AC_MSG_CHECKING(whether to support disk-quotas)
1795 AC_ARG_WITH(quotas,
1796 [  --with-quotas     Include experimental disk-quota support
1797   --without-quotas  Don't include experimental disk-quota support (default)],
1798 [ case "$withval" in
1799   yes)
1800     AC_MSG_RESULT(yes)
1801     QUOTAOBJS=smbd/quotas.o
1802     ;;
1803   *)
1804     AC_MSG_RESULT(no)
1805     ;;
1806   esac ],
1807   AC_MSG_RESULT(no)
1808 )
1809 AC_SUBST(QUOTAOBJS)
1810
1811 #################################################
1812 # check for experimental utmp accounting
1813
1814 AC_MSG_CHECKING(whether to support utmp accounting)
1815 AC_ARG_WITH(utmp,
1816 [  --with-utmp     Include experimental utmp accounting
1817   --without-utmp  Don't include experimental utmp accounting (default)],
1818 [ case "$withval" in
1819   yes)
1820     AC_MSG_RESULT(yes)
1821     AC_DEFINE(WITH_UTMP)
1822     ;;
1823   *)
1824     AC_MSG_RESULT(no)
1825     ;;
1826   esac ],
1827   AC_MSG_RESULT(no)
1828 )
1829
1830 #################################################
1831 # check for MS Dfs support
1832
1833 AC_MSG_CHECKING(whether to support Microsoft Dfs)
1834 AC_ARG_WITH(msdfs,
1835 [  --with-msdfs         Include MS Dfs support
1836   --without-msdfs       Don't include MS Dfs support (default)],
1837 [ case "$withval" in
1838   yes)
1839      AC_MSG_RESULT(yes)
1840      AC_DEFINE(WITH_MSDFS)
1841      ;;
1842   *)
1843     AC_MSG_RESULT(no)
1844     ;;
1845   esac ],
1846   AC_MSG_RESULT(no)
1847 )
1848
1849 #################################################
1850 # set private directory location
1851 AC_ARG_WITH(privatedir,
1852 [  --with-privatedir=DIR     Where to put smbpasswd ($ac_default_prefix/private)],
1853 [ case "$withval" in
1854   yes|no)
1855   #
1856   # Just in case anybody calls it without argument
1857   #
1858     AC_MSG_WARN([--with-privatedir called without argument - will use default])
1859     privatedir='${prefix}/private'
1860   ;;
1861   * )
1862     privatedir="$withval"
1863     ;;
1864   esac
1865   AC_SUBST(privatedir)],
1866   [privatedir='${prefix}/private'
1867    AC_SUBST(privatedir)]
1868 )
1869
1870 #################################################
1871 # set lock directory location
1872 AC_ARG_WITH(lockdir,
1873 [  --with-lockdir=DIR     Where to put lock files ($ac_default_prefix/var/locks)],
1874 [ case "$withval" in
1875   yes|no)
1876   #
1877   # Just in case anybody calls it without argument
1878   #
1879     AC_MSG_WARN([--with-lockdir called without argument - will use default])
1880     lockdir='$(VARDIR)/locks'
1881   ;;
1882   * )
1883     lockdir="$withval"
1884     ;;
1885   esac
1886   AC_SUBST(lockdir)],
1887   [lockdir='$(VARDIR)/locks'
1888    AC_SUBST(lockdir)]
1889 )
1890
1891 #################################################
1892 # set SWAT directory location
1893 AC_ARG_WITH(swatdir,
1894 [  --with-swatdir=DIR     Where to put SWAT files ($ac_default_prefix/swat)],
1895 [ case "$withval" in
1896   yes|no)
1897   #
1898   # Just in case anybody does it
1899   #
1900     AC_MSG_WARN([--with-swatdir called without argument - will use default])
1901     swatdir='${prefix}/swat'
1902   ;;
1903   * )
1904     swatdir="$withval"
1905     ;;
1906   esac
1907   AC_SUBST(swatdir)],
1908   [swatdir='${prefix}/swat'
1909    AC_SUBST(swatdir)]
1910 )
1911
1912 #################################################
1913 # these tests are taken from the GNU fileutils package
1914 AC_CHECKING(how to get filesystem space usage)
1915 space=no
1916
1917 # Test for statvfs64.
1918 if test $space = no; then
1919   # SVR4
1920   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
1921   [AC_TRY_RUN([
1922 #if defined(HAVE_UNISTD_H)
1923 #include <unistd.h>
1924 #endif
1925 #include <sys/types.h>
1926 #include <sys/statvfs.h>
1927   main ()
1928   {
1929     struct statvfs64 fsd;
1930     exit (statvfs64 (".", &fsd));
1931   }],
1932   fu_cv_sys_stat_statvfs64=yes,
1933   fu_cv_sys_stat_statvfs64=no,
1934   fu_cv_sys_stat_statvfs64=cross)])
1935   if test $fu_cv_sys_stat_statvfs64 = yes; then
1936     space=yes
1937     AC_DEFINE(STAT_STATVFS64)
1938   fi
1939 fi
1940
1941 # Perform only the link test since it seems there are no variants of the
1942 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
1943 # because that got a false positive on SCO OSR5.  Adding the declaration
1944 # of a `struct statvfs' causes this test to fail (as it should) on such
1945 # systems.  That system is reported to work fine with STAT_STATFS4 which
1946 # is what it gets when this test fails.
1947 if test $space = no; then
1948   # SVR4
1949   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
1950                  [AC_TRY_LINK([#include <sys/types.h>
1951 #include <sys/statvfs.h>],
1952                               [struct statvfs fsd; statvfs (0, &fsd);],
1953                               fu_cv_sys_stat_statvfs=yes,
1954                               fu_cv_sys_stat_statvfs=no)])
1955   if test $fu_cv_sys_stat_statvfs = yes; then
1956     space=yes
1957     AC_DEFINE(STAT_STATVFS)
1958   fi
1959 fi
1960
1961 if test $space = no; then
1962   # DEC Alpha running OSF/1
1963   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
1964   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
1965   [AC_TRY_RUN([
1966 #include <sys/param.h>
1967 #include <sys/types.h>
1968 #include <sys/mount.h>
1969   main ()
1970   {
1971     struct statfs fsd;
1972     fsd.f_fsize = 0;
1973     exit (statfs (".", &fsd, sizeof (struct statfs)));
1974   }],
1975   fu_cv_sys_stat_statfs3_osf1=yes,
1976   fu_cv_sys_stat_statfs3_osf1=no,
1977   fu_cv_sys_stat_statfs3_osf1=no)])
1978   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
1979   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
1980     space=yes
1981     AC_DEFINE(STAT_STATFS3_OSF1)
1982   fi
1983 fi
1984
1985 if test $space = no; then
1986 # AIX
1987   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
1988 member (AIX, 4.3BSD)])
1989   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
1990   [AC_TRY_RUN([
1991 #ifdef HAVE_SYS_PARAM_H
1992 #include <sys/param.h>
1993 #endif
1994 #ifdef HAVE_SYS_MOUNT_H
1995 #include <sys/mount.h>
1996 #endif
1997 #ifdef HAVE_SYS_VFS_H
1998 #include <sys/vfs.h>
1999 #endif
2000   main ()
2001   {
2002   struct statfs fsd;
2003   fsd.f_bsize = 0;
2004   exit (statfs (".", &fsd));
2005   }],
2006   fu_cv_sys_stat_statfs2_bsize=yes,
2007   fu_cv_sys_stat_statfs2_bsize=no,
2008   fu_cv_sys_stat_statfs2_bsize=no)])
2009   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
2010   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
2011     space=yes
2012     AC_DEFINE(STAT_STATFS2_BSIZE)
2013   fi
2014 fi
2015
2016 if test $space = no; then
2017 # SVR3
2018   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
2019   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
2020   [AC_TRY_RUN([#include <sys/types.h>
2021 #include <sys/statfs.h>
2022   main ()
2023   {
2024   struct statfs fsd;
2025   exit (statfs (".", &fsd, sizeof fsd, 0));
2026   }],
2027     fu_cv_sys_stat_statfs4=yes,
2028     fu_cv_sys_stat_statfs4=no,
2029     fu_cv_sys_stat_statfs4=no)])
2030   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
2031   if test $fu_cv_sys_stat_statfs4 = yes; then
2032     space=yes
2033     AC_DEFINE(STAT_STATFS4)
2034   fi
2035 fi
2036
2037 if test $space = no; then
2038 # 4.4BSD and NetBSD
2039   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
2040 member (4.4BSD and NetBSD)])
2041   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
2042   [AC_TRY_RUN([#include <sys/types.h>
2043 #ifdef HAVE_SYS_PARAM_H
2044 #include <sys/param.h>
2045 #endif
2046 #ifdef HAVE_SYS_MOUNT_H
2047 #include <sys/mount.h>
2048 #endif
2049   main ()
2050   {
2051   struct statfs fsd;
2052   fsd.f_fsize = 0;
2053   exit (statfs (".", &fsd));
2054   }],
2055   fu_cv_sys_stat_statfs2_fsize=yes,
2056   fu_cv_sys_stat_statfs2_fsize=no,
2057   fu_cv_sys_stat_statfs2_fsize=no)])
2058   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
2059   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
2060     space=yes
2061     AC_DEFINE(STAT_STATFS2_FSIZE)
2062   fi
2063 fi
2064
2065 if test $space = no; then
2066   # Ultrix
2067   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
2068   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
2069   [AC_TRY_RUN([#include <sys/types.h>
2070 #ifdef HAVE_SYS_PARAM_H
2071 #include <sys/param.h>
2072 #endif
2073 #ifdef HAVE_SYS_MOUNT_H
2074 #include <sys/mount.h>
2075 #endif
2076 #ifdef HAVE_SYS_FS_TYPES_H
2077 #include <sys/fs_types.h>
2078 #endif
2079   main ()
2080   {
2081   struct fs_data fsd;
2082   /* Ultrix's statfs returns 1 for success,
2083      0 for not mounted, -1 for failure.  */
2084   exit (statfs (".", &fsd) != 1);
2085   }],
2086   fu_cv_sys_stat_fs_data=yes,
2087   fu_cv_sys_stat_fs_data=no,
2088   fu_cv_sys_stat_fs_data=no)])
2089   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
2090   if test $fu_cv_sys_stat_fs_data = yes; then
2091     space=yes
2092     AC_DEFINE(STAT_STATFS2_FS_DATA)
2093   fi
2094 fi
2095
2096 #
2097 # As a gating factor for large file support, in order to
2098 # use <4GB files we must have the following minimal support
2099 # available.
2100 # long long, and a 64 bit off_t or off64_t.
2101 # If we don't have all of these then disable large
2102 # file support.
2103 #
2104 AC_MSG_CHECKING([if large file support can be enabled])
2105 AC_TRY_COMPILE([
2106 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
2107 #include <sys/types.h>
2108 #else
2109 __COMPILE_ERROR_
2110 #endif
2111 ],
2112 [int i],
2113 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
2114 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
2115     AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT)
2116 fi
2117 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
2118
2119 AC_ARG_WITH(spinlocks, [  --with-spinlocks        use spin locks instead of fcntl locks ])
2120 if test "x$with_spinlocks" = "xyes"; then
2121     AC_DEFINE(USE_SPINLOCKS)
2122
2123     case "$host_cpu" in
2124         sparc)
2125             AC_DEFINE(SPARC_SPINLOCKS)
2126             ;;
2127
2128         i386|i486|i586|i686)
2129             AC_DEFINE(INTEL_SPINLOCKS)
2130             ;;
2131
2132         mips)
2133             AC_DEFINE(MIPS_SPINLOCKS)
2134             ;;
2135
2136         powerpc)
2137             AC_DEFINE(POWERPC_SPINLOCKS)
2138             ;;
2139     esac
2140 fi
2141
2142 #################################################
2143 # check for ACL support
2144
2145 AC_MSG_CHECKING(whether to support ACLs)
2146 AC_ARG_WITH(acl-support,
2147 [  --with-acl-support        Include ACL support
2148   --without-acl-support  Don't include ACL support (default)],
2149 [ case "$withval" in
2150   yes)
2151
2152         case "$host_os" in
2153         *sysv5*)
2154             AC_MSG_RESULT(Using UnixWare ACLs)
2155             AC_DEFINE(HAVE_UNIXWARE_ACLS)
2156             ;;
2157         *solaris*)
2158             AC_MSG_RESULT(Using solaris ACLs)
2159             AC_DEFINE(HAVE_SOLARIS_ACLS)
2160             ;;
2161                 *irix*)
2162                         AC_MSG_RESULT(Using IRIX ACLs)
2163                         AC_DEFINE(HAVE_IRIX_ACLS)
2164                         ;;
2165                 *aix*)
2166                         AC_MSG_RESULT(Using AIX ACLs)
2167                         AC_DEFINE(HAVE_AIX_ACLS)
2168                         ;;
2169         *)
2170                         AC_CHECK_LIB(acl,acl_get_file)
2171                         AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
2172                         AC_TRY_LINK([#include <sys/types.h>
2173 #include <sys/acl.h>],
2174 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
2175 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)])
2176                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
2177                                 AC_MSG_RESULT(Using posix ACLs)
2178                                 AC_DEFINE(HAVE_POSIX_ACLS)
2179                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
2180                                 AC_TRY_LINK([#include <sys/types.h>
2181 #include <sys/acl.h>],
2182 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
2183 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)])
2184                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
2185                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP)
2186                                 fi
2187                         fi
2188                         AC_CACHE_CHECK([for XFS ACL support],samba_cv_HAVE_XFS_ACLS,[
2189                         AC_TRY_COMPILE([#include <sys/types.h>
2190 #include <acl/acl.h>],
2191 [ char test_str[13] = SGI_ACL_FILE; ],
2192 samba_cv_HAVE_XFS_ACLS=yes,samba_cv_XFS_POSIX_ACLS=no)])
2193                         if test x"$samba_cv_HAVE_XFS_ACLS" = x"yes"; then
2194                                 AC_MSG_RESULT(Using XFS ACLs)
2195                                 AC_DEFINE(HAVE_XFS_ACLS)
2196                         fi
2197             ;;
2198         esac
2199         ;;
2200   *)
2201     AC_MSG_RESULT(no)
2202     AC_DEFINE(HAVE_NO_ACLS)
2203     ;;
2204   esac ],
2205   AC_DEFINE(HAVE_NO_ACLS)
2206   AC_MSG_RESULT(no)
2207 )
2208
2209 #################################################
2210 # check whether winbind is supported on this platform
2211
2212 AC_MSG_CHECKING(whether to compile winbind)
2213 case "$host_os" in
2214         *linux*|*solaris*)
2215                 AC_MSG_RESULT(yes)
2216                 WINBIND_TARGETS="$WINBIND_TARGETS \$(WINBIND_PROGS)"
2217                 ;;
2218         *)
2219                 AC_MSG_RESULT(unsupported for $host_os)
2220                 ;;
2221 esac
2222
2223 AC_SUBST(WINBIND_TARGETS)
2224
2225 #################################################
2226 # final configure stuff
2227
2228 echo "checking configure summary"
2229 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
2230            echo "configure OK";,
2231            AC_MSG_ERROR([summary failure. Aborting config]),:)
2232
2233 builddir=`pwd`
2234 AC_SUBST(builddir)
2235
2236 AC_OUTPUT(include/stamp-h Makefile)