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