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