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