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