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