Merge in more of the SuSE patches for Heimdal. These changes show how
[kai/samba.git] / source3 / configure.in
1 dnl -*- mode: m4-mode -*-
2 dnl Process this file with autoconf to produce a configure script.
3 AC_INIT(include/includes.h)
4 AC_CONFIG_HEADER(include/config.h)
5
6 #################################################
7 # Directory handling stuff to support both the
8 # legacy SAMBA directories and FHS compliant
9 # ones...
10 AC_PREFIX_DEFAULT(/usr/local/samba)
11
12 AC_ARG_WITH(fhs, 
13 [  --with-fhs              Use FHS-compliant paths (default=no)],
14     configdir="${sysconfdir}/samba"
15     lockdir="\${VARDIR}/cache/samba"
16     piddir="\${VARDIR}/run/samba"
17     logfilebase="\${VARDIR}/log/samba"
18     privatedir="\${CONFIGDIR}/private"
19     libdir="\${prefix}/lib/samba"
20     swatdir="\${DATADIR}/samba/swat",
21     configdir="\${LIBDIR}"
22     logfilebase="\${VARDIR}"
23     lockdir="\${VARDIR}/locks"
24     piddir="\${VARDIR}/locks"
25     privatedir="\${prefix}/private"
26     swatdir="\${prefix}/swat")
27
28 #################################################
29 # set private directory location
30 AC_ARG_WITH(privatedir,
31 [  --with-privatedir=DIR   Where to put smbpasswd ($ac_default_prefix/private)],
32 [ case "$withval" in
33   yes|no)
34   #
35   # Just in case anybody calls it without argument
36   #
37     AC_MSG_WARN([--with-privatedir called without argument - will use default])
38   ;;
39   * )
40     privatedir="$withval"
41     ;;
42   esac])
43
44 #################################################
45 # set lock directory location
46 AC_ARG_WITH(lockdir,
47 [  --with-lockdir=DIR      Where to put lock files ($ac_default_prefix/var/locks)],
48 [ case "$withval" in
49   yes|no)
50   #
51   # Just in case anybody calls it without argument
52   #
53     AC_MSG_WARN([--with-lockdir called without argument - will use default])
54   ;;
55   * )
56     lockdir="$withval"
57     ;;
58   esac])
59
60 #################################################
61 # set pid directory location
62 AC_ARG_WITH(piddir,
63 [  --with-piddir=DIR       Where to put pid files ($ac_default_prefix/var/locks)],
64 [ case "$withval" in
65   yes|no)
66   #
67   # Just in case anybody calls it without argument
68   #
69     AC_MSG_WARN([--with-piddir called without argument - will use default])
70   ;;
71   * )
72     piddir="$withval"
73     ;;
74   esac])
75
76 #################################################
77 # set SWAT directory location
78 AC_ARG_WITH(swatdir,
79 [  --with-swatdir=DIR      Where to put SWAT files ($ac_default_prefix/swat)],
80 [ case "$withval" in
81   yes|no)
82   #
83   # Just in case anybody does it
84   #
85     AC_MSG_WARN([--with-swatdir called without argument - will use default])
86   ;;
87   * )
88     swatdir="$withval"
89     ;;
90   esac])
91
92 #################################################
93 # set configuration directory location
94 AC_ARG_WITH(configdir,
95 [  --with-configdir=DIR    Where to put configuration files (\$libdir)],
96 [ case "$withval" in
97   yes|no)
98   #
99   # Just in case anybody does it
100   #
101     AC_MSG_WARN([--with-configdir called without argument - will use default])
102   ;;
103   * )
104     configdir="$withval"
105     ;;
106   esac])
107
108 #################################################
109 # set log directory location
110 AC_ARG_WITH(logfilebase,
111 [  --with-logfilebase=DIR  Where to put log files (\$(VARDIR))],
112 [ case "$withval" in
113   yes|no)
114   #
115   # Just in case anybody does it
116   #
117     AC_MSG_WARN([--with-logfilebase called without argument - will use default])
118   ;;
119   * )
120     logfilebase="$withval"
121     ;;
122   esac])
123
124 AC_SUBST(configdir)
125 AC_SUBST(lockdir)
126 AC_SUBST(piddir)
127 AC_SUBST(logfilebase)
128 AC_SUBST(privatedir)
129 AC_SUBST(swatdir)
130 AC_SUBST(bindir)
131 AC_SUBST(sbindir)
132
133 dnl Unique-to-Samba variables we'll be playing with.
134 AC_SUBST(SHELL)
135 AC_SUBST(LDSHFLAGS)
136 AC_SUBST(SONAMEFLAG)
137 AC_SUBST(SHLD)
138 AC_SUBST(HOST_OS)
139 AC_SUBST(PICFLAG)
140 AC_SUBST(PICSUFFIX)
141 AC_SUBST(POBAD_CC)
142 AC_SUBST(SHLIBEXT)
143 AC_SUBST(LIBSMBCLIENT_SHARED)
144 AC_SUBST(LIBSMBCLIENT)
145 AC_SUBST(PRINTLIBS)
146 AC_SUBST(AUTHLIBS)
147 AC_SUBST(SHLIB_PROGS)
148 AC_SUBST(SMBWRAPPER)
149 AC_SUBST(EXTRA_BIN_PROGS)
150 AC_SUBST(EXTRA_SBIN_PROGS)
151 AC_SUBST(EXTRA_ALL_TARGETS)
152 AC_SUBST(LSA_DYNAMIC)
153 AC_SUBST(NETLOG_DYNAMIC)
154 AC_SUBST(SAMR_DYNAMIC)
155 AC_SUBST(SVC_DYNAMIC)
156 AC_SUBST(WKS_DYNAMIC)
157 AC_SUBST(REG_DYNAMIC)
158 AC_SUBST(SPOOLSS_DYNAMIC)
159 AC_SUBST(DFS_DYNAMIC)
160
161 # compile with optimization and without debugging by default
162 CFLAGS="-O ${CFLAGS}"
163
164 AC_ARG_ENABLE(debug, 
165 [  --enable-debug          Turn on compiler debugging information (default=no)],
166     [if eval "test x$enable_debug = xyes"; then
167         CFLAGS="${CFLAGS} -g"
168     fi])
169
170 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
171     [if eval "test x$enable_developer = xyes"; then
172         CFLAGS="${CFLAGS} -g -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -DDEBUG_PASSWORD -DDEVELOPER"
173     fi])
174
175 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
176     [if eval "test x$enable_krb5developer = xyes"; then
177         CFLAGS="${CFLAGS} -g -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -DDEBUG_PASSWORD -DDEVELOPER"
178     fi])
179
180 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
181
182 if test "x$enable_dmalloc" = xyes
183 then
184         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
185         AC_DEFINE(DMALLOC_FUNC_CHECK, 1, 
186                   [Define to check invariants around some common functions])
187         LIBS="$LIBS -ldmalloc"  
188 fi
189
190 AC_ARG_ENABLE(dynrpc,  [  --enable-dynrpc         Enable dynamic RPC modules [default=no]])
191
192 if test x$enable_dynrpc = xyes
193 then
194         enable_dynrpc=lsa,samr,reg,wks,netlog,dfs
195 fi
196
197 if test x$enable_dynrpc != xno
198 then
199         for i in `echo $enable_dynrpc | sed -e's/,/ /g'` 
200          do case $i in lsa)
201           LSA_DYNAMIC=yes
202           AC_DEFINE(RPC_LSA_DYNAMIC, 1,
203                     [Define to make the LSA pipe dynamic])
204          ;; samr)
205           SAMR_DYNAMIC=yes
206           AC_DEFINE(RPC_SAMR_DYNAMIC, 1, 
207                     [Define to make the SAMR pipe dynamic])
208          ;; svc)
209           SVC_DYNAMIC=yes
210           AC_DEFINE(RPC_SVC_DYNAMIC, 1, 
211                     [Define to make the SRVSVC pipe dynamic])
212          ;; wks)
213           WKS_DYNAMIC=yes
214           AC_DEFINE(RPC_WKS_DYNAMIC, 1, 
215                     [Define to make the WKSSVC pipe dynamic])
216          ;; netlog)
217           NETLOG_DYNAMIC=yes
218           AC_DEFINE(RPC_NETLOG_DYNAMIC, 1, 
219                     [Define to make the NETLOGON pipe dynamic])
220          ;; reg)
221           REG_DYNAMIC=yes
222           AC_DEFINE(RPC_REG_DYNAMIC, 1, 
223                     [Define to make the WINREG pipe dynamic])
224          ;; spoolss)
225           SPOOLSS_DYNAMIC=yes
226           AC_DEFINE(RPC_SPOOLSS_DYNAMIC, 1, 
227                     [Define to make the SPOOLSS pipe dynamic])
228          ;; dfs)
229           DFS_DYNAMIC=yes
230           AC_DEFINE(RPC_DFS_DYNAMIC, 1, 
231                     [Define to make the NETDFS pipe dynamic])
232          ;; esac
233          done
234 fi
235
236 dnl Checks for programs.
237 AC_PROG_CC
238 AC_PROG_INSTALL
239 AC_PROG_AWK
240
241 dnl Check if we use GNU ld
242 LD=ld
243 AC_PROG_LD_GNU
244
245 dnl needed before AC_TRY_COMPILE
246 AC_ISC_POSIX
247
248 dnl look for executable suffix
249 AC_EXEEXT
250
251 dnl Check if C compiler understands -c and -o at the same time
252 AC_PROG_CC_C_O
253 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
254       BROKEN_CC=
255 else
256       BROKEN_CC=#
257 fi
258 AC_SUBST(BROKEN_CC)
259
260 dnl Check if the C compiler understands volatile (it should, being ANSI).
261 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
262     AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
263         samba_cv_volatile=yes,samba_cv_volatile=no)])
264 if test x"$samba_cv_volatile" = x"yes"; then
265    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
266 fi
267
268
269 AC_CANONICAL_SYSTEM
270
271 dnl Add #include for broken IRIX header files
272   case "$host_os" in
273         *irix6*) AC_ADD_INCLUDE(<standards.h>)
274         ;;
275 esac
276
277 AC_VALIDATE_CACHE_SYSTEM_TYPE
278
279 DYNEXP=
280
281 #
282 # Config CPPFLAG settings for strange OS's that must be set
283 # before other tests.
284 #
285 case "$host_os" in
286 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
287     *hpux*)
288     
289       AC_PROG_CC_FLAG(Ae)
290       # mmap on HPUX is completely broken...
291       AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
292       if test $ac_cv_prog_cc_Ae = yes; then
293         CPPFLAGS="$CPPFLAGS -Ae"
294       fi
295 #
296 # Defines needed for HPUX support.
297 # HPUX has bigcrypt but (sometimes?) doesn't use it for
298 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
299 #
300       case `uname -r` in
301                         *9*|*10*)
302                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4"
303                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
304                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
305                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
306                                 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
307                                 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
308                                 ;;
309                         *11*)
310                                 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4"
311                                 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
312                                 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
313                                 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
314                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
315                                 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
316                                 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
317                                 ;;
318       esac
319       DYNEXP="-Wl,-E"
320       ;;
321
322 #
323 # CRAY Unicos has broken const handling
324        *unicos*)
325           AC_MSG_RESULT([disabling const])
326           CPPFLAGS="$CPPFLAGS -Dconst="
327           ;;
328         
329 #
330 # AIX4.x doesn't even admit to having large
331 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
332 #
333     *aix4*)
334           AC_MSG_RESULT([enabling large file support])
335       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
336           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
337       ;;    
338 #
339 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
340 # to the existance of large files..
341 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
342 # recommendations on large file support, however it makes the
343 # compile work using gcc 2.7 and 2.8, whereas using the Sun
344 # recommendation makes the compile fail on gcc2.7. JRA.
345 #
346         *solaris*)
347                 case `uname -r` in
348                         5.0*|5.1*|5.2*|5.3*|5.5*)
349                                 AC_MSG_RESULT([no large file support])
350                                 ;;
351                         5.*)
352                         AC_MSG_RESULT([enabling large file support])
353                         if test "$ac_cv_prog_gcc" = yes; then
354                                 ${CC-cc} -v >conftest.c 2>&1
355                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
356                                 rm -fr conftest.c
357                                 case "$ac_cv_gcc_compiler_version_number" in
358                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
359                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
360                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
361                                                 ;;
362                                         *)
363                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
364                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
365                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
366                                                 ;;
367                                 esac
368                         else
369                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
370                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
371                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
372                         fi
373                         ;;
374                 esac
375                 ;;
376 #
377 # Tests needed for SINIX large file support.
378 #
379     *sysv4*)
380       if test $host = mips-sni-sysv4 ; then
381         AC_MSG_CHECKING([for LFS support])
382         old_CPPFLAGS="$CPPFLAGS"
383         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
384         AC_TRY_RUN([
385 #include <unistd.h>
386 main () {
387 #if _LFS64_LARGEFILE == 1
388 exit(0);
389 #else
390 exit(1);
391 #endif
392 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
393         CPPFLAGS="$old_CPPFLAGS"
394         if test x$SINIX_LFS_SUPPORT = xyes ; then
395           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
396                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
397           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
398           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
399           LIBS="`getconf LFS64_LIBS` $LIBS"
400         fi
401       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
402       fi
403     ;;
404
405 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
406 #
407     *linux*)
408         AC_MSG_CHECKING([for LFS support])
409         old_CPPFLAGS="$CPPFLAGS"
410         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
411        AC_TRY_RUN([
412 #include <unistd.h>
413 #include <sys/utsname.h>
414 main() {
415 #if _LFS64_LARGEFILE == 1
416        struct utsname uts;
417        char *release;
418        int major, minor;
419
420        /* Ensure this is glibc 2.2 or higher */
421 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
422        int libc_major = __GLIBC__;
423        int libc_minor = __GLIBC_MINOR__;
424
425        if (libc_major < 2)
426               exit(1);
427        if (libc_minor < 2)
428               exit(1);
429 #endif
430
431        /* Ensure this is kernel 2.4 or higher */
432
433        uname(&uts);
434        release = uts.release;
435        major = atoi(strsep(&release, "."));
436        minor = atoi(strsep(&release, "."));
437
438        if (major > 2 || (major == 2 && minor > 3))
439                exit(0);
440        exit(1);
441 #else
442        exit(1);
443 #endif
444 }
445 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
446         CPPFLAGS="$old_CPPFLAGS"
447         if test x$LINUX_LFS_SUPPORT = xyes ; then
448           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
449                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
450           AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
451           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
452         fi
453        AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
454                 ;;
455
456     *hurd*)
457         AC_MSG_CHECKING([for LFS support])
458         old_CPPFLAGS="$CPPFLAGS"
459         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
460         AC_TRY_RUN([
461 #include <unistd.h>
462 main () {
463 #if _LFS64_LARGEFILE == 1
464 exit(0);
465 #else
466 exit(1);
467 #endif
468 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
469         CPPFLAGS="$old_CPPFLAGS"
470         if test x$GLIBC_LFS_SUPPORT = xyes ; then
471           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
472                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
473           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
474         fi
475       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
476     ;;
477
478 esac
479
480 AC_INLINE
481 AC_HEADER_STDC
482 AC_HEADER_DIRENT
483 AC_HEADER_TIME
484 AC_HEADER_SYS_WAIT
485 AC_CHECK_HEADERS(arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h)
486 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h)
487 AC_CHECK_HEADERS(compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h)
488 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h)
489 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
490 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
491 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
492 AC_CHECK_HEADERS(security/pam_modules.h security/_pam_macros.h ldap.h lber.h dlfcn.h)
493 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
494
495 #
496 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
497 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
498 #
499 case "$host_os" in
500     *hpux*)
501                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
502                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
503                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
504                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
505                 fi
506         ;;
507 esac
508 AC_CHECK_HEADERS(shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
509 AC_CHECK_HEADERS(nss.h nss_common.h ns_api.h sys/security.h security/pam_appl.h security/pam_modules.h)
510 AC_CHECK_HEADERS(stropts.h poll.h)
511 AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
512 AC_CHECK_HEADERS(sys/acl.h sys/cdefs.h glob.h)
513
514 # For experimental utmp support (lastlog on some BSD-like systems)
515 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
516  
517 # For quotas on Veritas VxFS filesystems
518 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
519
520 # For quotas on Linux XFS filesystems
521 AC_CHECK_HEADERS(linux/xqm.h)
522 AC_CHECK_HEADERS(xfs/xqm.h)
523
524 AC_CHECK_SIZEOF(int,cross)
525 AC_CHECK_SIZEOF(long,cross)
526 AC_CHECK_SIZEOF(short,cross)
527
528 AC_C_CONST
529 AC_C_INLINE
530 AC_C_BIGENDIAN
531 AC_C_CHAR_UNSIGNED
532
533 AC_TYPE_SIGNAL
534 AC_TYPE_UID_T
535 AC_TYPE_MODE_T
536 AC_TYPE_OFF_T
537 AC_TYPE_SIZE_T
538 AC_TYPE_PID_T
539 AC_STRUCT_ST_RDEV
540 AC_DIRENT_D_OFF
541 AC_CHECK_TYPE(ino_t,unsigned)
542 AC_CHECK_TYPE(loff_t,off_t)
543 AC_CHECK_TYPE(offset_t,loff_t)
544 AC_CHECK_TYPE(ssize_t, int)
545 AC_CHECK_TYPE(wchar_t, unsigned short)
546
547 ############################################
548 # for cups support we need libcups, and a handful of header files
549
550 AC_ARG_ENABLE(cups,
551 [  --enable-cups           Turn on CUPS support (default=auto)])
552
553 if test x$enable_cups != xno; then
554         AC_PATH_PROG(CUPS_CONFIG, cups-config)
555
556         if test "x$CUPS_CONFIG" != x; then
557                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
558                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
559                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
560                 PRINTLIBS="$PRINTLIBS `$CUPS_CONFIG --libs`"
561         fi
562 fi
563
564 ############################################
565 # we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
566 AC_SEARCH_LIBS(dlopen, [dl])
567 # dlopen/dlclose/dlsym/dlerror will be checked again later and defines will be set then
568
569 ############################################
570 # check if the compiler can do immediate structures
571 AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
572     AC_TRY_COMPILE([
573 #include <stdio.h>],
574 [
575    typedef struct {unsigned x;} FOOBAR;
576    #define X_FOOBAR(x) ((FOOBAR) { x })
577    #define FOO_ONE X_FOOBAR(1)
578    FOOBAR f = FOO_ONE;   
579    static struct {
580         FOOBAR y; 
581         } f2[] = {
582                 {FOO_ONE}
583         };   
584 ],
585         samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
586 if test x"$samba_cv_immediate_structures" = x"yes"; then
587    AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
588 fi
589
590 ############################################
591 # check for unix domain sockets
592 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
593     AC_TRY_COMPILE([
594 #include <sys/types.h>
595 #include <stdlib.h>
596 #include <stddef.h>
597 #include <sys/socket.h>
598 #include <sys/un.h>],
599 [
600   struct sockaddr_un sunaddr; 
601   sunaddr.sun_family = AF_UNIX;
602 ],
603         samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
604 if test x"$samba_cv_unixsocket" = x"yes"; then
605    AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
606 fi
607
608
609 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
610     AC_TRY_COMPILE([
611 #include <sys/types.h>
612 #if STDC_HEADERS
613 #include <stdlib.h>
614 #include <stddef.h>
615 #endif
616 #include <sys/socket.h>],[socklen_t i = 0],
617         samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
618 if test x"$samba_cv_socklen_t" = x"yes"; then
619    AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
620 fi
621
622 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
623     AC_TRY_COMPILE([
624 #include <sys/types.h>
625 #if STDC_HEADERS
626 #include <stdlib.h>
627 #include <stddef.h>
628 #endif
629 #include <signal.h>],[sig_atomic_t i = 0],
630         samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
631 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
632    AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
633 fi
634
635 # stupid headers have the functions but no declaration. grrrr.
636 AC_HAVE_DECL(errno, [#include <errno.h>])
637 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
638 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
639 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
640 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
641 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
642 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
643
644 # and glibc has setresuid under linux but the function does
645 # nothing until kernel 2.1.44! very dumb.
646 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
647     AC_TRY_RUN([#include <errno.h>
648 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
649         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
650 if test x"$samba_cv_have_setresuid" = x"yes"; then
651     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
652 fi
653
654 # Do the same check for setresguid...
655 #
656 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
657     AC_TRY_RUN([#include <unistd.h>
658 #include <errno.h>
659 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
660         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
661 if test x"$samba_cv_have_setresgid" = x"yes"; then
662     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
663 fi
664
665 AC_FUNC_MEMCMP
666
667 ###############################################
668 # test for where we get crypt() from
669 AC_SEARCH_LIBS(crypt, [crypt], [AUTHLIBS="$AUTHLIBS -lcrypt";
670         AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
671
672 ###############################################
673 # Readline included by default unless explicitly asked not to
674 test "${with_readline+set}" != "set" && with_readline=yes
675
676 # test for where we get readline() from
677 AC_MSG_CHECKING(whether to use readline)
678 AC_ARG_WITH(readline,
679 [  --with-readline[=DIR]   Look for readline include/libs in DIR (default=auto) ],
680 [  case "$with_readline" in
681   yes)
682     AC_MSG_RESULT(yes)
683
684     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
685     AC_CHECK_HEADERS(readline/history.h)
686
687     AC_CHECK_HEADERS(readline.h readline/readline.h,[
688       for termlib in ncurses curses termcap terminfo termlib; do
689        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
690       done
691       AC_CHECK_LIB(readline, rl_callback_handler_install,
692        [TERMLIBS="-lreadline $TERMLIBS"
693        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
694        break], [TERMLIBS=], $TERMLIBS)])
695     ;;
696   no)
697     AC_MSG_RESULT(no)
698     ;;
699   *)
700     AC_MSG_RESULT(yes)
701
702     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
703     # alternate readline path
704     _ldflags=${LDFLAGS}
705     _cppflags=${CPPFLAGS}
706
707     # Add additional search path
708     LDFLAGS="-L$with_readline/lib $LDFLAGS"
709     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
710
711     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
712     AC_CHECK_HEADERS(readline/history.h)
713
714     AC_CHECK_HEADERS(readline.h readline/readline.h,[
715       for termlib in ncurses curses termcap terminfo termlib; do
716        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
717       done
718       AC_CHECK_LIB(readline, rl_callback_handler_install,
719        [TERMLDFLAGS="-L$with_readline/lib"
720        TERMCPPFLAGS="-I$with_readline/include"
721        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
722        TERMLIBS="-lreadline $TERMLIBS"
723        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
724        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
725
726     LDFLAGS=$_ldflags
727     ;;
728   esac],
729   AC_MSG_RESULT(no)
730 )
731 AC_SUBST(TERMLIBS)
732 AC_SUBST(TERMLDFLAGS)
733
734 # The readline API changed slightly from readline3 to readline4, so
735 # code will generate warnings on one of them unless we have a few
736 # special cases.
737 AC_CHECK_LIB(readline, rl_completion_matches,
738              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, 
739                         [Do we have rl_completion_matches?])],
740              [],
741              [$TERMLIBS])
742
743 # The following test taken from the cvs sources
744 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
745 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
746 # libsocket.so which has a bad implementation of gethostbyname (it
747 # only looks in /etc/hosts), so we only look for -lsocket if we need
748 # it.
749 AC_CHECK_FUNCS(connect)
750 if test x"$ac_cv_func_connect" = x"no"; then
751     case "$LIBS" in
752     *-lnsl*) ;;
753     *) AC_CHECK_LIB(nsl_s, printf) ;;
754     esac
755     case "$LIBS" in
756     *-lnsl*) ;;
757     *) AC_CHECK_LIB(nsl, printf) ;;
758     esac
759     case "$LIBS" in
760     *-lsocket*) ;;
761     *) AC_CHECK_LIB(socket, connect) ;;
762     esac
763     case "$LIBS" in
764     *-linet*) ;;
765     *) AC_CHECK_LIB(inet, connect) ;;
766     esac
767     dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
768     dnl has been cached.
769     if test x"$ac_cv_lib_socket_connect" = x"yes" || 
770        test x"$ac_cv_lib_inet_connect" = x"yes"; then
771         # ac_cv_func_connect=yes
772         # don't!  it would cause AC_CHECK_FUNC to succeed next time configure is run
773         AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
774     fi
775 fi
776
777 ###############################################
778 # test for where we get yp_get_default_domain() from
779 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
780 AC_CHECK_FUNCS(yp_get_default_domain)
781
782 # Check if we have execl, if not we need to compile smbrun.
783 AC_CHECK_FUNCS(execl)
784 if test x"$ac_cv_func_execl" = x"no"; then
785     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
786 fi
787
788 AC_CHECK_FUNCS(dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64)
789 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid)
790 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
791 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
792 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
793 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64)
794 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64)
795 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
796 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
797 AC_CHECK_FUNCS(syslog vsyslog getgrouplist timegm)
798 # setbuffer, shmget, shm_open are needed for smbtorture
799 AC_CHECK_FUNCS(setbuffer shmget shm_open)
800
801 # syscall() is needed for smbwrapper.
802 AC_CHECK_FUNCS(syscall)
803
804 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
805 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
806 AC_CHECK_FUNCS(__getcwd _getcwd)
807 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
808 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
809 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
810 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
811 AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
812 AC_CHECK_FUNCS(_write __write _fork __fork)
813 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
814 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
815 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
816 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
817 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
818
819 #
820 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
821 #
822
823 if test x$ac_cv_func_stat64 = xno ; then
824   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
825   AC_TRY_LINK([
826 #if defined(HAVE_UNISTD_H)
827 #include <unistd.h>
828 #endif
829 #include <sys/stat.h>
830 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
831   AC_MSG_RESULT([$ac_cv_func_stat64])
832   if test x$ac_cv_func_stat64 = xyes ; then
833     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
834   fi
835 fi
836
837 if test x$ac_cv_func_lstat64 = xno ; then
838   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
839   AC_TRY_LINK([
840 #if defined(HAVE_UNISTD_H)
841 #include <unistd.h>
842 #endif
843 #include <sys/stat.h>
844 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
845   AC_MSG_RESULT([$ac_cv_func_lstat64])
846   if test x$ac_cv_func_lstat64 = xyes ; then
847     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
848   fi
849 fi
850
851 if test x$ac_cv_func_fstat64 = xno ; then
852   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
853   AC_TRY_LINK([
854 #if defined(HAVE_UNISTD_H)
855 #include <unistd.h>
856 #endif
857 #include <sys/stat.h>
858 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
859   AC_MSG_RESULT([$ac_cv_func_fstat64])
860   if test x$ac_cv_func_fstat64 = xyes ; then
861     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
862   fi
863 fi
864
865 #####################################
866 # we might need the resolv library on some systems
867 AC_CHECK_LIB(resolv, dn_expand)
868
869 #
870 # Check for the functions putprpwnam, set_auth_parameters,
871 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
872 # Needed for OSF1 and HPUX.
873 #
874
875 AC_LIBTESTFUNC(security, putprpwnam)
876 AC_LIBTESTFUNC(sec, putprpwnam)
877
878 AC_LIBTESTFUNC(security, set_auth_parameters)
879 AC_LIBTESTFUNC(sec, set_auth_parameters)
880
881 # UnixWare 7.x has its getspnam in -lgen
882 AC_LIBTESTFUNC(gen, getspnam)
883
884 AC_LIBTESTFUNC(security, getspnam)
885 AC_LIBTESTFUNC(sec, getspnam)
886
887 AC_LIBTESTFUNC(security, bigcrypt)
888 AC_LIBTESTFUNC(sec, bigcrypt)
889
890 AC_LIBTESTFUNC(security, getprpwnam)
891 AC_LIBTESTFUNC(sec, getprpwnam)
892
893 # this bit needs to be modified for each OS that is suported by
894 # smbwrapper. You need to specify how to created a shared library and
895 # how to compile C code to produce PIC object files
896
897 # these are the defaults, good for lots of systems
898 HOST_OS="$host_os"
899 LDSHFLAGS="-shared"
900 SONAMEFLAG="#"
901 SHLD="\${CC}"
902 PICFLAG=""
903 PICSUFFIX="po"
904 POBAD_CC="#"
905 SHLIBEXT="so"
906 # Assume non-shared by default and override below
907 BLDSHARED="false"
908 AC_MSG_CHECKING([ability to build shared libraries])
909
910 # and these are for particular systems
911 case "$host_os" in
912                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
913                         BLDSHARED="true"
914                         LDSHFLAGS="-shared" 
915                         DYNEXP="-Wl,--export-dynamic"
916                         PICFLAG="-fPIC"
917                         SONAMEFLAG="-Wl,-soname="
918                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
919                         ;;
920                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
921                         BLDSHARED="true"
922                         LDSHFLAGS="-G"
923                         SONAMEFLAG="-h "
924                         if test "${GCC}" = "yes"; then
925                                 PICFLAG="-fPIC"
926                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
927                                         DYNEXP="-Wl,-E"
928                                 fi
929                         else
930                                 PICFLAG="-KPIC"
931                                 ## ${CFLAGS} added for building 64-bit shared 
932                                 ## libs using Sun's Compiler
933                                 LDSHFLAGS="-G \${CFLAGS}"
934                                 POBAD_CC=""
935                                 PICSUFFIX="po.o"
936                         fi
937                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
938                         ;;
939                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
940                         BLDSHARED="true"
941                         LDSHFLAGS="-G"
942                         SONAMEFLAG="-Wl,-h,"
943                         PICFLAG="-KPIC"   # Is this correct for SunOS
944                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
945                         ;;
946                 *freebsd*)  BLDSHARED="true"
947                         LDSHFLAGS="-shared"
948                         DYNEXP="-Wl,--export-dynamic"
949                         SONAMEFLAG="-Wl,-soname,"
950                         PICFLAG="-fPIC -DPIC"
951                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
952                         ;;
953                 *openbsd*)  BLDSHARED="true"
954                         LDSHFLAGS="-shared"
955                         DYNEXP="-Wl,-Bdynamic"
956                         SONAMEFLAG="-Wl,-soname,"
957                         PICFLAG="-fPIC"
958                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
959                         ;;
960                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
961                         case "$host_os" in
962                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
963                         ;;
964                         esac
965                         ATTEMPT_WRAP32_BUILD=yes
966                         BLDSHARED="true"
967                         LDSHFLAGS="-set_version sgi1.0 -shared"
968                         SONAMEFLAG="-soname "
969                         SHLD="\${LD}"
970                         if test "${GCC}" = "yes"; then
971                                 PICFLAG="-fPIC"
972                         else 
973                                 PICFLAG="-KPIC"
974                         fi
975                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
976                         ;;
977                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
978                         BLDSHARED="true"
979                         LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry"
980                         DYNEXP="-Wl,-brtl,-bexpall"
981                         PICFLAG="-O2"
982                         if test "${GCC}" != "yes"; then
983                                 ## for funky AIX compiler using strncpy()
984                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
985                         fi
986
987                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
988                         ;;
989                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
990                         SHLIBEXT="sl"
991                         # Use special PIC flags for the native HP-UX compiler.
992                         if test $ac_cv_prog_cc_Ae = yes; then
993                                 BLDSHARED="true"
994                                 SHLD="/usr/bin/ld"
995                                 LDSHFLAGS="-B symbolic -b -z"
996                                 SONAMEFLAG="+h "
997                                 PICFLAG="+z"
998                         fi
999                         DYNEXP="-Wl,-E"
1000                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1001                         ;;
1002                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1003                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1004                         ;;
1005                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1006                         BLDSHARED="true"
1007                         LDSHFLAGS="-shared"
1008                         SONAMEFLAG="-Wl,-soname,"
1009                         PICFLAG="-fPIC"
1010                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1011                         ;;
1012                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1013                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1014                         ;;
1015                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1016                         BLDSHARED="true"
1017                         LDSHFLAGS="-shared"
1018                         SONAMEFLAG="-Wl,-soname,"
1019                         PICFLAG="-KPIC"
1020                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1021                         ;;
1022                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1023                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1024                         ;;
1025                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1026                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1027                         ;;
1028                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1029                         case "$host" in
1030                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1031                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1032                                         fi
1033                                         LDSHFLAGS="-G"
1034                                         DYNEXP="-Bexport"
1035                                 ;;
1036                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1037                         esac
1038                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1039                         ;;
1040
1041                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1042                         if [ test "$GCC" != yes ]; then
1043                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1044                         fi
1045                         LDSHFLAGS="-G"
1046                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1047                         ;;
1048                 *)
1049                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1050                         ;;
1051 esac
1052 AC_SUBST(DYNEXP)
1053 AC_MSG_RESULT($BLDSHARED)
1054 AC_MSG_CHECKING([linker flags for shared libraries])
1055 AC_MSG_RESULT([$LDSHFLAGS])
1056 AC_MSG_CHECKING([compiler flags for position-independent code])
1057 AC_MSG_RESULT([$PICFLAGS])
1058
1059 #######################################################
1060 # test whether building a shared library actually works
1061 if test $BLDSHARED = true; then
1062 AC_CACHE_CHECK([whether building shared libraries actually works], 
1063                [ac_cv_shlib_works],[
1064    ac_cv_shlib_works=no
1065    # try building a trivial shared library
1066    if test "$PICSUFFIX" = "po"; then
1067      $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.po ${srcdir-.}/tests/shlib.c &&
1068        $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o shlib.so shlib.po &&
1069        ac_cv_shlib_works=yes
1070    else
1071      $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c &&
1072        mv shlib.$PICSUFFIX shlib.po &&
1073        $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o shlib.so shlib.po &&
1074        ac_cv_shlib_works=yes
1075    fi
1076    rm -f shlib.so shlib.po
1077 ])
1078 if test $ac_cv_shlib_works = no; then
1079    BLDSHARED=false
1080 fi
1081 fi
1082
1083 # this updates our target list if we can build shared libs
1084 if test $BLDSHARED = true; then
1085    LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
1086 else
1087    LIBSMBCLIENT_SHARED=
1088 fi
1089
1090 ################
1091
1092 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1093 AC_TRY_RUN([#include <stdio.h>
1094 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1095 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1096 if test x"$samba_cv_have_longlong" = x"yes"; then
1097     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1098 fi
1099
1100 #
1101 # Check if the compiler supports the LL prefix on long long integers.
1102 # AIX needs this.
1103
1104 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1105     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1106         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1107 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1108    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1109 fi
1110
1111   
1112 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1113 AC_TRY_RUN([#include <stdio.h>
1114 #include <sys/stat.h>
1115 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1116 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1117 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1118     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1119 fi
1120
1121 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1122 AC_TRY_RUN([
1123 #if defined(HAVE_UNISTD_H)
1124 #include <unistd.h>
1125 #endif
1126 #include <stdio.h>
1127 #include <sys/stat.h>
1128 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1129 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1130 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1131     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1132 fi
1133
1134 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1135 AC_TRY_RUN([#include <stdio.h>
1136 #include <sys/stat.h>
1137 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1138 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1139 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1140     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1141 fi
1142
1143 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1144 AC_TRY_RUN([
1145 #if defined(HAVE_UNISTD_H)
1146 #include <unistd.h>
1147 #endif
1148 #include <stdio.h>
1149 #include <sys/stat.h>
1150 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1151 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1152 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1153     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1154 fi
1155
1156 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1157 AC_TRY_RUN([
1158 #if defined(HAVE_UNISTD_H)
1159 #include <unistd.h>
1160 #endif
1161 #include <stdio.h>
1162 #include <sys/stat.h>
1163 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1164 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1165 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1166     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
1167 fi
1168
1169 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
1170 AC_TRY_COMPILE([
1171 #if defined(HAVE_UNISTD_H)
1172 #include <unistd.h>
1173 #endif
1174 #include <sys/types.h>
1175 #include <dirent.h>],
1176 [struct dirent64 de;],
1177 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
1178 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
1179     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
1180 fi
1181
1182 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
1183 AC_TRY_RUN([
1184 #if defined(HAVE_UNISTD_H)
1185 #include <unistd.h>
1186 #endif
1187 #include <sys/types.h>
1188 main() { dev_t dev; int i = major(dev); return 0; }],
1189 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
1190 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
1191     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
1192 fi
1193
1194 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
1195 AC_TRY_RUN([
1196 #if defined(HAVE_UNISTD_H)
1197 #include <unistd.h>
1198 #endif
1199 #include <sys/types.h>
1200 main() { dev_t dev; int i = minor(dev); return 0; }],
1201 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
1202 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
1203     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
1204 fi
1205
1206 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
1207 AC_TRY_RUN([#include <stdio.h>
1208 main() { char c; c=250; exit((c > 0)?0:1); }],
1209 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
1210 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
1211     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
1212 fi
1213
1214 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
1215 AC_TRY_COMPILE([#include <sys/types.h>
1216 #include <sys/socket.h>
1217 #include <netinet/in.h>],
1218 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
1219 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
1220 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
1221     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
1222 fi
1223
1224 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
1225 AC_TRY_COMPILE([#include <sys/types.h>
1226 #include <dirent.h>
1227 void seekdir(DIR *d, long loc) { return; }],[return 0;],
1228 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
1229 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
1230     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
1231 fi
1232
1233 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
1234 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
1235 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
1236 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
1237     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
1238 fi
1239
1240 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
1241 AC_TRY_RUN([
1242 #include <sys/time.h>
1243 #include <unistd.h>
1244 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
1245            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
1246 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
1247     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
1248 fi
1249
1250 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE_VA_COPY,[
1251 AC_TRY_LINK([#include <stdarg.h>
1252 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
1253 samba_cv_HAVE_VA_COPY=yes,samba_cv_HAVE_VA_COPY=no)])
1254 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
1255     AC_DEFINE(HAVE_VA_COPY,1,[Whether __va_copy() is available])
1256 fi
1257
1258 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
1259 AC_TRY_RUN([
1260 #include <sys/types.h>
1261 #include <stdarg.h>
1262 void foo(const char *format, ...) { 
1263        va_list ap;
1264        int len;
1265        char buf[5];
1266
1267        va_start(ap, format);
1268        len = vsnprintf(buf, 0, format, ap);
1269        va_end(ap);
1270        if (len != 5) exit(1);
1271
1272        va_start(ap, format);
1273        len = vsnprintf(0, 0, format, ap);
1274        va_end(ap);
1275        if (len != 5) exit(1);
1276
1277        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
1278
1279        exit(0);
1280 }
1281 main() { foo("hello"); }
1282 ],
1283 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
1284 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
1285     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
1286 fi
1287
1288 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
1289 AC_TRY_RUN([#include <sys/types.h>
1290 #include <dirent.h>
1291 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
1292 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
1293 di->d_name[0] == 0) exit(0); exit(1);} ],
1294 samba_cv_HAVE_BROKEN_READDIR=yes,samba_cv_HAVE_BROKEN_READDIR=no,samba_cv_HAVE_BROKEN_READDIR=cross)])
1295 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
1296     AC_DEFINE(HAVE_BROKEN_READDIR,1,[Whether readdir() is broken])
1297 fi
1298
1299 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
1300 AC_TRY_COMPILE([#include <sys/types.h>
1301 #include <utime.h>],
1302 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
1303 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
1304 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
1305     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
1306 fi
1307
1308 dnl  utmp and utmpx come in many flavours
1309 dnl  We need to check for many of them
1310 dnl  But we don't need to do each and every one, because our code uses
1311 dnl  mostly just the utmp (not utmpx) fields.
1312
1313 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
1314
1315 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
1316 AC_TRY_COMPILE([#include <sys/types.h>
1317 #include <utmp.h>],
1318 [struct utmp ut;  ut.ut_name[0] = 'a';],
1319 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
1320 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
1321     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
1322 fi 
1323
1324 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
1325 AC_TRY_COMPILE([#include <sys/types.h>
1326 #include <utmp.h>],
1327 [struct utmp ut;  ut.ut_user[0] = 'a';],
1328 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
1329 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
1330     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
1331 fi 
1332
1333 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
1334 AC_TRY_COMPILE([#include <sys/types.h>
1335 #include <utmp.h>],
1336 [struct utmp ut;  ut.ut_id[0] = 'a';],
1337 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
1338 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
1339     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
1340 fi 
1341
1342 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
1343 AC_TRY_COMPILE([#include <sys/types.h>
1344 #include <utmp.h>],
1345 [struct utmp ut;  ut.ut_host[0] = 'a';],
1346 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
1347 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
1348     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
1349 fi 
1350
1351 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
1352 AC_TRY_COMPILE([#include <sys/types.h>
1353 #include <utmp.h>],
1354 [struct utmp ut;  time_t t; ut.ut_time = t;],
1355 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
1356 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
1357     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
1358 fi 
1359
1360 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
1361 AC_TRY_COMPILE([#include <sys/types.h>
1362 #include <utmp.h>],
1363 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
1364 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
1365 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
1366     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
1367 fi 
1368
1369 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
1370 AC_TRY_COMPILE([#include <sys/types.h>
1371 #include <utmp.h>],
1372 [struct utmp ut;  ut.ut_type = 0;],
1373 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
1374 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
1375     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
1376 fi 
1377
1378 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
1379 AC_TRY_COMPILE([#include <sys/types.h>
1380 #include <utmp.h>],
1381 [struct utmp ut;  ut.ut_pid = 0;],
1382 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
1383 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
1384     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
1385 fi 
1386
1387 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
1388 AC_TRY_COMPILE([#include <sys/types.h>
1389 #include <utmp.h>],
1390 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
1391 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
1392 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
1393     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
1394 fi 
1395
1396 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
1397 AC_TRY_COMPILE([#include <sys/types.h>
1398 #include <utmp.h>],
1399 [struct utmp ut;  ut.ut_addr = 0;],
1400 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
1401 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
1402     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
1403 fi 
1404
1405 if test x$ac_cv_func_pututline = xyes ; then
1406   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
1407   AC_TRY_COMPILE([#include <sys/types.h>
1408 #include <utmp.h>],
1409   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
1410   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
1411   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
1412       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
1413   fi
1414 fi
1415
1416 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
1417 AC_TRY_COMPILE([#include <sys/types.h>
1418 #include <utmpx.h>],
1419 [struct utmpx ux;  ux.ut_syslen = 0;],
1420 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
1421 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
1422     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
1423 fi 
1424
1425
1426 #################################################
1427 # check for libiconv support
1428 AC_MSG_CHECKING(whether to use libiconv)
1429 AC_ARG_WITH(libiconv,
1430 [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
1431 [ case "$withval" in
1432   no)
1433     AC_MSG_RESULT(no)
1434     ;;
1435   *)
1436     AC_MSG_RESULT(yes)
1437     CFLAGS="$CFLAGS -I$withval/include"
1438     LDFLAGS="$LDFLAGS -L$withval/lib"
1439     AC_CHECK_LIB(iconv, iconv_open)
1440     AC_DEFINE_UNQUOTED(WITH_LIBICONV, "${withval}",[Path to iconv])
1441     ;;
1442   esac ],
1443   AC_MSG_RESULT(no)
1444 )
1445
1446
1447 ############
1448 # check for iconv in libc
1449 AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
1450 AC_TRY_RUN([
1451 #include <iconv.h>
1452 main() {
1453        iconv_t cd = iconv_open("ASCII", "UCS-2LE");
1454        if (cd == 0 || cd == (iconv_t)-1) return -1;
1455        return 0;
1456 }
1457 ],
1458 samba_cv_HAVE_NATIVE_ICONV=yes,samba_cv_HAVE_NATIVE_ICONV=no,samba_cv_HAVE_NATIVE_ICONV=cross)])
1459 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
1460     AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
1461 fi
1462
1463
1464 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
1465 AC_TRY_RUN([
1466 #include <sys/types.h>
1467 #include <fcntl.h>
1468 #ifndef F_GETLEASE
1469 #define F_GETLEASE      1025
1470 #endif
1471 main() {
1472        int fd = open("/dev/null", O_RDONLY);
1473        return fcntl(fd, F_GETLEASE, 0) == -1;
1474 }
1475 ],
1476 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
1477 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
1478     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
1479 fi
1480
1481 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
1482 AC_TRY_RUN([
1483 #include <sys/types.h>
1484 #include <fcntl.h>
1485 #include <signal.h>
1486 #ifndef F_NOTIFY
1487 #define F_NOTIFY 1026
1488 #endif
1489 main() {
1490         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
1491 }
1492 ],
1493 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
1494 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
1495     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
1496 fi
1497
1498 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
1499 AC_TRY_RUN([
1500 #include <sys/types.h>
1501 #include <fcntl.h>
1502 #include <signal.h>
1503 #include <sys/file.h>
1504 #ifndef LOCK_MAND
1505 #define LOCK_MAND       32
1506 #define LOCK_READ       64
1507 #endif
1508 main() {
1509         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
1510 }
1511 ],
1512 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
1513 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
1514     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
1515 fi
1516
1517
1518
1519
1520 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
1521 AC_TRY_COMPILE([#include <sys/types.h>
1522 #include <fcntl.h>],
1523 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
1524 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
1525 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
1526     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
1527 fi
1528
1529 AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
1530 AC_TRY_RUN([#include <sys/types.h>
1531 #include <sys/capability.h>
1532 main() {
1533  cap_t cap;
1534  if ((cap = cap_get_proc()) == NULL)
1535    exit(1);
1536  cap->cap_effective |= CAP_NETWORK_MGT;
1537  cap->cap_inheritable |= CAP_NETWORK_MGT;
1538  cap_set_proc(cap);
1539  exit(0);
1540 }
1541 ],
1542 samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
1543 if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
1544     AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
1545 fi
1546
1547 #
1548 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
1549 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
1550 #
1551
1552 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
1553 AC_TRY_COMPILE([#include <sys/types.h>
1554 #if defined(HAVE_RPC_RPC_H)
1555 #include <rpc/rpc.h>
1556 #endif],
1557 [int16 testvar;],
1558 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
1559 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
1560     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
1561 fi
1562
1563 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
1564 AC_TRY_COMPILE([#include <sys/types.h>
1565 #if defined(HAVE_RPC_RPC_H)
1566 #include <rpc/rpc.h>
1567 #endif],
1568 [uint16 testvar;],
1569 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
1570 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
1571     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
1572 fi
1573
1574 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
1575 AC_TRY_COMPILE([#include <sys/types.h>
1576 #if defined(HAVE_RPC_RPC_H)
1577 #include <rpc/rpc.h>
1578 #endif],
1579 [int32 testvar;],
1580 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
1581 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
1582     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
1583 fi
1584
1585 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
1586 AC_TRY_COMPILE([#include <sys/types.h>
1587 #if defined(HAVE_RPC_RPC_H)
1588 #include <rpc/rpc.h>
1589 #endif],
1590 [uint32 testvar;],
1591 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
1592 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
1593     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
1594 fi
1595
1596 dnl
1597 dnl Some systems (SCO) have a problem including
1598 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
1599 dnl as a #define in <prot.h> and as part of an enum
1600 dnl in <rpc/rpc.h>.
1601 dnl
1602
1603 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
1604 AC_TRY_COMPILE([#include <sys/types.h>
1605 #ifdef HAVE_SYS_SECURITY_H
1606 #include <sys/security.h>
1607 #include <prot.h>
1608 #endif  /* HAVE_SYS_SECURITY_H */
1609 #if defined(HAVE_RPC_RPC_H)
1610 #include <rpc/rpc.h>
1611 #endif],
1612 [int testvar;],
1613 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
1614 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
1615     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
1616 fi
1617
1618 AC_MSG_CHECKING([for test routines])
1619 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
1620            AC_MSG_RESULT(yes),
1621            AC_MSG_ERROR([cant find test code. Aborting config]),
1622            AC_MSG_WARN([cannot run when cross-compiling]))
1623
1624 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
1625 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
1626            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
1627 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
1628     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
1629 fi
1630
1631 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
1632 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
1633            samba_cv_HAVE_WORKING_AF_LOCAL=yes,
1634            samba_cv_HAVE_WORKING_AF_LOCAL=no,
1635            samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
1636 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
1637 then
1638     AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
1639 fi
1640
1641 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
1642 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
1643            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
1644 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
1645     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
1646 fi
1647
1648 AC_CACHE_CHECK([whether getpass should be replaced],samba_cv_REPLACE_GETPASS,[
1649 SAVE_CPPFLAGS="$CPPFLAGS"
1650 CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt  -I${srcdir-.}/smbwrapper"
1651 AC_TRY_COMPILE([
1652 #define REPLACE_GETPASS 1
1653 #define NO_CONFIG_H 1
1654 #define main dont_declare_main
1655 #include "${srcdir-.}/lib/getsmbpass.c"
1656 #undef main
1657 ],[],samba_cv_REPLACE_GETPASS=yes,samba_cv_REPLACE_GETPASS=no)
1658 CPPFLAGS="$SAVE_CPPFLAGS"
1659 ])
1660 if test x"$samba_cv_REPLACE_GETPASS" = x"yes"; then
1661         AC_DEFINE(REPLACE_GETPASS,1,[Whether getpass should be replaced])
1662 fi
1663
1664 AC_CACHE_CHECK([for broken inet_ntoa],samba_cv_REPLACE_INET_NTOA,[
1665 AC_TRY_RUN([
1666 #include <stdio.h>
1667 #include <sys/types.h>
1668 #include <netinet/in.h>
1669 #ifdef HAVE_ARPA_INET_H
1670 #include <arpa/inet.h>
1671 #endif
1672 main() { struct in_addr ip; ip.s_addr = 0x12345678;
1673 if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
1674     strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); } 
1675 exit(1);}],
1676            samba_cv_REPLACE_INET_NTOA=yes,samba_cv_REPLACE_INET_NTOA=no,samba_cv_REPLACE_INET_NTOA=cross)])
1677 if test x"$samba_cv_REPLACE_INET_NTOA" = x"yes"; then
1678     AC_DEFINE(REPLACE_INET_NTOA,1,[Whether inet_ntoa should be replaced])
1679 fi
1680
1681 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
1682 AC_TRY_RUN([#include <stdlib.h>
1683 #include <sys/types.h>
1684 #include <sys/stat.h>
1685 #include <unistd.h>
1686 main() { 
1687   struct stat st;
1688   char tpl[20]="/tmp/test.XXXXXX"; 
1689   int fd = mkstemp(tpl); 
1690   if (fd == -1) exit(1);
1691   unlink(tpl);
1692   if (fstat(fd, &st) != 0) exit(1);
1693   if ((st.st_mode & 0777) != 0600) exit(1);
1694   exit(0);
1695 }],
1696 samba_cv_HAVE_SECURE_MKSTEMP=yes,
1697 samba_cv_HAVE_SECURE_MKSTEMP=no,
1698 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
1699 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
1700     AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
1701 fi
1702
1703 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
1704 AC_TRY_RUN([#include <unistd.h>
1705 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
1706 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
1707 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
1708     AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
1709 fi
1710
1711 AC_CACHE_CHECK([for root],samba_cv_HAVE_ROOT,[
1712 AC_TRY_RUN([main() { exit(getuid() != 0); }],
1713            samba_cv_HAVE_ROOT=yes,samba_cv_HAVE_ROOT=no,samba_cv_HAVE_ROOT=cross)])
1714 if test x"$samba_cv_HAVE_ROOT" = x"yes"; then
1715     AC_DEFINE(HAVE_ROOT,1,[Whether current user is root])
1716 else
1717     AC_MSG_WARN(running as non-root will disable some tests)
1718 fi
1719
1720 ##################
1721 # look for a method of finding the list of network interfaces
1722 iface=no;
1723 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
1724 AC_TRY_RUN([
1725 #define HAVE_IFACE_AIX 1
1726 #define AUTOCONF_TEST 1
1727 #include "confdefs.h"
1728 #include "${srcdir-.}/lib/interfaces.c"],
1729            samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
1730 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
1731     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
1732 fi
1733
1734 if test $iface = no; then
1735 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
1736 AC_TRY_RUN([
1737 #define HAVE_IFACE_IFCONF 1
1738 #define AUTOCONF_TEST 1
1739 #include "confdefs.h"
1740 #include "${srcdir-.}/lib/interfaces.c"],
1741            samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
1742 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
1743     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
1744 fi
1745 fi
1746
1747 if test $iface = no; then
1748 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
1749 AC_TRY_RUN([
1750 #define HAVE_IFACE_IFREQ 1
1751 #define AUTOCONF_TEST 1
1752 #include "confdefs.h"
1753 #include "${srcdir-.}/lib/interfaces.c"],
1754            samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
1755 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
1756     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
1757 fi
1758 fi
1759
1760
1761 ################################################
1762 # look for a method of setting the effective uid
1763 seteuid=no;
1764 if test $seteuid = no; then
1765 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
1766 AC_TRY_RUN([
1767 #define AUTOCONF_TEST 1
1768 #define USE_SETRESUID 1
1769 #include "confdefs.h"
1770 #include "${srcdir-.}/lib/util_sec.c"],
1771            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
1772 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
1773     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
1774 fi
1775 fi
1776
1777
1778 if test $seteuid = no; then
1779 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
1780 AC_TRY_RUN([
1781 #define AUTOCONF_TEST 1
1782 #define USE_SETREUID 1
1783 #include "confdefs.h"
1784 #include "${srcdir-.}/lib/util_sec.c"],
1785            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
1786 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
1787     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
1788 fi
1789 fi
1790
1791 if test $seteuid = no; then
1792 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
1793 AC_TRY_RUN([
1794 #define AUTOCONF_TEST 1
1795 #define USE_SETEUID 1
1796 #include "confdefs.h"
1797 #include "${srcdir-.}/lib/util_sec.c"],
1798            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
1799 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
1800     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
1801 fi
1802 fi
1803
1804 if test $seteuid = no; then
1805 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
1806 AC_TRY_RUN([
1807 #define AUTOCONF_TEST 1
1808 #define USE_SETUIDX 1
1809 #include "confdefs.h"
1810 #include "${srcdir-.}/lib/util_sec.c"],
1811            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
1812 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
1813     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
1814 fi
1815 fi
1816
1817
1818 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
1819 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
1820            samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
1821 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
1822     AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
1823 fi
1824
1825 AC_CACHE_CHECK([for ftruncate needs root],samba_cv_FTRUNCATE_NEEDS_ROOT,[
1826 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncroot.c"],
1827            samba_cv_FTRUNCATE_NEEDS_ROOT=yes,samba_cv_FTRUNCATE_NEEDS_ROOT=no,samba_cv_FTRUNCATE_NEEDS_ROOT=cross)])
1828 if test x"$samba_cv_FTRUNCATE_NEEDS_ROOT" = x"yes"; then
1829     AC_DEFINE(FTRUNCATE_NEEDS_ROOT,1,[Whether ftruncate() needs root])
1830 fi
1831
1832 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
1833 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
1834            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
1835 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
1836     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
1837 fi
1838
1839 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
1840 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
1841            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
1842 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
1843     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
1844
1845 else
1846
1847 dnl
1848 dnl Don't check for 64 bit fcntl locking if we know that the
1849 dnl glibc2.1 broken check has succeeded.
1850 dnl 
1851
1852   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
1853   AC_TRY_RUN([
1854 #if defined(HAVE_UNISTD_H)
1855 #include <unistd.h>
1856 #endif
1857 #include <stdio.h>
1858 #include <stdlib.h>
1859
1860 #ifdef HAVE_FCNTL_H
1861 #include <fcntl.h>
1862 #endif
1863
1864 #ifdef HAVE_SYS_FCNTL_H
1865 #include <sys/fcntl.h>
1866 #endif
1867 main() { struct flock64 fl64;
1868 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
1869 exit(0);
1870 #else
1871 exit(1);
1872 #endif
1873 }],
1874        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
1875
1876   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
1877       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
1878   fi
1879 fi
1880
1881 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
1882 AC_TRY_COMPILE([#include <sys/types.h>
1883 #include <sys/stat.h>
1884 #include <unistd.h>],
1885 [struct stat st;  st.st_blocks = 0;],
1886 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
1887 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
1888     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
1889 fi 
1890
1891 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
1892 AC_TRY_COMPILE([#include <sys/types.h>
1893 #include <sys/stat.h>
1894 #include <unistd.h>],
1895 [struct stat st;  st.st_blksize = 0;],
1896 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
1897 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
1898     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
1899 fi
1900
1901 case "$host_os" in
1902 *linux*)
1903 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
1904 AC_TRY_COMPILE([
1905 #ifdef HAVE_SYS_VFS_H
1906 #include <sys/vfs.h>
1907 #endif
1908 #ifdef HAVE_SYS_CAPABILITY_H
1909 #include <sys/capability.h>
1910 #endif
1911 ],[int i;],
1912    samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
1913 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
1914    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
1915 fi
1916 ;;
1917 esac
1918
1919 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
1920 AC_TRY_COMPILE([#include <sys/acl.h>
1921 #if defined(HAVE_RPCSVC_NIS_H)
1922 #include <rpcsvc/nis.h>
1923 #endif],
1924 [int i;],
1925 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
1926 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
1927         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
1928 fi
1929
1930
1931 #################################################
1932 # check for smbwrapper support
1933 AC_MSG_CHECKING(whether to use smbwrapper)
1934 AC_ARG_WITH(smbwrapper,
1935 [  --with-smbwrapper       Include SMB wrapper support (default=no) ],
1936 [ case "$withval" in
1937   yes)
1938     AC_MSG_RESULT(yes)
1939     AC_DEFINE(WITH_SMBWRAPPER,1,[Whether to include smbwrapper support])
1940         WRAPPROG="bin/smbsh\$(EXEEXT)"
1941         WRAP="bin/smbwrapper.$SHLIBEXT"
1942
1943         if test x$ATTEMPT_WRAP32_BUILD = x; then
1944                 WRAP32=""
1945         else
1946                         WRAP32=bin/smbwrapper.32.$SHLIBEXT
1947         fi
1948
1949 # Conditions under which smbwrapper should not be built.
1950
1951         if test x$PICFLAG = x; then
1952            echo No support for PIC code - disabling smbwrapper and smbsh
1953            WRAPPROG=""
1954            WRAP=""
1955            WRAP32=""
1956         elif test x$ac_cv_func_syscall = xno; then
1957            AC_MSG_RESULT([No syscall() -- disabling smbwrapper and smbsh])
1958            WRAPPROG=""
1959            WRAP=""
1960            WRAP32=""
1961         fi
1962         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WRAPPROG $WRAP $WRAP32"
1963         SMBWRAPPER="$WRAPPROG $WRAP $WRAP32"
1964     ;;
1965   *)
1966     AC_MSG_RESULT(no)
1967     ;;
1968   esac ],
1969   AC_MSG_RESULT(no)
1970 )
1971
1972 #################################################
1973 # check for AFS clear-text auth support
1974 AC_MSG_CHECKING(whether to use AFS clear-text auth)
1975 AC_ARG_WITH(afs,
1976 [  --with-afs              Include AFS clear-text auth support (default=no) ],
1977 [ case "$withval" in
1978   yes)
1979     AC_MSG_RESULT(yes)
1980     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
1981     ;;
1982   *)
1983     AC_MSG_RESULT(no)
1984     ;;
1985   esac ],
1986   AC_MSG_RESULT(no)
1987 )
1988
1989
1990 #################################################
1991 # check for the DFS clear-text auth system
1992 AC_MSG_CHECKING(whether to use DFS clear-text auth)
1993 AC_ARG_WITH(dfs,
1994 [  --with-dce-dfs          Include DCE/DFS clear-text auth support (default=no)],
1995 [ case "$withval" in
1996   yes)
1997     AC_MSG_RESULT(yes)
1998     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
1999     ;;
2000   *)
2001     AC_MSG_RESULT(no)
2002     ;;
2003   esac ],
2004   AC_MSG_RESULT(no)
2005 )
2006
2007 #################################################
2008 # active directory support
2009
2010 with_ads_support=yes
2011 AC_MSG_CHECKING([whether to use Active Directory])
2012
2013 AC_ARG_WITH(ads,
2014 [   --with-ads  Active Directory support (default yes)],
2015 [ case "$withval" in
2016     no)
2017         with_ads_support=no
2018         ;;
2019   esac ])
2020
2021 if test x"$with_ads_support" = x"yes"; then
2022    AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
2023 fi
2024
2025 AC_MSG_RESULT($with_ads_support)
2026
2027 FOUND_KRB5=no
2028 if test x"$with_ads_support" = x"yes"; then
2029
2030   #################################################
2031   # check for location of Kerberos 5 install
2032   AC_MSG_CHECKING(for kerberos 5 install path)
2033   AC_ARG_WITH(krb5,
2034   [  --with-krb5=base-dir    Locate Kerberos 5 support (default=/usr)],
2035   [ case "$withval" in
2036     no)
2037       AC_MSG_RESULT(no)
2038       ;;
2039     *)
2040       AC_MSG_RESULT(yes)
2041       LIBS="$LIBS -lkrb5"
2042       CFLAGS="$CFLAGS -I$withval/include"
2043       CPPFLAGS="$CPPFLAGS -I$withval/include"
2044       LDFLAGS="$LDFLAGS -L$withval/lib"
2045       FOUND_KRB5=yes
2046       ;;
2047     esac ],
2048     AC_MSG_RESULT(no)
2049   )
2050
2051
2052 if test x$FOUND_KRB5 = x"no"; then
2053 #################################################
2054 # see if this box has the SuSE location for the heimdal kerberos implementation
2055 AC_MSG_CHECKING(for /usr/include/heimdal)
2056 if test -d /usr/include/heimdal; then
2057     CFLAGS="$CFLAGS -I/usr/include/heimdal"
2058     CPPFLAGS="$CPPFLAGS -I/usr/include/heimdal"
2059     AC_MSG_RESULT(yes)
2060 else
2061     AC_MSG_RESULT(no)
2062 fi
2063 fi
2064
2065
2066 if test x$FOUND_KRB5 = x"no"; then
2067 #################################################
2068 # see if this box has the RedHat location for kerberos
2069 AC_MSG_CHECKING(for /usr/kerberos)
2070 if test -d /usr/kerberos; then
2071     LDFLAGS="$LDFLAGS -L/usr/kerberos/lib"
2072     CFLAGS="$CFLAGS -I/usr/kerberos/include"
2073     CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
2074     AC_MSG_RESULT(yes)
2075 else
2076     AC_MSG_RESULT(no)
2077 fi
2078 fi
2079
2080
2081   # now check for krb5.h. Some systems have the libraries without the headers!
2082   # note that this check is done here to allow for different kerberos
2083   # include paths
2084   AC_CHECK_HEADERS(krb5.h)
2085
2086   # now check for gssapi headers.  This is also done here to allow for
2087   # different kerberos include paths
2088   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
2089
2090   ##################################################################
2091   # we might need the k5crypto and com_err libraries on some systems
2092   AC_CHECK_LIB(com_err, _et_list, [LIBS="$LIBS -lcom_err"])
2093   AC_CHECK_LIB(k5crypto, krb5_encrypt_data, [LIBS="$LIBS -lk5crypto"])
2094   # Heimdal checks.
2095   AC_CHECK_LIB(crypto, des_set_key, [LIBS="$LIBS -lcrypto"])
2096   AC_CHECK_LIB(asn1, copy_Authenticator, [LIBS="$LIBS -lasn1 -lroken"])
2097   AC_CHECK_LIB(krb5, krb5_set_real_time, [AC_DEFINE(HAVE_KRB5_SET_REAL_TIME,1,[Whether krb5_set_real_time is available])])
2098   AC_CHECK_LIB(krb5, krb5_set_default_in_tkt_etypes, [AC_DEFINE(HAVE_KRB5_SET_DEFAULT_IN_TKT_ETYPES,1,[Whether krb5_set_default_in_tkt_etypes, is available])])
2099   AC_CHECK_LIB(krb5, krb5_set_default_tgs_ktypes, [AC_DEFINE(HAVE_KRB5_SET_DEFAULT_TGS_KTYPES,1,[Whether krb5_set_default_tgs_ktypes is available])])
2100
2101
2102   ########################################################
2103   # now see if we can find the krb5 libs in standard paths
2104   # or as specified above
2105   AC_CHECK_LIB(krb5, krb5_mk_req_extended, [LIBS="$LIBS -lkrb5";
2106         AC_DEFINE(HAVE_KRB5,1,[Whether KRB5 is available])])
2107
2108   ########################################################
2109   # now see if we can find the gssapi libs in standard paths
2110   AC_CHECK_LIB(gssapi_krb5, gss_display_status, [LIBS="$LIBS -lgssapi_krb5";
2111         AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])])
2112   # Heimdal checks.
2113   AC_CHECK_LIB(gssapi, gss_display_status, [LIBS="$LIBS -lgssapi";
2114         AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])])
2115 fi
2116
2117 ########################################################
2118 # Compile with LDAP support?
2119
2120 with_ldap_support=yes
2121 AC_MSG_CHECKING([whether to use LDAP])
2122
2123 AC_ARG_WITH(ldap,
2124 [   --with-ldap  LDAP support (default yes)],
2125 [ case "$withval" in
2126     no)
2127         with_ldap_support=no
2128         ;;
2129   esac ])
2130
2131 AC_MSG_RESULT($with_ldap_support)
2132
2133 if test x"$with_ldap_support" = x"yes"; then
2134
2135   ##################################################################
2136   # we might need the lber lib on some systems. To avoid link errors
2137   # this test must be before the libldap test
2138   AC_CHECK_LIB(lber, ber_scanf, [LIBS="$LIBS -llber"])
2139
2140   ########################################################
2141   # now see if we can find the ldap libs in standard paths
2142   if test x$have_ldap != xyes; then
2143   AC_CHECK_LIB(ldap, ldap_domain2hostlist, [LIBS="$LIBS -lldap";
2144         AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])])
2145
2146         ########################################################
2147         # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
2148         # Check found in pam_ldap 145.
2149         AC_CHECK_FUNCS(ldap_set_rebind_proc)
2150         AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, pam_ldap_cv_ldap_set_rebind_proc, [
2151         AC_TRY_COMPILE([
2152         #include <lber.h>
2153         #include <ldap.h>], [ldap_set_rebind_proc(0, 0, 0);], [pam_ldap_cv_ldap_set_rebind_proc=3], [pam_ldap_cv_ldap_set_rebind_proc=2]) ])
2154         AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $pam_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
2155   fi
2156 fi
2157
2158 ########################################################
2159 # Compile with MySQL support?
2160 AM_PATH_MYSQL([0.11.0],[MODULE_MYSQL=bin/mysql.so],[MODULE_MYSQL=])
2161 CFLAGS="$CFLAGS $MYSQL_CFLAGS"
2162 AC_SUBST(MODULE_MYSQL)
2163
2164 ########################################################
2165 # Compile with XML support?
2166 AM_PATH_XML2([2.0.0],[MODULE_XML=bin/xml.so],[MODULE_XML=])
2167 CFLAGS="$CFLAGS $XML_CFLAGS"
2168 AC_SUBST(MODULE_XML)
2169
2170 #################################################
2171 # check for automount support
2172 AC_MSG_CHECKING(whether to use automount)
2173 AC_ARG_WITH(automount,
2174 [  --with-automount        Include automount support (default=no)],
2175 [ case "$withval" in
2176   yes)
2177     AC_MSG_RESULT(yes)
2178     AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
2179     ;;
2180   *)
2181     AC_MSG_RESULT(no)
2182     ;;
2183   esac ],
2184   AC_MSG_RESULT(no)
2185 )
2186
2187 #################################################
2188 # check for smbmount support
2189 AC_MSG_CHECKING(whether to use smbmount)
2190 AC_ARG_WITH(smbmount,
2191 [  --with-smbmount         Include smbmount (Linux only) support (default=no)],
2192 [ case "$withval" in
2193   yes)
2194         case "$host_os" in
2195         *linux*)
2196                 AC_MSG_RESULT(yes)
2197                 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
2198                 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
2199                 ;;
2200         *)
2201                 AC_MSG_ERROR(not on a linux system!)
2202                 ;;
2203         esac
2204     ;;
2205   *)
2206     AC_MSG_RESULT(no)
2207     ;;
2208   esac ],
2209   AC_MSG_RESULT(no)
2210 )
2211
2212
2213 #################################################
2214 # check for a PAM clear-text auth, accounts, password and session support
2215 with_pam_for_crypt=no
2216 AC_MSG_CHECKING(whether to use PAM)
2217 AC_ARG_WITH(pam,
2218 [  --with-pam              Include PAM support (default=no)],
2219 [ case "$withval" in
2220   yes)
2221     AC_MSG_RESULT(yes)
2222     AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
2223     AUTHLIBS="$AUTHLIBS -lpam"
2224     with_pam_for_crypt=yes
2225     ;;
2226   *)
2227     AC_MSG_RESULT(no)
2228     ;;
2229   esac ],
2230   AC_MSG_RESULT(no)
2231 )
2232
2233 # we can't build a pam module if we don't have pam.
2234 AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])])
2235
2236 #################################################
2237 # check for pam_smbpass support
2238 AC_MSG_CHECKING(whether to use pam_smbpass)
2239 AC_ARG_WITH(pam_smbpass,
2240 [  --with-pam_smbpass      Build a PAM module to allow other applications to use our smbpasswd file (default=no)],
2241 [ case "$withval" in
2242   yes)
2243     AC_MSG_RESULT(yes)
2244
2245 # Conditions under which pam_smbpass should not be built.
2246
2247        if test x$PICFLAG = x; then
2248           AC_MSG_RESULT([No support for PIC code - disabling pam_smbpass])
2249        elif test x$ac_cv_lib_pam_pam_get_data = xno; then
2250           AC_MSG_RESULT([No libpam found -- disabling pam_smbpass])
2251        else
2252           SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.so"
2253        fi
2254     ;;
2255   *)
2256     AC_MSG_RESULT(no)
2257     ;;
2258   esac ],
2259   AC_MSG_RESULT(no)
2260 )
2261
2262
2263 ###############################################
2264 # test for where we get crypt() from, but only
2265 # if not using PAM
2266 if test x"$with_pam_for_crypt" = x"no"; then
2267 AC_CHECK_FUNCS(crypt)
2268 if test x"$ac_cv_func_crypt" = x"no"; then
2269     AC_CHECK_LIB(crypt, crypt, [AUTHLIBS="$AUTHLIBS -lcrypt";
2270         AC_DEFINE(HAVE_CRYPT,1,[Whether crypt() is available])])
2271 fi
2272 fi
2273
2274 ##
2275 ## moved after the check for -lcrypt in order to
2276 ## ensure that the necessary libraries are included
2277 ## check checking for truncated salt.  Wrapped by the
2278 ## $with_pam_for_crypt variable as above   --jerry
2279 ##
2280 if test $with_pam_for_crypt = no; then
2281 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
2282 crypt_LIBS="$LIBS"
2283 LIBS="$AUTHLIBS $LIBS"
2284 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
2285         samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
2286 LIBS="$crypt_LIBS"])
2287 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
2288         AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
2289 fi
2290 fi
2291
2292 # New experimental SAM system
2293
2294 AC_MSG_CHECKING([whether to build the new (experimental) SAM database])
2295 AC_ARG_WITH(sam,
2296 [  --with-sam              Build new (experimental) SAM database (default=no)],
2297 [ case "$withval" in
2298   yes)
2299     AC_MSG_RESULT(yes)
2300     AC_DEFINE(WITH_SAM,1,[Whether to build the new (experimental) SAM database])
2301     ;;
2302   *)
2303     AC_MSG_RESULT(no)
2304     ;;
2305   esac ],
2306   AC_MSG_RESULT(no)
2307 )
2308
2309
2310 ########################################################################################
2311 ##
2312 ## TESTS FOR SAM BACKENDS.  KEEP THESE GROUPED TOGETHER
2313 ##
2314 ########################################################################################
2315
2316 #################################################
2317 # check for a LDAP password database configuration backwards compatibility
2318 AC_MSG_CHECKING(whether to use LDAP SAM 2.2 compatible configuration)
2319 AC_ARG_WITH(ldapsam,
2320 [  --with-ldapsam           Include LDAP SAM 2.2 compatible configuration (default=no)],
2321 [ case "$withval" in
2322   yes)
2323     AC_MSG_RESULT(yes)
2324     AC_DEFINE(WITH_LDAP_SAMCONFIG,1,[Whether to include 2.2 compatibel LDAP SAM configuration])
2325     ;;
2326   *)
2327     AC_MSG_RESULT(no)
2328     ;;
2329   esac ],
2330   AC_MSG_RESULT(no)
2331 )
2332
2333 #################################################
2334 # check for a TDB password database
2335 AC_MSG_CHECKING(whether to use TDB SAM database)
2336 AC_ARG_WITH(tdbsam,
2337 [  --with-tdbsam           Include experimental TDB SAM support (default=no)],
2338 [ case "$withval" in
2339   yes)
2340     AC_MSG_RESULT(yes)
2341     AC_DEFINE(WITH_TDB_SAM,1,[Whether to include experimental TDB SAM support])
2342     ;;
2343   *)
2344     AC_MSG_RESULT(no)
2345     ;;
2346   esac ],
2347   AC_MSG_RESULT(no)
2348 )
2349
2350 #################################################
2351 # check for a NISPLUS password database
2352 AC_MSG_CHECKING(whether to use NISPLUS SAM database)
2353 AC_ARG_WITH(nisplussam,
2354 [  --with-nisplussam       Include NISPLUS SAM support (default=no)],
2355 [ case "$withval" in
2356   yes)
2357     AC_MSG_RESULT(yes)
2358     AC_DEFINE(WITH_NISPLUS_SAM,1,[Whether to include nisplus SAM support])
2359     ;;
2360   *)
2361     AC_MSG_RESULT(no)
2362     ;;
2363   esac ],
2364   AC_MSG_RESULT(no)
2365 )
2366
2367 ########################################################################################
2368 ##
2369 ## END OF TESTS FOR SAM BACKENDS.  
2370 ##
2371 ########################################################################################
2372
2373 #################################################
2374 # check for a NISPLUS_HOME support 
2375 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
2376 AC_ARG_WITH(nisplus-home,
2377 [  --with-nisplus-home     Include NISPLUS_HOME support (default=no)],
2378 [ case "$withval" in
2379   yes)
2380     AC_MSG_RESULT(yes)
2381     AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
2382     ;;
2383   *)
2384     AC_MSG_RESULT(no)
2385     ;;
2386   esac ],
2387   AC_MSG_RESULT(no)
2388 )
2389
2390 #################################################
2391 # check for syslog logging
2392 AC_MSG_CHECKING(whether to use syslog logging)
2393 AC_ARG_WITH(syslog,
2394 [  --with-syslog           Include experimental SYSLOG support (default=no)],
2395 [ case "$withval" in
2396   yes)
2397     AC_MSG_RESULT(yes)
2398     AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
2399     ;;
2400   *)
2401     AC_MSG_RESULT(no)
2402     ;;
2403   esac ],
2404   AC_MSG_RESULT(no)
2405 )
2406
2407 #################################################
2408 # check for a shared memory profiling support
2409 AC_MSG_CHECKING(whether to use profiling)
2410 AC_ARG_WITH(profiling-data,
2411 [  --with-profiling-data   Include gathering source code profile information (default=no)],
2412 [ case "$withval" in
2413   yes)
2414     AC_MSG_RESULT(yes)
2415     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
2416     ;;
2417   *)
2418     AC_MSG_RESULT(no)
2419     ;;
2420   esac ],
2421   AC_MSG_RESULT(no)
2422 )
2423
2424
2425 #################################################
2426 # check for experimental disk-quotas support
2427 QUOTAOBJS=smbd/noquotas.o
2428
2429 AC_MSG_CHECKING(whether to support disk-quotas)
2430 AC_ARG_WITH(quotas,
2431 [  --with-quotas           Include experimental disk-quota support (default=no)],
2432 [ case "$withval" in
2433   yes)
2434     AC_MSG_RESULT(yes)
2435     case "$host_os" in
2436       *linux*)
2437         # Check for kernel 2.4.x quota braindamage...
2438         AC_CACHE_CHECK([for linux 2.4.x quota braindamage..],samba_cv_linux_2_4_quota_braindamage, [
2439         AC_TRY_COMPILE([#include <stdio.h>
2440 #include <sys/types.h>
2441 #include <asm/types.h>
2442 #include <linux/quota.h>
2443 #include <mntent.h>
2444 #include <linux/unistd.h>],[struct mem_dqblk D;],
2445       samba_cv_linux_2_4_quota_braindamage=yes,samba_cv_linux_2_4_quota_braindamage=no)])
2446 if test x"$samba_cv_linux_2_4_quota_braindamage" = x"yes"; then
2447         AC_DEFINE(LINUX_QUOTAS_2,1,[linux 2.4.x quota braindamage])
2448 else
2449         AC_DEFINE(LINUX_QUOTAS_1,1,[linux quotas])
2450 fi
2451         ;;
2452       *)
2453         ;;
2454     esac
2455     QUOTAOBJS=smbd/quotas.o
2456     AC_DEFINE(WITH_QUOTAS,1,[Whether to include experimental quota support])
2457     ;;
2458   *)
2459     AC_MSG_RESULT(no)
2460     ;;
2461   esac ],
2462   AC_MSG_RESULT(no)
2463 )
2464 AC_SUBST(QUOTAOBJS)
2465
2466 #################################################
2467 # check for experimental utmp accounting
2468
2469 AC_MSG_CHECKING(whether to support utmp accounting)
2470 AC_ARG_WITH(utmp,
2471 [  --with-utmp             Include experimental utmp accounting (default=no)],
2472 [ case "$withval" in
2473   yes)
2474     AC_MSG_RESULT(yes)
2475     AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
2476     ;;
2477   *)
2478     AC_MSG_RESULT(no)
2479     ;;
2480   esac ],
2481   AC_MSG_RESULT(no)
2482 )
2483
2484 #################################################
2485 # choose native language(s) of man pages
2486 AC_MSG_CHECKING(chosen man pages' language(s))
2487 AC_ARG_WITH(manpages-langs,
2488 [  --with-manpages-langs={en,ja,pl}  Choose man pages' language(s). (en)],
2489 [ case "$withval" in
2490   yes|no)
2491     AC_MSG_WARN(--with-manpages-langs called without argument - will use default)
2492     manlangs="en"
2493   ;;
2494   *)
2495     manlangs="$withval"
2496   ;;
2497   esac
2498
2499   AC_MSG_RESULT($manlangs)
2500   manlangs=`echo $manlangs | sed "s/,/ /g"`   # replacing commas with spaces to produce a list
2501   AC_SUBST(manlangs)],
2502
2503   [manlangs="en"
2504   AC_MSG_RESULT($manlangs)
2505   AC_SUBST(manlangs)]
2506 )
2507
2508 #################################################
2509 # should we build libsmbclient?
2510
2511 LIBSMBCLIENT_SHARED=
2512 LIBSMBCLIENT=
2513 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
2514 AC_ARG_WITH(libsmbclient,
2515 [  --with-libsmbclient     Build the libsmbclient shared library (default=yes)],
2516 [ case "$withval" in
2517   no) 
2518      AC_MSG_RESULT(no)
2519      ;;
2520   *)
2521      if test $BLDSHARED = true; then
2522         LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
2523         LIBSMBCLIENT=libsmbclient
2524         AC_MSG_RESULT(yes)
2525      else
2526         AC_MSG_RESULT(no shared library support)
2527      fi
2528      ;;
2529   esac ],
2530   AC_MSG_RESULT(yes)
2531 )
2532
2533
2534 #################################################
2535 # these tests are taken from the GNU fileutils package
2536 AC_CHECKING(how to get filesystem space usage)
2537 space=no
2538
2539 # Test for statvfs64.
2540 if test $space = no; then
2541   # SVR4
2542   AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
2543   [AC_TRY_RUN([
2544 #if defined(HAVE_UNISTD_H)
2545 #include <unistd.h>
2546 #endif
2547 #include <sys/types.h>
2548 #include <sys/statvfs.h>
2549   main ()
2550   {
2551     struct statvfs64 fsd;
2552     exit (statvfs64 (".", &fsd));
2553   }],
2554   fu_cv_sys_stat_statvfs64=yes,
2555   fu_cv_sys_stat_statvfs64=no,
2556   fu_cv_sys_stat_statvfs64=cross)])
2557   if test $fu_cv_sys_stat_statvfs64 = yes; then
2558     space=yes
2559     AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
2560   fi
2561 fi
2562
2563 # Perform only the link test since it seems there are no variants of the
2564 # statvfs function.  This check is more than just AC_CHECK_FUNCS(statvfs)
2565 # because that got a false positive on SCO OSR5.  Adding the declaration
2566 # of a `struct statvfs' causes this test to fail (as it should) on such
2567 # systems.  That system is reported to work fine with STAT_STATFS4 which
2568 # is what it gets when this test fails.
2569 if test $space = no; then
2570   # SVR4
2571   AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
2572                  [AC_TRY_LINK([#include <sys/types.h>
2573 #include <sys/statvfs.h>],
2574                               [struct statvfs fsd; statvfs (0, &fsd);],
2575                               fu_cv_sys_stat_statvfs=yes,
2576                               fu_cv_sys_stat_statvfs=no)])
2577   if test $fu_cv_sys_stat_statvfs = yes; then
2578     space=yes
2579     AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
2580   fi
2581 fi
2582
2583 if test $space = no; then
2584   # DEC Alpha running OSF/1
2585   AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
2586   AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
2587   [AC_TRY_RUN([
2588 #include <sys/param.h>
2589 #include <sys/types.h>
2590 #include <sys/mount.h>
2591   main ()
2592   {
2593     struct statfs fsd;
2594     fsd.f_fsize = 0;
2595     exit (statfs (".", &fsd, sizeof (struct statfs)));
2596   }],
2597   fu_cv_sys_stat_statfs3_osf1=yes,
2598   fu_cv_sys_stat_statfs3_osf1=no,
2599   fu_cv_sys_stat_statfs3_osf1=no)])
2600   AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
2601   if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
2602     space=yes
2603     AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
2604   fi
2605 fi
2606
2607 if test $space = no; then
2608 # AIX
2609   AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
2610 member (AIX, 4.3BSD)])
2611   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
2612   [AC_TRY_RUN([
2613 #ifdef HAVE_SYS_PARAM_H
2614 #include <sys/param.h>
2615 #endif
2616 #ifdef HAVE_SYS_MOUNT_H
2617 #include <sys/mount.h>
2618 #endif
2619 #ifdef HAVE_SYS_VFS_H
2620 #include <sys/vfs.h>
2621 #endif
2622   main ()
2623   {
2624   struct statfs fsd;
2625   fsd.f_bsize = 0;
2626   exit (statfs (".", &fsd));
2627   }],
2628   fu_cv_sys_stat_statfs2_bsize=yes,
2629   fu_cv_sys_stat_statfs2_bsize=no,
2630   fu_cv_sys_stat_statfs2_bsize=no)])
2631   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
2632   if test $fu_cv_sys_stat_statfs2_bsize = yes; then
2633     space=yes
2634     AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
2635   fi
2636 fi
2637
2638 if test $space = no; then
2639 # SVR3
2640   AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
2641   AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
2642   [AC_TRY_RUN([#include <sys/types.h>
2643 #include <sys/statfs.h>
2644   main ()
2645   {
2646   struct statfs fsd;
2647   exit (statfs (".", &fsd, sizeof fsd, 0));
2648   }],
2649     fu_cv_sys_stat_statfs4=yes,
2650     fu_cv_sys_stat_statfs4=no,
2651     fu_cv_sys_stat_statfs4=no)])
2652   AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
2653   if test $fu_cv_sys_stat_statfs4 = yes; then
2654     space=yes
2655     AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
2656   fi
2657 fi
2658
2659 if test $space = no; then
2660 # 4.4BSD and NetBSD
2661   AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
2662 member (4.4BSD and NetBSD)])
2663   AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
2664   [AC_TRY_RUN([#include <sys/types.h>
2665 #ifdef HAVE_SYS_PARAM_H
2666 #include <sys/param.h>
2667 #endif
2668 #ifdef HAVE_SYS_MOUNT_H
2669 #include <sys/mount.h>
2670 #endif
2671   main ()
2672   {
2673   struct statfs fsd;
2674   fsd.f_fsize = 0;
2675   exit (statfs (".", &fsd));
2676   }],
2677   fu_cv_sys_stat_statfs2_fsize=yes,
2678   fu_cv_sys_stat_statfs2_fsize=no,
2679   fu_cv_sys_stat_statfs2_fsize=no)])
2680   AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
2681   if test $fu_cv_sys_stat_statfs2_fsize = yes; then
2682     space=yes
2683         AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
2684   fi
2685 fi
2686
2687 if test $space = no; then
2688   # Ultrix
2689   AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
2690   AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
2691   [AC_TRY_RUN([#include <sys/types.h>
2692 #ifdef HAVE_SYS_PARAM_H
2693 #include <sys/param.h>
2694 #endif
2695 #ifdef HAVE_SYS_MOUNT_H
2696 #include <sys/mount.h>
2697 #endif
2698 #ifdef HAVE_SYS_FS_TYPES_H
2699 #include <sys/fs_types.h>
2700 #endif
2701   main ()
2702   {
2703   struct fs_data fsd;
2704   /* Ultrix's statfs returns 1 for success,
2705      0 for not mounted, -1 for failure.  */
2706   exit (statfs (".", &fsd) != 1);
2707   }],
2708   fu_cv_sys_stat_fs_data=yes,
2709   fu_cv_sys_stat_fs_data=no,
2710   fu_cv_sys_stat_fs_data=no)])
2711   AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
2712   if test $fu_cv_sys_stat_fs_data = yes; then
2713     space=yes
2714     AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
2715   fi
2716 fi
2717
2718 #
2719 # As a gating factor for large file support, in order to
2720 # use <4GB files we must have the following minimal support
2721 # available.
2722 # long long, and a 64 bit off_t or off64_t.
2723 # If we don't have all of these then disable large
2724 # file support.
2725 #
2726 AC_MSG_CHECKING([if large file support can be enabled])
2727 AC_TRY_COMPILE([
2728 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
2729 #include <sys/types.h>
2730 #else
2731 __COMPILE_ERROR_
2732 #endif
2733 ],
2734 [int i],
2735 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
2736 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
2737         AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
2738 fi
2739 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
2740
2741 AC_ARG_WITH(spinlocks, 
2742 [  --with-spinlocks        Use spin locks instead of fcntl locks (default=no) ])
2743 if test "x$with_spinlocks" = "xyes"; then
2744     AC_DEFINE(USE_SPINLOCKS,1,[Whether to use spin locks instead of fcntl locks])
2745
2746     case "$host_cpu" in
2747         sparc)
2748             AC_DEFINE(SPARC_SPINLOCKS,1,[Whether to use sparc spinlocks])
2749             ;;
2750
2751         i386|i486|i586|i686)
2752             AC_DEFINE(INTEL_SPINLOCKS,1,[Whether to use intel spinlocks])
2753             ;;
2754
2755         mips)
2756             AC_DEFINE(MIPS_SPINLOCKS,1,[Whether to use mips spinlocks])
2757             ;;
2758
2759         powerpc)
2760             AC_DEFINE(POWERPC_SPINLOCKS,1,[Whether to use powerpc spinlocks])
2761             ;;
2762     esac
2763 fi
2764
2765 #################################################
2766 # check for ACL support
2767
2768 AC_MSG_CHECKING(whether to support ACLs)
2769 AC_ARG_WITH(acl-support,
2770 [  --with-acl-support      Include ACL support (default=no)],
2771 [ case "$withval" in
2772   yes)
2773
2774         case "$host_os" in
2775         *sysv5*)
2776                 AC_MSG_RESULT(Using UnixWare ACLs)
2777                 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
2778                 ;;
2779         *solaris*)
2780                 AC_MSG_RESULT(Using solaris ACLs)
2781                 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
2782                 ;;
2783         *hpux*)
2784                 AC_MSG_RESULT(Using HPUX ACLs)
2785                 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
2786                 ;;
2787         *irix*)
2788                 AC_MSG_RESULT(Using IRIX ACLs)
2789                 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
2790                 ;;
2791         *aix*)
2792                 AC_MSG_RESULT(Using AIX ACLs)
2793                 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
2794                 ;;
2795         *osf*)
2796                 AC_MSG_RESULT(Using Tru64 ACLs)
2797                 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
2798                 LIBS="$LIBS -lpacl"
2799                 ;;
2800         *)
2801                 AC_CHECK_LIB(acl,acl_get_file)
2802                 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
2803                 AC_TRY_LINK([#include <sys/types.h>
2804 #include <sys/acl.h>],
2805 [ acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);],
2806 samba_cv_HAVE_POSIX_ACLS=yes,samba_cv_HAVE_POSIX_ACLS=no)])
2807                         if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
2808                                 AC_MSG_RESULT(Using posix ACLs)
2809                                 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
2810                                 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
2811                                 AC_TRY_LINK([#include <sys/types.h>
2812 #include <sys/acl.h>],
2813 [ acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);],
2814 samba_cv_HAVE_ACL_GET_PERM_NP=yes,samba_cv_HAVE_ACL_GET_PERM_NP=no)])
2815                                 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
2816                                         AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
2817                                 fi
2818                         fi
2819             ;;
2820         esac
2821         ;;
2822   *)
2823     AC_MSG_RESULT(no)
2824     AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
2825     ;;
2826   esac ],
2827   AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
2828   AC_MSG_RESULT(no)
2829 )
2830
2831 #################################################
2832 # check for sendfile support
2833
2834 with_sendfile_support=yes
2835 AC_MSG_CHECKING(whether to check to support sendfile)
2836 AC_ARG_WITH(sendfile-support,
2837 [  --with-sendfile-support      Check for sendfile support (default=yes)],
2838 [ case "$withval" in
2839   yes)
2840
2841         AC_MSG_RESULT(yes);
2842
2843         case "$host_os" in
2844         *linux*)
2845                 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
2846                 AC_TRY_LINK([#include <sys/sendfile.h>],
2847 [\
2848 int tofd, fromfd;
2849 off64_t offset;
2850 size_t total;
2851 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
2852 ],
2853 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
2854
2855                 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
2856                 AC_TRY_LINK([#include <sys/sendfile.h>],
2857 [\
2858 int tofd, fromfd;
2859 off_t offset;
2860 size_t total;
2861 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
2862 ],
2863 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2864
2865 # Try and cope with broken Linux sendfile....
2866                 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
2867                 AC_TRY_LINK([\
2868 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
2869 #undef _FILE_OFFSET_BITS
2870 #endif
2871 #include <sys/sendfile.h>],
2872 [\
2873 int tofd, fromfd;
2874 off_t offset;
2875 size_t total;
2876 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
2877 ],
2878 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
2879
2880         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
2881                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
2882                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
2883                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
2884         elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2885                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
2886                 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
2887                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
2888         elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
2889                 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
2890                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
2891         else
2892                 AC_MSG_RESULT(no);
2893         fi
2894
2895         ;;
2896         *freebsd*)
2897                 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
2898                 AC_TRY_LINK([\
2899 #include <sys/types.h>
2900 #include <unistd.h>
2901 #include <sys/socket.h>
2902 #include <sys/uio.h>],
2903 [\
2904         int fromfd, tofd, ret, total=0;
2905         off_t offset, nwritten;
2906         struct sf_hdtr hdr;
2907         struct iovec hdtrl;
2908         hdr.headers = &hdtrl;
2909         hdr.hdr_cnt = 1;
2910         hdr.trailers = NULL;
2911         hdr.trl_cnt = 0;
2912         hdtrl.iov_base = NULL;
2913         hdtrl.iov_len = 0;
2914         ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
2915 ],
2916 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2917
2918         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2919                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
2920                 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
2921                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
2922         else
2923                 AC_MSG_RESULT(no);
2924         fi
2925         ;;
2926
2927         *hpux*)
2928                 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
2929                 AC_TRY_LINK([\
2930 #include <sys/socket.h>
2931 #include <sys/uio.h>],
2932 [\
2933         int fromfd, tofd;
2934         size_t total=0;
2935         struct iovec hdtrl[2];
2936         ssize_t nwritten;
2937         off64_t offset;
2938
2939         hdtrl[0].iov_base = 0;
2940         hdtrl[0].iov_len = 0;
2941
2942         nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
2943 ],
2944 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
2945         if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
2946                 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
2947                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
2948                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
2949         else
2950                 AC_MSG_RESULT(no);
2951         fi
2952
2953                 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
2954                 AC_TRY_LINK([\
2955 #include <sys/socket.h>
2956 #include <sys/uio.h>],
2957 [\
2958         int fromfd, tofd;
2959         size_t total=0;
2960         struct iovec hdtrl[2];
2961         ssize_t nwritten;
2962         off_t offset;
2963
2964         hdtrl[0].iov_base = 0;
2965         hdtrl[0].iov_len = 0;
2966
2967         nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
2968 ],
2969 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
2970         if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
2971                 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
2972                 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
2973                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
2974         else
2975                 AC_MSG_RESULT(no);
2976         fi
2977         ;;
2978
2979         *solaris*)
2980                 AC_CHECK_LIB(sendfile,sendfilev)
2981                 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
2982                 AC_TRY_LINK([\
2983 #include <sys/sendfile.h>],
2984 [\
2985         int sfvcnt;
2986         size_t xferred;
2987         struct sendfilevec vec[2];
2988         ssize_t nwritten;
2989         int tofd;
2990
2991         sfvcnt = 2;
2992
2993         vec[0].sfv_fd = SFV_FD_SELF;
2994         vec[0].sfv_flag = 0;
2995         vec[0].sfv_off = 0;
2996         vec[0].sfv_len = 0;
2997
2998         vec[1].sfv_fd = 0;
2999         vec[1].sfv_flag = 0;
3000         vec[1].sfv_off = 0;
3001         vec[1].sfv_len = 0;
3002         nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
3003 ],
3004 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
3005
3006         if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
3007                 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
3008                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
3009                 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
3010         else
3011                 AC_MSG_RESULT(no);
3012         fi
3013
3014                 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
3015                 AC_TRY_LINK([\
3016 #include <sys/sendfile.h>],
3017 [\
3018         int sfvcnt;
3019         size_t xferred;
3020         struct sendfilevec vec[2];
3021         ssize_t nwritten;
3022         int tofd;
3023
3024         sfvcnt = 2;
3025
3026         vec[0].sfv_fd = SFV_FD_SELF;
3027         vec[0].sfv_flag = 0;
3028         vec[0].sfv_off = 0;
3029         vec[0].sfv_len = 0;
3030
3031         vec[1].sfv_fd = 0;
3032         vec[1].sfv_flag = 0;
3033         vec[1].sfv_off = 0;
3034         vec[1].sfv_len = 0;
3035         nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
3036 ],
3037 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
3038
3039         if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
3040                 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
3041                 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
3042                 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
3043         else
3044                 AC_MSG_RESULT(no);
3045         fi
3046         ;;
3047
3048         *)
3049         ;;
3050         esac
3051         ;;
3052   *)
3053     AC_MSG_RESULT(no)
3054     ;;
3055   esac ],
3056   AC_MSG_RESULT(yes)
3057 )
3058
3059
3060 #################################################
3061 # Check whether winbind is supported on this platform.  If so we need to
3062 # build and install client programs, sbin programs and shared libraries
3063
3064 AC_MSG_CHECKING(whether to build winbind)
3065
3066 # Initially, the value of $host_os decides whether winbind is supported
3067
3068 case "$host_os" in
3069         *linux*|*irix*)
3070                 HAVE_WINBIND=yes
3071                 ;;
3072         *solaris*)
3073                 HAVE_WINBIND=yes
3074                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
3075                 WINBIND_NSS_EXTRA_LIBS="-lsocket"
3076                 ;;
3077         *hpux11*)
3078                 HAVE_WINBIND=yes
3079                 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
3080                 ;;
3081         *)
3082                 HAVE_WINBIND=no
3083                 winbind_no_reason=", unsupported on $host_os"
3084                 ;;
3085 esac
3086
3087 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
3088 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
3089
3090 # Check the setting of --with-winbindd
3091
3092 AC_ARG_WITH(winbind,
3093 [  --with-winbind          Build winbind (default, if supported by OS)],
3094
3095   case "$withval" in
3096         yes)
3097                 HAVE_WINBIND=yes
3098                 ;;
3099         no)
3100                 HAVE_WINBIND=no
3101                 winbind_reason=""
3102                 ;;
3103   esac ],
3104 )
3105
3106 # We need unix domain sockets for winbind
3107
3108 if test x"$HAVE_WINBIND" = x"yes"; then
3109         if test x"$samba_cv_unixsocket" = x"no"; then
3110                 winbind_no_reason=", no unix domain socket support on $host_os"
3111                 HAVE_WINBIND=no
3112         fi
3113 fi
3114
3115 # Display test results
3116
3117 if test x"$HAVE_WINBIND" = x"yes"; then
3118         AC_MSG_RESULT(yes)
3119         AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
3120
3121         EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
3122         EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
3123         if test x"$BLDSHARED" = x"true"; then
3124                 case "$host_os" in
3125                 *irix*)
3126                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/libns_winbind.so"
3127                         ;;
3128                 *)
3129                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/libnss_winbind.so"
3130                         ;;
3131                 esac
3132                 if test x"$with_pam" = x"yes"; then
3133                         SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.so"
3134                 fi
3135         fi
3136 else
3137         AC_MSG_RESULT(no$winbind_no_reason)
3138 fi
3139
3140 # Solaris has some extra fields in struct passwd that need to be
3141 # initialised otherwise nscd crashes.  Unfortunately autoconf < 2.50
3142 # doesn't have the AC_CHECK_MEMBER macro which would be handy for checking
3143 # this. 
3144
3145 #AC_CHECK_MEMBER(struct passwd.pw_comment,
3146 #               AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),
3147 #               [#include <pwd.h>])
3148
3149 AC_CACHE_CHECK([whether struct passwd has pw_comment],samba_cv_passwd_pw_comment, [
3150     AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_comment;],
3151         samba_cv_passwd_pw_comment=yes,samba_cv_passwd_pw_comment=no)])
3152 if test x"$samba_cv_passwd_pw_comment" = x"yes"; then
3153    AC_DEFINE(HAVE_PASSWD_PW_COMMENT,1,[Whether struct passwd has pw_comment])
3154 fi
3155
3156 #AC_CHECK_MEMBER(struct passwd.pw_age,
3157 #               AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),
3158 #               [#include <pwd.h>])
3159
3160 AC_CACHE_CHECK([whether struct passwd has pw_age],samba_cv_passwd_pw_age, [
3161     AC_TRY_COMPILE([#include <pwd.h>],[struct passwd p; p.pw_age;],
3162         samba_cv_passwd_pw_age=yes,samba_cv_passwd_pw_age=no)])
3163 if test x"$samba_cv_passwd_pw_age" = x"yes"; then
3164    AC_DEFINE(HAVE_PASSWD_PW_AGE,1,[Whether struct passwd has pw_age])
3165 fi
3166
3167 #################################################
3168 # Check to see if we should use the included popt 
3169
3170 AC_ARG_WITH(included-popt,
3171 [  --with-included-popt    use bundled popt library, not from system],
3172
3173   case "$withval" in
3174         yes)
3175                 INCLUDED_POPT=yes
3176                 ;;
3177         no)
3178                 INCLUDED_POPT=no
3179                 ;;
3180   esac ],
3181 )
3182 if test x"$INCLUDED_POPT" != x"yes"; then
3183     AC_CHECK_LIB(popt, poptGetContext,
3184                  INCLUDED_POPT=no, INCLUDED_POPT=yes)
3185 fi
3186
3187 AC_MSG_CHECKING(whether to use included popt)
3188 if test x"$INCLUDED_POPT" = x"yes"; then
3189     AC_MSG_RESULT(yes)
3190     BUILD_POPT='$(POPT_OBJS)'
3191     FLAGS1="-I$srcdir/popt"
3192 else
3193     AC_MSG_RESULT(no)
3194     LIBS="$LIBS -lpopt"
3195 fi
3196 AC_SUBST(BUILD_POPT)
3197 AC_SUBST(FLAGS1)
3198
3199 #################################################
3200 # Check if the user wants Python
3201
3202 # At the moment, you can use this to set which Python binary to link
3203 # against.  (Libraries built for Python2.2 can't be used by 2.1,
3204 # though they can coexist in different directories.)  In the future
3205 # this might make the Python stuff be built by default.
3206
3207 # Defaulting python breaks the clean target if python isn't installed
3208
3209 PYTHON=
3210
3211 AC_ARG_WITH(python,
3212 [  --with-python=PYTHONNAME  build Python libraries],
3213 [ case "${withval-python}" in
3214   yes)
3215         PYTHON=python
3216         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
3217         ;;
3218   no)
3219         PYTHON=
3220         ;;
3221   *)
3222         PYTHON=${withval-python}
3223         ;;
3224   esac ])
3225 AC_SUBST(PYTHON)
3226
3227 #################################################
3228 # do extra things if we are running insure
3229
3230 if test "${ac_cv_prog_CC}" = "insure"; then
3231         CPPFLAGS="$CPPFLAGS -D__INSURE__"
3232 fi
3233
3234 #################################################
3235 # final configure stuff
3236
3237 AC_MSG_CHECKING([configure summary])
3238 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
3239            AC_MSG_RESULT(yes),
3240            AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
3241            AC_MSG_WARN([cannot run when cross-compiling]))
3242
3243 builddir=`pwd`
3244 AC_SUBST(builddir)
3245
3246 AC_OUTPUT(include/stamp-h Makefile script/findsmb)
3247
3248 #################################################
3249 # Print very concise instructions on building/use
3250 if test "x$enable_dmalloc" = xyes
3251 then
3252         AC_MSG_RESULT([Note: The dmalloc debug library will be included.  To turn it on use])
3253         AC_MSG_RESULT([      \$ eval \`dmalloc samba\`.])
3254 fi