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