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