Added AC_CHECK_FUNCS(syslog vsyslog).
[Samba/ekacnet.git] / source / configure.in
blobe9665adbcc64ca8818c4a50b5c114fbfa0a55d09
1 dnl Process this file with autoconf to produce a configure script.
2 AC_INIT(include/includes.h)
3 AC_CONFIG_HEADER(include/config.h)
4 # we want to be compatibe with older versions of Samba
5 AC_PREFIX_DEFAULT(/usr/local/samba)
7 dnl Unique-to-Samba variables we'll be playing with.
8 AC_SUBST(SHELL)
9 AC_SUBST(RUNPROG)
10 AC_SUBST(MPROGS)
11 AC_SUBST(LDSHFLAGS)
12 AC_SUBST(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)
23 # compile with optimisation and without debugging by default
24 CFLAGS="-O ${CFLAGS}"
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])
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])
36 dnl Checks for programs.
37 AC_PROG_CC
38 AC_PROG_INSTALL
39 AC_PROG_AWK
41 dnl needed before AC_TRY_COMPILE
42 AC_ISC_POSIX
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=#
51 AC_SUBST(BROKEN_CC)
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)
62 AC_CANONICAL_SYSTEM
64 dnl Add #include for broken IRIX header files
65   case "$host_os" in
66         *irix6*) AC_ADD_INCLUDE(<standards.h>)
67         ;;
68 esac
70 AC_VALIDATE_CACHE_SYSTEM_TYPE
73 # Config CPPFLAG settings for strange OS's that must be set
74 # before other tests.
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
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.
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       ;;
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.
105     *aix4*)
106           AC_MSG_RESULT([enabling large file support])
107       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
108       ;;    
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.
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                 ;;
143 # Tests needed for SINIX large file support.
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     ;;
170 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
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;
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__;
190        if (libc_major < 2)
191               exit(1);
192        if (libc_minor < 2)
193               exit(1);
194 #endif
196        /* Ensure this is kernel 2.4 or higher */
198        uname(&uts);
199        release = uts.release;
200        major = atoi(strsep(&release, "."));
201        minor = atoi(strsep(&release, "."));
203        if (major > 2 || (major == 2 && minor > 3))
204                exit(0);
205        exit(1);
206 #else
207        exit(1);
208 #endif
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                 ;;
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     ;;
238 esac
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 ldap.h)
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.
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 ns_api.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)
273 # For experimental utmp support (lastlog on some BSD-like systems)
274 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
276 # For quotas on Veritas VxFS filesystems
277 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
279 # For quotas on Linux XFS filesystems
280 AC_CHECK_HEADERS(linux/xqm.h)
282 AC_CHECK_SIZEOF(int,cross)
283 AC_CHECK_SIZEOF(long,cross)
284 AC_CHECK_SIZEOF(short,cross)
286 AC_C_CONST
287 AC_C_INLINE
288 AC_C_BIGENDIAN
289 AC_C_CHAR_UNSIGNED
291 AC_TYPE_SIGNAL
292 AC_TYPE_UID_T
293 AC_TYPE_MODE_T
294 AC_TYPE_OFF_T
295 AC_TYPE_SIZE_T
296 AC_TYPE_PID_T
297 AC_STRUCT_ST_RDEV
298 AC_DIRENT_D_OFF
299 AC_CHECK_TYPE(ino_t,unsigned)
300 AC_CHECK_TYPE(loff_t,off_t)
301 AC_CHECK_TYPE(offset_t,loff_t)
302 AC_CHECK_TYPE(ssize_t, int)
303 AC_CHECK_TYPE(wchar_t, unsigned short)
305 ############################################
306 # for cups support we need libcups, and a handful of header files
308 AC_CHECK_LIB(cups,httpConnect)
310 # I wonder if there is a nicer way of doing this?
312 if test x"$ac_cv_lib_cups_httpConnect" = x"yes"; then
313         AC_CHECK_HEADERS(cups/cups.h cups/language.h)
314         if test x"$ac_cv_header_cups_cups_h" = x"yes"; then
315                 if test x"$ac_cv_header_cups_language_h" = x"yes"; then
316                         AC_DEFINE(HAVE_CUPS)
317                 fi
318         fi
321 ############################################
322 # we need libdl for PAM and the new VFS code
323 AC_CHECK_LIB(dl, dlopen, [LIBS="$LIBS -ldl";
324         AC_DEFINE(HAVE_LIBDL)])
326 ############################################
327 # check if the compiler can do immediate structures
328 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
329     AC_TRY_COMPILE([
330 #include <stdio.h>],
332    #define X_FOOBAR(x) ((FOOBAR) { x })
333    typedef struct {unsigned x;} FOOBAR;
334    FOOBAR f = X_FOOBAR(1);   
336         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
337 if test x"$samba_cv_immediate_structures" = x"yes"; then
338    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES)
341 ############################################
342 # check for unix domain sockets
343 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
344     AC_TRY_COMPILE([
345 #include <sys/types.h>
346 #include <stdlib.h>
347 #include <stddef.h>
348 #include <sys/socket.h>
349 #include <sys/un.h>],
351   struct sockaddr_un sunaddr; 
352   sunaddr.sun_family = AF_UNIX;
354         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
355 if test x"$samba_cv_unixsocket" = x"yes"; then
356    AC_DEFINE(HAVE_UNIXSOCKET)
360 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
361     AC_TRY_COMPILE([
362 #include <sys/types.h>
363 #if STDC_HEADERS
364 #include <stdlib.h>
365 #include <stddef.h>
366 #endif
367 #include <sys/socket.h>],[socklen_t i = 0],
368         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
369 if test x"$samba_cv_socklen_t" = x"yes"; then
370    AC_DEFINE(HAVE_SOCKLEN_T_TYPE)
373 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
374     AC_TRY_COMPILE([
375 #include <sys/types.h>
376 #if STDC_HEADERS
377 #include <stdlib.h>
378 #include <stddef.h>
379 #endif
380 #include <signal.h>],[sig_atomic_t i = 0],
381         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
382 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
383    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE)
386 # stupid headers have the functions but no declaration. grrrr.
387 AC_HAVE_DECL(errno, [#include <errno.h>])
388 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
389 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
390 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
391 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
392 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
393 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
395 # and glibc has setresuid under linux but the function does
396 # nothing until kernel 2.1.44! very dumb.
397 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
398     AC_TRY_RUN([#include <errno.h>
399 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
400         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
401 if test x"$samba_cv_have_setresuid" = x"yes"; then
402     AC_DEFINE(HAVE_SETRESUID)
405 # Do the same check for setresguid...
407 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
408     AC_TRY_RUN([#include <unistd.h>
409 #include <errno.h>
410 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
411         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
412 if test x"$samba_cv_have_setresgid" = x"yes"; then
413     AC_DEFINE(HAVE_SETRESGID)
416 AC_FUNC_MEMCMP
418 ###############################################
419 # test for where we get crypt() from
420 AC_CHECK_FUNCS(crypt)
421 if test x"$ac_cv_func_crypt" = x"no"; then
422     AC_CHECK_LIB(crypt, crypt, [LIBS="$LIBS -lcrypt";
423         AC_DEFINE(HAVE_CRYPT)])
427 ###############################################
428 # Readline included by default unless explicitly asked not to
429 test "${with_readline+set}" != "set" && with_readline=yes
431 # test for where we get readline() from
432 AC_MSG_CHECKING(whether to use readline)
433 AC_ARG_WITH(readline,
434 [  --with-readline[=DIR]   Look for readline include/libs in DIR (default=auto) ],
435 [  case "$with_readline" in
436   yes)
437     AC_MSG_RESULT(yes)
439     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
440     AC_CHECK_HEADERS(readline/history.h)
442     AC_CHECK_HEADERS(readline.h readline/readline.h,[
443       for termlib in ncurses curses termcap terminfo termlib; do
444        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
445       done
446       AC_CHECK_LIB(readline, rl_callback_handler_install,
447        [TERMLIBS="-lreadline $TERMLIBS"
448        AC_DEFINE(HAVE_LIBREADLINE)
449        break], [TERMLIBS=], $TERMLIBS)])
450     ;;
451   no)
452     AC_MSG_RESULT(no)
453     ;;
454   *)
455     AC_MSG_RESULT(yes)
457     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
458     # alternate readline path
459     _ldflags=${LDFLAGS}
460     _cppflags=${CPPFLAGS}
462     # Add additional search path
463     LDFLAGS="-L$with_readline/lib $LDFLAGS"
464     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
466     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
467     AC_CHECK_HEADERS(readline/history.h)
469     AC_CHECK_HEADERS(readline.h readline/readline.h,[
470       for termlib in ncurses curses termcap terminfo termlib; do
471        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
472       done
473       AC_CHECK_LIB(readline, rl_callback_handler_install,
474        [TERMLDFLAGS="-L$with_readline/lib"
475        TERMCPPFLAGS="-I$with_readline/include"
476        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
477        TERMLIBS="-lreadline $TERMLIBS"
478        AC_DEFINE(HAVE_LIBREADLINE)
479        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
481     LDFLAGS=$_ldflags
482     ;;
483   esac],
484   AC_MSG_RESULT(no)
486 AC_SUBST(TERMLIBS)
487 AC_SUBST(TERMLDFLAGS)
489 # The readline API changed slightly from readline3 to readline4, so
490 # code will generate warnings on one of them unless we have a few
491 # special cases.
492 AC_CHECK_LIB(readline, rl_completion_matches,
493              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
494                         [Do we have rl_completion_matches?])],
495              [],
496              [$TERMLIBS])
498 # The following test taken from the cvs sources
499 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
500 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
501 # libsocket.so which has a bad implementation of gethostbyname (it
502 # only looks in /etc/hosts), so we only look for -lsocket if we need
503 # it.
504 AC_CHECK_FUNCS(connect)
505 if test x"$ac_cv_func_connect" = x"no"; then
506     case "$LIBS" in
507     *-lnsl*) ;;
508     *) AC_CHECK_LIB(nsl_s, printf) ;;
509     esac
510     case "$LIBS" in
511     *-lnsl*) ;;
512     *) AC_CHECK_LIB(nsl, printf) ;;
513     esac
514     case "$LIBS" in
515     *-lsocket*) ;;
516     *) AC_CHECK_LIB(socket, connect) ;;
517     esac
518     case "$LIBS" in
519     *-linet*) ;;
520     *) AC_CHECK_LIB(inet, connect) ;;
521     esac
522     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
523     dnl has been cached.
524     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
525        test x"$ac_cv_lib_inet_connect" = x"yes"; then
526         # ac_cv_func_connect=yes
527         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
528         AC_DEFINE(HAVE_CONNECT)
529     fi
532 ###############################################
533 # test for where we get get_yp_default_domain() from
534 AC_CHECK_FUNCS(yp_get_default_domain)
535 if test x"$ac_cv_func_yp_get_default_domain" = x"no"; then
536         AC_CHECK_LIB(nsl, yp_get_default_domain, [LIBS="$LIBS -lnsl";
537         AC_DEFINE(HAVE_YP_GET_DEFAULT_DOMAIN)]) 
540 # Check if we have execl, if not we need to compile smbrun.
541 AC_CHECK_FUNCS(execl)
542 if test x"$ac_cv_func_execl" = x"no"; then
543     RUNPROG="bin/smbrun"
544 else
545     RUNPROG=""
548 AC_CHECK_FUNCS(waitpid getcwd strdup strtoul strerror chown fchown chmod fchmod chroot)
549 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat)
550 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
551 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
552 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
553 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
554 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
555 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
556 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
557 AC_CHECK_FUNCS(syslog vsyslog)
558 # setbuffer is needed for smbtorture
559 AC_CHECK_FUNCS(setbuffer)
561 # syscall() is needed for smbwrapper.
562 AC_CHECK_FUNCS(syscall)
564 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
565 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
566 AC_CHECK_FUNCS(__getcwd _getcwd)
567 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
568 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
569 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
570 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
571 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
572 AC_CHECK_FUNCS(_write __write _fork __fork)
573 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
574 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
575 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
576 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
577 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
580 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
583 if test x$ac_cv_func_stat64 = xno ; then
584   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
585   AC_TRY_LINK([
586 #if defined(HAVE_UNISTD_H)
587 #include <unistd.h>
588 #endif
589 #include <sys/stat.h>
590 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
591   AC_MSG_RESULT([$ac_cv_func_stat64])
592   if test x$ac_cv_func_stat64 = xyes ; then
593     AC_DEFINE(HAVE_STAT64)
594   fi
597 if test x$ac_cv_func_lstat64 = xno ; then
598   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
599   AC_TRY_LINK([
600 #if defined(HAVE_UNISTD_H)
601 #include <unistd.h>
602 #endif
603 #include <sys/stat.h>
604 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
605   AC_MSG_RESULT([$ac_cv_func_lstat64])
606   if test x$ac_cv_func_lstat64 = xyes ; then
607     AC_DEFINE(HAVE_LSTAT64)
608   fi
611 if test x$ac_cv_func_fstat64 = xno ; then
612   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
613   AC_TRY_LINK([
614 #if defined(HAVE_UNISTD_H)
615 #include <unistd.h>
616 #endif
617 #include <sys/stat.h>
618 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
619   AC_MSG_RESULT([$ac_cv_func_fstat64])
620   if test x$ac_cv_func_fstat64 = xyes ; then
621     AC_DEFINE(HAVE_FSTAT64)
622   fi
625 #####################################
626 # we might need the resolv library on some systems
627 AC_CHECK_LIB(resolv, dn_expand)
630 # Check for the functions putprpwnam, set_auth_parameters,
631 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
632 # Needed for OSF1 and HPUX.
635 AC_LIBTESTFUNC(security, putprpwnam)
636 AC_LIBTESTFUNC(sec, putprpwnam)
638 AC_LIBTESTFUNC(security, set_auth_parameters)
639 AC_LIBTESTFUNC(sec, set_auth_parameters)
641 # UnixWare 7.x has its getspnam in -lgen
642 AC_LIBTESTFUNC(gen, getspnam)
644 AC_LIBTESTFUNC(security, getspnam)
645 AC_LIBTESTFUNC(sec, getspnam)
647 AC_LIBTESTFUNC(security, bigcrypt)
648 AC_LIBTESTFUNC(sec, bigcrypt)
650 AC_LIBTESTFUNC(security, getprpwnam)
651 AC_LIBTESTFUNC(sec, getprpwnam)
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
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 # Assume non-shared by default and override below
666 BLDSHARED="false"
667 AC_MSG_CHECKING([ability to build shared libraries])
669 # and these are for particular systems
670 case "$host_os" in
671                 *linux*)   AC_DEFINE(LINUX)
672                         BLDSHARED="true"
673                         LDSHFLAGS="-shared" 
674                         PICFLAG="-fPIC"
675                 ;;
676                 *solaris*) AC_DEFINE(SUNOS5)
677                         BLDSHARED="true"
678                         LDSHFLAGS="-h \$@ -G"
679                         if test "${ac_cv_prog_CC}" = "gcc"; then
680                                 PICFLAG="-fPIC"
681                         else
682                                 PICFLAG="-KPIC"
683                                 POBAD_CC=""
684                                 PICSUFFIX="po.o"
685                         fi
686                 ;;
687                 *sunos*) AC_DEFINE(SUNOS4)
688                         BLDSHARED="true"
689                         LDSHFLAGS="-Wl,-h,\$@ -G"
690                         PICFLAG="-KPIC"   # Is this correct for SunOS
691                 ;;
692                 *bsd*)  BLDSHARED="true"
693                         LDSHFLAGS="-Wl,-soname,\$@ -shared"
694                         PICFLAG="-fPIC"
695                 ;;
696                 *irix*) AC_DEFINE(IRIX)
697                         case "$host_os" in
698                         *irix6*) AC_DEFINE(IRIX6)
699                         ;;
700                         esac
701                         ATTEMPT_WRAP32_BUILD=yes
702                         BLDSHARED="true"
703                         LDSHFLAGS="-Wl,-soname,\$@ -shared"
704                         if test "${ac_cv_prog_CC}" = "gcc"; then
705                                 PICFLAG="-fPIC"
706                         else 
707                                 PICFLAG="-KPIC"
708                         fi
709                 ;;
710                 *aix*) AC_DEFINE(AIX)
711                         BLDSHARED="true"
712                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry"
713                         PICFLAG="-O2 -qmaxmem=6000"
714                 ;;
715                 *hpux*) AC_DEFINE(HPUX)
716                         SHLIBEXT="sl"
717                         # Use special PIC flags for the native HP-UX compiler.
718                         if test $ac_cv_prog_cc_Ae = yes; then
719                                 #BLDSHARED="true"
720                                 LDSHFLAGS="-b -z +h \$@"
721                                 PICFLAG="+z"
722                         fi
723                 ;;
724                 *qnx*) AC_DEFINE(QNX);;
725                 *osf*) AC_DEFINE(OSF1)
726                         BLDSHARED="true"
727                         LDSHFLAGS="-Wl,-soname,\$@ -shared"
728                         PICFLAG="-fPIC"
729                 ;;
730                 *sco*) AC_DEFINE(SCO);;
731                 *unixware*) AC_DEFINE(UNIXWARE)
732                         BLDSHARED="true"
733                         LDSHFLAGS="-Wl,-soname,\$@ -shared"
734                         PICFLAG="-KPIC"
735                 ;;
736                 *next2*) AC_DEFINE(NEXT2);;
737                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man]);;
738                 *sysv4*)
739                         case "$host" in
740                                 *-univel-*)     if [ test "$GCC" != yes ]; then
741                                                                         AC_DEFINE(HAVE_MEMSET)
742                                                                 fi
743                                                                 LDSHFLAGS="-G"
744                                 ;;
745                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX);;
746                         esac
747                         ;;
748                 *sysv5*)
749                         if [ test "$GCC" != yes ]; then
750                                 AC_DEFINE(HAVE_MEMSET)
751                         fi
752                         LDSHFLAGS="-G"
753                         ;;
754 esac
755 AC_MSG_RESULT($BLDSHARED)
756 AC_MSG_CHECKING([linker flags for shared libraries])
757 AC_MSG_RESULT([$LDSHFLAGS])
758 AC_MSG_CHECKING([compiler flags for position-independent code])
759 AC_MSG_RESULT([$PICFLAGS])
761 # this updates our target list if we can build shared libs
762 if test $BLDSHARED = true; then
763    LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
764 else
765    LIBSMBCLIENT_SHARED=
768 ################
770 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
771 AC_TRY_RUN([#include <stdio.h>
772 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
773 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
774 if test x"$samba_cv_have_longlong" = x"yes"; then
775     AC_DEFINE(HAVE_LONGLONG)
779 # Check if the compiler supports the LL prefix on long long integers.
780 # AIX needs this.
782 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
783     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
784         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
785 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
786    AC_DEFINE(COMPILER_SUPPORTS_LL)
789   
790 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
791 AC_TRY_RUN([#include <stdio.h>
792 #include <sys/stat.h>
793 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
794 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
795 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
796     AC_DEFINE(SIZEOF_OFF_T,8)
799 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
800 AC_TRY_RUN([
801 #if defined(HAVE_UNISTD_H)
802 #include <unistd.h>
803 #endif
804 #include <stdio.h>
805 #include <sys/stat.h>
806 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
807 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
808 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
809     AC_DEFINE(HAVE_OFF64_T)
812 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
813 AC_TRY_RUN([#include <stdio.h>
814 #include <sys/stat.h>
815 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
816 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
817 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
818     AC_DEFINE(SIZEOF_INO_T,8)
821 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
822 AC_TRY_RUN([
823 #if defined(HAVE_UNISTD_H)
824 #include <unistd.h>
825 #endif
826 #include <stdio.h>
827 #include <sys/stat.h>
828 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
829 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
830 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
831     AC_DEFINE(HAVE_INO64_T)
834 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
835 AC_TRY_COMPILE([
836 #if defined(HAVE_UNISTD_H)
837 #include <unistd.h>
838 #endif
839 #include <sys/types.h>
840 #include <dirent.h>],
841 [struct dirent64 de;],
842 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
843 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes"; then
844     AC_DEFINE(HAVE_STRUCT_DIRENT64)
847 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
848 AC_TRY_RUN([#include <stdio.h>
849 main() { char c; c=250; exit((c > 0)?0:1); }],
850 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
851 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
852     AC_DEFINE(HAVE_UNSIGNED_CHAR)
855 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
856 AC_TRY_COMPILE([#include <sys/types.h>
857 #include <sys/socket.h>
858 #include <netinet/in.h>],
859 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
860 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
861 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
862     AC_DEFINE(HAVE_SOCK_SIN_LEN)
865 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
866 AC_TRY_COMPILE([#include <sys/types.h>
867 #include <dirent.h>
868 void seekdir(DIR *d, long loc) { return; }],[return 0;],
869 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
870 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
871     AC_DEFINE(SEEKDIR_RETURNS_VOID)
874 AC_CACHE_CHECK([for __FILE__ macro],samba_cv_HAVE_FILE_MACRO,[
875 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FILE__);],
876 samba_cv_HAVE_FILE_MACRO=yes,samba_cv_HAVE_FILE_MACRO=no)])
877 if test x"$samba_cv_HAVE_FILE_MACRO" = x"yes"; then
878     AC_DEFINE(HAVE_FILE_MACRO)
881 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
882 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
883 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
884 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
885     AC_DEFINE(HAVE_FUNCTION_MACRO)
888 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
889 AC_TRY_RUN([
890 #include <sys/time.h>
891 #include <unistd.h>
892 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
893            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
894 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
895     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ)
898 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
899 AC_TRY_RUN([
900 #include <sys/types.h>
901 #include <stdarg.h>
902 void foo(const char *format, ...) { 
903        va_list ap;
904        int len;
905        char buf[5];
907        va_start(ap, format);
908        len = vsnprintf(0, 0, format, ap);
909        va_end(ap);
910        if (len != 5) exit(1);
912        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
914        exit(0);
916 main() { foo("hello"); }
918 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
919 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
920     AC_DEFINE(HAVE_C99_VSNPRINTF)
923 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
924 AC_TRY_RUN([#include <sys/types.h>
925 #include <dirent.h>
926 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
927 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
928 di->d_name[0] == 0) exit(0); exit(1);} ],
929 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
930 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
931     AC_DEFINE(HAVE_BROKEN_READDIR)
934 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
935 AC_TRY_COMPILE([#include <sys/types.h>
936 #include <utime.h>],
937 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
938 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
939 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
940     AC_DEFINE(HAVE_UTIMBUF)
943 dnl  utmp and utmpx come in many flavours
944 dnl  We need to check for many of them
945 dnl  But we don't need to do each and every one, because our code uses
946 dnl  mostly just the utmp (not utmpx) fields.
948 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
950 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
951 AC_TRY_COMPILE([#include <sys/types.h>
952 #include <utmp.h>],
953 [struct utmp ut;  ut.ut_name[0] = 'a';],
954 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
955 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
956     AC_DEFINE(HAVE_UT_UT_NAME)
957 fi 
959 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
960 AC_TRY_COMPILE([#include <sys/types.h>
961 #include <utmp.h>],
962 [struct utmp ut;  ut.ut_user[0] = 'a';],
963 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
964 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
965     AC_DEFINE(HAVE_UT_UT_USER)
966 fi 
968 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
969 AC_TRY_COMPILE([#include <sys/types.h>
970 #include <utmp.h>],
971 [struct utmp ut;  ut.ut_id[0] = 'a';],
972 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
973 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
974     AC_DEFINE(HAVE_UT_UT_ID)
975 fi 
977 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
978 AC_TRY_COMPILE([#include <sys/types.h>
979 #include <utmp.h>],
980 [struct utmp ut;  ut.ut_host[0] = 'a';],
981 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
982 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
983     AC_DEFINE(HAVE_UT_UT_HOST)
984 fi 
986 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
987 AC_TRY_COMPILE([#include <sys/types.h>
988 #include <utmp.h>],
989 [struct utmp ut;  time_t t; ut.ut_time = t;],
990 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
991 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
992     AC_DEFINE(HAVE_UT_UT_TIME)
993 fi 
995 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
996 AC_TRY_COMPILE([#include <sys/types.h>
997 #include <utmp.h>],
998 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
999 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1000 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1001     AC_DEFINE(HAVE_UT_UT_TV)
1002 fi 
1004 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1005 AC_TRY_COMPILE([#include <sys/types.h>
1006 #include <utmp.h>],
1007 [struct utmp ut;  ut.ut_type = 0;],
1008 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1009 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1010     AC_DEFINE(HAVE_UT_UT_TYPE)
1011 fi 
1013 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1014 AC_TRY_COMPILE([#include <sys/types.h>
1015 #include <utmp.h>],
1016 [struct utmp ut;  ut.ut_pid = 0;],
1017 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1018 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1019     AC_DEFINE(HAVE_UT_UT_PID)
1020 fi 
1022 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1023 AC_TRY_COMPILE([#include <sys/types.h>
1024 #include <utmp.h>],
1025 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1026 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1027 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1028     AC_DEFINE(HAVE_UT_UT_EXIT)
1029 fi 
1031 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1032 AC_TRY_COMPILE([#include <sys/types.h>
1033 #include <utmp.h>],
1034 [struct utmp ut;  ut.ut_addr = 0;],
1035 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1036 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1037     AC_DEFINE(HAVE_UT_UT_ADDR)
1038 fi 
1040 if test x$ac_cv_func_pututline = xyes ; then
1041   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1042   AC_TRY_COMPILE([#include <sys/types.h>
1043 #include <utmp.h>],
1044   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1045   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1046   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1047       AC_DEFINE(PUTUTLINE_RETURNS_UTMP)
1048   fi
1051 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1052 AC_TRY_COMPILE([#include <sys/types.h>
1053 #include <utmpx.h>],
1054 [struct utmpx ux;  ux.ut_syslen = 0;],
1055 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1056 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1057     AC_DEFINE(HAVE_UX_UT_SYSLEN)
1058 fi 
1061 #################################################
1062 # check for libiconv support
1063 AC_MSG_CHECKING(whether to use libiconv)
1064 AC_ARG_WITH(libiconv,
1065 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
1066 [ case "$withval" in
1067   no)
1068     AC_MSG_RESULT(no)
1069     ;;
1070   *)
1071     AC_MSG_RESULT(yes)
1072     CFLAGS="$CFLAGS -I$withval/include"
1073     LDFLAGS="$LDFLAGS -L$withval/lib"
1074     AC_CHECK_LIB(iconv, iconv_open)
1075     AC_DEFINE_UNQUOTED(WITH_LIBICONV, "${withval}")
1076     ;;
1077   esac ],
1078   AC_MSG_RESULT(no)
1082 ############
1083 # check for iconv in libc
1084 AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
1085 AC_TRY_RUN([
1086 #include <iconv.h>
1087 main() {
1088        iconv_t cd = iconv_open("ASCII", "UCS-2LE");
1089        if (cd == 0 || cd == (iconv_t)-1) return -1;
1090        return 0;
1093 samba_cv_HAVE_NATIVE_ICONV=yes,samba_cv_HAVE_NATIVE_ICONV=no,samba_cv_HAVE_NATIVE_ICONV=cross)])
1094 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
1095     AC_DEFINE(HAVE_NATIVE_ICONV)
1099 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1100 AC_TRY_RUN([
1101 #include <sys/types.h>
1102 #include <fcntl.h>
1103 #ifndef F_GETLEASE
1104 #define F_GETLEASE      1025
1105 #endif
1106 main() {
1107        int fd = open("/dev/null", O_RDONLY);
1108        return fcntl(fd, F_GETLEASE, 0) == -1;
1111 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1112 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1113     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX)
1116 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1117 AC_TRY_RUN([
1118 #include <sys/types.h>
1119 #include <fcntl.h>
1120 #include <signal.h>
1121 #ifndef F_NOTIFY
1122 #define F_NOTIFY 1026
1123 #endif
1124 main() {
1125         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1128 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1129 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
1130     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY)
1133 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1134 AC_TRY_RUN([
1135 #include <sys/types.h>
1136 #include <fcntl.h>
1137 #include <signal.h>
1138 #include <sys/file.h>
1139 #ifndef LOCK_MAND
1140 #define LOCK_MAND       32
1141 #define LOCK_READ       64
1142 #endif
1143 main() {
1144         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1147 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1148 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1149     AC_DEFINE(HAVE_KERNEL_SHARE_MODES)
1155 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1156 AC_TRY_COMPILE([#include <sys/types.h>
1157 #include <fcntl.h>],
1158 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1159 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1160 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1161     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX)
1164 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1165 AC_TRY_RUN([#include <sys/types.h>
1166 #include <sys/capability.h>
1167 main() {
1168  cap_t cap;
1169  if ((cap = cap_get_proc()) == NULL)
1170    exit(1);
1171  cap->cap_effective |= CAP_NETWORK_MGT;
1172  cap->cap_inheritable |= CAP_NETWORK_MGT;
1173  cap_set_proc(cap);
1174  exit(0);
1177 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1178 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1179     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES)
1183 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1184 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1187 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1188 AC_TRY_COMPILE([#include <sys/types.h>
1189 #if defined(HAVE_RPC_RPC_H)
1190 #include <rpc/rpc.h>
1191 #endif],
1192 [int16 testvar;],
1193 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1194 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1195     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H)
1198 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1199 AC_TRY_COMPILE([#include <sys/types.h>
1200 #if defined(HAVE_RPC_RPC_H)
1201 #include <rpc/rpc.h>
1202 #endif],
1203 [uint16 testvar;],
1204 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1205 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1206     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H)
1209 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1210 AC_TRY_COMPILE([#include <sys/types.h>
1211 #if defined(HAVE_RPC_RPC_H)
1212 #include <rpc/rpc.h>
1213 #endif],
1214 [int32 testvar;],
1215 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1216 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1217     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H)
1220 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1221 AC_TRY_COMPILE([#include <sys/types.h>
1222 #if defined(HAVE_RPC_RPC_H)
1223 #include <rpc/rpc.h>
1224 #endif],
1225 [uint32 testvar;],
1226 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1227 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1228     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H)
1232 dnl Some systems (SCO) have a problem including
1233 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1234 dnl as a #define in <prot.h> and as part of an enum
1235 dnl in <rpc/rpc.h>.
1238 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1239 AC_TRY_COMPILE([#include <sys/types.h>
1240 #ifdef HAVE_SYS_SECURITY_H
1241 #include <sys/security.h>
1242 #include <prot.h>
1243 #endif  /* HAVE_SYS_SECURITY_H */
1244 #if defined(HAVE_RPC_RPC_H)
1245 #include <rpc/rpc.h>
1246 #endif],
1247 [int testvar;],
1248 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1249 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1250     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT)
1253 AC_MSG_CHECKING([for test routines])
1254 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1255            AC_MSG_RESULT(yes),
1256            AC_MSG_ERROR([cant find test code. Aborting config]),
1257            AC_MSG_WARN([cannot run when cross-compiling]))
1259 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1260 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1261            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1262 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1263     AC_DEFINE(HAVE_FTRUNCATE_EXTEND)
1266 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
1267 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
1268            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
1269            samba_cv_HAVE_WORKING_AF_LOCAL=no,
1270            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
1271 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
1272 then
1273     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
1276 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1277 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1278            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1279 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1280     AC_DEFINE(HAVE_BROKEN_GETGROUPS)
1283 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1284 SAVE_CPPFLAGS="$CPPFLAGS"
1285 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/smbwrapper"
1286 AC_TRY_COMPILE([
1287 #define REPLACE_GETPASS 1
1288 #define NO_CONFIG_H 1
1289 #define main dont_declare_main
1290 #include "${srcdir-.}/lib/getsmbpass.c"
1291 #undef main
1292 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1293 CPPFLAGS="$SAVE_CPPFLAGS"
1295 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
1296         AC_DEFINE(REPLACE_GETPASS)
1299 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
1300 AC_TRY_RUN([
1301 #include <stdio.h>
1302 #include <sys/types.h>
1303 #include <netinet/in.h>
1304 #ifdef HAVE_ARPA_INET_H
1305 #include <arpa/inet.h>
1306 #endif
1307 main() { struct in_addr ip; ip.s_addr = 0x12345678;
1308 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
1309     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
1310 exit(1);}],
1311            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
1312 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
1313     AC_DEFINE(REPLACE_INET_NTOA)
1316 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
1317 AC_TRY_RUN([#include <stdlib.h>
1318 #include <sys/types.h>
1319 #include <sys/stat.h>
1320 #include <unistd.h>
1321 main() { 
1322   struct stat st;
1323   char tpl[20]="/tmp/test.XXXXXX"; 
1324   int fd = mkstemp(tpl); 
1325   if (fd == -1) exit(1);
1326   unlink(tpl);
1327   if (fstat(fd, &st) != 0) exit(1);
1328   if ((st.st_mode & 0777) != 0600) exit(1);
1329   exit(0);
1331 samba_cv_HAVE_SECURE_MKSTEMP=yes,
1332 samba_cv_HAVE_SECURE_MKSTEMP=no,
1333 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
1334 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
1335     AC_DEFINE(HAVE_SECURE_MKSTEMP)
1338 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
1339 AC_TRY_RUN([#include <unistd.h>
1340 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
1341 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
1342 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
1343     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX)
1346 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
1347 AC_TRY_RUN([main() { exit(getuid() != 0); }],
1348            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
1349 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
1350     AC_DEFINE(HAVE_ROOT)
1351 else
1352     AC_MSG_WARN(running as non-root will disable some tests)
1355 ##################
1356 # look for a method of finding the list of network interfaces
1357 iface=no;
1358 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
1359 AC_TRY_RUN([
1360 #define HAVE_IFACE_AIX 1
1361 #define AUTOCONF_TEST 1
1362 #include "confdefs.h"
1363 #include "${srcdir-.}/lib/interfaces.c"],
1364            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
1365 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
1366     iface=yes;AC_DEFINE(HAVE_IFACE_AIX)
1369 if test $iface = no; then
1370 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
1371 AC_TRY_RUN([
1372 #define HAVE_IFACE_IFCONF 1
1373 #define AUTOCONF_TEST 1
1374 #include "confdefs.h"
1375 #include "${srcdir-.}/lib/interfaces.c"],
1376            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
1377 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
1378     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF)
1382 if test $iface = no; then
1383 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
1384 AC_TRY_RUN([
1385 #define HAVE_IFACE_IFREQ 1
1386 #define AUTOCONF_TEST 1
1387 #include "confdefs.h"
1388 #include "${srcdir-.}/lib/interfaces.c"],
1389            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
1390 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
1391     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ)
1396 ################################################
1397 # look for a method of setting the effective uid
1398 seteuid=no;
1399 if test $seteuid = no; then
1400 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
1401 AC_TRY_RUN([
1402 #define AUTOCONF_TEST 1
1403 #define USE_SETRESUID 1
1404 #include "confdefs.h"
1405 #include "${srcdir-.}/lib/util_sec.c"],
1406            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
1407 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
1408     seteuid=yes;AC_DEFINE(USE_SETRESUID)
1413 if test $seteuid = no; then
1414 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
1415 AC_TRY_RUN([
1416 #define AUTOCONF_TEST 1
1417 #define USE_SETREUID 1
1418 #include "confdefs.h"
1419 #include "${srcdir-.}/lib/util_sec.c"],
1420            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
1421 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
1422     seteuid=yes;AC_DEFINE(USE_SETREUID)
1426 if test $seteuid = no; then
1427 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
1428 AC_TRY_RUN([
1429 #define AUTOCONF_TEST 1
1430 #define USE_SETEUID 1
1431 #include "confdefs.h"
1432 #include "${srcdir-.}/lib/util_sec.c"],
1433            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
1434 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
1435     seteuid=yes;AC_DEFINE(USE_SETEUID)
1439 if test $seteuid = no; then
1440 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
1441 AC_TRY_RUN([
1442 #define AUTOCONF_TEST 1
1443 #define USE_SETUIDX 1
1444 #include "confdefs.h"
1445 #include "${srcdir-.}/lib/util_sec.c"],
1446            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
1447 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
1448     seteuid=yes;AC_DEFINE(USE_SETUIDX)
1453 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
1454 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
1455            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
1456 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
1457     AC_DEFINE(HAVE_MMAP)
1460 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
1461 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
1462            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
1463 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
1464     AC_DEFINE(FTRUNCATE_NEEDS_ROOT)
1467 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
1468 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
1469            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
1470 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
1471     AC_DEFINE(HAVE_FCNTL_LOCK)
1474 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
1475 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
1476            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
1477 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
1478     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS)
1480 else
1483 dnl Don't check for 64 bit fcntl locking if we know that the
1484 dnl glibc2.1 broken check has succeeded.
1485 dnl 
1487   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
1488   AC_TRY_RUN([
1489 #if defined(HAVE_UNISTD_H)
1490 #include <unistd.h>
1491 #endif
1492 #include <stdio.h>
1493 #include <stdlib.h>
1495 #ifdef HAVE_FCNTL_H
1496 #include <fcntl.h>
1497 #endif
1499 #ifdef HAVE_SYS_FCNTL_H
1500 #include <sys/fcntl.h>
1501 #endif
1502 main() { struct flock64 fl64;
1503 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
1504 exit(0);
1505 #else
1506 exit(1);
1507 #endif
1509        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
1511   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
1512       AC_DEFINE(HAVE_STRUCT_FLOCK64)
1513   fi
1517 case "$host_os" in
1518 *linux*)
1519 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
1520 AC_TRY_COMPILE([
1521 #ifdef HAVE_SYS_VFS_H
1522 #include <sys/vfs.h>
1523 #endif
1524 #ifdef HAVE_SYS_CAPABILITY_H
1525 #include <sys/capability.h>
1526 #endif
1527 ],[int i;],
1528    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
1529 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
1530    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS)
1533 esac
1535 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
1536 AC_TRY_COMPILE([#include <sys/acl.h>
1537 #if defined(HAVE_RPCSVC_NIS_H)
1538 #include <rpcsvc/nis.h>
1539 #endif],
1540 [int i;],
1541 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
1542 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
1543     AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES)
1547 #################################################
1548 # check for smbwrapper support
1549 AC_MSG_CHECKING(whether to use smbwrapper)
1550 AC_ARG_WITH(smbwrapper,
1551 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
1552 [ case "$withval" in
1553   yes)
1554     AC_MSG_RESULT(yes)
1555     AC_DEFINE(WITH_SMBWRAPPER)
1556         WRAP="bin/smbsh bin/smbwrapper.$SHLIBEXT"
1558         if test x$ATTEMPT_WRAP32_BUILD = x; then
1559                 WRAP32=""
1560         else
1561                         WRAP32=bin/smbwrapper.32.$SHLIBEXT
1562         fi
1564 # Conditions under which smbwrapper should not be built.
1566         if test x$PICFLAG = x; then
1567            echo No support for PIC code - disabling smbwrapper and smbsh
1568            WRAP=""
1569            WRAP32=""
1570         elif test x$ac_cv_func_syscall = xno; then
1571            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
1572            WRAP=""
1573            WRAP32=""
1574         fi
1575     ;;
1576   *)
1577     AC_MSG_RESULT(no)
1578     ;;
1579   esac ],
1580   AC_MSG_RESULT(no)
1583 #################################################
1584 # check for AFS clear-text auth support
1585 AC_MSG_CHECKING(whether to use AFS clear-text auth)
1586 AC_ARG_WITH(afs,
1587 [  --with-afs              Include AFS clear-text auth support (default=no) ],
1588 [ case "$withval" in
1589   yes)
1590     AC_MSG_RESULT(yes)
1591     AC_DEFINE(WITH_AFS)
1592     ;;
1593   *)
1594     AC_MSG_RESULT(no)
1595     ;;
1596   esac ],
1597   AC_MSG_RESULT(no)
1601 #################################################
1602 # check for the DFS clear-text auth system
1603 AC_MSG_CHECKING(whether to use DFS clear-text auth)
1604 AC_ARG_WITH(dfs,
1605 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
1606 [ case "$withval" in
1607   yes)
1608     AC_MSG_RESULT(yes)
1609     AC_DEFINE(WITH_DFS)
1610     ;;
1611   *)
1612     AC_MSG_RESULT(no)
1613     ;;
1614   esac ],
1615   AC_MSG_RESULT(no)
1619 #################################################
1620 # see if this box has the RedHat location for kerberos
1621 AC_MSG_CHECKING(for /usr/kerberos)
1622 if test -d /usr/kerberos; then
1623     LDFLAGS="$LDFLAGS -L/usr/kerberos/lib"
1624     CFLAGS="$CFLAGS -I/usr/kerberos/include"
1625     CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
1626     AC_MSG_RESULT(yes)
1627 else
1628     AC_MSG_RESULT(no)
1631 #################################################
1632 # check for location of Kerberos 5 install
1633 AC_MSG_CHECKING(for kerberos 5 install path)
1634 AC_ARG_WITH(krb5,
1635 [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
1636 [ case "$withval" in
1637   no)
1638     AC_MSG_RESULT(no)
1639     ;;
1640   *)
1641     AC_MSG_RESULT(yes)
1642     LIBS="$LIBS -lkrb5"
1643     CFLAGS="$CFLAGS -I$withval/include"
1644     CPPFLAGS="$CPPFLAGS -I$withval/include"
1645     LDFLAGS="$LDFLAGS -L$withval/lib"
1646     ;;
1647   esac ],
1648   AC_MSG_RESULT(no)
1651 # now check for krb5.h. Some systems have the libraries without the headers!
1652 # note that this check is done here to allow for different kerberos
1653 # include paths
1654 AC_CHECK_HEADERS(krb5.h)
1656 # now check for gssapi headers.  This is also done here to allow for
1657 # different kerberos include paths
1658 AC_CHECK_HEADERS(gssapi/gssapi_generic.h gssapi/gssapi.h)
1660 ##################################################################
1661 # we might need the k5crypto and com_err libraries on some systems
1662 AC_CHECK_LIB(com_err, _et_list, [LIBS="$LIBS -lcom_err"])
1663 AC_CHECK_LIB(k5crypto, krb5_encrypt_data, [LIBS="$LIBS -lk5crypto"])
1664 AC_CHECK_LIB(gssapi_krb5, gss_import_name, [LIBS="$LIBS -lgssapi_krb5"])
1667 ########################################################
1668 # now see if we can find the krb5 libs in standard paths
1669 # or as specified above
1670 AC_CHECK_LIB(krb5, krb5_mk_req_extended, [LIBS="$LIBS -lkrb5";
1671         AC_DEFINE(HAVE_KRB5)])
1674 ##################################################################
1675 # we might need the lber lib on some systems. To avoid link errors
1676 # this test must be before the libldap test
1677 AC_CHECK_LIB(lber, ber_scanf, [LIBS="$LIBS -llber"])
1679 ########################################################
1680 # now see if we can find the ldap libs in standard paths
1681 if test x$have_ldap != xyes; then
1682 AC_CHECK_LIB(ldap, ldap_open, [LIBS="$LIBS -lldap";
1683         AC_DEFINE(HAVE_LDAP)])
1687 #################################################
1688 # check for automount support
1689 AC_MSG_CHECKING(whether to use AUTOMOUNT)
1690 AC_ARG_WITH(automount,
1691 [  --with-automount        Include AUTOMOUNT support (default=no)],
1692 [ case "$withval" in
1693   yes)
1694     AC_MSG_RESULT(yes)
1695     AC_DEFINE(WITH_AUTOMOUNT)
1696     ;;
1697   *)
1698     AC_MSG_RESULT(no)
1699     ;;
1700   esac ],
1701   AC_MSG_RESULT(no)
1704 #################################################
1705 # check for smbmount support
1706 AC_MSG_CHECKING(whether to use SMBMOUNT)
1707 AC_ARG_WITH(smbmount,
1708 [  --with-smbmount         Include SMBMOUNT (Linux only) support (default=no)],
1709 [ case "$withval" in
1710   yes)
1711         case "$host_os" in
1712         *linux*)
1713                 AC_MSG_RESULT(yes)
1714                 AC_DEFINE(WITH_SMBMOUNT)
1715                 MPROGS="bin/smbmount bin/smbmnt bin/smbumount"
1716                 ;;
1717         *)
1718                 AC_MSG_ERROR(not on a linux system!)
1719                 ;;
1720         esac
1721     ;;
1722   *)
1723     AC_MSG_RESULT(no)
1724     MPROGS=
1725     ;;
1726   esac ],
1727   AC_MSG_RESULT(no)
1728   MPROGS=
1732 #################################################
1733 # check for a PAM clear-text auth, accounts, password and session support
1734 with_pam_for_crypt=no
1735 AC_MSG_CHECKING(whether to use PAM)
1736 AC_ARG_WITH(pam,
1737 [  --with-pam              Include PAM support (default=no)],
1738 [ case "$withval" in
1739   yes)
1740     AC_MSG_RESULT(yes)
1741     AC_DEFINE(WITH_PAM)
1742     LIBS="$LIBS -lpam"
1743     with_pam_for_crypt=yes
1744     ;;
1745   *)
1746     AC_MSG_RESULT(no)
1747     ;;
1748   esac ],
1749   AC_MSG_RESULT(no)
1752 # we can't build a pam module if we don't have pam.
1753 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM)])
1755 #################################################
1756 # check for pam_smbpass support
1757 AC_MSG_CHECKING(whether to use pam_smbpass)
1758 AC_ARG_WITH(pam_smbpass,
1759 [  --with-pam_smbpass      Build a PAM module to allow other applications to use our smbpasswd file (default=no)],
1760 [ case "$withval" in
1761   yes)
1762     AC_MSG_RESULT(yes)
1764 # Conditions under which pam_smbpass should not be built.
1766        if test x$PICFLAG = x; then
1767           AC_MSG_RESULT([No support for PIC code - disabling pam_smbpass])
1768           PAM_MOD=""
1769        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
1770           AC_MSG_RESULT([No libpam found -- disabling pam_smbpass])
1771           PAM_MOD=""
1772        else
1773           PAM_MOD="bin/pam_smbpass.so"
1774        fi
1775     ;;
1776   *)
1777     AC_MSG_RESULT(no)
1778     ;;
1779   esac ],
1780   AC_MSG_RESULT(no)
1784 ###############################################
1785 # test for where we get crypt() from, but only
1786 # if not using PAM
1787 if test $with_pam_for_crypt = no; then
1788 AC_CHECK_FUNCS(crypt)
1789 if test x"$ac_cv_func_crypt" = x"no"; then
1790     AC_CHECK_LIB(crypt, crypt, [LIBS="$LIBS -lcrypt";
1791         AC_DEFINE(HAVE_CRYPT)])
1796 ## moved after the check for -lcrypt in order to
1797 ## ensure that the necessary libraries are included
1798 ## check checking for truncated salt.  Wrapped by the
1799 ## $with_pam_for_crypt variable as above   --jerry
1801 if test $with_pam_for_crypt = no; then
1802 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
1803 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
1804         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)])
1805 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
1806         AC_DEFINE(HAVE_TRUNCATED_SALT)
1812 ########################################################################################
1814 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
1816 ########################################################################################
1818 ## set the with_smbpasswd_sam as the default
1819 with_smbpasswd_sam=yes
1822 #################################################
1823 # check for a TDB password database
1824 AC_MSG_CHECKING(whether to use TDB SAM database)
1825 AC_ARG_WITH(tdbsam,
1826 [  --with-tdbsam           Include experimental TDB SAM support (default=no)],
1827 [ case "$withval" in
1828   yes)
1829     AC_MSG_RESULT(yes)
1830     AC_DEFINE(WITH_TDB_SAM)
1831     with_smbpasswd_sam=no
1832     ;;
1833   *)
1834     AC_MSG_RESULT(no)
1835     ;;
1836   esac ],
1837   AC_MSG_RESULT(no)
1840 #################################################
1841 # check for a LDAP password database
1842 AC_MSG_CHECKING(whether to use LDAP SAM database)
1843 AC_ARG_WITH(ldapsam,
1844 [  --with-ldapsam          Include experimental LDAP SAM support (default=no)],
1845 [ case "$withval" in
1846   yes)
1847     AC_MSG_RESULT(yes)
1848     AC_DEFINE(WITH_LDAP_SAM)
1849     LIBS="-lldap -llber $LIBS"
1850     with_smbpasswd_sam=no
1851     ;;
1852   *)
1853     AC_MSG_RESULT(no)
1854     ;;
1855   esac ],
1856   AC_MSG_RESULT(no)
1859 #################################################
1860 # check for a NISPLUS password database
1861 AC_MSG_CHECKING(whether to use NISPLUS SAM database)
1862 AC_ARG_WITH(nisplussam,
1863 [  --with-nisplussam       Include NISPLUS SAM support (default=no)],
1864 [ case "$withval" in
1865   yes)
1866     AC_MSG_RESULT(yes)
1867     AC_DEFINE(WITH_NISPLUS_SAM)
1868     with_smbpasswd_sam=no
1869     ;;
1870   *)
1871     AC_MSG_RESULT(no)
1872     ;;
1873   esac ],
1874   AC_MSG_RESULT(no)
1877 ################################################
1878 # This test should come last because the
1879 # smbpasswd SAM is only used if another format
1880 # has not been defined
1881 AC_MSG_CHECKING(whether to use traditional smbpasswd file)
1882 if test $with_smbpasswd_sam = yes; then
1883         AC_MSG_RESULT(yes)
1884         AC_DEFINE(WITH_SMBPASSWD_SAM)
1885 else
1886         AC_MSG_RESULT(no)
1889 ########################################################################################
1891 ## END OF TESTS FOR SAM BACKENDS.  
1893 ########################################################################################
1895 #################################################
1896 # check for a NISPLUS_HOME support 
1897 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
1898 AC_ARG_WITH(nisplus-home,
1899 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
1900 [ case "$withval" in
1901   yes)
1902     AC_MSG_RESULT(yes)
1903     AC_DEFINE(WITH_NISPLUS_HOME)
1904     ;;
1905   *)
1906     AC_MSG_RESULT(no)
1907     ;;
1908   esac ],
1909   AC_MSG_RESULT(no)
1912 #################################################
1913 # check for the secure socket layer
1914 AC_MSG_CHECKING(whether to use SSL)
1915 AC_ARG_WITH(ssl,
1916 [  --with-ssl              Include SSL support (default=no)
1917   --with-sslinc=DIR          Where the SSL includes are (defaults to /usr/local/ssl/include)
1918   --with-ssllib=DIR          Where the SSL libraries are (defaults to /usr/local/ssl/lib)],
1919 [ case "$withval" in
1920   yes)
1921     AC_MSG_RESULT(yes)
1922     AC_DEFINE(WITH_SSL)
1923     withval="/usr/local/ssl"     # default
1925     if test "${with_sslinc+set}" = set; then
1927         withval="$with_sslinc"
1928         case "$withval" in
1929         yes|no)
1930           echo "configure: warning: --with-sslinc called without argument - will use default" 1>&w
1931           CFLAGS="-I/usr/local/ssl/include $CFLAGS"
1932         ;;
1933         * )
1934           CFLAGS="-I${withval} $CFLAGS"
1935         ;;
1936         esac
1938     else
1940         CFLAGS="-I/usr/local/ssl/include $CFLAGS"   
1942     fi
1944     if test "${with_ssllib+set}" = set; then
1946         withval="$with_ssllib"
1947         case "$withval" in
1948         yes|no)
1949           echo "configure: warning: --with-ssllib called without argument - will use default" 1>&w
1950           LDFLAGS="-L/usr/local/ssl/lib $LDFLAGS"
1951         ;;
1952         * )
1953           LDFLAGS="-L${withval}/lib $LDFLAGS"
1954         ;;
1955         esac
1957     else
1959         LDFLAGS="-L/usr/local/ssl/lib $LDFLAGS"
1961     fi
1963     LIBS="-lssl -lcrypto $LIBS"
1965 #    if test ! -d ${withval}; then
1966 #      echo "configure: error: called with --with-ssl, but ssl base directory ${withval} does not exist or is not a directory. Aborting config" 1>&2
1967 #      exit 1
1968 #    fi 
1970     CFLAGS="-DHAVE_CRYPT_DECL $CFLAGS"  # Damn, SSLeay defines its own
1972     ;;
1973   *)
1974     AC_MSG_RESULT(no)
1975     ;;
1976   esac ],
1977   AC_MSG_RESULT(no)
1980 #################################################
1981 # check for syslog logging
1982 AC_MSG_CHECKING(whether to use syslog logging)
1983 AC_ARG_WITH(syslog,
1984 [  --with-syslog           Include experimental SYSLOG support (default=no)],
1985 [ case "$withval" in
1986   yes)
1987     AC_MSG_RESULT(yes)
1988     AC_DEFINE(WITH_SYSLOG)
1989     ;;
1990   *)
1991     AC_MSG_RESULT(no)
1992     ;;
1993   esac ],
1994   AC_MSG_RESULT(no)
1997 #################################################
1998 # check for a shared memory profiling support
1999 AC_MSG_CHECKING(whether to use profiling)
2000 AC_ARG_WITH(profiling-data,
2001 [  --with-profiling-data   Include gathering source code profile information (default=no)],
2002 [ case "$withval" in
2003   yes)
2004     AC_MSG_RESULT(yes)
2005     AC_DEFINE(WITH_PROFILE)
2006     ;;
2007   *)
2008     AC_MSG_RESULT(no)
2009     ;;
2010   esac ],
2011   AC_MSG_RESULT(no)
2015 #################################################
2016 # check for experimental disk-quotas support
2017 QUOTAOBJS=smbd/noquotas.o
2019 AC_MSG_CHECKING(whether to support disk-quotas)
2020 AC_ARG_WITH(quotas,
2021 [  --with-quotas           Include experimental disk-quota support (default=no)],
2022 [ case "$withval" in
2023   yes)
2024     AC_MSG_RESULT(yes)
2025     case "$host_os" in
2026       *linux*)
2027         # Check for kernel 2.4.x quota braindamage...
2028         AC_CACHE_CHECK([for linux 2.4.x quota braindamage..],samba_cv_linux_2_4_quota_braindamage, [
2029         AC_TRY_COMPILE([#include <stdio.h>
2030 #include <sys/types.h>
2031 #include <asm/types.h>
2032 #include <linux/quota.h>
2033 #include <mntent.h>
2034 #include <linux/unistd.h>],[struct mem_dqblk D;],
2035       samba_cv_linux_2_4_quota_braindamage=yes,samba_cv_linux_2_4_quota_braindamage=no)])
2036 if test x"$samba_cv_linux_2_4_quota_braindamage" = x"yes"; then
2037         AC_DEFINE(LINUX_QUOTAS_2)
2038 else
2039         AC_DEFINE(LINUX_QUOTAS_1)
2041         ;;
2042       *)
2043         ;;
2044     esac
2045     QUOTAOBJS=smbd/quotas.o
2046     AC_DEFINE(WITH_QUOTAS)
2047     ;;
2048   *)
2049     AC_MSG_RESULT(no)
2050     ;;
2051   esac ],
2052   AC_MSG_RESULT(no)
2054 AC_SUBST(QUOTAOBJS)
2056 #################################################
2057 # check for experimental utmp accounting
2059 AC_MSG_CHECKING(whether to support utmp accounting)
2060 AC_ARG_WITH(utmp,
2061 [  --with-utmp             Include experimental utmp accounting (default=no)],
2062 [ case "$withval" in
2063   yes)
2064     AC_MSG_RESULT(yes)
2065     AC_DEFINE(WITH_UTMP)
2066     ;;
2067   *)
2068     AC_MSG_RESULT(no)
2069     ;;
2070   esac ],
2071   AC_MSG_RESULT(no)
2074 #################################################
2075 # set private directory location
2076 AC_ARG_WITH(privatedir,
2077 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
2078 [ case "$withval" in
2079   yes|no)
2080   #
2081   # Just in case anybody calls it without argument
2082   #
2083     AC_MSG_WARN([--with-privatedir called without argument - will use default])
2084     privatedir='${prefix}/private'
2085   ;;
2086   * )
2087     privatedir="$withval"
2088     ;;
2089   esac
2090   AC_SUBST(privatedir)],
2091   [privatedir='${prefix}/private'
2092    AC_SUBST(privatedir)]
2095 #################################################
2096 # set lock directory location
2097 AC_ARG_WITH(lockdir,
2098 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
2099 [ case "$withval" in
2100   yes|no)
2101   #
2102   # Just in case anybody calls it without argument
2103   #
2104     AC_MSG_WARN([--with-lockdir called without argument - will use default])
2105     lockdir='$(VARDIR)/locks'
2106   ;;
2107   * )
2108     lockdir="$withval"
2109     ;;
2110   esac
2111   AC_SUBST(lockdir)],
2112   [lockdir='$(VARDIR)/locks'
2113    AC_SUBST(lockdir)]
2116 #################################################
2117 # set SWAT directory location
2118 AC_ARG_WITH(swatdir,
2119 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
2120 [ case "$withval" in
2121   yes|no)
2122   #
2123   # Just in case anybody does it
2124   #
2125     AC_MSG_WARN([--with-swatdir called without argument - will use default])
2126     swatdir='${prefix}/swat'
2127   ;;
2128   * )
2129     swatdir="$withval"
2130     ;;
2131   esac
2132   AC_SUBST(swatdir)],
2133   [swatdir='${prefix}/swat'
2134    AC_SUBST(swatdir)]
2137 #################################################
2138 # choose native language(s) of man pages
2139 AC_MSG_CHECKING(chosen man pages' language(s))
2140 AC_ARG_WITH(manpages-langs,
2141 [  --with-manpages-langs={en,ja,pl}  Choose man pages' language(s). (en)],
2142 [ case "$withval" in
2143   yes|no)
2144     AC_MSG_WARN(--with-manpages-langs called without argument - will use default)
2145     manlangs="en"
2146   ;;
2147   *)
2148     manlangs="$withval"
2149   ;;
2150   esac
2152   AC_MSG_RESULT($manlangs)
2153   manlangs=`echo $manlangs | sed "s/,/ /"`   # replacing commas with spaces to produce a list
2154   AC_SUBST(manlangs)],
2156   [manlangs="en"
2157   AC_MSG_RESULT($manlangs)
2158   AC_SUBST(manlangs)]
2161 #################################################
2162 # these tests are taken from the GNU fileutils package
2163 AC_CHECKING(how to get filesystem space usage)
2164 space=no
2166 # Test for statvfs64.
2167 if test $space = no; then
2168   # SVR4
2169   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
2170   [AC_TRY_RUN([
2171 #if defined(HAVE_UNISTD_H)
2172 #include <unistd.h>
2173 #endif
2174 #include <sys/types.h>
2175 #include <sys/statvfs.h>
2176   main ()
2177   {
2178     struct statvfs64 fsd;
2179     exit (statvfs64 (".", &fsd));
2180   }],
2181   fu_cv_sys_stat_statvfs64=yes,
2182   fu_cv_sys_stat_statvfs64=no,
2183   fu_cv_sys_stat_statvfs64=cross)])
2184   if test $fu_cv_sys_stat_statvfs64 = yes; then
2185     space=yes
2186     AC_DEFINE(STAT_STATVFS64)
2187   fi
2190 # Perform only the link test since it seems there are no variants of the
2191 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
2192 # because that got a false positive on SCO OSR5.  Adding the declaration
2193 # of a `struct statvfs' causes this test to fail (as it should) on such
2194 # systems.  That system is reported to work fine with STAT_STATFS4 which
2195 # is what it gets when this test fails.
2196 if test $space = no; then
2197   # SVR4
2198   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
2199                  [AC_TRY_LINK([#include <sys/types.h>
2200 #include <sys/statvfs.h>],
2201                               [struct statvfs fsd; statvfs (0, &fsd);],
2202                               fu_cv_sys_stat_statvfs=yes,
2203                               fu_cv_sys_stat_statvfs=no)])
2204   if test $fu_cv_sys_stat_statvfs = yes; then
2205     space=yes
2206     AC_DEFINE(STAT_STATVFS)
2207   fi
2210 if test $space = no; then
2211   # DEC Alpha running OSF/1
2212   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
2213   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
2214   [AC_TRY_RUN([
2215 #include <sys/param.h>
2216 #include <sys/types.h>
2217 #include <sys/mount.h>
2218   main ()
2219   {
2220     struct statfs fsd;
2221     fsd.f_fsize = 0;
2222     exit (statfs (".", &fsd, sizeof (struct statfs)));
2223   }],
2224   fu_cv_sys_stat_statfs3_osf1=yes,
2225   fu_cv_sys_stat_statfs3_osf1=no,
2226   fu_cv_sys_stat_statfs3_osf1=no)])
2227   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
2228   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
2229     space=yes
2230     AC_DEFINE(STAT_STATFS3_OSF1)
2231   fi
2234 if test $space = no; then
2235 # AIX
2236   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
2237 member (AIX, 4.3BSD)])
2238   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
2239   [AC_TRY_RUN([
2240 #ifdef HAVE_SYS_PARAM_H
2241 #include <sys/param.h>
2242 #endif
2243 #ifdef HAVE_SYS_MOUNT_H
2244 #include <sys/mount.h>
2245 #endif
2246 #ifdef HAVE_SYS_VFS_H
2247 #include <sys/vfs.h>
2248 #endif
2249   main ()
2250   {
2251   struct statfs fsd;
2252   fsd.f_bsize = 0;
2253   exit (statfs (".", &fsd));
2254   }],
2255   fu_cv_sys_stat_statfs2_bsize=yes,
2256   fu_cv_sys_stat_statfs2_bsize=no,
2257   fu_cv_sys_stat_statfs2_bsize=no)])
2258   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
2259   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
2260     space=yes
2261     AC_DEFINE(STAT_STATFS2_BSIZE)
2262   fi
2265 if test $space = no; then
2266 # SVR3
2267   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
2268   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
2269   [AC_TRY_RUN([#include <sys/types.h>
2270 #include <sys/statfs.h>
2271   main ()
2272   {
2273   struct statfs fsd;
2274   exit (statfs (".", &fsd, sizeof fsd, 0));
2275   }],
2276     fu_cv_sys_stat_statfs4=yes,
2277     fu_cv_sys_stat_statfs4=no,
2278     fu_cv_sys_stat_statfs4=no)])
2279   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
2280   if test $fu_cv_sys_stat_statfs4 = yes; then
2281     space=yes
2282     AC_DEFINE(STAT_STATFS4)
2283   fi
2286 if test $space = no; then
2287 # 4.4BSD and NetBSD
2288   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
2289 member (4.4BSD and NetBSD)])
2290   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
2291   [AC_TRY_RUN([#include <sys/types.h>
2292 #ifdef HAVE_SYS_PARAM_H
2293 #include <sys/param.h>
2294 #endif
2295 #ifdef HAVE_SYS_MOUNT_H
2296 #include <sys/mount.h>
2297 #endif
2298   main ()
2299   {
2300   struct statfs fsd;
2301   fsd.f_fsize = 0;
2302   exit (statfs (".", &fsd));
2303   }],
2304   fu_cv_sys_stat_statfs2_fsize=yes,
2305   fu_cv_sys_stat_statfs2_fsize=no,
2306   fu_cv_sys_stat_statfs2_fsize=no)])
2307   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
2308   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
2309     space=yes
2310     AC_DEFINE(STAT_STATFS2_FSIZE)
2311   fi
2314 if test $space = no; then
2315   # Ultrix
2316   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
2317   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
2318   [AC_TRY_RUN([#include <sys/types.h>
2319 #ifdef HAVE_SYS_PARAM_H
2320 #include <sys/param.h>
2321 #endif
2322 #ifdef HAVE_SYS_MOUNT_H
2323 #include <sys/mount.h>
2324 #endif
2325 #ifdef HAVE_SYS_FS_TYPES_H
2326 #include <sys/fs_types.h>
2327 #endif
2328   main ()
2329   {
2330   struct fs_data fsd;
2331   /* Ultrix's statfs returns 1 for success,
2332      0 for not mounted, -1 for failure.  */
2333   exit (statfs (".", &fsd) != 1);
2334   }],
2335   fu_cv_sys_stat_fs_data=yes,
2336   fu_cv_sys_stat_fs_data=no,
2337   fu_cv_sys_stat_fs_data=no)])
2338   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
2339   if test $fu_cv_sys_stat_fs_data = yes; then
2340     space=yes
2341     AC_DEFINE(STAT_STATFS2_FS_DATA)
2342   fi
2346 # As a gating factor for large file support, in order to
2347 # use <4GB files we must have the following minimal support
2348 # available.
2349 # long long, and a 64 bit off_t or off64_t.
2350 # If we don't have all of these then disable large
2351 # file support.
2353 AC_MSG_CHECKING([if large file support can be enabled])
2354 AC_TRY_COMPILE([
2355 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
2356 #include <sys/types.h>
2357 #else
2358 __COMPILE_ERROR_
2359 #endif
2361 [int i],
2362 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
2363 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
2364     AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT)
2366 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
2368 AC_ARG_WITH(spinlocks, 
2369 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
2370 if test "x$with_spinlocks" = "xyes"; then
2371     AC_DEFINE(USE_SPINLOCKS)
2373     case "$host_cpu" in
2374         sparc)
2375             AC_DEFINE(SPARC_SPINLOCKS)
2376             ;;
2378         i386|i486|i586|i686)
2379             AC_DEFINE(INTEL_SPINLOCKS)
2380             ;;
2382         mips)
2383             AC_DEFINE(MIPS_SPINLOCKS)
2384             ;;
2386         powerpc)
2387             AC_DEFINE(POWERPC_SPINLOCKS)
2388             ;;
2389     esac
2392 #################################################
2393 # check for ACL support
2395 AC_MSG_CHECKING(whether to support ACLs)
2396 AC_ARG_WITH(acl-support,
2397 [  --with-acl-support      Include ACL support (default=no)],
2398 [ case "$withval" in
2399   yes)
2401         case "$host_os" in
2402         *sysv5*)
2403                 AC_MSG_RESULT(Using UnixWare ACLs)
2404                 AC_DEFINE(HAVE_UNIXWARE_ACLS)
2405                 ;;
2406         *solaris*)
2407                 AC_MSG_RESULT(Using solaris ACLs)
2408                 AC_DEFINE(HAVE_SOLARIS_ACLS)
2409                 ;;
2410         *hpux*)
2411                 AC_MSG_RESULT(Using HPUX ACLs)
2412                 AC_DEFINE(HAVE_HPUX_ACLS)
2413                 ;;
2414         *irix*)
2415                 AC_MSG_RESULT(Using IRIX ACLs)
2416                 AC_DEFINE(HAVE_IRIX_ACLS)
2417                 ;;
2418         *aix*)
2419                 AC_MSG_RESULT(Using AIX ACLs)
2420                 AC_DEFINE(HAVE_AIX_ACLS)
2421                 ;;
2422         *osf*)
2423                 AC_MSG_RESULT(Using Tru64 ACLs)
2424                 AC_DEFINE(HAVE_TRU64_ACLS)
2425                 LIBS="$LIBS -lpacl"
2426                 ;;
2427         *)
2428                 AC_CHECK_LIB(acl,acl_get_file)
2429                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
2430                 AC_TRY_LINK([#include <sys/types.h>
2431 #include <sys/acl.h>],
2432 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
2433 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)])
2434                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
2435                                 AC_MSG_RESULT(Using posix ACLs)
2436                                 AC_DEFINE(HAVE_POSIX_ACLS)
2437                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
2438                                 AC_TRY_LINK([#include <sys/types.h>
2439 #include <sys/acl.h>],
2440 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
2441 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)])
2442                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
2443                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP)
2444                                 fi
2445                         fi
2446             ;;
2447         esac
2448         ;;
2449   *)
2450     AC_MSG_RESULT(no)
2451     AC_DEFINE(HAVE_NO_ACLS)
2452     ;;
2453   esac ],
2454   AC_DEFINE(HAVE_NO_ACLS)
2455   AC_MSG_RESULT(no)
2458 #################################################
2459 # Check whether winbind is supported on this platform.  If so we need to
2460 # build and install client programs (WINBIND_TARGETS), sbin programs
2461 # (WINBIND_STARGETS) and shared libraries (WINBIND_LTARGETS).
2463 AC_MSG_CHECKING(whether to build winbind)
2465 # Initially, the value of $host_os decides whether winbind is supported
2467 case "$host_os" in 
2468         *linux*|*solaris*)
2469                 HAVE_WINBIND=yes
2470                 ;;
2471         *)
2472                 HAVE_WINBIND=no
2473                 winbind_no_reason=", unsupported on $host_os"
2474                 ;;
2475 esac
2477 # Check the setting of --with-winbindd
2479 AC_ARG_WITH(winbind,
2480 [  --with-winbind          Build winbind (default, if supported by OS)],
2482   case "$withval" in
2483         yes)
2484                 HAVE_WINBIND=yes
2485                 ;;
2486         no)
2487                 HAVE_WINBIND=no
2488                 winbind_reason=""
2489                 ;;
2490   esac ],
2493 # We need unix domain sockets for winbind
2495 if test x"$HAVE_WINBIND" = x"yes"; then
2496         if test x"$samba_cv_unixsocket" = x"no"; then
2497                 winbind_no_reason=", no unix domain socket support on $host_os"
2498                 HAVE_WINBIND=no
2499         fi
2502 # Display test results
2504 if test x"$HAVE_WINBIND" = x"yes"; then
2506         AC_MSG_RESULT(yes)
2508         WINBIND_TARGETS="bin/wbinfo"
2509         WINBIND_STARGETS="bin/winbindd"
2510         WINBIND_LTARGETS="nsswitch/libnss_winbind.so"
2511         case "$with_pam" in
2512                 yes)
2513                         WINBIND_PAM_TARGETS="nsswitch/pam_winbind.so"
2514                 ;;
2515         esac
2516 else
2517         AC_MSG_RESULT(no$winbind_no_reason)
2519         WINBIND_TARGETS=""
2520         WINBIND_STARGETS=""
2521         WINBIND_LTARGETS=""
2522         WINBIND_PAM_PROGS=""
2525 # Substitution time!
2527 AC_SUBST(WINBIND_TARGETS)
2528 AC_SUBST(WINBIND_STARGETS)
2529 AC_SUBST(WINBIND_LTARGETS)
2530 AC_SUBST(WINBIND_PAM_TARGETS)
2532 #################################################
2533 # Check to see if we should use the included popt 
2535 AC_ARG_WITH(included-popt,
2536 [  --with-included-popt    use bundled popt library, not from system],
2538   case "$withval" in
2539         yes)
2540                 INCLUDED_POPT=yes
2541                 ;;
2542         no)
2543                 INCLUDED_POPT=no
2544                 ;;
2545   esac ],
2547 if test x"$INCLUDED_POPT" != x"yes"; then
2548     AC_CHECK_LIB(popt, poptGetContext,
2549                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
2552 AC_MSG_CHECKING(whether to use included popt)
2553 if test x"$INCLUDED_POPT" = x"yes"; then
2554     AC_MSG_RESULT($srcdir/popt)
2555     BUILD_POPT='$(POPT_OBJS)'
2556     FLAGS1="-I$srcdir/popt"
2557 else
2558     AC_MSG_RESULT(no)
2559     LIBS="$LIBS -lpopt"
2561 AC_SUBST(BUILD_POPT)
2562 AC_SUBST(FLAGS1)
2564 #################################################
2565 # final configure stuff
2567 echo "checking configure summary"
2568 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
2569            echo "configure OK";,
2570            AC_MSG_ERROR([summary failure. Aborting config]),:)
2572 builddir=`pwd`
2573 AC_SUBST(builddir)
2575 AC_OUTPUT(include/stamp-h Makefile)