40e78e89d93c6448cefacc720f88fa9932ae5d4c
[ira/wip.git] / source3 / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2
3 dnl We must use autotools 2.54 or above
4 AC_PREREQ(2.54)
5
6 AC_INIT([Samba],[3],[samba-technical@samba.org])
7
8 AC_CONFIG_SRCDIR([include/includes.h])
9 AC_CONFIG_HEADER(include/config.h)
10 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
11
12 case "$PATH" in
13     */usr/ucb*)
14         AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
15         ;;
16 esac 
17
18 builddir=`pwd`
19 AC_SUBST(builddir)
20
21 m4_include(m4/samba_version.m4)
22 m4_include(m4/check_path.m4)
23
24 AC_LIBREPLACE_CC_CHECKS
25
26 m4_include(../lib/talloc/libtalloc.m4)
27
28 LIBTALLOC_OBJ0=""
29 for obj in ${TALLOC_OBJ}; do
30         LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
31 done
32 AC_SUBST(LIBTALLOC_OBJ0)
33
34 # TODO: These should come from m4_include(lib/tdb/libtdb.m4)
35 # but currently this fails: things have to get merged from s4.
36 tdbdir="../lib/tdb"
37 AC_SUBST(tdbdir)
38 TDB_CFLAGS="-I${srcdir-.}/$tdbdir/include"
39 AC_SUBST(TDB_CFLAGS)
40
41 LIBTDB_OBJ0=""
42 for o in common/tdb.o common/dump.o common/transaction.o common/error.o \
43              common/traverse.o common/freelist.o common/freelistcheck.o \
44                  common/io.o common/lock.o common/open.o; 
45 do 
46         LIBTDB_OBJ0="$LIBTDB_OBJ0 $tdbdir/$o"
47 done
48
49 AC_SUBST(LIBTDB_OBJ0)
50 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include  -I. -I${srcdir-.}"
51 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace"
52 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
53 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
54 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
55 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
56
57 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt"
58
59 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
60 if test "x${srcdir-.}" != "x."; then
61         SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
62 fi
63
64 dnl Unique-to-Samba variables we'll be playing with.
65 AC_SUBST(SAMBA_CPPFLAGS)
66 AC_SUBST(SHELL)
67 AC_SUBST(LDSHFLAGS)
68 AC_SUBST(SONAMEFLAG)
69 AC_SUBST(SHLD)
70 AC_SUBST(MODULE_EXPORTS)
71 AC_SUBST(DSO_EXPORTS)
72 AC_SUBST(HOST_OS)
73 AC_SUBST(PICFLAG)
74 AC_SUBST(PIE_CFLAGS)
75 AC_SUBST(PIE_LDFLAGS)
76 AC_SUBST(RELRO_LDFLAGS)
77 AC_SUBST(SHLIBEXT)
78 AC_SUBST(INSTALLLIBCMD_SH)
79 AC_SUBST(INSTALLLIBCMD_A)
80 AC_SUBST(UNINSTALLLIBCMD_SH)
81 AC_SUBST(UNINSTALLLIBCMD_A)
82
83 AC_SUBST(INSTALL_LIBWBCLIENT)
84 AC_SUBST(UNINSTALL_LIBWBCLIENT)
85 AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
86 AC_SUBST(LIBWBCLIENT_SHARED)
87 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
88 AC_SUBST(LIBWBCLIENT_STATIC)
89 AC_SUBST(LIBWBCLIENT_SOVER)
90 AC_SUBST(LIBWBCLIENT)
91 AC_SUBST(WINBIND_LIBS)
92
93 AC_SUBST(LIBSAMBAUTIL_SHARED)
94
95 AC_SUBST(PRINT_LIBS)
96 AC_SUBST(AUTH_LIBS)
97 AC_SUBST(ACL_LIBS)
98 AC_SUBST(PASSDB_LIBS)
99 AC_SUBST(IDMAP_LIBS)
100 AC_SUBST(KRB5_LIBS)
101 AC_SUBST(UUID_LIBS)
102 AC_SUBST(LDAP_LIBS)
103 AC_SUBST(GPEXT_LIBS)
104 AC_SUBST(PAM_MODULES)
105 AC_SUBST(INSTALL_PAM_MODULES)
106 AC_SUBST(UNINSTALL_PAM_MODULES)
107 AC_SUBST(NSS_MODULES)
108 AC_SUBST(EXTRA_BIN_PROGS)
109 AC_SUBST(CIFSMOUNT_PROGS)
110 AC_SUBST(INSTALL_CIFSMOUNT)
111 AC_SUBST(UNINSTALL_CIFSMOUNT)
112 AC_SUBST(CIFSUPCALL_PROGS)
113 AC_SUBST(INSTALL_CIFSUPCALL)
114 AC_SUBST(UNINSTALL_CIFSUPCALL)
115 AC_SUBST(EXTRA_SBIN_PROGS)
116 AC_SUBST(EXTRA_ALL_TARGETS)
117 AC_SUBST(CONFIG_LIBS)
118 AC_SUBST(NSCD_LIBS)
119
120 # compile with optimization and without debugging by default, but
121 # allow people to set their own preference.
122 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
123 # if it has no value.  This prevent *very* large debug binaries from occurring
124 # by default.
125 if test "x$CFLAGS" = x; then
126   CFLAGS="-O"
127 fi
128 if test "x$debug" = "xyes" ; then
129         CFLAGS="${CFLAGS} -g"
130 else
131         CFLAGS="${CFLAGS} -O"
132 fi
133
134 m4_include(../lib/socket_wrapper/config.m4)
135 m4_include(../lib/nss_wrapper/config.m4)
136
137 m4_include(m4/swat.m4)
138
139 # Probe the gcc version for extra CFLAGS. We always stash these in
140 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
141 # Makefile edit, avoiding the need to re-run configure.
142 if test x"$ac_cv_prog_gcc" = x"yes" ; then
143         DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
144         # Add -Wdeclaration-after-statement if compiler supports it
145         AC_CACHE_CHECK(
146           [that the C compiler understands -Wdeclaration-after-statement],
147           samba_cv_HAVE_Wdeclaration_after_statement, [
148           AC_TRY_RUN_STRICT([
149             int main(void)
150             {
151                 return 0;
152             }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
153             samba_cv_HAVE_Wdeclaration_after_statement=yes,
154             samba_cv_HAVE_Wdeclaration_after_statement=no,
155             samba_cv_HAVE_Wdeclaration_after_statement=cross)
156        ])
157
158         if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
159             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
160         fi
161
162         #-Werror-implicit-function-declaration
163         AC_CACHE_CHECK(
164           [that the C compiler understands -Werror-implicit-function-declaration],
165           samba_cv_HAVE_Werror_implicit_function_declaration, [
166           AC_TRY_RUN_STRICT([
167             int main(void)
168             {
169                 return 0;
170             }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
171             samba_cv_HAVE_Werror_implicit_function_declaration=yes,
172             samba_cv_HAVE_Werror_implicit_function_declaration=no,
173             samba_cv_HAVE_Werror_implicit_function_declaration=cross)
174        ])
175        if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
176             DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
177        fi
178
179         # krb5developer is like developer, except we don't get
180         # -Wstrict-prototypes.
181        if test x"$krb5_developer" != x"$yes" ; then
182             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
183        fi
184
185        if test x"$picky_developer" = x"yes"; then
186             DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
187        fi
188 fi
189
190 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
191
192 if test "x$enable_dmalloc" = xyes
193 then
194         AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
195         AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
196                   [Define to check invariants around some common functions])
197         LIBS="$LIBS -ldmalloc"  
198 fi
199
200 #################################################
201 # check for a shared memory profiling support
202 AC_MSG_CHECKING(whether to use profiling)
203 AC_ARG_WITH(profiling-data,
204 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
205 [ case "$withval" in
206   yes)
207     AC_MSG_RESULT(yes)
208     AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
209     samba_cv_WITH_PROFILE=yes
210     ;;
211   *)
212     AC_MSG_RESULT(no)
213     samba_cv_WITH_PROFILE=no
214     ;;
215   esac ],
216   AC_MSG_RESULT(no)
217 )
218
219 dnl Checks for programs.
220
221 AC_PROG_INSTALL
222 AC_PROG_AWK
223 AC_PATH_PROG(PERL, perl)
224
225 AC_CHECK_TOOL(AR, ar)
226
227 dnl Check if we use GNU ld
228 LD=ld
229 AC_PROG_LD_GNU
230
231 dnl Certain versions of GNU ld the default is not to have the
232 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
233 dnl warnings when building modules.
234 if test "$ac_cv_prog_gnu_ld" = "yes"; then
235         ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
236         AC_MSG_CHECKING(GNU ld release date)
237         changequote(,)dnl
238         ac_cv_gnu_ld_date=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'`
239         changequote([,])dnl
240         AC_MSG_RESULT(${ac_cv_gnu_ld_date})
241         if test -n "$ac_cv_gnu_ld_date"; then
242         if test "$ac_cv_gnu_ld_date" -lt 20030217; then
243                 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
244         fi
245         if test "$ac_cv_gnu_ld_date" -gt 20030101; then
246                 ac_cv_gnu_ld_version_script=yes
247         fi
248         else
249            AC_MSG_CHECKING(GNU ld release version)
250            changequote(,)dnl
251            ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
252            ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
253            ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
254            changequote([,])dnl
255            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
256            AC_MSG_CHECKING(GNU ld release version major)
257            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
258            AC_MSG_CHECKING(GNU ld release version minor)
259            AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
260            if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
261              ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
262            fi
263            if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_ld_vernr_major"=2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then
264              ac_cv_gnu_ld_version_script=yes
265            fi
266         fi
267 fi
268
269 dnl look for executable suffix
270 AC_EXEEXT
271
272 dnl Check if C compiler understands -c and -o at the same time
273 AC_PROG_CC_C_O
274 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
275       BROKEN_CC=
276 else
277       BROKEN_CC=#
278 fi
279 AC_SUBST(BROKEN_CC)
280
281 dnl Check if the C compiler understands -Werror
282 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
283  AC_TRY_RUN_STRICT([
284   int main(void)
285   {
286         return 0;
287   }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
288   samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
289 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
290    Werror_FLAGS="-Werror"
291 else
292 dnl Check if the C compiler understands -w2
293 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
294  AC_TRY_RUN_STRICT([
295   int main(void)
296   {
297         return 0;
298   }],[-w2],[$CPPFLAGS],[$LDFLAGS],
299   samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
300 if test x"$samba_cv_HAVE_w2" = x"yes"; then
301    Werror_FLAGS="-w2"
302 else
303 dnl Check if the C compiler understands -errwarn
304 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
305   AC_TRY_RUN_STRICT([
306    int main(void)
307    {
308         return 0;
309    }],[-errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
310    samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
311 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
312    Werror_FLAGS="-errwarn=%all"
313 fi
314 fi
315 fi
316
317 ############################################
318 # check if the compiler can handle negative enum values
319 # and don't truncate the values to INT_MAX
320 # a runtime test is needed here
321 AC_SUBST(PIDL_ARGS)
322 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
323     AC_TRY_RUN(
324 [
325         #include <stdio.h>
326         enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
327         int main(void) {
328                 enum negative_values v1 = NEGATIVE_VALUE;
329                 unsigned v2 = NEGATIVE_VALUE;
330
331                 if (v1 != 0xFFFFFFFF) {
332                         printf("%u != 0xFFFFFFFF\n", v1);
333                         return 1;
334                 }
335                 if (v2 != 0xFFFFFFFF) {
336                         printf("%u != 0xFFFFFFFF\n", v2);
337                         return 1;
338                 }
339
340                 return 0;
341         }
342 ],
343         samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv__CC_NEGATIVE_ENUM_VALUES=no)])
344 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
345         AC_MSG_WARN([using --uint-enums for pidl])
346         PIDL_ARGS="$PIDL_ARGS --uint-enums"
347 fi
348
349 dnl Figure out the flags to support named structure initializers
350
351 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
352
353 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
354 AC_MSG_CHECKING(uname -s)
355 AC_MSG_RESULT(${UNAME_S})
356
357 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
358 AC_MSG_CHECKING(uname -r)
359 AC_MSG_RESULT(${UNAME_R})
360
361 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
362 AC_MSG_CHECKING(uname -m)
363 AC_MSG_RESULT(${UNAME_M})
364
365 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
366 AC_MSG_CHECKING(uname -p)
367 AC_MSG_RESULT(${UNAME_P})
368
369 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
370 AC_MSG_CHECKING(uname -i)
371 AC_MSG_RESULT(${UNAME_I})
372
373 dnl Add #include for broken IRIX header files
374   case "$host_os" in
375         *irix6*)
376                 #TODO add to libreplace
377                 if test x"$ac_cv_prog_gcc" != x"yes" ; then
378                         dnl Fix sensible defaults for MIPSPro compilers. The
379                         dnl error numbers are valid for the 7.3 compilers,
380                         dnl hopefully also valid for the 7.4 series.
381                         dnl
382                         dnl Bugzilla 3801. Force an error on warning 1035
383                         dnl so we don't incorrectly detect stdint.h. This
384                         dnl warning is emitted for #error directives.
385                         CFLAGS="$CFLAGS -diag_error 1035"
386                         dnl 1209: Controlling expression is constant
387                         dnl 1174: Function foo declared but never referenced
388                         dnl 3201: Parameter foo was never referenced
389                         CFLAGS="$CFLAGS -woff 1209,1174,3201"
390                 fi
391         ;;
392 esac
393
394 DYNEXP=
395 AC_SUBST(DYNEXP)
396
397 dnl Add modules that have to be built by default here
398 dnl These have to be built static:
399 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsarpc rpc_samr rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl2 rpc_ntsvcs2 rpc_netlogon rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog2 auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin auth_netlogond vfs_default nss_info_template"
400
401 dnl These are preferably build shared, and static if dlopen() is not available
402 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_xattr_tdb vfs_streams_xattr vfs_streams_depot vfs_acl_xattr vfs_acl_tdb vfs_smb_traffic_analyzer"
403
404 if test "x$developer" = xyes; then
405    default_static_modules="$default_static_modules rpc_rpcecho"
406    default_shared_modules="$default_shared_modules charset_weird"
407 fi
408
409 #
410 # Config CPPFLAG settings for strange OS's that must be set
411 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
412 # case statement; its first reference must be unconditional.
413 #
414 case "$host_os" in
415     *hpux*)
416 #
417 # Defines needed for HPUX support.
418 # HPUX has bigcrypt but (sometimes?) doesn't use it for
419 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
420 #
421       case `uname -r` in
422                 *9*|*10*|*11)
423                         AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
424                 ;;
425       esac
426       ;;
427
428 #
429 # CRAY Unicos has broken const handling
430        *unicos*)
431           AC_MSG_RESULT([disabling const])
432           CPPFLAGS="$CPPFLAGS -Dconst="
433           ;;
434         
435 #
436 # AIX4.x doesn't even admit to having large
437 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
438 #
439     *aix4*)
440           AC_MSG_RESULT([enabling large file support])
441       CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
442           AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
443       ;;
444 #
445 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
446 # to the existance of large files..
447 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
448 # recommendations on large file support, however it makes the
449 # compile work using gcc 2.7 and 2.8, whereas using the Sun
450 # recommendation makes the compile fail on gcc2.7. JRA.
451 #
452 # Solaris uses SYSV printing.  Make sure to set that here.  --jerry
453 #
454         *solaris*)
455                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
456                 case `uname -r` in
457                         5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
458                                 AC_MSG_RESULT([no large file support])
459                                 ;;
460                         5.*)
461                         AC_MSG_RESULT([enabling large file support])
462                         if test "$ac_cv_prog_gcc" = yes; then
463                                 ${CC-cc} -v >conftest.c 2>&1
464                                 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
465                                 rm -fr conftest.c
466                                 case "$ac_cv_gcc_compiler_version_number" in
467                                         *"gcc version 2.6"*|*"gcc version 2.7"*)
468                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
469                                                 LDFLAGS="$LDFLAGS -lthread"
470                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
471                                                 ;;
472                                         *)
473                                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
474                                                 LDFLAGS="$LDFLAGS -lthread"
475                                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
476                                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
477                                                 ;;
478                                 esac
479                         else
480                                 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
481                                 LDFLAGS="$LDFLAGS -lthread"
482                                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
483                                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
484                         fi
485                         ;;
486                 esac
487                 ;;
488 #
489 # IRIX uses SYSV printing.  Make sure to set that here
490 #
491         *irix*)
492                 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
493                 ;;
494         *freebsd*|*dragonfly*)
495                 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
496                 ;;
497 #
498 # VOS may need to have POSIX support and System V compatibility enabled.
499 #
500     *vos*)
501     case "$CPPFLAGS" in
502           *-D_POSIX_C_SOURCE*)
503                 ;;
504           *)
505                 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
506                 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
507                 ;;
508     esac
509     case "$CPPFLAGS" in
510           *-D_SYSV*|*-D_SVID_SOURCE*)
511                 ;;
512           *)
513                 CPPFLAGS="$CPPFLAGS -D_SYSV"
514                 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
515     esac
516     ;;
517 #
518 # Tests needed for SINIX large file support.
519 #
520     *sysv4*)
521       if test $host = mips-sni-sysv4 ; then
522         AC_MSG_CHECKING([for LFS support])
523         old_CPPFLAGS="$CPPFLAGS"
524         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
525         AC_TRY_RUN([
526 #include <unistd.h>
527 main () {
528 #if _LFS64_LARGEFILE == 1
529 exit(0);
530 #else
531 exit(1);
532 #endif
533 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
534         CPPFLAGS="$old_CPPFLAGS"
535         if test x$SINIX_LFS_SUPPORT = xyes ; then
536           CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
537                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
538           CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
539           LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
540           LIBS="`getconf LFS64_LIBS` $LIBS"
541         fi
542       AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
543       fi
544     ;;
545
546 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
547 #
548     *linux*)
549         AC_MSG_CHECKING([for LFS support])
550         old_CPPFLAGS="$CPPFLAGS"
551         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
552        AC_TRY_RUN([
553 #include <unistd.h>
554 #include <sys/utsname.h>
555 #include <string.h>
556 #include <stdlib.h>
557 main() {
558 #if _LFS64_LARGEFILE == 1
559        struct utsname uts;
560        char *release;
561        int major, minor;
562
563        /* Ensure this is glibc 2.2 or higher */
564 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
565        int libc_major = __GLIBC__;
566        int libc_minor = __GLIBC_MINOR__;
567
568        if (libc_major < 2)
569               exit(1);
570        if (libc_minor < 2)
571               exit(1);
572 #endif
573
574        /* Ensure this is kernel 2.4 or higher */
575
576        uname(&uts);
577        release = strdup(uts.release);
578        major = atoi(strsep(&release, "."));
579        minor = atoi(strsep(&release, "."));
580
581        if (major > 2 || (major == 2 && minor > 3))
582                exit(0);
583        exit(1);
584 #else
585        exit(1);
586 #endif
587 }
588 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
589         CPPFLAGS="$old_CPPFLAGS"
590         if test x$LINUX_LFS_SUPPORT = xyes ; then
591                 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
592                 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
593                 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
594                 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
595         fi
596         AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
597         ;;
598
599 #
600 # MacOS X is the *only* system that uses compose character in utf8. This
601 # is so horribly broken....
602 #
603     *darwin*)
604         AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
605
606 # Add a system specific charset module.
607         default_shared_modules="$default_shared_modules charset_macosxfs"
608
609         ;;
610     *hurd*)
611         AC_MSG_CHECKING([for LFS support])
612         old_CPPFLAGS="$CPPFLAGS"
613         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
614         AC_TRY_RUN([
615 #include <unistd.h>
616 main () {
617 #if _LFS64_LARGEFILE == 1
618 exit(0);
619 #else
620 exit(1);
621 #endif
622 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
623         CPPFLAGS="$old_CPPFLAGS"
624         if test x$GLIBC_LFS_SUPPORT = xyes ; then
625           CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
626                   AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
627           AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
628         fi
629       AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
630     ;;
631
632 esac
633
634 SAVE_CPPFLAGS="${CPPFLAGS}"
635 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
636
637 AC_LIBREPLACE_BROKEN_CHECKS
638 AC_LIBREPLACE_NETWORK_CHECKS
639
640 CPPFLAGS="${SAVE_CPPFLAGS}"
641
642 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
643
644 LIBREPLACE_OBJS=""
645 for obj in ${LIBREPLACEOBJ}; do
646         LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
647 done
648 AC_SUBST(LIBREPLACE_OBJS)
649
650 # add -ldl to the global LIBS
651 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
652 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
653
654
655 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
656 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
657 AC_CHECK_HEADERS(limits.h float.h pthread.h libintl.h)
658 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
659 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
660 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
661 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
662 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
663 AC_CHECK_HEADERS(sys/sysmacros.h)
664 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
665 AC_CHECK_HEADERS(langinfo.h locale.h)
666 AC_CHECK_HEADERS(xfs/libxfs.h)
667 AC_CHECK_HEADERS(netgroup.h)
668
669 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
670 #if HAVE_RPC_RPC_H
671 #include <rpc/rpc.h>
672 #endif
673 ]])
674
675 ## These fail to compile on IRIX so just check for their presence
676 AC_CHECK_HEADERS(sys/mode.h,,,)
677
678 # Look for Darwin headers
679 old_CPPFLAGS="$CPPFLAGS"
680 CPPFLAGS="-Iinclude $CPPFLAGS"
681 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
682 CPPFLAGS="$old_CPPFLAGS"
683
684 # In valgrind 1.0.x, it's just valgrind.h.  In 1.9.x+ there's a
685 # subdirectory of headers.
686 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
687
688 # check for linux on amd64 since valgrind is not quite there yet
689 case "$host_os" in
690         *linux*)
691                 case "$UNAME_P" in
692                         *x86_64*)
693                                 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
694                                 ;;
695                 esac
696                 ;;
697 esac
698
699
700 #
701 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
702 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
703 #
704 case "$host_os" in
705     *hpux*)
706                 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
707                         ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
708                 if test x"$ac_cv_header_shadow_h" = x"yes"; then
709                    AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
710                 fi
711         ;;
712 esac
713 AC_CHECK_HEADERS(shadow.h)
714 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
715 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
716
717 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
718 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
719
720 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
721
722 # For experimental utmp support (lastlog on some BSD-like systems)
723 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
724
725 AC_CHECK_SIZEOF(int,cross)
726 AC_CHECK_SIZEOF(long,cross)
727 AC_CHECK_SIZEOF(long long,cross)
728 AC_CHECK_SIZEOF(short,cross)
729
730 AC_C_CONST
731 AC_C_INLINE
732 AC_C_BIGENDIAN
733 AC_C_CHAR_UNSIGNED
734
735 AC_TYPE_SIGNAL
736 AC_TYPE_UID_T
737 AC_TYPE_MODE_T
738 AC_TYPE_OFF_T
739 AC_TYPE_SIZE_T
740 AC_TYPE_PID_T
741 AC_STRUCT_ST_RDEV
742 AC_DIRENT_D_OFF
743 AC_CHECK_TYPE(ssize_t, int)
744 AC_CHECK_TYPE(wchar_t, unsigned short)
745
746 ############################################
747 # for cups support we need libcups, and a handful of header files
748
749 AC_ARG_ENABLE(cups,
750 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
751
752 if test x$enable_cups != xno; then
753         AC_PATH_PROG(CUPS_CONFIG, cups-config)
754
755         if test "x$CUPS_CONFIG" != x; then
756
757                 ac_save_CFLAGS=$CFLAGS
758                 ac_save_LDFLAGS=$LDFLAGS
759                 ac_save_PRINT_LIBS=$PRINT_LIBS
760                 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
761                 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
762                 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
763                 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
764                 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
765                         x"$ac_cv_header_cups_language_h" = xyes; then
766                         AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
767                         samba_cv_HAVE_CUPS=yes
768                 else
769                         AC_MSG_WARN([cups-config around but cups-devel not installed])
770                         CFLAGS=$ac_save_CFLAGS
771                         LDFLAGS=$ac_save_LDFLAGS
772                         PRINT_LIBS=$ac_save_PRINT_LIBS
773                 fi
774
775         elif test x"$enable_cups" = x"yes"; then
776                 AC_MSG_ERROR(Cups support required but cups-config not located.  Make sure cups-devel related files are installed.)
777         fi
778 fi
779
780 AC_ARG_ENABLE(iprint,
781 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
782
783 if test x$enable_iprint != xno; then
784         if test x"$samba_cv_HAVE_CUPS" = xyes; then
785                 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
786         elif test x"$enable_iprint" = x"yes"; then
787                 AC_MSG_ERROR(iPrint support required but cups not enabled.  Make sure cups-devel related files are installed and that cups is enabled.)
788         fi
789 fi
790
791 ############################################
792 # check if the compiler will optimize out function calls
793 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
794     AC_TRY_LINK([
795 #include <stdio.h>],
796 [
797                 if (0) {
798                    this_function_does_not_exist();
799                 } else {
800                   return 1;
801                 }
802
803 ],
804         samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
805 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
806    AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
807 fi
808
809 #############################################
810 # check for fd passing struct via msg_control
811 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
812     AC_TRY_COMPILE([
813 #include <sys/types.h>
814 #include <stdlib.h>
815 #include <stddef.h>
816 #include <sys/socket.h>
817 #include <sys/un.h>],
818 [
819         struct msghdr msg;
820         union {
821               struct cmsghdr cm;
822               char control[CMSG_SPACE(sizeof(int))];
823         } control_un;
824         msg.msg_control = control_un.control;
825         msg.msg_controllen = sizeof(control_un.control);
826 ],
827         samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
828 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
829    AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
830              [If we can use msg_control for passing file descriptors])
831 fi
832
833 #############################################
834 # check for fd passing struct via msg_acctrights
835 AC_CACHE_CHECK([for fd passing via msg_acctrights],
836                 samba_cv_msghdr_msg_acctrights, [
837     AC_TRY_COMPILE([
838 #include <sys/types.h>
839 #include <stdlib.h>
840 #include <stddef.h>
841 #include <sys/socket.h>
842 #include <sys/un.h>],
843 [
844         struct msghdr msg;
845         int fd;
846         msg.msg_acctrights = (caddr_t) &fd;
847         msg.msg_acctrightslen = sizeof(fd);
848 ],
849         samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
850 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
851    AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
852              [If we can use msg_acctrights for passing file descriptors])
853 fi
854
855 AC_CHECK_FUNCS(dirfd)
856 if test x"$ac_cv_func_dirfd" = x"yes"; then
857         default_shared_modules="$default_shared_modules vfs_syncops"
858 fi
859
860 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
861     AC_TRY_COMPILE([
862 #include <sys/types.h>
863 #if STDC_HEADERS
864 #include <stdlib.h>
865 #include <stddef.h>
866 #endif
867 #include <signal.h>],[struct sigevent s;],
868         samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
869 if test x"$samba_cv_struct_sigevent" = x"yes"; then
870    AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
871    AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
872         [#include <signal.h>])
873 fi
874
875 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
876     AC_TRY_COMPILE([
877 #include <sys/types.h>
878 #if STDC_HEADERS
879 #include <stdlib.h>
880 #include <stddef.h>
881 #endif
882 #if TIME_WITH_SYS_TIME
883 # include <sys/time.h>
884 # include <time.h>
885 #else
886 # if HAVE_SYS_TIME_H
887 #  include <sys/time.h>
888 # else
889 #  include <time.h>
890 # endif
891 #endif
892 ],[struct timespec ts;],
893         samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
894 if test x"$samba_cv_struct_timespec" = x"yes"; then
895    AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
896 fi
897
898 # and glibc has setresuid under linux but the function does
899 # nothing until kernel 2.1.44! very dumb.
900 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
901     AC_TRY_RUN([#include <errno.h>
902 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
903         samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
904 if test x"$samba_cv_have_setresuid" = x"yes"; then
905     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
906 fi
907
908 # Do the same check for setresguid...
909 #
910 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
911     AC_TRY_RUN([#include <unistd.h>
912 #include <errno.h>
913 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
914         samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
915 if test x"$samba_cv_have_setresgid" = x"yes"; then
916     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
917 fi
918
919 AC_FUNC_MEMCMP
920
921 ###############################################
922 # Readline included by default unless explicitly asked not to
923 test "${with_readline+set}" != "set" && with_readline=yes
924
925 # test for where we get readline() from
926 AC_MSG_CHECKING(whether to use readline)
927 AC_ARG_WITH(readline,
928 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
929 [  case "$with_readline" in
930   yes)
931     AC_MSG_RESULT(yes)
932
933     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
934     AC_CHECK_HEADERS(readline/history.h)
935
936     AC_CHECK_HEADERS(readline.h readline/readline.h,[
937       for termlib in ncurses curses termcap terminfo termlib tinfo; do
938        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
939       done
940       AC_CHECK_LIB(readline, rl_callback_handler_install,
941        [TERMLIBS="-lreadline $TERMLIBS"
942        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
943        break], [TERMLIBS=], $TERMLIBS)])
944     ;;
945   no)
946     AC_MSG_RESULT(no)
947     ;;
948   *)
949     AC_MSG_RESULT(yes)
950
951     # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
952     # alternate readline path
953     _ldflags=${LDFLAGS}
954     _cppflags=${CPPFLAGS}
955
956     # Add additional search path
957     LDFLAGS="-L$with_readline/lib $LDFLAGS"
958     CPPFLAGS="-I$with_readline/include $CPPFLAGS"
959
960     AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
961     AC_CHECK_HEADERS(readline/history.h)
962
963     AC_CHECK_HEADERS(readline.h readline/readline.h,[
964       for termlib in ncurses curses termcap terminfo termlib; do
965        AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
966       done
967       AC_CHECK_LIB(readline, rl_callback_handler_install,
968        [TERMLDFLAGS="-L$with_readline/lib"
969        TERMCPPFLAGS="-I$with_readline/include"
970        CPPFLAGS="-I$with_readline/include $CPPFLAGS"
971        TERMLIBS="-lreadline $TERMLIBS"
972        AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
973        break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
974
975     LDFLAGS=$_ldflags
976     ;;
977   esac],
978   AC_MSG_RESULT(no)
979 )
980 AC_SUBST(TERMLIBS)
981 AC_SUBST(TERMLDFLAGS)
982
983 # The readline API changed slightly from readline3 to readline4, so
984 # code will generate warnings on one of them unless we have a few
985 # special cases.
986 AC_CHECK_LIB(readline, rl_completion_matches,
987              [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
988                         [Do we have rl_completion_matches?])],
989              [],
990              [$TERMLIBS])
991
992 # not all readline libs have rl_event_hook or history_list
993 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
994 AC_CHECK_LIB(readline, history_list,
995              [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
996              [],
997              [$TERMLIBS])
998
999 ###############################################
1000 # test for where we get yp_get_default_domain() from
1001 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1002 AC_CHECK_FUNCS(yp_get_default_domain)
1003
1004 # Check if we have execl, if not we need to compile smbrun.
1005 AC_CHECK_FUNCS(execl)
1006 if test x"$ac_cv_func_execl" = x"no"; then
1007     EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1008 fi
1009
1010 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
1011 AC_CHECK_FUNCS(strtol)
1012 AC_CHECK_FUNCS(fstat strchr chflags)
1013 AC_CHECK_FUNCS(getrlimit fsync fdatasync setpgid)
1014 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
1015 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1016 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
1017 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
1018 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64)
1019 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
1020 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1021 AC_CHECK_FUNCS(getpwent_r)
1022 AC_CHECK_FUNCS(getdents64)
1023 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
1024 AC_CHECK_FUNCS(syslog vsyslog timegm)
1025 AC_CHECK_FUNCS(setlocale nl_langinfo)
1026 AC_CHECK_FUNCS(nanosleep)
1027 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1028 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1029 AC_CHECK_HEADERS(sys/mman.h)
1030 # setbuffer, shmget, shm_open are needed for smbtorture
1031 AC_CHECK_FUNCS(shmget shm_open)
1032 AC_CHECK_FUNCS(gettext dgettext)
1033
1034 # Find a method of generating a stack trace
1035 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1036 # libexecinfo provides backtrace_symbols on FreeBSD
1037 AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1038 AC_CHECK_FUNCS(backtrace_symbols)
1039 AC_CHECK_LIB(exc, trace_back_stack)
1040
1041 printf "%s" "checking for GPFS GPL libs... "
1042 save_LIBS="$LIBS"
1043 LIBS="$LIBS -lgpfs_gpl"
1044 AC_TRY_LINK([#include <gpfs_gpl.h>],
1045           [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1046           samba_cv_HAVE_GPFS=yes,
1047           samba_cv_HAVE_GPFS=no)
1048 echo $samba_cv_HAVE_GPFS
1049 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1050     AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1051     default_shared_modules="$default_shared_modules vfs_gpfs"
1052 fi
1053 LIBS="$save_LIBS"
1054
1055 #############################################
1056 # check if building on Isilon OneFS
1057 printf "%s" "checking for Isilon OneFS... "
1058 save_LIBS="$LIBS"
1059 LIBS="$LIBS -lisi_version"
1060 AC_TRY_LINK([#include <isi_version/isi_version.h>],
1061           [get_isilon_copyright()],
1062           samba_cv_HAVE_ONEFS=yes,
1063           samba_cv_HAVE_ONEFS=no)
1064 echo $samba_cv_HAVE_ONEFS
1065 if test x"$samba_cv_HAVE_ONEFS" = x"yes"; then
1066     AC_DEFINE(HAVE_ONEFS,1,[Whether building on Isilon OneFS])
1067     default_shared_modules="$default_shared_modules vfs_onefs"
1068     ONEFS_LIBS="-lisi_acl"
1069 fi
1070 AC_SUBST(ONEFS_LIBS)
1071 LIBS="$save_LIBS"
1072
1073 # Note that all the libunwind symbols in the API are defined to internal
1074 # platform-specific version, so we must include libunwind.h before checking
1075 # any of them.
1076 AC_MSG_CHECKING([for libunwind])
1077 save_LIBS=$LIBS
1078
1079 UNWIND_ARCH="unknown"
1080 if test x"$UNAME_I" != x"unknown"; then
1081         UNWIND_ARCH="$UNAME_I"
1082 elif test x"$UNAME_M" != x"unknown"; then
1083         UNWIND_ARCH="$UNAME_M"
1084 elif test x"$UNAME_P" != x"unknown"; then
1085         UNWIND_ARCH="$UNAME_P"
1086 fi
1087
1088 case "$UNWIND_ARCH" in
1089         unknown)
1090                 # This probably won't link without
1091                 # the platform-specific libunwind.
1092                 LIBS="$LIBS -lunwind"
1093                 ;;
1094         i386|i586|i686)
1095                 # Add the platform-specific libunwind module.
1096                 LIBS="$LIBS -lunwind -lunwind-x86"
1097                 ;;
1098         *)
1099                 # Add the platform-specific libunwind module.
1100                 # based on uname -i, uname -m or uname -p
1101                 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1102                 ;;
1103 esac
1104
1105 AC_TRY_LINK(
1106     [
1107 #ifdef HAVE_LIBUNWIND_H
1108 #include <libunwind.h>
1109 #endif
1110     ],
1111     [
1112         unw_context_t ctx; unw_cursor_t cur;
1113         char buf[256]; unw_word_t off;
1114         unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1115         unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1116     ],
1117     [
1118         AC_MSG_RESULT(yes)
1119         AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1120
1121         # If we have libunwind, test whether we also have libunwind-ptrace
1122         # which would let us unwind arbitrary processes.
1123         save_LIBS=$LIBS
1124         AC_CHECK_HEADERS(libunwind-ptrace.h)
1125         AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1126             [
1127                 LIBUNWIND_PTRACE="-lunwind-ptrace";
1128                 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1129                     [Whether libunwind-ptrace.a is available.])
1130             ],
1131             [ LIBUNWIND_PTRACE="" ])
1132
1133         LIBS=$save_LIBS
1134     ],
1135     [
1136         AC_MSG_RESULT(no)
1137         LIBS=$save_LIBS
1138     ])
1139
1140 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1141 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1142     AC_CHECK_HEADERS(sys/ptrace.h)
1143     AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1144     AC_TRY_LINK(
1145             [
1146 #if HAVE_SYS_TYPES_H
1147 #include <sys/types.h>
1148 #endif
1149 #if HAVE_SYS_PTRACE_H
1150 #include <sys/ptrace.h>
1151 #endif
1152             ],
1153             [
1154                 int main(int argc, const char ** argv)
1155                 {
1156                         pid_t me = (pid_t)-1;
1157                         ptrace(PTRACE_ATTACH, me, 0, 0);
1158                         ptrace(PTRACE_DETACH, me, 0, 0);
1159                         return 0;
1160                 }
1161             ],
1162             [
1163                 AC_MSG_RESULT(yes)
1164                 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1165                     [Whether the Linux ptrace(2) interface is available.])
1166             ],
1167             [
1168                 AC_MSG_RESULT(no)
1169                 LIBUNWIND_PTRACE=""
1170             ])
1171 fi
1172
1173 AC_SUBST(LIBUNWIND_PTRACE)
1174
1175 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1176 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1177 AC_CHECK_FUNCS(__getcwd _getcwd)
1178 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1179 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1180 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1181 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1182 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1183 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1184 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1185 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1186 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1187 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1188 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1189 AC_CHECK_FUNCS(prctl)
1190
1191 AC_TRY_COMPILE([
1192 #ifdef HAVE_SYS_PRCTL_H
1193 #include <sys/prctl.h>
1194 #endif
1195 ],
1196 [int i; i = prtcl(0); ],
1197 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1198
1199 #
1200 #
1201 #
1202 case "$host_os" in
1203     *linux*)
1204        # glibc <= 2.3.2 has a broken getgrouplist
1205        AC_TRY_RUN([
1206 #include <unistd.h>
1207 #include <sys/utsname.h>
1208 main() {
1209        /* glibc up to 2.3 has a broken getgrouplist */
1210 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1211        int libc_major = __GLIBC__;
1212        int libc_minor = __GLIBC_MINOR__;
1213
1214        if (libc_major < 2)
1215               exit(1);
1216        if ((libc_major == 2) && (libc_minor <= 3))
1217               exit(1);
1218 #endif
1219        exit(0);
1220 }
1221 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1222        if test x"$linux_getgrouplist_ok" = x"yes"; then
1223           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1224        fi
1225        ;;
1226     *)
1227        AC_CHECK_FUNCS(getgrouplist)
1228        ;;
1229 esac
1230
1231 #
1232 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1233 #
1234
1235 if test x$ac_cv_func_stat64 = xno ; then
1236   AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1237   AC_TRY_LINK([
1238 #if defined(HAVE_UNISTD_H)
1239 #include <unistd.h>
1240 #endif
1241 #include <sys/stat.h>
1242 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1243   AC_MSG_RESULT([$ac_cv_func_stat64])
1244   if test x$ac_cv_func_stat64 = xyes ; then
1245     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1246   fi
1247 fi
1248
1249 if test x$ac_cv_func_lstat64 = xno ; then
1250   AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1251   AC_TRY_LINK([
1252 #if defined(HAVE_UNISTD_H)
1253 #include <unistd.h>
1254 #endif
1255 #include <sys/stat.h>
1256 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1257   AC_MSG_RESULT([$ac_cv_func_lstat64])
1258   if test x$ac_cv_func_lstat64 = xyes ; then
1259     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1260   fi
1261 fi
1262
1263 if test x$ac_cv_func_fstat64 = xno ; then
1264   AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1265   AC_TRY_LINK([
1266 #if defined(HAVE_UNISTD_H)
1267 #include <unistd.h>
1268 #endif
1269 #include <sys/stat.h>
1270 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1271   AC_MSG_RESULT([$ac_cv_func_fstat64])
1272   if test x$ac_cv_func_fstat64 = xyes ; then
1273     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1274   fi
1275 fi
1276
1277 #################################################
1278 # Check whether struct stat has timestamps with sub-second resolution.
1279 # At least IRIX and Solaris have these.
1280 #
1281 # We check that
1282 #       all of st_mtim, st_atim and st_ctim exist
1283 #       all of the members are in fact of type struct timespec
1284 #
1285 # There is some conflicting standards weirdness about whether we should use
1286 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1287 # prefer struct timespec.
1288
1289 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_cv_stat_hires,
1290     [
1291         AC_TRY_COMPILE(
1292             [
1293 #if TIME_WITH_SYS_TIME
1294 # include <sys/time.h>
1295 # include <time.h>
1296 #else
1297 # if HAVE_SYS_TIME_H
1298 #  include <sys/time.h>
1299 # else
1300 #  include <time.h>
1301 # endif
1302 #endif
1303 #ifdef HAVE_SYS_STAT_H
1304 #include <sys/stat.h>
1305 #endif
1306             ],
1307             [
1308                 struct timespec t;
1309                 struct stat s = {0};
1310                 t.tv_sec = s.st_mtim.tv_sec;
1311                 t.tv_nsec = s.st_mtim.tv_nsec;
1312                 t.tv_sec = s.st_ctim.tv_sec;
1313                 t.tv_nsec = s.st_ctim.tv_nsec;
1314                 t.tv_sec = s.st_atim.tv_sec;
1315                 t.tv_nsec = s.st_atim.tv_nsec;
1316             ],
1317             samba_cv_stat_hires=yes, samba_cv_stat_hires=no)
1318     ])
1319
1320 if test x"$samba_cv_stat_hires" = x"yes" ; then
1321     AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1322     AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1323     AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1324     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1325             [whether struct stat has sub-second timestamps])
1326 fi
1327
1328 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_cv_stat_hires_notimespec,
1329     [
1330         AC_TRY_COMPILE(
1331             [
1332 #if TIME_WITH_SYS_TIME
1333 # include <sys/time.h>
1334 # include <time.h>
1335 #else
1336 # if HAVE_SYS_TIME_H
1337 #  include <sys/time.h>
1338 # else
1339 #  include <time.h>
1340 # endif
1341 #endif
1342 #ifdef HAVE_SYS_STAT_H
1343 #include <sys/stat.h>
1344 #endif
1345             ],
1346             [
1347                 struct timespec t;
1348                 struct stat s = {0};
1349                 t.tv_sec = s.st_mtime;
1350                 t.tv_nsec = s.st_mtimensec;
1351                 t.tv_sec = s.st_ctime;
1352                 t.tv_nsec = s.st_ctimensec;
1353                 t.tv_sec = s.st_atime;
1354                 t.tv_nsec = s.st_atimensec;
1355             ],
1356             samba_cv_stat_hires=yes, samba_cv_stat_hires=no)
1357     ])
1358
1359 if test x"$samba_cv_stat_hires_notimespec" = x"yes" ; then
1360     AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1361     AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1362     AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1363     AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1364             [whether struct stat has sub-second timestamps without struct timespec])
1365 fi
1366
1367 AC_CACHE_CHECK([whether struct stat has st_birthtimespec], samba_cv_stat_st_birthtimespec,
1368     [
1369         AC_TRY_COMPILE(
1370             [
1371 #if TIME_WITH_SYS_TIME
1372 # include <sys/time.h>
1373 # include <time.h>
1374 #else
1375 # if HAVE_SYS_TIME_H
1376 #  include <sys/time.h>
1377 # else
1378 #  include <time.h>
1379 # endif
1380 #endif
1381 #ifdef HAVE_SYS_STAT_H
1382 #include <sys/stat.h>
1383 #endif
1384             ],
1385             [
1386                 struct timespec t;
1387                 struct stat s = {0};
1388                 t = s.st_birthtimespec;
1389             ],
1390             samba_cv_stat_st_birthtimespec=yes, samba_cv_stat_birthtimespec=no)
1391     ])
1392
1393 if test x"$samba_cv_stat_st_birthtimespec" = x"yes" ; then
1394     AC_DEFINE(HAVE_STAT_ST_BIRTHTIMESPEC, 1, [whether struct stat contains st_birthtimespec])
1395 fi
1396
1397 AC_CACHE_CHECK([whether struct stat has st_birthtimensec], samba_cv_stat_st_birthtimensec,
1398     [
1399         AC_TRY_COMPILE(
1400             [
1401 #if TIME_WITH_SYS_TIME
1402 # include <sys/time.h>
1403 # include <time.h>
1404 #else
1405 # if HAVE_SYS_TIME_H
1406 #  include <sys/time.h>
1407 # else
1408 #  include <time.h>
1409 # endif
1410 #endif
1411 #ifdef HAVE_SYS_STAT_H
1412 #include <sys/stat.h>
1413 #endif
1414             ],
1415             [
1416                 struct timespec t;
1417                 struct stat s = {0};
1418                 t.tv_nsec = s.st_birthtimensec;
1419             ],
1420             samba_cv_stat_st_birthtimensec=yes, samba_cv_stat_birthtimensec=no)
1421     ])
1422
1423 if test x"$samba_cv_stat_st_birthtimensec" = x"yes" ; then
1424     AC_DEFINE(HAVE_STAT_ST_BIRTHTIMENSEC, 1, [whether struct stat contains st_birthtimensec])
1425 fi
1426
1427 AC_CACHE_CHECK([whether struct stat has st_birthtime], samba_cv_stat_st_birthtime,
1428     [
1429         AC_TRY_COMPILE(
1430             [
1431 #if TIME_WITH_SYS_TIME
1432 # include <sys/time.h>
1433 # include <time.h>
1434 #else
1435 # if HAVE_SYS_TIME_H
1436 #  include <sys/time.h>
1437 # else
1438 #  include <time.h>
1439 # endif
1440 #endif
1441 #ifdef HAVE_SYS_STAT_H
1442 #include <sys/stat.h>
1443 #endif
1444             ],
1445             [
1446                 struct time_t t;
1447                 struct stat s = {0};
1448                 t = s.st_birthtime;
1449             ],
1450             samba_cv_stat_st_birthtime=yes, samba_cv_stat_birthtime=no)
1451     ])
1452
1453 if test x"$samba_cv_stat_st_birthtime" = x"yes" ; then
1454     AC_DEFINE(HAVE_STAT_ST_BIRTHTIME, 1, [whether struct stat contains st_birthtime])
1455 fi
1456
1457 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1458     [
1459         AC_TRY_COMPILE(
1460             [#include <sys/stat.h>],
1461             [
1462                 int a = UF_DOS_ARCHIVE;
1463                 int h = UF_DOS_HIDDEN;
1464                 int r = UF_DOS_RO;
1465                 int s = UF_DOS_SYSTEM;
1466                 int i = UF_DOS_NOINDEX;
1467                 int f = UF_DOS_FLAGS;
1468             ],
1469             samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1470     ])
1471
1472 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1473     AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1474 fi
1475
1476 #####################################
1477 # needed for SRV lookups
1478 AC_CHECK_LIB(resolv, dn_expand)
1479 AC_CHECK_LIB(resolv, _dn_expand)
1480 AC_CHECK_LIB(resolv, __dn_expand)
1481
1482 #
1483 # Check for the functions putprpwnam, set_auth_parameters,
1484 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1485 # Needed for OSF1 and HPUX.
1486 #
1487
1488 AC_LIBTESTFUNC(security, putprpwnam)
1489 AC_LIBTESTFUNC(sec, putprpwnam)
1490
1491 AC_LIBTESTFUNC(security, set_auth_parameters)
1492 AC_LIBTESTFUNC(sec, set_auth_parameters)
1493
1494 # UnixWare 7.x has its getspnam in -lgen
1495 AC_LIBTESTFUNC(gen, getspnam)
1496
1497 AC_LIBTESTFUNC(security, getspnam)
1498 AC_LIBTESTFUNC(sec, getspnam)
1499
1500 AC_LIBTESTFUNC(security, bigcrypt)
1501 AC_LIBTESTFUNC(sec, bigcrypt)
1502
1503 AC_LIBTESTFUNC(security, getprpwnam)
1504 AC_LIBTESTFUNC(sec, getprpwnam)
1505
1506 AC_CHECK_FUNCS(strsignal)
1507
1508 ############################################
1509 # Check if we have libattr
1510 case "$host_os" in
1511   *osf*)
1512         AC_SEARCH_LIBS(getproplist, [proplist])
1513         AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1514         AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1515         AC_CHECK_FUNCS(sizeof_proplist_entry)
1516   ;;
1517   *)
1518         AC_SEARCH_LIBS(getxattr, [attr])
1519         AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1520         AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1521         AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1522         AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1523         AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1524         AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1525         AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1526   ;;
1527 esac
1528
1529 ########################################################
1530 # Check if attropen() is present if this is Solaris
1531 case "$host_os" in
1532   *solaris*)
1533         AC_CHECK_FUNCS(attropen)
1534   ;;
1535 esac
1536
1537 ########################################################
1538 # Do xattr functions take additional options like on Darwin?
1539 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1540         AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1541                 old_LIBS=$LIBS
1542                 LIBS="$LIBS $ACL_LIBS"
1543                 AC_TRY_COMPILE([
1544                         #include <sys/types.h>
1545                         #if HAVE_ATTR_XATTR_H
1546                         #include <attr/xattr.h>
1547                         #elif HAVE_SYS_XATTR_H
1548                         #include <sys/xattr.h>
1549                         #endif
1550                 ],[
1551                         getxattr(0, 0, 0, 0, 0, 0);
1552                 ],
1553                 [smb_attr_cv_xattr_add_opt=yes],
1554                 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1555         ])
1556         if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1557                 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1558         fi
1559 fi
1560
1561 # Check if we have extattr
1562 case "$host_os" in
1563   *freebsd4* | *dragonfly* )
1564     AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1565     ;;
1566   *)
1567     AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1568     AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1569     AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1570     AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1571     ;;
1572 esac
1573
1574 AC_DISABLE_STATIC
1575 AC_ENABLE_SHARED
1576
1577 # Set defaults
1578 PIE_CFLAGS=""
1579 PIE_LDFLAGS=""
1580 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1581
1582 if test "x$enable_pie" != xno
1583 then
1584         AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1585         [
1586                 cat > conftest.c <<EOF
1587 int foo;
1588 main () { return 0;}
1589 EOF
1590                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1591                 then
1592                         samba_cv_fpie=yes
1593                 else
1594                         samba_cv_fpie=no
1595                 fi
1596                 rm -f conftest*
1597         ])
1598         if test x"${samba_cv_fpie}" = x"yes"
1599         then
1600                 PIE_CFLAGS="-fPIE"
1601                 PIE_LDFLAGS="-pie"
1602         fi
1603 fi
1604
1605 # Set defaults
1606 RELRO_LDFLAGS=""
1607 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1608
1609 if test "x$enable_relro" != xno
1610 then
1611         AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1612         [
1613                 cat > conftest.c <<EOF
1614 int foo;
1615 main () { return 0;}
1616 EOF
1617                 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1618                 then
1619                         samba_cv_relro=yes
1620                 else
1621                         samba_cv_relro=no
1622                 fi
1623                 rm -f conftest*
1624         ])
1625         if test x"${samba_cv_relro}" = x"yes"
1626         then
1627                 RELRO_LDFLAGS="-Wl,-z,relro"
1628         fi
1629 fi
1630
1631 # Set defaults
1632 SYMSEXT="syms"
1633 AC_SUBST(SYMSEXT)
1634
1635 # Assume non-shared by default and override below
1636 BLDSHARED="false"
1637
1638 # these are the defaults, good for lots of systems
1639 HOST_OS="$host_os"
1640 LDSHFLAGS="-shared"
1641 MODULE_EXPORTS=""
1642 SONAMEFLAG="#"
1643 SHLD="\${CC} \${CFLAGS}"
1644 PICFLAG="${PIE_CFLAGS}"
1645 SHLIBEXT="so"
1646 DSO_EXPORTS=""
1647
1648 # this bit needs to be modified for each OS that supports share libs
1649 # You need to specify how to create a shared library and
1650   # how to compile C code to produce PIC object files
1651
1652   AC_MSG_CHECKING([ability to build shared libraries])
1653
1654   # and these are for particular systems
1655   case "$host_os" in
1656                 *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
1657                         BLDSHARED="true"
1658                         if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1659                                 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1660                         else
1661                                 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1662                         fi
1663                         DYNEXP="-Wl,--export-dynamic"
1664                         PICFLAG="-fPIC"
1665                         SONAMEFLAG="-Wl,-soname="
1666                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1667                         ;;
1668                 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1669                         BLDSHARED="true"
1670                         LDSHFLAGS="-G"
1671                         SONAMEFLAG="-h "
1672                         if test "${GCC}" = "yes"; then
1673                                 PICFLAG="-fPIC"
1674                                 SONAMEFLAG="-Wl,-soname="
1675                                 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1676                                         DYNEXP="-Wl,-E"
1677                                 fi
1678                         else
1679                                 PICFLAG="-KPIC"
1680                                 ## ${CFLAGS} added for building 64-bit shared
1681                                 ## libs using Sun's Compiler
1682                                 LDSHFLAGS="-G \${CFLAGS}"
1683                         fi
1684                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1685                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1686                         ;;
1687                 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1688                         BLDSHARED="true"
1689                         LDSHFLAGS="-G"
1690                         SONAMEFLAG="-Wl,-h,"
1691                         PICFLAG="-KPIC"   # Is this correct for SunOS
1692                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1693                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1694                         ;;
1695                 *netbsd* | *freebsd* | *dragonfly* )
1696                         BLDSHARED="true"
1697                         LDSHFLAGS="-shared"
1698                         DYNEXP="-Wl,--export-dynamic"
1699                         SONAMEFLAG="-Wl,-soname,"
1700                         PICFLAG="-fPIC -DPIC"
1701                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1702                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1703                         ;;
1704                 *openbsd*)  BLDSHARED="true"
1705                         LDSHFLAGS="-shared"
1706                         DYNEXP="-Wl,-Bdynamic"
1707                         SONAMEFLAG="-Wl,-soname,"
1708                         PICFLAG="-fPIC"
1709                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1710                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1711                         ;;
1712                 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1713                         case "$host_os" in
1714                         *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1715                         ;;
1716                         esac
1717                         BLDSHARED="true"
1718                         LDSHFLAGS="-set_version sgi1.0 -shared"
1719                         SONAMEFLAG="-soname "
1720                         SHLD="\${LD}"
1721                         if test "${GCC}" = "yes"; then
1722                                 PICFLAG="-fPIC"
1723                         else
1724                                 PICFLAG="-KPIC"
1725                         fi
1726                         AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1727                         ;;
1728                 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1729                         BLDSHARED="true"
1730                         # use expfull to export underscored symbols
1731                         # add rtl to remove /lib/crt0.o warning
1732                         LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1733                         DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1734                         PICFLAG="-O2"
1735                         # as AIX code is always position independent...
1736                         # .po will just create compile warnings, use po.o:
1737                         if test "${GCC}" != "yes"; then
1738                                 ## for funky AIX compiler using strncpy()
1739                                 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1740                         fi
1741
1742                         AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1743                         AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1744                         AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1745                         ;;
1746                 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1747                         # Use special PIC flags for the native HP-UX compiler.
1748                                 BLDSHARED="true"
1749                                 SHLD="cc"
1750                                 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1751                                 SONAMEFLAG="-Wl,+h "
1752                                 PICFLAG="+z"
1753                         if test "${GCC}" = "yes"; then
1754                                 PICFLAG="-fPIC"
1755                         else
1756                                 PICFLAG="+z +ESnolit"
1757                         fi
1758                         if test "$host_cpu" = "ia64"; then
1759                                 SHLIBEXT="so"
1760                               PICFLAG="+z"
1761                                 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1762                         else
1763                                 SHLIBEXT="sl"
1764                                 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1765                         fi
1766                         AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1767                         AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1768                         ;;
1769                 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1770                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1771                         ;;
1772                 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1773                         BLDSHARED="true"
1774                         LDSHFLAGS="-shared"
1775                         SONAMEFLAG="-Wl,-soname,"
1776                         PICFLAG="-fPIC"
1777                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1778                         AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1779                         ;;
1780                 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1781                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1782                         ;;
1783                 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1784                         BLDSHARED="true"
1785                         LDSHFLAGS="-shared"
1786                         SONAMEFLAG="-Wl,-soname,"
1787                         PICFLAG="-KPIC"
1788                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1789                         ;;
1790                 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1791                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1792                         ;;
1793                 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1794                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1795                         ;;
1796                 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1797                         case "$host" in
1798                                 *-univel-*)     if [ test "$GCC" != yes ]; then
1799                                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1800                                         fi
1801                                         LDSHFLAGS="-G"
1802                                         DYNEXP="-Bexport"
1803                                 ;;
1804                                 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1805                         esac
1806                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1807                         ;;
1808
1809                 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1810                         if [ test "$GCC" != yes ]; then
1811                                 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1812                         fi
1813                         LDSHFLAGS="-G"
1814                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1815                         ;;
1816                 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1817                         BLDSHARED="false"
1818                         LDSHFLAGS=""
1819                         ;;
1820
1821                 *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1822                         BLDSHARED="true"
1823                         LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1824                         CFLAGS="$CFLAGS -fno-common"
1825                         SHLD="\${CC}"
1826                         SHLIBEXT="dylib"
1827                         MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1828                         SHLIBEXT="dylib"
1829                         # Since gcc doesn't fail on unrecognised options, the
1830                         # PIE test incorrectly succeeds. Darwin gcc does not
1831                         # actually support the PIE stuff.
1832                         PIE_LDFLAGS=
1833                         PIE_CFLAGS=
1834                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1835                         ;;
1836
1837                 *)
1838                         AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1839                         ;;
1840   esac
1841
1842 if test "$enable_shared" != "yes"; then
1843         BLDSHARED=false
1844 fi
1845
1846 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1847         DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1848 fi
1849
1850 if test x"$BLDSHARED" = x"true" ; then
1851         LDFLAGS="$LDFLAGS -L./bin"
1852 fi
1853
1854 AC_MSG_RESULT($BLDSHARED)
1855
1856 AC_MSG_CHECKING([LDFLAGS])
1857 AC_MSG_RESULT([$LDFLAGS])
1858 AC_MSG_CHECKING([DYNEXP])
1859 AC_MSG_RESULT([$DYNEXP])
1860
1861 #######################################################
1862 # test whether building a shared library actually works
1863 if test $BLDSHARED = true; then
1864
1865 AC_MSG_CHECKING([SHLD])
1866 AC_MSG_RESULT([$SHLD])
1867 AC_MSG_CHECKING([LDSHFLAGS])
1868 AC_MSG_RESULT([$LDSHFLAGS])
1869
1870 AC_MSG_CHECKING([SHLIBEXT])
1871 AC_MSG_RESULT([$SHLIBEXT])
1872 AC_MSG_CHECKING([SONAMEFLAG])
1873 AC_MSG_RESULT([$SONAMEFLAG])
1874
1875 AC_MSG_CHECKING([PICFLAG])
1876 AC_MSG_RESULT([$PICFLAG])
1877
1878 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1879 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1880
1881 AC_CACHE_CHECK([whether building shared libraries actually works],
1882                [ac_cv_shlib_works],[
1883    # try building a trivial shared library
1884    ac_cv_shlib_works=no
1885    # The $SHLD and $LDSHFLAGS variables may contain references to other
1886    # variables so they need to be eval'ed.
1887    $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1888         shlib.o ${srcdir-.}/tests/shlib.c && \
1889    `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1890         shlib.o && ac_cv_shlib_works=yes
1891    rm -f "shlib.$SHLIBEXT" shlib.o
1892
1893 ])
1894 if test $ac_cv_shlib_works = no; then
1895    BLDSHARED=false
1896 fi
1897 fi
1898
1899 if test x"$BLDSHARED" != x"true"; then
1900         LDSHFLAGS="shared-libraries-disabled"
1901         SONAMEFLAG="shared-libraries-disabled"
1902         NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1903         SHLD="shared-libraries-disabled"
1904         PICFLAG="${PIE_CFLAGS}"
1905         SHLIBEXT="shared_libraries_disabled"
1906 fi
1907
1908 AC_MSG_CHECKING([used PICFLAG])
1909 AC_MSG_RESULT([$PICFLAG])
1910
1911 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1912
1913 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
1914
1915 ################
1916
1917 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1918 AC_TRY_RUN([#include <stdio.h>
1919 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1920 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1921 if test x"$samba_cv_have_longlong" = x"yes"; then
1922     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1923     AC_CHECK_TYPE(intptr_t, unsigned long long)
1924 else
1925     AC_CHECK_TYPE(intptr_t, unsigned long)
1926 fi
1927
1928 #
1929 # Check if the compiler supports the LL prefix on long long integers.
1930 # AIX needs this.
1931
1932 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1933     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1934         samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1935 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1936    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1937 fi
1938
1939
1940 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
1941 AC_TRY_RUN([#include <time.h>
1942 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
1943 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
1944 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
1945     AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
1946 fi
1947
1948 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1949 AC_TRY_RUN([#include <stdio.h>
1950 #include <sys/stat.h>
1951 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1952 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1953 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1954     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1955 fi
1956
1957 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1958 AC_TRY_RUN([
1959 #if defined(HAVE_UNISTD_H)
1960 #include <unistd.h>
1961 #endif
1962 #include <stdio.h>
1963 #include <sys/stat.h>
1964 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1965 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1966 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1967     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1968 fi
1969
1970 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1971 AC_TRY_RUN([
1972 #if defined(HAVE_UNISTD_H)
1973 #include <unistd.h>
1974 #endif
1975 #include <stdio.h>
1976 #include <sys/stat.h>
1977 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1978 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1979 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1980     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1981 fi
1982
1983 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1984 AC_TRY_RUN([
1985 #if defined(HAVE_UNISTD_H)
1986 #include <unistd.h>
1987 #endif
1988 #include <stdio.h>
1989 #include <sys/stat.h>
1990 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1991 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1992 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1993     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1994 fi
1995
1996 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
1997 AC_TRY_RUN([
1998 #if defined(HAVE_UNISTD_H)
1999 #include <unistd.h>
2000 #endif
2001 #include <stdio.h>
2002 #include <sys/stat.h>
2003 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2004 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2005 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2006     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2007 fi
2008
2009 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2010 AC_TRY_RUN([
2011 #if defined(HAVE_UNISTD_H)
2012 #include <unistd.h>
2013 #endif
2014 #include <stdio.h>
2015 #include <sys/stat.h>
2016 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2017 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2018 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2019     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2020 fi
2021
2022 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2023 AC_TRY_COMPILE([
2024 #if defined(HAVE_UNISTD_H)
2025 #include <unistd.h>
2026 #endif
2027 #include <sys/types.h>
2028 #include <dirent.h>],
2029 [DIR64 de;],
2030 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2031 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2032     AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2033 fi
2034
2035 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2036 AC_TRY_COMPILE([
2037 #if defined(HAVE_UNISTD_H)
2038 #include <unistd.h>
2039 #endif
2040 #include <sys/types.h>
2041 #include <dirent.h>],
2042 [struct dirent64 de;],
2043 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2044 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2045     AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2046 fi
2047
2048 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2049 AC_TRY_RUN([
2050 #if defined(HAVE_UNISTD_H)
2051 #include <unistd.h>
2052 #endif
2053 #include <sys/types.h>
2054 main() { dev_t dev; int i = major(dev); return 0; }],
2055 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2056 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2057     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2058 fi
2059
2060 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2061 AC_TRY_RUN([
2062 #if defined(HAVE_UNISTD_H)
2063 #include <unistd.h>
2064 #endif
2065 #include <sys/types.h>
2066 main() { dev_t dev; int i = minor(dev); return 0; }],
2067 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2068 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2069     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2070 fi
2071
2072 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2073 AC_TRY_RUN([
2074 #if defined(HAVE_UNISTD_H)
2075 #include <unistd.h>
2076 #endif
2077 #include <sys/types.h>
2078 main() { dev_t dev = makedev(1,2); return 0; }],
2079 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2080 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2081     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2082 fi
2083
2084 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2085 AC_TRY_RUN([#include <stdio.h>
2086 main() { char c; c=250; exit((c > 0)?0:1); }],
2087 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2088 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2089     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2090 fi
2091
2092 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2093 AC_TRY_COMPILE([#include <sys/types.h>
2094 #include <dirent.h>
2095 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2096 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2097 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2098     AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2099 fi
2100
2101 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2102 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2103 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2104 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2105     AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2106 fi
2107
2108 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2109 AC_TRY_LINK([
2110 #include <sys/time.h>
2111 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2112            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2113            samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2114 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2115     AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2116 fi
2117
2118 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2119
2120     # On some systems (eg. Linux) librt can pull in libpthread. We
2121     # don't want this to happen because libpthreads changes signal delivery
2122     # semantics in ways we are not prepared for. This breaks Linux oplocks
2123     # which rely on signals.
2124
2125     AC_LIBTESTFUNC(rt, clock_gettime,
2126             [
2127                             AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2128                                 [Whether clock_gettime is available])
2129                             SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2130                             SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2131                             SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2132                         ])
2133
2134 fi
2135
2136 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2137 AC_TRY_RUN([#include <sys/types.h>
2138 #include <dirent.h>
2139 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2140 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2141 di->d_name[0] == 0) exit(0); exit(1);} ],
2142 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2143 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2144     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2145 fi
2146
2147 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2148 AC_TRY_COMPILE([#include <sys/types.h>
2149 #include <utime.h>],
2150 [struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2151 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2152 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2153     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2154 fi
2155
2156 ##############
2157 # Check utmp details, but only if our OS offers utmp.h
2158 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2159 dnl  utmp and utmpx come in many flavours
2160 dnl  We need to check for many of them
2161 dnl  But we don't need to do each and every one, because our code uses
2162 dnl  mostly just the utmp (not utmpx) fields.
2163
2164 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2165
2166 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2167 AC_TRY_COMPILE([#include <sys/types.h>
2168 #include <utmp.h>],
2169 [struct utmp ut;  ut.ut_name[0] = 'a';],
2170 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2171 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2172     AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2173 fi
2174
2175 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2176 AC_TRY_COMPILE([#include <sys/types.h>
2177 #include <utmp.h>],
2178 [struct utmp ut;  ut.ut_user[0] = 'a';],
2179 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2180 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2181     AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2182 fi
2183
2184 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2185 AC_TRY_COMPILE([#include <sys/types.h>
2186 #include <utmp.h>],
2187 [struct utmp ut;  ut.ut_id[0] = 'a';],
2188 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2189 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2190     AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2191 fi
2192
2193 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2194 AC_TRY_COMPILE([#include <sys/types.h>
2195 #include <utmp.h>],
2196 [struct utmp ut;  ut.ut_host[0] = 'a';],
2197 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2198 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2199     AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2200 fi
2201
2202 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2203 AC_TRY_COMPILE([#include <sys/types.h>
2204 #include <utmp.h>],
2205 [struct utmp ut;  time_t t; ut.ut_time = t;],
2206 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2207 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2208     AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2209 fi
2210
2211 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2212 AC_TRY_COMPILE([#include <sys/types.h>
2213 #include <utmp.h>],
2214 [struct utmp ut;  struct timeval tv; ut.ut_tv = tv;],
2215 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2216 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2217     AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2218 fi
2219
2220 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2221 AC_TRY_COMPILE([#include <sys/types.h>
2222 #include <utmp.h>],
2223 [struct utmp ut;  ut.ut_type = 0;],
2224 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2225 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2226     AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2227 fi
2228
2229 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2230 AC_TRY_COMPILE([#include <sys/types.h>
2231 #include <utmp.h>],
2232 [struct utmp ut;  ut.ut_pid = 0;],
2233 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2234 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2235     AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2236 fi
2237
2238 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2239 AC_TRY_COMPILE([#include <sys/types.h>
2240 #include <utmp.h>],
2241 [struct utmp ut;  ut.ut_exit.e_exit = 0;],
2242 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2243 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2244     AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2245 fi
2246
2247 dnl Look for the IPv6 varient by preference. Many systems have both.
2248 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2249 AC_TRY_COMPILE([#include <sys/types.h>
2250 #include <utmp.h>],
2251 [struct utmp ut;  ut.ut_addr_v6[0] = 0;],
2252 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2253 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2254     AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2255 fi
2256
2257 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2258 AC_TRY_COMPILE([#include <sys/types.h>
2259 #include <utmp.h>],
2260 [struct utmp ut;  ut.ut_addr = 0;],
2261 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2262 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2263     AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2264 fi
2265
2266 if test x$ac_cv_func_pututline = xyes ; then
2267   AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2268   AC_TRY_COMPILE([#include <sys/types.h>
2269 #include <utmp.h>],
2270   [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2271   samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2272   if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2273       AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2274   fi
2275 fi
2276
2277 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2278 AC_TRY_COMPILE([#include <sys/types.h>
2279 #include <utmpx.h>],
2280 [struct utmpx ux;  ux.ut_syslen = 0;],
2281 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2282 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2283     AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2284 fi
2285
2286 fi
2287 # end utmp details
2288
2289
2290 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2291 AC_ARG_WITH(libiconv,
2292 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2293 [
2294   if test "$withval" = "no" ; then
2295     AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2296   else
2297      if test "$withval" != "yes" ; then
2298         ICONV_PATH_SPEC=yes
2299         ICONV_LOOK_DIRS="$withval"
2300      fi
2301   fi
2302 ])
2303
2304 for i in $ICONV_LOOK_DIRS ; do
2305
2306     save_LIBS="$LIBS"
2307     save_LDFLAGS="$LDFLAGS"
2308     save_CPPFLAGS="$CPPFLAGS"
2309
2310     iconv_current_LIBS=""
2311     iconv_current_LDFLAGS=""
2312     iconv_current_CPPFLAGS=""
2313
2314     ICONV_FOUND="no"
2315     unset libext
2316
2317     #  This is here to handle -withval stuff for --with-libiconv
2318     #  Perhaps we should always add a -L
2319     CPPFLAGS="$save_CPPFLAGS -I$i/include"
2320
2321     # Check lib and lib32 library variants to cater for IRIX ABI-specific
2322     # installation paths. This gets a little tricky since we might have iconv
2323     # in both libiconv and in libc. In this case the jm_ICONV test will always
2324     # succeed when the header is found. To counter this, make sure the
2325     # library directory is there and check the ABI directory first (which
2326     # should be harmless on other systems, but causes tons of linker warnings on
2327     # 64bit Ubuntu systems).
2328     # As the build farm doesn't seem to have any IRIX machines with iconv.h
2329     # installed, I've decided to fix the linker warnings.
2330     # -- Kai
2331     # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2332     for l in "lib" "lib32" "lib/hpux32"; do
2333         if test -d "$i/$l" ; then
2334                 LDFLAGS="$save_LDFLAGS -L$i/$l"
2335                 LIBS=
2336                 export LDFLAGS LIBS CPPFLAGS
2337                 # Try to find iconv(3)
2338                 jm_ICONV($i/$l)
2339                 if test x"$ICONV_FOUND" = "xyes" ; then
2340                     libext="$l"
2341                     break
2342                 fi
2343         fi
2344     done
2345
2346     if test x"$ICONV_FOUND" = "xyes" ; then
2347         iconv_current_LDFLAGS="-L$i/$libext"
2348         iconv_current_CPPFLAGS="-I$i/include"
2349
2350         if test x"$jm_cv_lib_iconv" != x; then
2351             iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2352         else
2353             # We found iconv in libc.
2354             iconv_current_LIBS=""
2355         fi
2356
2357     fi
2358
2359     if test x"$ICONV_FOUND" = "xyes" ; then
2360
2361         LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2362         CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2363         LIBS="$save_LIBS $iconv_current_LIBS"
2364         export LDFLAGS LIBS CPPFLAGS
2365
2366         default_dos_charset=no
2367         default_display_charset=no
2368         default_unix_charset=no
2369
2370         # check for default dos charset name
2371         for j in CP850 IBM850 ; do
2372             rjs_CHARSET($j)
2373             default_dos_charset="$ICONV_CHARSET"
2374             if test x"$default_dos_charset" = x"$j"; then
2375                 break
2376             fi
2377         done
2378
2379         # check for default display charset name
2380         for j in ASCII 646 ; do
2381             rjs_CHARSET($j)
2382             default_display_charset="$ICONV_CHARSET"
2383             if test x"$default_display_charset" = x"$j"; then
2384                 break
2385             fi
2386         done
2387
2388         # check for default unix charset name
2389         for j in UTF-8 UTF8 ; do
2390             rjs_CHARSET($j)
2391             default_unix_charset="$ICONV_CHARSET"
2392             if test x"$default_unix_charset" = x"$j"; then
2393                 break
2394             fi
2395         done
2396
2397         if test "$default_dos_charset" != "no" -a \
2398                 "$default_dos_charset" != "cross" -a \
2399                 "$default_display_charset" != "no" -a \
2400                 "$default_display_charset" != "cross" -a \
2401                 "$default_unix_charset" != "no" -a \
2402                 "$default_unix_charset" != "cross"
2403         then
2404                 samba_cv_HAVE_NATIVE_ICONV=yes
2405         else
2406             if test "$default_dos_charset" = "cross" -o \
2407                      "$default_display_charset" = "cross" -o \
2408                      "$default_unix_charset" = "cross"
2409             then
2410                     samba_cv_HAVE_NATIVE_ICONV=cross
2411             else
2412                     samba_cv_HAVE_NATIVE_ICONV=no
2413             fi
2414         fi
2415
2416         # At this point, we have a libiconv candidate. We know that
2417         # we have the right headers and libraries, but we don't know
2418         # whether it does the conversions we want. We can't test this
2419         # because we are cross-compiling. This is not necessarily a big
2420         # deal, since we can't guarantee that the results we get now will
2421         # match the results we get at runtime anyway.
2422         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2423             default_dos_charset="CP850"
2424             default_display_charset="ASCII"
2425             default_unix_charset="UTF-8"
2426             samba_cv_HAVE_NATIVE_ICONV=yes
2427             AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2428             AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2429         fi
2430
2431         if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2432
2433             CPPFLAGS=$save_CPPFLAGS
2434             LDFLAGS=$save_LDFLAGS
2435             LIBS=$save_LIBS
2436
2437             if test x"$iconv_current_LIBS" != x; then
2438                 LIBS="$LIBS $iconv_current_LIBS"
2439             fi
2440
2441             # Add the flags we need to CPPFLAGS and LDFLAGS
2442             CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2443             LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2444
2445             # Turn the #defines into string literals
2446             default_dos_charset="\"$default_dos_charset\""
2447             default_display_charset="\"$default_display_charset\""
2448             default_unix_charset="\"$default_unix_charset\""
2449
2450             AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2451             AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2452             AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2453             AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2454
2455            break
2456         fi
2457
2458     # We didn't find a working iconv, so keep going
2459     fi
2460
2461     #  We only need to clean these up here for the next pass through the loop
2462     CPPFLAGS=$save_CPPFLAGS
2463     LDFLAGS=$save_LDFLAGS
2464     LIBS=$save_LIBS
2465     export LDFLAGS LIBS CPPFLAGS
2466 done
2467 unset libext
2468
2469
2470 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2471     AC_MSG_WARN([Sufficient support for iconv function was not found.
2472     Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2473    AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2474    AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2475    AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2476 fi
2477
2478
2479 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2480 AC_TRY_RUN([
2481 #include <sys/types.h>
2482 #include <fcntl.h>
2483 #ifndef F_GETLEASE
2484 #define F_GETLEASE      1025
2485 #endif
2486 main() {
2487        int fd = open("/dev/null", O_RDONLY);
2488        return fcntl(fd, F_GETLEASE, 0) == -1;
2489 }
2490 ],
2491 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2492 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2493     AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2494 fi
2495
2496 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2497 AC_TRY_RUN([
2498 #include <sys/types.h>
2499 #include <fcntl.h>
2500 #include <signal.h>
2501 #ifndef F_NOTIFY
2502 #define F_NOTIFY 1026
2503 #endif
2504 main() {
2505         exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
2506 }
2507 ],
2508 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2509 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2510     AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2511 fi
2512
2513 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2514 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2515 AC_CHECK_FUNCS(inotify_init)
2516 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2517 ],
2518 samba_cv_HAVE_INOTIFY=yes,
2519 samba_cv_HAVE_INOTIFY=no,
2520 samba_cv_HAVE_INOTIFY=cross)
2521
2522 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2523     AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2524 fi
2525
2526 #################################################
2527 # Check if FAM notifications are available. For FAM info, see
2528 #       http://oss.sgi.com/projects/fam/
2529 #       http://savannah.nongnu.org/projects/fam/
2530 AC_ARG_ENABLE(fam,
2531 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2532
2533 if test x$enable_fam != xno; then
2534     AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2535     if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2536         # On IRIX, libfam requires libC, but other FAM implementations
2537         # might not need it.
2538         AC_CHECK_LIB(fam, FAMOpen2,
2539             [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2540             [samba_cv_HAVE_LIBFAM=no])
2541
2542         if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2543             samba_fam_xtra=-lC
2544             AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2545                 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2546                 [samba_cv_HAVE_LIBFAM=no])
2547             unset samba_fam_xtra
2548         fi
2549     fi
2550
2551     if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2552         default_shared_modules="$default_shared_modules vfs_notify_fam"
2553         AC_TRY_COMPILE([#include <fam.h>],
2554                     [FAMCodes code = FAMChanged;],
2555                     AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2556                         [Whether fam.h contains a typedef for enum FAMCodes]),
2557                     [])
2558     fi
2559
2560     if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2561         AC_MSG_ERROR(FAM support requested but FAM library not available )
2562     fi
2563 fi
2564
2565 AC_SUBST(SMB_FAM_LIBS)
2566
2567 #################################################
2568 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2569
2570 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2571
2572 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2573 # Theoretically it should work with AIX JFS2 too but this needs testing
2574 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2575     default_shared_modules="$default_shared_modules vfs_tsmsm"
2576 fi
2577
2578 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2579 AC_TRY_RUN([
2580 #include <sys/types.h>
2581 #include <fcntl.h>
2582 #include <signal.h>
2583 #include <sys/file.h>
2584 #ifndef LOCK_MAND
2585 #define LOCK_MAND       32
2586 #define LOCK_READ       64
2587 #endif
2588 main() {
2589         exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2590 }
2591 ],
2592 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2593 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2594     AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2595 fi
2596
2597
2598 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2599 AC_TRY_COMPILE([#include <sys/types.h>
2600 #include <fcntl.h>],
2601 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2602 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2603 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2604     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2605 fi
2606
2607 #################################################
2608 # Check for POSIX capability support
2609
2610 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2611     AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2612     [], [])
2613
2614 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2615
2616     ac_save_LIBS=$LIBS
2617     AC_LIBTESTFUNC(cap, cap_get_proc)
2618
2619     AC_CACHE_CHECK([for POSIX capabilities],
2620             samba_cv_HAVE_POSIX_CAPABILITIES,
2621             [
2622                 AC_TRY_RUN([
2623 #include <sys/types.h>
2624 #include <sys/capability.h>
2625 main() {
2626  cap_t cap;
2627  cap_value_t vals[1];
2628  if (!(cap = cap_get_proc()))
2629    exit(1);
2630  vals[0] = CAP_CHOWN;
2631  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2632  cap_set_proc(cap);
2633  exit(0);
2634 }],
2635                 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2636                 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2637                 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2638             ])
2639
2640 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2641     AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2642             [Whether POSIX capabilities are available])
2643 else
2644     LIBS=$ac_save_LIBS
2645 fi
2646
2647 fi
2648
2649 #
2650 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2651 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2652 #
2653
2654 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2655 AC_TRY_COMPILE([#include <sys/types.h>
2656 #if defined(HAVE_RPC_RPC_H)
2657 #include <rpc/rpc.h>
2658 #endif],
2659 [int16 testvar;],
2660 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2661 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2662     AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2663 fi
2664
2665 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2666 AC_TRY_COMPILE([#include <sys/types.h>
2667 #if defined(HAVE_RPC_RPC_H)
2668 #include <rpc/rpc.h>
2669 #endif],
2670 [uint16 testvar;],
2671 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2672 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2673     AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2674 fi
2675
2676 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2677 AC_TRY_COMPILE([#include <sys/types.h>
2678 #if defined(HAVE_RPC_RPC_H)
2679 #include <rpc/rpc.h>
2680 #endif],
2681 [int32 testvar;],
2682 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2683 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2684     AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2685 fi
2686
2687 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2688 AC_TRY_COMPILE([#include <sys/types.h>
2689 #if defined(HAVE_RPC_RPC_H)
2690 #include <rpc/rpc.h>
2691 #endif],
2692 [uint32 testvar;],
2693 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2694 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2695     AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2696 fi
2697
2698 dnl
2699 dnl Some systems (SCO) have a problem including
2700 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2701 dnl as a #define in <prot.h> and as part of an enum
2702 dnl in <rpc/rpc.h>.
2703 dnl
2704
2705 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2706 AC_TRY_COMPILE([#include <sys/types.h>
2707 #ifdef HAVE_SYS_SECURITY_H
2708 #include <sys/security.h>
2709 #include <prot.h>
2710 #endif  /* HAVE_SYS_SECURITY_H */
2711 #if defined(HAVE_RPC_RPC_H)
2712 #include <rpc/rpc.h>
2713 #endif],
2714 [int testvar;],
2715 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2716 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2717     AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2718 fi
2719
2720 AC_MSG_CHECKING([for test routines])
2721 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2722            AC_MSG_RESULT(yes),
2723            AC_MSG_ERROR([cant find test code. Aborting config]),
2724            AC_MSG_WARN([cannot run when cross-compiling]))
2725
2726 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2727 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2728            samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2729 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2730     AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2731 fi
2732
2733 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2734 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2735            samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2736 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2737     AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2738 fi
2739
2740 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2741 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2742 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2743 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2744 AC_CHECK_FUNCS(getpagesize)
2745
2746 ################################################
2747 # look for a method of setting the effective uid
2748 seteuid=no;
2749
2750 if test $seteuid = no; then
2751 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2752 AC_TRY_RUN([
2753 #define AUTOCONF_TEST 1
2754 #define USE_SETREUID 1
2755 #include "confdefs.h"
2756 #include "${srcdir-.}/lib/util_sec.c"],
2757            samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2758 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2759     seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2760 fi
2761 fi
2762
2763 # we check for setresuid second as it conflicts with AIO on Linux. 
2764 # see http://samba.org/~tridge/junkcode/aio_uid.c
2765 if test $seteuid = no; then
2766 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2767 AC_TRY_RUN([
2768 #define AUTOCONF_TEST 1
2769 #define USE_SETRESUID 1
2770 #include "confdefs.h"
2771 #include "${srcdir-.}/lib/util_sec.c"],
2772            samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2773 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2774     seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2775 fi
2776 fi
2777
2778 if test $seteuid = no; then
2779 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2780 AC_TRY_RUN([
2781 #define AUTOCONF_TEST 1
2782 #define USE_SETEUID 1
2783 #include "confdefs.h"
2784 #include "${srcdir-.}/lib/util_sec.c"],
2785            samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2786 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2787     seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2788 fi
2789 fi
2790
2791 if test $seteuid = no; then
2792 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2793 AC_TRY_RUN([
2794 #define AUTOCONF_TEST 1
2795 #define USE_SETUIDX 1
2796 #include "confdefs.h"
2797 #include "${srcdir-.}/lib/util_sec.c"],
2798            samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2799 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2800     seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2801 fi
2802 fi
2803
2804 AC_CACHE_CHECK([for the Darwin initgroups system call],
2805         samba_cv_DARWIN_INITGROUPS,
2806         AC_TRY_LINK([
2807 #include <sys/syscall.h>
2808 #include <unistd.h>
2809         ],
2810         [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2811         samba_cv_DARWIN_INITGROUPS=yes,
2812         samba_cv_DARWIN_INITGROUPS=no)
2813 )
2814
2815 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2816     AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2817         [Whether to use the Darwin-specific initgroups system call])
2818 fi
2819
2820 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2821 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2822            samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2823 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2824     AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2825 fi
2826
2827 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2828 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2829            samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2830 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2831     AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2832
2833 else
2834
2835 dnl
2836 dnl Don't check for 64 bit fcntl locking if we know that the
2837 dnl glibc2.1 broken check has succeeded.
2838 dnl
2839
2840   AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2841   AC_TRY_RUN([
2842 #if defined(HAVE_UNISTD_H)
2843 #include <unistd.h>
2844 #endif
2845 #include <stdio.h>
2846 #include <stdlib.h>
2847
2848 #ifdef HAVE_FCNTL_H
2849 #include <fcntl.h>
2850 #endif
2851
2852 #ifdef HAVE_SYS_FCNTL_H
2853 #include <sys/fcntl.h>
2854 #endif
2855 main() { struct flock64 fl64;
2856 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2857 exit(0);
2858 #else
2859 exit(1);
2860 #endif
2861 }],
2862        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2863
2864   if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2865       AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2866   fi
2867 fi
2868
2869 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2870 AC_TRY_COMPILE([#include <sys/types.h>
2871 #include <sys/stat.h>
2872 #include <unistd.h>],
2873 [struct stat st;  st.st_blocks = 0;],
2874 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2875 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2876     AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2877 fi
2878
2879 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2880 AC_TRY_COMPILE([#include <sys/types.h>
2881 #include <sys/stat.h>
2882 #include <unistd.h>],
2883 [struct stat st;  st.st_blksize = 0;],
2884 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2885 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2886     AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2887 fi
2888
2889 AC_CACHE_CHECK([for st_flags in struct stat],
2890         samba_cv_HAVE_STAT_ST_FLAGS,
2891         [
2892             AC_TRY_COMPILE([#include <sys/types.h>
2893 #include <sys/stat.h>
2894 #include <unistd.h>],
2895             [struct stat st;  st.st_flags = 0;],
2896             samba_cv_HAVE_STAT_ST_FLAGS=yes,
2897             samba_cv_HAVE_STAT_ST_FLAGS=no,
2898             samba_cv_HAVE_STAT_ST_FLAGS=cross)
2899         ])
2900
2901 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2902     AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
2903                 [Whether the stat struct has a st_flags member])
2904 fi
2905
2906 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2907 AC_TRY_COMPILE([
2908 #include <sys/types.h>
2909 #include <sys/acl.h>
2910 #if defined(HAVE_RPCSVC_NIS_H)
2911 #include <rpcsvc/nis.h>
2912 #endif],
2913 [int i;],
2914 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2915 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2916         AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2917 fi
2918
2919 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2920 AC_TRY_RUN([
2921 #include <stdio.h>
2922 #include <limits.h>
2923 #include <signal.h>
2924
2925 void exit_on_core(int ignored) {
2926         exit(1);
2927 }
2928
2929 main() {
2930         char *newpath;
2931         signal(SIGSEGV, exit_on_core);
2932         newpath = realpath("/tmp", NULL);
2933         exit((newpath != NULL) ? 0 : 1);
2934 }
2935 ],
2936 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2937 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2938     AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2939 fi
2940
2941 #################################################
2942 # check for AFS clear-text auth support
2943 samba_cv_WITH_AFS=no
2944 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2945 AC_ARG_WITH(afs,
2946 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
2947 [ case "$withval" in
2948   yes|auto)
2949     AC_MSG_RESULT($withval)
2950     samba_cv_WITH_AFS=$withval
2951     ;;
2952   *)
2953     AC_MSG_RESULT(no)
2954     ;;
2955   esac ],
2956   AC_MSG_RESULT(no)
2957 )
2958
2959 ####################################################
2960 # check for Linux-specific AFS fake-kaserver support
2961 samba_cv_WITH_FAKE_KASERVER=no
2962 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2963 AC_ARG_WITH(fake-kaserver,
2964 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
2965 [ case "$withval" in
2966   yes|auto)
2967     AC_MSG_RESULT($withval)
2968     samba_cv_WITH_FAKE_KASERVER=$withval
2969     ;;
2970   *)
2971     AC_MSG_RESULT(no)
2972     ;;
2973   esac ],
2974   AC_MSG_RESULT(no)
2975 )
2976
2977 #################################################
2978 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2979 if test x"$samba_cv_WITH_AFS" != x"no" ||
2980    test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2981
2982     # see if this box has the afs-headers in /usr/include/afs
2983     AC_MSG_CHECKING(for /usr/include/afs)
2984     if test -d /usr/include/afs; then
2985           CFLAGS="$CFLAGS -I/usr/include/afs"
2986           CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
2987           AC_MSG_RESULT(yes)
2988     else
2989       AC_MSG_RESULT(no)
2990     fi
2991
2992     # check for afs.h
2993     have_afs_headers=no
2994     AC_CHECK_HEADERS(afs.h afs/afs.h)
2995     if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2996         if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2997            test x"$samba_cv_WITH_AFS" = x"auto"; then
2998                 AC_MSG_WARN([AFS cannot be supported without afs.h])
2999         else
3000                 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3001         fi
3002     else
3003         have_afs_headers=yes
3004     fi
3005 fi
3006
3007 FAKE_KASERVER_OBJ=""
3008 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3009     AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3010     FAKE_KASERVER_OBJ="utils/net_afs.o"
3011 fi
3012 AC_SUBST(FAKE_KASERVER_OBJ)
3013
3014 #################################################
3015 # check whether to compile AFS/NT ACL mapping module
3016 samba_cv_WITH_VFS_AFSACL=no
3017 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3018 AC_ARG_WITH(vfs-afsacl,
3019 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3020 [ case "$withval" in
3021   yes|auto)
3022     AC_MSG_RESULT($withval)
3023     samba_cv_WITH_VFS_AFSACL=yes
3024     ;;
3025   *)
3026     AC_MSG_RESULT(no)
3027     ;;
3028   esac ],
3029   AC_MSG_RESULT(no)
3030 )
3031
3032 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3033    default_shared_modules="$default_shared_modules vfs_afsacl"
3034 fi
3035         
3036 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3037     AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3038 fi
3039
3040 #################################################
3041 # check for the DFS clear-text auth system
3042 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3043 AC_ARG_WITH(dfs,
3044 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3045 [ case "$withval" in
3046   yes)
3047     AC_MSG_RESULT(yes)
3048     AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3049     ;;
3050   *)
3051     AC_MSG_RESULT(no)
3052     ;;
3053   esac ],
3054   AC_MSG_RESULT(no)
3055 )
3056
3057 ########################################################
3058 # Compile with LDAP support?
3059
3060 with_ldap_support=auto
3061 AC_MSG_CHECKING([for LDAP support])
3062
3063 AC_ARG_WITH(ldap,
3064 [AS_HELP_STRING([--with-ldap], [LDAP support (default yes)])],
3065 [ case "$withval" in
3066     yes|no)
3067         with_ldap_support=$withval
3068         ;;
3069   esac ])
3070
3071 AC_MSG_RESULT($with_ldap_support)
3072
3073 SMBLDAP=""
3074 AC_SUBST(SMBLDAP)
3075 SMBLDAPUTIL=""
3076 AC_SUBST(SMBLDAPUTIL)
3077 LDBLDAP=""
3078 AC_SUBST(LDBLDAP)
3079
3080 if test x"$with_ldap_support" != x"no"; then
3081
3082   ##################################################################
3083   # first test for ldap.h and lber.h
3084   # (ldap.h is required for this test)
3085   AC_CHECK_HEADERS(ldap.h lber.h)
3086
3087   if test x"$ac_cv_header_ldap_h" != x"yes"; then
3088         if test x"$with_ldap_support" = x"yes"; then
3089          AC_MSG_ERROR(ldap.h is needed for LDAP support)
3090         else
3091          AC_MSG_WARN(ldap.h is needed for LDAP support)
3092         fi
3093         
3094         with_ldap_support=no
3095   fi
3096
3097   ##################################################################
3098   # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3099   # unsigned int in include/includes.h
3100   case $host_os in
3101         *hpux*)
3102          AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3103          AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3104         with_ldap_support=yes
3105         ;;
3106         *)
3107         AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3108         if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3109                 if test x"$with_ldap_support" = x"yes"; then
3110                 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3111                 else
3112                 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3113                 fi
3114                 with_ldap_support=no
3115         fi
3116         ;;
3117   esac
3118 fi
3119
3120 if test x"$with_ldap_support" != x"no"; then
3121   ac_save_LIBS=$LIBS
3122
3123   ##################################################################
3124   # we might need the lber lib on some systems. To avoid link errors
3125   # this test must be before the libldap test
3126   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3127
3128   ########################################################
3129   # If ber_sockbuf_add_io() is available we can add
3130   # SASL wrapping hooks
3131   AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3132
3133   AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3134                  AC_TRY_COMPILE([#include <ldap.h>],
3135                                 [int val = LDAP_OPT_SOCKBUF;],
3136                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3137                         samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3138
3139   if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3140           x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3141         AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3142   fi
3143
3144   #######################################################
3145   # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3146   # ldap logging and print it out in the samba logs
3147   AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3148                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3149                  [AC_TRY_COMPILE([#include <lber.h>],
3150                                  [int val = LBER_OPT_LOG_PRINT_FN;],
3151                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3152                                  samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3153
3154   if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3155         AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3156                   [Support for LDAP/LBER logging interception])
3157   fi
3158
3159   ########################################################
3160   # now see if we can find the ldap libs in standard paths
3161   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3162
3163   ########################################################
3164   # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3165   # Check found in pam_ldap 145.
3166   AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3167
3168   LIBS="$LIBS $LDAP_LIBS"
3169   AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3170     AC_TRY_COMPILE([
3171         #include <lber.h>
3172         #include <ldap.h>],
3173         [ldap_set_rebind_proc(0, 0, 0);],
3174         [smb_ldap_cv_ldap_set_rebind_proc=3],
3175         [smb_ldap_cv_ldap_set_rebind_proc=2]
3176     )
3177   ])
3178
3179   AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3180
3181   AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3182
3183   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3184     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3185     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3186     default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3187     default_shared_modules="$default_shared_modules";
3188     SMBLDAP="lib/smbldap.o"
3189     SMBLDAPUTIL="lib/smbldap_util.o"
3190     with_ldap_support=yes
3191     AC_MSG_CHECKING(whether LDAP support is used)
3192     AC_MSG_RESULT(yes)
3193   else
3194     if test x"$with_ldap_support" = x"yes"; then
3195         AC_MSG_ERROR(libldap is needed for LDAP support)
3196     else
3197         AC_MSG_WARN(libldap is needed for LDAP support)
3198     fi
3199
3200     LDAP_LIBS=""
3201     with_ldap_support=no
3202   fi
3203   LIBS=$ac_save_LIBS
3204 fi
3205
3206
3207 #################################################
3208 # active directory support
3209
3210 with_ads_support=auto
3211 AC_MSG_CHECKING([for Active Directory and krb5 support])
3212
3213 AC_ARG_WITH(ads,
3214 [AS_HELP_STRING([--with-ads], [Active Directory support (default auto)])],
3215 [ case "$withval" in
3216     yes|no)
3217         with_ads_support="$withval"
3218         ;;
3219   esac ])
3220
3221 AC_MSG_RESULT($with_ads_support)
3222
3223 FOUND_KRB5=no
3224 KRB5_LIBS=""
3225
3226 if test x"$with_ldap_support" != x"yes"; then
3227
3228     if test x"$with_ads_support" = x"yes"; then
3229         AC_MSG_ERROR(Active Directory Support requires LDAP support)
3230     elif test x"$with_ads_support" = x"auto"; then
3231         AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3232         with_ads_support=no
3233     fi
3234
3235 else
3236
3237     # Check to see whether there is enough LDAP functionality to be able
3238     # to build AD support.
3239
3240 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3241 case "$host_os" in
3242         *hpux*)
3243     AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3244
3245     if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3246         if test x"$with_ads_support" = x"yes"; then
3247             AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3248         elif test x"$with_ads_support" = x"auto"; then
3249             AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3250             with_ads_support=no
3251         fi
3252     fi
3253     ;;
3254         *)
3255     AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3256
3257     if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3258         if test x"$with_ads_support" = x"yes"; then
3259             AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3260         elif test x"$with_ads_support" = x"auto"; then
3261             AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3262             with_ads_support=no
3263         fi
3264     fi
3265     ;;
3266 esac
3267
3268
3269     AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3270
3271     if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3272         if test x"$with_ads_support" = x"yes"; then
3273             AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3274         elif test x"$with_ads_support" = x"auto"; then
3275             AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3276             with_ads_support=no
3277         fi
3278     fi
3279
3280 fi
3281
3282 if test x"$with_ads_support" != x"no"; then
3283
3284   # Do no harm to the values of CFLAGS and LIBS while testing for
3285   # Kerberos support.
3286
3287   if test x$FOUND_KRB5 = x"no"; then
3288     #################################################
3289     # check for location of Kerberos 5 install
3290     AC_MSG_CHECKING(for kerberos 5 install path)
3291     AC_ARG_WITH(krb5,
3292     [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3293     [ case "$withval" in
3294       no)
3295         AC_MSG_RESULT(no krb5-path given)
3296         ;;
3297       yes)
3298         AC_MSG_RESULT(/usr)
3299         FOUND_KRB5=yes
3300         ;;
3301       *)
3302         AC_MSG_RESULT($withval)
3303         KRB5_CFLAGS="-I$withval/include"
3304         KRB5_CPPFLAGS="-I$withval/include"
3305         KRB5_LDFLAGS="-L$withval/lib"
3306         FOUND_KRB5=yes
3307         if test -x "$withval/bin/krb5-config"; then
3308                 KRB5CONFIG=$withval/bin/krb5-config
3309         fi
3310         ;;
3311       esac ],
3312       AC_MSG_RESULT(no krb5-path given)
3313     )
3314   fi
3315
3316   #################################################
3317   # check for krb5-config from recent MIT and Heimdal kerberos 5
3318   AC_PATH_PROG(KRB5CONFIG, krb5-config)
3319   AC_MSG_CHECKING(for working krb5-config)
3320   if test -x "$KRB5CONFIG"; then
3321     ac_save_CFLAGS=$CFLAGS
3322     CFLAGS="";export CFLAGS
3323     ac_save_LDFLAGS=$LDFLAGS
3324     LDFLAGS="";export LDFLAGS
3325     KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3326     KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3327     KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3328     KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3329     CFLAGS=$ac_save_CFLAGS;export CFLAGS
3330     LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3331     FOUND_KRB5=yes
3332     AC_MSG_RESULT(yes)
3333   else
3334     AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3335   fi
3336
3337   if test x$FOUND_KRB5 = x"no"; then
3338     #################################################
3339     # see if this box has the SuSE location for the heimdal krb implementation
3340     AC_MSG_CHECKING(for /usr/include/heimdal)
3341     if test -d /usr/include/heimdal; then
3342       if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3343           KRB5_CFLAGS="-I/usr/include/heimdal"
3344           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3345           KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3346           FOUND_KRB5=yes
3347           AC_MSG_RESULT(yes)
3348       else
3349           KRB5_CFLAGS="-I/usr/include/heimdal"
3350           KRB5_CPPFLAGS="-I/usr/include/heimdal"
3351           FOUND_KRB5=yes
3352           AC_MSG_RESULT(yes)
3353       fi
3354     else
3355       AC_MSG_RESULT(no)
3356     fi
3357   fi
3358
3359   if test x$FOUND_KRB5 = x"no"; then
3360     #################################################
3361     # see if this box has the RedHat location for kerberos
3362     AC_MSG_CHECKING(for /usr/kerberos)
3363     if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3364       KRB5_LDFLAGS="-L/usr/kerberos/lib"
3365       KRB5_CFLAGS="-I/usr/kerberos/include"
3366       KRB5_CPPFLAGS="-I/usr/kerberos/include"
3367       FOUND_KRB5=yes
3368       AC_MSG_RESULT(yes)
3369     else
3370       AC_MSG_RESULT(no)
3371     fi
3372   fi
3373
3374   if test x$FOUND_KRB5 = x"no"; then
3375     #################################################
3376     # see if this box has the OpenBSD location for heimdal krb5
3377     AC_MSG_CHECKING(for /usr/include/kerberosV)
3378     if test -d /usr/include/kerberosV; then
3379       KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3380       KRB5_LIBS="-lcrypto"
3381       FOUND_KRB5=yes
3382       AC_MSG_RESULT(yes)
3383     else
3384       AC_MSG_RESULT(no)
3385     fi
3386   fi
3387
3388   ac_save_CFLAGS=$CFLAGS
3389   ac_save_CPPFLAGS=$CPPFLAGS
3390   ac_save_LDFLAGS=$LDFLAGS
3391
3392   CFLAGS="$KRB5_CFLAGS $CFLAGS"
3393   CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3394   LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3395
3396   KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3397
3398   # now check for krb5.h. Some systems have the libraries without the headers!
3399   # note that this check is done here to allow for different kerberos
3400   # include paths
3401   AC_CHECK_HEADERS(krb5.h)
3402
3403   if test x"$ac_cv_header_krb5_h" = x"no"; then
3404
3405     # Give a warning if AD support was not explicitly requested,
3406     # i.e with_ads_support = auto, otherwise die with an error.
3407
3408     if test x"$with_ads_support" = x"yes"; then
3409       AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3410     else
3411       AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3412     fi
3413
3414     # Turn off AD support and restore CFLAGS and LIBS variables
3415
3416     with_ads_support="no"
3417
3418     CFLAGS=$ac_save_CFLAGS
3419     CPPFLAGS=$ac_save_CPPFLAGS
3420     LDFLAGS=$ac_save_LDFLAGS
3421   fi
3422   AC_CHECK_HEADERS(krb5/locate_plugin.h)
3423   if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3424         WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3425         EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3426   fi
3427 fi
3428
3429 # Now we have determined whether we really want ADS support
3430 use_ads=no
3431 if test x"$with_ads_support" != x"no"; then
3432   use_ads=yes
3433   have_gssapi=no
3434   ac_save_LIBS=$LIBS
3435
3436   # now check for gssapi headers.  This is also done here to allow for
3437   # different kerberos include paths
3438   AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3439
3440   ##################################################################
3441   # we might need the k5crypto and com_err libraries on some systems
3442   AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3443   AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3444
3445   # Heimdal checks.
3446   AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3447   AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3448   AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3449
3450   # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3451   AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3452
3453   ########################################################
3454   # now see if we can find the krb5 libs in standard paths
3455   # or as specified above
3456   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3457   AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3458
3459   ########################################################
3460   # now see if we can find the gssapi libs in standard paths
3461   if test x"$have_gssapi" != x"yes"; then
3462      AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3463   fi
3464
3465   AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3466   AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3467   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3468   AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3469   AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3470   AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3471   AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3472   AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3473   AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3474   AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3475   AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3476   AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3477   AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3478   AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3479   AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3480   AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3481   AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3482   AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3483   AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3484   AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3485   AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3486   AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3487   AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3488   AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3489   AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3490   AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3491   AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3492   AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3493   AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3494   AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3495   AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3496   AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3497   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3498   AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3499   AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3500   AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3501   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3502   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3503   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3504   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3505   AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3506   AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3507   AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3508
3509   LIBS="$KRB5_LIBS $LIBS"
3510
3511   AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3512         smb_krb5_cv_ticket_has_keyinfo,
3513         [
3514             AC_TRY_COMPILE(
3515             [
3516                 #include <krb5.h>
3517             ],
3518             [
3519                 krb5_ticket ticket;
3520                 krb5_kvno kvno;
3521                 krb5_enctype enctype;
3522
3523                 enctype = ticket.enc_part.enctype;
3524                 kvno = ticket.enc_part.kvno;
3525             ],
3526             [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3527             [ smb_krb5_cv_ticket_has_keyinfo=no ])
3528         ])
3529
3530   if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3531         AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3532             [Whether the krb5_ticket structure contains the kvno and enctype])
3533   fi
3534
3535   AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3536           smb_krb5_cv_creds_opt_free_context,
3537           [
3538                 AC_TRY_COMPILE([
3539                     #include <krb5.h>],
3540                     [
3541                         krb5_context ctx;
3542                         krb5_get_init_creds_opt *opt = NULL;
3543                         krb5_get_init_creds_opt_free(ctx, opt);
3544                     ],
3545                     [smb_krb5_cv_creds_opt_free_context=yes],
3546                     [smb_krb5_cv_creds_opt_free_context=no]
3547                 )
3548           ])
3549
3550   if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3551         AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3552             [Whether krb5_get_init_creds_opt_free takes a context argument])
3553   fi
3554
3555   AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3556     AC_TRY_COMPILE([
3557         #include <krb5.h>],
3558         [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3559         [smb_krb5_cv_verify_checksum=7],
3560         [smb_krb5_cv_verify_checksum=6],
3561     )
3562   ])
3563   AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3564
3565   AC_CACHE_CHECK([for checksum in krb5_checksum],
3566                 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3567     AC_TRY_COMPILE([#include <krb5.h>],
3568       [krb5_checksum cksum; cksum.checksum.length = 0;],
3569       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3570       samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3571
3572   if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3573     AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3574                [Whether the krb5_checksum struct has a checksum property])
3575   fi
3576
3577   AC_CACHE_CHECK([for etype in EncryptedData],
3578                 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3579     AC_TRY_COMPILE([#include <krb5.h>],
3580       [EncryptedData edata; edata.etype = 0;],
3581       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3582       samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3583
3584   if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3585     AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3586                [Whether the EncryptedData struct has a etype property])
3587   fi
3588
3589   AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3590                 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3591     AC_TRY_COMPILE([#include <krb5.h>],
3592       [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3593       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3594       samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3595
3596   if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3597     AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3598                [Whether the krb5_ap_req struct has a ticket pointer])
3599   fi
3600
3601   AC_CACHE_CHECK([for e_data pointer in krb5_error],
3602                 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3603     AC_TRY_COMPILE([#include <krb5.h>],
3604       [krb5_error err; err.e_data = NULL;],
3605       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3606       samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])