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