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