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