source: branches/samba-3.2.x/source/configure.in@ 233

Last change on this file since 233 was 232, checked in by Herwig Bauernfeind, 17 years ago

Update 3.2 branch to 3.2.8

File size: 207.6 KB
Line 
1dnl Process this file with autoconf to produce a configure script.
2
3dnl We must use autotools 2.54 or above
4AC_PREREQ(2.54)
5
6AC_INIT([Samba],[3],[[email protected]])
7
8AC_CONFIG_SRCDIR([include/includes.h])
9AC_CONFIG_HEADER(include/config.h)
10AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
11
12case "$PATH" in
13 */usr/ucb*)
14 AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
15 ;;
16esac
17
18builddir=`pwd`
19AC_SUBST(builddir)
20
21m4_include(m4/samba_version.m4)
22m4_include(m4/check_path.m4)
23
24AC_LIBREPLACE_CC_CHECKS
25
26m4_include(lib/talloc/libtalloc.m4)
27
28TALLOC_OBJS=""
29for obj in ${TALLOC_OBJ}; do
30 TALLOC_OBJS="${TALLOC_OBJS} ${tallocdir}/${obj}"
31done
32AC_SUBST(TALLOC_OBJS)
33
34# TODO: These should come from m4_include(lib/tdb/libtdb.m4)
35# but currently this fails: things have to get merged from s4.
36tdbdir="lib/tdb"
37AC_SUBST(tdbdir)
38TDB_CFLAGS="-I${srcdir-.}/$tdbdir/include"
39AC_SUBST(TDB_CFLAGS)
40TDB_OBJ="common/tdb.o common/dump.o common/transaction.o common/error.o common/traverse.o"
41TDB_OBJ="$TDB_OBJ common/freelist.o common/freelistcheck.o common/io.o common/lock.o common/open.o"
42AC_SUBST(TDB_OBJ)
43
44TDB_OBJS=""
45for obj in ${TDB_OBJ}; do
46 TDB_OBJS="${TDB_OBJS} ${tdbdir}/${obj}"
47done
48AC_SUBST(TDB_OBJS)
49
50SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}"
51SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
52SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
53SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
54SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
55SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
56
57SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/popt"
58
59## cleanup the $(srcdir) in the Makefile if we are outside of the tree
60if test "x${srcdir-.}" != "x."; then
61 SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
62fi
63
64dnl Unique-to-Samba variables we'll be playing with.
65AC_SUBST(SAMBA_CPPFLAGS)
66AC_SUBST(SHELL)
67AC_SUBST(LDSHFLAGS)
68AC_SUBST(SONAMEFLAG)
69AC_SUBST(SHLD)
70AC_SUBST(MODULE_EXPORTS)
71AC_SUBST(DSO_EXPORTS)
72AC_SUBST(HOST_OS)
73AC_SUBST(PICFLAG)
74AC_SUBST(PIE_CFLAGS)
75AC_SUBST(PIE_LDFLAGS)
76AC_SUBST(RELRO_LDFLAGS)
77AC_SUBST(SHLIBEXT)
78AC_SUBST(INSTALLLIBCMD_SH)
79AC_SUBST(INSTALLLIBCMD_A)
80AC_SUBST(UNINSTALLLIBCMD_SH)
81AC_SUBST(UNINSTALLLIBCMD_A)
82
83AC_SUBST(INSTALL_LIBWBCLIENT)
84AC_SUBST(UNINSTALL_LIBWBCLIENT)
85AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
86AC_SUBST(LIBWBCLIENT_SHARED)
87AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
88AC_SUBST(LIBWBCLIENT_STATIC)
89AC_SUBST(LIBWBCLIENT_SOVER)
90AC_SUBST(LIBWBCLIENT)
91AC_SUBST(WINBIND_LIBS)
92
93AC_SUBST(LIBSAMBAUTIL_SHARED)
94
95AC_SUBST(PRINT_LIBS)
96AC_SUBST(AUTH_LIBS)
97AC_SUBST(ACL_LIBS)
98AC_SUBST(PASSDB_LIBS)
99AC_SUBST(IDMAP_LIBS)
100AC_SUBST(KRB5_LIBS)
101AC_SUBST(UUID_LIBS)
102AC_SUBST(LDAP_LIBS)
103AC_SUBST(PAM_MODULES)
104AC_SUBST(INSTALL_PAM_MODULES)
105AC_SUBST(UNINSTALL_PAM_MODULES)
106AC_SUBST(NSS_MODULES)
107AC_SUBST(EXTRA_BIN_PROGS)
108AC_SUBST(CIFSMOUNT_PROGS)
109AC_SUBST(INSTALL_CIFSMOUNT)
110AC_SUBST(UNINSTALL_CIFSMOUNT)
111AC_SUBST(CIFSUPCALL_PROGS)
112AC_SUBST(INSTALL_CIFSUPCALL)
113AC_SUBST(UNINSTALL_CIFSUPCALL)
114AC_SUBST(EXTRA_SBIN_PROGS)
115AC_SUBST(EXTRA_ALL_TARGETS)
116AC_SUBST(CONFIG_LIBS)
117AC_SUBST(NSCD_LIBS)
118
119# compile with optimization and without debugging by default, but
120# allow people to set their own preference.
121# do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
122# if it has no value. This prevent *very* large debug binaries from occurring
123# by default.
124if test "x$CFLAGS" = x; then
125 CFLAGS="-O"
126fi
127if test "x$debug" = "xyes" ; then
128 CFLAGS="${CFLAGS} -g"
129else
130 CFLAGS="-O"
131fi
132
133CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
134
135m4_include(lib/socket_wrapper/config.m4)
136m4_include(lib/nss_wrapper/config.m4)
137
138m4_include(m4/swat.m4)
139
140# Probe the gcc version for extra CFLAGS. We always stash these in
141# DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
142# Makefile edit, avoiding the need to re-run configure.
143if test x"$ac_cv_prog_gcc" = x"yes" ; then
144 DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
145 # Add -Wdeclaration-after-statement if compiler supports it
146 AC_CACHE_CHECK(
147 [that the C compiler understands -Wdeclaration-after-statement],
148 samba_cv_HAVE_Wdeclaration_after_statement, [
149 AC_TRY_RUN_STRICT([
150 int main(void)
151 {
152 return 0;
153 }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
154 samba_cv_HAVE_Wdeclaration_after_statement=yes,
155 samba_cv_HAVE_Wdeclaration_after_statement=no,
156 samba_cv_HAVE_Wdeclaration_after_statement=cross)
157 ])
158
159 if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
160 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
161 fi
162
163 #-Werror-implicit-function-declaration
164 AC_CACHE_CHECK(
165 [that the C compiler understands -Werror-implicit-function-declaration],
166 samba_cv_HAVE_Werror_implicit_function_declaration, [
167 AC_TRY_RUN_STRICT([
168 int main(void)
169 {
170 return 0;
171 }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
172 samba_cv_HAVE_Werror_implicit_function_declaration=yes,
173 samba_cv_HAVE_Werror_implicit_function_declaration=no,
174 samba_cv_HAVE_Werror_implicit_function_declaration=cross)
175 ])
176 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
177 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
178 fi
179
180 # krb5developer is like developer, except we don't get
181 # -Wstrict-prototypes.
182 if test x"$krb5_developer" != x"$yes" ; then
183 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
184 fi
185fi
186
187AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
188
189if test "x$enable_dmalloc" = xyes
190then
191 AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
192 AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
193 [Define to check invariants around some common functions])
194 LIBS="$LIBS -ldmalloc"
195fi
196
197#################################################
198# check for a shared memory profiling support
199AC_MSG_CHECKING(whether to use profiling)
200AC_ARG_WITH(profiling-data,
201[AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
202[ case "$withval" in
203 yes)
204 AC_MSG_RESULT(yes)
205 AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
206 samba_cv_WITH_PROFILE=yes
207 ;;
208 *)
209 AC_MSG_RESULT(no)
210 samba_cv_WITH_PROFILE=no
211 ;;
212 esac ],
213 AC_MSG_RESULT(no)
214)
215
216dnl Checks for programs.
217
218AC_PROG_INSTALL
219AC_PROG_AWK
220AC_PATH_PROG(PERL, perl)
221
222AC_CHECK_TOOL(AR, ar)
223
224dnl Check if we use GNU ld
225LD=ld
226AC_PROG_LD_GNU
227
228dnl Certain versions of GNU ld the default is not to have the
229dnl --allow-shlib-undefined flag defined. This causes a stackload of
230dnl warnings when building modules.
231if test "$ac_cv_prog_gnu_ld" = "yes"; then
232 ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
233 AC_MSG_CHECKING(GNU ld release date)
234 changequote(,)dnl
235 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'`
236 changequote([,])dnl
237 AC_MSG_RESULT(${ac_cv_gnu_ld_date})
238 if test -n "$ac_cv_gnu_ld_date"; then
239 if test "$ac_cv_gnu_ld_date" -lt 20030217; then
240 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
241 fi
242 if test "$ac_cv_gnu_ld_date" -gt 20030101; then
243 ac_cv_gnu_ld_version_script=yes
244 fi
245 else
246 AC_MSG_CHECKING(GNU ld release version)
247 changequote(,)dnl
248 ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
249 ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
250 ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
251 changequote([,])dnl
252 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
253 AC_MSG_CHECKING(GNU ld release version major)
254 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
255 AC_MSG_CHECKING(GNU ld release version minor)
256 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
257 if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
258 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
259 fi
260 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
261 ac_cv_gnu_ld_version_script=yes
262 fi
263 fi
264fi
265
266dnl look for executable suffix
267AC_EXEEXT
268
269dnl Check if C compiler understands -c and -o at the same time
270AC_PROG_CC_C_O
271if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
272 BROKEN_CC=
273else
274 BROKEN_CC=#
275fi
276AC_SUBST(BROKEN_CC)
277
278dnl Check if the C compiler understands -Werror
279AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
280 AC_TRY_RUN_STRICT([
281 int main(void)
282 {
283 return 0;
284 }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
285 samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
286if test x"$samba_cv_HAVE_Werror" = x"yes"; then
287 Werror_FLAGS="-Werror"
288else
289dnl Check if the C compiler understands -w2
290AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
291 AC_TRY_RUN_STRICT([
292 int main(void)
293 {
294 return 0;
295 }],[-w2],[$CPPFLAGS],[$LDFLAGS],
296 samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
297if test x"$samba_cv_HAVE_w2" = x"yes"; then
298 Werror_FLAGS="-w2"
299else
300dnl Check if the C compiler understands -errwarn
301AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
302 AC_TRY_RUN_STRICT([
303 int main(void)
304 {
305 return 0;
306 }],[-errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
307 samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
308if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
309 Werror_FLAGS="-errwarn=%all"
310fi
311fi
312fi
313
314dnl Check if the C compiler understands volatile (it should, being ANSI).
315AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
316 AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
317 samba_cv_volatile=yes,samba_cv_volatile=no)])
318if test x"$samba_cv_volatile" = x"yes"; then
319 AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
320fi
321
322############################################
323# check if the compiler can handle negative enum values
324# and don't truncate the values to INT_MAX
325# a runtime test is needed here
326AC_SUBST(PIDL_ARGS)
327AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
328 AC_TRY_RUN(
329[
330 #include <stdio.h>
331 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
332 int main(void) {
333 enum negative_values v1 = NEGATIVE_VALUE;
334 unsigned v2 = NEGATIVE_VALUE;
335
336 if (v1 != 0xFFFFFFFF) {
337 printf("%u != 0xFFFFFFFF\n", v1);
338 return 1;
339 }
340 if (v2 != 0xFFFFFFFF) {
341 printf("%u != 0xFFFFFFFF\n", v2);
342 return 1;
343 }
344
345 return 0;
346 }
347],
348 samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv__CC_NEGATIVE_ENUM_VALUES=no)])
349if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
350 AC_MSG_WARN([using --unit-enums for pidl])
351 PIDL_ARGS="$PIDL_ARGS --uint-enums"
352fi
353
354dnl Figure out the flags to support named structure initializers
355
356LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
357
358UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
359AC_MSG_CHECKING(uname -s)
360AC_MSG_RESULT(${UNAME_S})
361
362UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
363AC_MSG_CHECKING(uname -r)
364AC_MSG_RESULT(${UNAME_R})
365
366UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
367AC_MSG_CHECKING(uname -m)
368AC_MSG_RESULT(${UNAME_M})
369
370UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
371AC_MSG_CHECKING(uname -p)
372AC_MSG_RESULT(${UNAME_P})
373
374UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
375AC_MSG_CHECKING(uname -i)
376AC_MSG_RESULT(${UNAME_I})
377
378dnl Add #include for broken IRIX header files
379 case "$host_os" in
380 *irix6*)
381 #TODO add to libreplace
382 if test x"$ac_cv_prog_gcc" != x"yes" ; then
383 dnl Fix sensible defaults for MIPSPro compilers. The
384 dnl error numbers are valid for the 7.3 compilers,
385 dnl hopefully also valid for the 7.4 series.
386 dnl
387 dnl Bugzilla 3801. Force an error on warning 1035
388 dnl so we don't incorrectly detect stdint.h. This
389 dnl warning is emitted for #error directives.
390 CFLAGS="$CFLAGS -diag_error 1035"
391 dnl 1209: Controlling expression is constant
392 dnl 1174: Function foo declared but never referenced
393 dnl 3201: Parameter foo was never referenced
394 CFLAGS="$CFLAGS -woff 1209,1174,3201"
395 fi
396 ;;
397esac
398
399DYNEXP=
400AC_SUBST(DYNEXP)
401
402dnl Add modules that have to be built by default here
403dnl These have to be built static:
404default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsarpc rpc_samr rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl2 rpc_ntsvcs2 rpc_netlogon rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog2 auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
405
406dnl These are preferably build shared, and static if dlopen() is not available
407default_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_smb_traffic_analyzer"
408
409if test "x$developer" = xyes; then
410 default_static_modules="$default_static_modules rpc_rpcecho"
411 default_shared_modules="$default_shared_modules charset_weird"
412fi
413
414#
415# Config CPPFLAG settings for strange OS's that must be set
416# before other tests. Do NOT invoke AC_CHECK_HEADERS within this
417# case statement; its first reference must be unconditional.
418#
419case "$host_os" in
420 *hpux*)
421#
422# Defines needed for HPUX support.
423# HPUX has bigcrypt but (sometimes?) doesn't use it for
424# password hashing - hence the USE_BOTH_CRYPT_CALLS define.
425#
426 case `uname -r` in
427 *9*|*10*|*11)
428 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
429 ;;
430 esac
431 ;;
432
433#
434# CRAY Unicos has broken const handling
435 *unicos*)
436 AC_MSG_RESULT([disabling const])
437 CPPFLAGS="$CPPFLAGS -Dconst="
438 ;;
439
440#
441# AIX4.x doesn't even admit to having large
442# files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
443#
444 *aix4*)
445 AC_MSG_RESULT([enabling large file support])
446 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
447 AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
448 ;;
449#
450# Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
451# to the existance of large files..
452# Note that -D_LARGEFILE64_SOURCE is different from the Sun
453# recommendations on large file support, however it makes the
454# compile work using gcc 2.7 and 2.8, whereas using the Sun
455# recommendation makes the compile fail on gcc2.7. JRA.
456#
457# Solaris uses SYSV printing. Make sure to set that here. --jerry
458#
459 *solaris*)
460 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
461 case `uname -r` in
462 5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
463 AC_MSG_RESULT([no large file support])
464 ;;
465 5.*)
466 AC_MSG_RESULT([enabling large file support])
467 if test "$ac_cv_prog_gcc" = yes; then
468 ${CC-cc} -v >conftest.c 2>&1
469 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
470 rm -fr conftest.c
471 case "$ac_cv_gcc_compiler_version_number" in
472 *"gcc version 2.6"*|*"gcc version 2.7"*)
473 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
474 LDFLAGS="$LDFLAGS -lthread"
475 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
476 ;;
477 *)
478 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
479 LDFLAGS="$LDFLAGS -lthread"
480 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
481 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
482 ;;
483 esac
484 else
485 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
486 LDFLAGS="$LDFLAGS -lthread"
487 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
488 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
489 fi
490 ;;
491 esac
492 ;;
493#
494# IRIX uses SYSV printing. Make sure to set that here
495#
496 *irix*)
497 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
498 ;;
499 *freebsd*|*dragonfly*)
500 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
501 ;;
502#
503# VOS may need to have POSIX support and System V compatibility enabled.
504#
505 *vos*)
506 case "$CPPFLAGS" in
507 *-D_POSIX_C_SOURCE*)
508 ;;
509 *)
510 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
511 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
512 ;;
513 esac
514 case "$CPPFLAGS" in
515 *-D_SYSV*|*-D_SVID_SOURCE*)
516 ;;
517 *)
518 CPPFLAGS="$CPPFLAGS -D_SYSV"
519 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
520 esac
521 ;;
522#
523# Tests needed for SINIX large file support.
524#
525 *sysv4*)
526 if test $host = mips-sni-sysv4 ; then
527 AC_MSG_CHECKING([for LFS support])
528 old_CPPFLAGS="$CPPFLAGS"
529 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
530 AC_TRY_RUN([
531#include <unistd.h>
532main () {
533#if _LFS64_LARGEFILE == 1
534exit(0);
535#else
536exit(1);
537#endif
538}], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
539 CPPFLAGS="$old_CPPFLAGS"
540 if test x$SINIX_LFS_SUPPORT = xyes ; then
541 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
542 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
543 CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
544 LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
545 LIBS="`getconf LFS64_LIBS` $LIBS"
546 fi
547 AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
548 fi
549 ;;
550
551# Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
552#
553 *linux*)
554 AC_MSG_CHECKING([for LFS support])
555 old_CPPFLAGS="$CPPFLAGS"
556 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
557 AC_TRY_RUN([
558#include <unistd.h>
559#include <sys/utsname.h>
560#include <string.h>
561#include <stdlib.h>
562main() {
563#if _LFS64_LARGEFILE == 1
564 struct utsname uts;
565 char *release;
566 int major, minor;
567
568 /* Ensure this is glibc 2.2 or higher */
569#if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
570 int libc_major = __GLIBC__;
571 int libc_minor = __GLIBC_MINOR__;
572
573 if (libc_major < 2)
574 exit(1);
575 if (libc_minor < 2)
576 exit(1);
577#endif
578
579 /* Ensure this is kernel 2.4 or higher */
580
581 uname(&uts);
582 release = strdup(uts.release);
583 major = atoi(strsep(&release, "."));
584 minor = atoi(strsep(&release, "."));
585
586 if (major > 2 || (major == 2 && minor > 3))
587 exit(0);
588 exit(1);
589#else
590 exit(1);
591#endif
592}
593], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
594 CPPFLAGS="$old_CPPFLAGS"
595 if test x$LINUX_LFS_SUPPORT = xyes ; then
596 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
597 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
598 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
599 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
600 fi
601 AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
602 ;;
603
604#
605# MacOS X is the *only* system that uses compose character in utf8. This
606# is so horribly broken....
607#
608 *darwin*)
609 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
610
611# Add a system specific charset module.
612 default_shared_modules="$default_shared_modules charset_macosxfs"
613
614 ;;
615 *hurd*)
616 AC_MSG_CHECKING([for LFS support])
617 old_CPPFLAGS="$CPPFLAGS"
618 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
619 AC_TRY_RUN([
620#include <unistd.h>
621main () {
622#if _LFS64_LARGEFILE == 1
623exit(0);
624#else
625exit(1);
626#endif
627}], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
628 CPPFLAGS="$old_CPPFLAGS"
629 if test x$GLIBC_LFS_SUPPORT = xyes ; then
630 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
631 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
632 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
633 fi
634 AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
635 ;;
636
637esac
638
639SAVE_CPPFLAGS="${CPPFLAGS}"
640CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
641
642AC_LIBREPLACE_BROKEN_CHECKS
643AC_LIBREPLACE_NETWORK_CHECKS
644
645CPPFLAGS="${SAVE_CPPFLAGS}"
646
647LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
648
649LIBREPLACE_OBJS=""
650for obj in ${LIBREPLACEOBJ}; do
651 LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
652done
653AC_SUBST(LIBREPLACE_OBJS)
654
655# add -ldl to the global LIBS
656LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
657
658AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
659AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
660AC_CHECK_HEADERS(limits.h float.h pthread.h)
661AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
662AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
663AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
664AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
665AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
666AC_CHECK_HEADERS(sys/sysmacros.h)
667AC_CHECK_HEADERS(sys/syslog.h syslog.h)
668AC_CHECK_HEADERS(langinfo.h locale.h)
669AC_CHECK_HEADERS(xfs/libxfs.h)
670AC_CHECK_HEADERS(netgroup.h)
671
672AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
673#if HAVE_RPC_RPC_H
674#include <rpc/rpc.h>
675#endif
676]])
677
678## These fail to compile on IRIX so just check for their presence
679AC_CHECK_HEADERS(sys/mode.h,,,)
680
681# Look for Darwin headers
682old_CPPFLAGS="$CPPFLAGS"
683CPPFLAGS="-Iinclude $CPPFLAGS"
684AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
685CPPFLAGS="$old_CPPFLAGS"
686
687# In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
688# subdirectory of headers.
689AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
690
691# check for linux on amd64 since valgrind is not quite there yet
692case "$host_os" in
693 *linux*)
694 case "$UNAME_P" in
695 *x86_64*)
696 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
697 ;;
698 esac
699 ;;
700esac
701
702
703#
704# HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
705# This causes configure to fail to detect it. Check for shadow separately on HPUX.
706#
707case "$host_os" in
708 *hpux*)
709 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
710 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
711 if test x"$ac_cv_header_shadow_h" = x"yes"; then
712 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
713 fi
714 ;;
715esac
716AC_CHECK_HEADERS(shadow.h)
717AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
718AC_CHECK_HEADERS(syscall.h sys/syscall.h)
719
720AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
721AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
722
723AC_CHECK_HEADERS(sys/cdefs.h glob.h)
724
725# For experimental utmp support (lastlog on some BSD-like systems)
726AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
727
728AC_CHECK_SIZEOF(int,cross)
729AC_CHECK_SIZEOF(long,cross)
730AC_CHECK_SIZEOF(long long,cross)
731AC_CHECK_SIZEOF(short,cross)
732
733AC_C_CONST
734AC_C_INLINE
735AC_C_BIGENDIAN
736AC_C_CHAR_UNSIGNED
737
738AC_TYPE_SIGNAL
739AC_TYPE_UID_T
740AC_TYPE_MODE_T
741AC_TYPE_OFF_T
742AC_TYPE_SIZE_T
743AC_TYPE_PID_T
744AC_STRUCT_ST_RDEV
745AC_DIRENT_D_OFF
746AC_CHECK_TYPE(ssize_t, int)
747AC_CHECK_TYPE(wchar_t, unsigned short)
748
749############################################
750# for cups support we need libcups, and a handful of header files
751
752AC_ARG_ENABLE(cups,
753[AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
754
755if test x$enable_cups != xno; then
756 AC_PATH_PROG(CUPS_CONFIG, cups-config)
757
758 if test "x$CUPS_CONFIG" != x; then
759
760 ac_save_CFLAGS=$CFLAGS
761 ac_save_LDFLAGS=$LDFLAGS
762 ac_save_PRINT_LIBS=$PRINT_LIBS
763 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
764 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
765 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
766 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
767 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
768 x"$ac_cv_header_cups_language_h" = xyes; then
769 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
770 samba_cv_HAVE_CUPS=yes
771 else
772 AC_MSG_WARN([cups-config around but cups-devel not installed])
773 CFLAGS=$ac_save_CFLAGS
774 LDFLAGS=$ac_save_LDFLAGS
775 PRINT_LIBS=$ac_save_PRINT_LIBS
776 fi
777
778 elif test x"$enable_cups" = x"yes"; then
779 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.)
780 fi
781fi
782
783AC_ARG_ENABLE(iprint,
784[AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
785
786if test x$enable_iprint != xno; then
787 if test x"$samba_cv_HAVE_CUPS" = xyes; then
788 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
789 elif test x"$enable_iprint" = x"yes"; then
790 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.)
791 fi
792fi
793
794############################################
795# check if the compiler will optimize out function calls
796AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
797 AC_TRY_LINK([
798#include <stdio.h>],
799[
800 if (0) {
801 this_function_does_not_exist();
802 } else {
803 return 1;
804 }
805
806],
807 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
808if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
809 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
810fi
811
812#############################################
813# check for fd passing struct via msg_control
814AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
815 AC_TRY_COMPILE([
816#include <sys/types.h>
817#include <stdlib.h>
818#include <stddef.h>
819#include <sys/socket.h>
820#include <sys/un.h>],
821[
822 struct msghdr msg;
823 union {
824 struct cmsghdr cm;
825 char control[CMSG_SPACE(sizeof(int))];
826 } control_un;
827 msg.msg_control = control_un.control;
828 msg.msg_controllen = sizeof(control_un.control);
829],
830 samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
831if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
832 AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
833 [If we can use msg_control for passing file descriptors])
834fi
835
836#############################################
837# check for fd passing struct via msg_acctrights
838AC_CACHE_CHECK([for fd passing via msg_acctrights],
839 samba_cv_msghdr_msg_acctrights, [
840 AC_TRY_COMPILE([
841#include <sys/types.h>
842#include <stdlib.h>
843#include <stddef.h>
844#include <sys/socket.h>
845#include <sys/un.h>],
846[
847 struct msghdr msg;
848 int fd;
849 msg.msg_acctrights = (caddr_t) &fd;
850 msg.msg_acctrightslen = sizeof(fd);
851],
852 samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
853if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
854 AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
855 [If we can use msg_acctrights for passing file descriptors])
856fi
857
858AC_CHECK_FUNCS(dirfd)
859if test x"$ac_cv_func_dirfd" = x"yes"; then
860 default_shared_modules="$default_shared_modules vfs_syncops"
861fi
862
863AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
864 AC_TRY_COMPILE([
865#include <sys/types.h>
866#if STDC_HEADERS
867#include <stdlib.h>
868#include <stddef.h>
869#endif
870#include <signal.h>],[sig_atomic_t i = 0],
871 samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
872if test x"$samba_cv_sig_atomic_t" = x"yes"; then
873 AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
874fi
875
876AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
877 AC_TRY_COMPILE([
878#include <sys/types.h>
879#if STDC_HEADERS
880#include <stdlib.h>
881#include <stddef.h>
882#endif
883#include <signal.h>],[struct sigevent s;],
884 samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
885if test x"$samba_cv_struct_sigevent" = x"yes"; then
886 AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
887 AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
888 [#include <signal.h>])
889fi
890
891AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
892 AC_TRY_COMPILE([
893#include <sys/types.h>
894#if STDC_HEADERS
895#include <stdlib.h>
896#include <stddef.h>
897#endif
898#if TIME_WITH_SYS_TIME
899# include <sys/time.h>
900# include <time.h>
901#else
902# if HAVE_SYS_TIME_H
903# include <sys/time.h>
904# else
905# include <time.h>
906# endif
907#endif
908],[struct timespec ts;],
909 samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
910if test x"$samba_cv_struct_timespec" = x"yes"; then
911 AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
912fi
913
914# stupid headers have the functions but no declaration. grrrr.
915AC_HAVE_DECL(errno, [#include <errno.h>])
916AC_HAVE_DECL(setresuid, [#include <unistd.h>])
917AC_HAVE_DECL(setresgid, [#include <unistd.h>])
918
919# and glibc has setresuid under linux but the function does
920# nothing until kernel 2.1.44! very dumb.
921AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
922 AC_TRY_RUN([#include <errno.h>
923main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
924 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
925if test x"$samba_cv_have_setresuid" = x"yes"; then
926 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
927fi
928
929# Do the same check for setresguid...
930#
931AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
932 AC_TRY_RUN([#include <unistd.h>
933#include <errno.h>
934main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
935 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
936if test x"$samba_cv_have_setresgid" = x"yes"; then
937 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
938fi
939
940AC_FUNC_MEMCMP
941
942###############################################
943# Readline included by default unless explicitly asked not to
944test "${with_readline+set}" != "set" && with_readline=yes
945
946# test for where we get readline() from
947AC_MSG_CHECKING(whether to use readline)
948AC_ARG_WITH(readline,
949[AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
950[ case "$with_readline" in
951 yes)
952 AC_MSG_RESULT(yes)
953
954 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
955 AC_CHECK_HEADERS(readline/history.h)
956
957 AC_CHECK_HEADERS(readline.h readline/readline.h,[
958 for termlib in ncurses curses termcap terminfo termlib tinfo; do
959 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
960 done
961 AC_CHECK_LIB(readline, rl_callback_handler_install,
962 [TERMLIBS="-lreadline $TERMLIBS"
963 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
964 break], [TERMLIBS=], $TERMLIBS)])
965 ;;
966 no)
967 AC_MSG_RESULT(no)
968 ;;
969 *)
970 AC_MSG_RESULT(yes)
971
972 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
973 # alternate readline path
974 _ldflags=${LDFLAGS}
975 _cppflags=${CPPFLAGS}
976
977 # Add additional search path
978 LDFLAGS="-L$with_readline/lib $LDFLAGS"
979 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
980
981 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
982 AC_CHECK_HEADERS(readline/history.h)
983
984 AC_CHECK_HEADERS(readline.h readline/readline.h,[
985 for termlib in ncurses curses termcap terminfo termlib; do
986 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
987 done
988 AC_CHECK_LIB(readline, rl_callback_handler_install,
989 [TERMLDFLAGS="-L$with_readline/lib"
990 TERMCPPFLAGS="-I$with_readline/include"
991 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
992 TERMLIBS="-lreadline $TERMLIBS"
993 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
994 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
995
996 LDFLAGS=$_ldflags
997 ;;
998 esac],
999 AC_MSG_RESULT(no)
1000)
1001AC_SUBST(TERMLIBS)
1002AC_SUBST(TERMLDFLAGS)
1003
1004# The readline API changed slightly from readline3 to readline4, so
1005# code will generate warnings on one of them unless we have a few
1006# special cases.
1007AC_CHECK_LIB(readline, rl_completion_matches,
1008 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1009 [Do we have rl_completion_matches?])],
1010 [],
1011 [$TERMLIBS])
1012
1013# not all readline libs have rl_event_hook or history_list
1014AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1015AC_CHECK_LIB(readline, history_list,
1016 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1017 [],
1018 [$TERMLIBS])
1019
1020###############################################
1021# test for where we get yp_get_default_domain() from
1022AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1023AC_CHECK_FUNCS(yp_get_default_domain)
1024
1025# Check if we have execl, if not we need to compile smbrun.
1026AC_CHECK_FUNCS(execl)
1027if test x"$ac_cv_func_execl" = x"no"; then
1028 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1029fi
1030
1031AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown lchown chmod fchmod chroot link mknod mknod64)
1032AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1033AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1034AC_CHECK_FUNCS(getrlimit fsync fdatasync memset strlcpy strlcat setpgid)
1035AC_CHECK_FUNCS(memmove setsid glob strpbrk pipe crypt16 getauthuid)
1036AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1037AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1038AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1039AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1040AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1041AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1042AC_CHECK_FUNCS(getpwent_r)
1043AC_CHECK_FUNCS(getdents getdents64)
1044AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1045AC_CHECK_FUNCS(syslog vsyslog timegm)
1046AC_CHECK_FUNCS(setlocale nl_langinfo)
1047AC_CHECK_FUNCS(nanosleep)
1048AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1049AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1050AC_CHECK_HEADERS(sys/mman.h)
1051# setbuffer, shmget, shm_open are needed for smbtorture
1052AC_CHECK_FUNCS(setbuffer shmget shm_open)
1053
1054# Find a method of generating a stack trace
1055AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1056# libexecinfo provides backtrace_symbols on FreeBSD
1057AC_SEARCH_LIBS(backtrace_symbols, [execinfo])
1058AC_CHECK_FUNCS(backtrace_symbols)
1059AC_CHECK_LIB(exc, trace_back_stack)
1060
1061printf "%s" "checking for GPFS GPL libs... "
1062save_LIBS="$LIBS"
1063LIBS="$LIBS -lgpfs_gpl"
1064AC_TRY_LINK([#include <gpfs_gpl.h>],
1065 [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1066 samba_cv_HAVE_GPFS=yes,
1067 samba_cv_HAVE_GPFS=no)
1068echo $samba_cv_HAVE_GPFS
1069if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1070 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1071 default_shared_modules="$default_shared_modules vfs_gpfs"
1072fi
1073LIBS="$save_LIBS"
1074
1075# Note that all the libunwind symbols in the API are defined to internal
1076# platform-specific version, so we must include libunwind.h before checking
1077# any of them.
1078AC_MSG_CHECKING([for libunwind])
1079save_LIBS=$LIBS
1080
1081UNWIND_ARCH="unknown"
1082if test x"$UNAME_I" != x"unknown"; then
1083 UNWIND_ARCH="$UNAME_I"
1084elif test x"$UNAME_M" != x"unknown"; then
1085 UNWIND_ARCH="$UNAME_M"
1086elif test x"$UNAME_P" != x"unknown"; then
1087 UNWIND_ARCH="$UNAME_P"
1088fi
1089
1090case "$UNWIND_ARCH" in
1091 unknown)
1092 # This probably won't link without
1093 # the platform-specific libunwind.
1094 LIBS="$LIBS -lunwind"
1095 ;;
1096 i386|i586|i686)
1097 # Add the platform-specific libunwind module.
1098 LIBS="$LIBS -lunwind -lunwind-x86"
1099 ;;
1100 *)
1101 # Add the platform-specific libunwind module.
1102 # based on uname -i, uname -m or uname -p
1103 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1104 ;;
1105esac
1106
1107AC_TRY_LINK(
1108 [
1109#ifdef HAVE_LIBUNWIND_H
1110#include <libunwind.h>
1111#endif
1112 ],
1113 [
1114 unw_context_t ctx; unw_cursor_t cur;
1115 char buf[256]; unw_word_t off;
1116 unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1117 unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1118 ],
1119 [
1120 AC_MSG_RESULT(yes)
1121 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1122
1123 # If we have libunwind, test whether we also have libunwind-ptrace
1124 # which would let us unwind arbitrary processes.
1125 save_LIBS=$LIBS
1126 AC_CHECK_HEADERS(libunwind-ptrace.h)
1127 AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1128 [
1129 LIBUNWIND_PTRACE="-lunwind-ptrace";
1130 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1131 [Whether libunwind-ptrace.a is available.])
1132 ],
1133 [ LIBUNWIND_PTRACE="" ])
1134
1135 LIBS=$save_LIBS
1136 ],
1137 [
1138 AC_MSG_RESULT(no)
1139 LIBS=$save_LIBS
1140 ])
1141
1142# To use libunwind-ptrace, we also need to make some ptrace system calls.
1143if test x"$LIBUNWIND_PTRACE" != x"" ; then
1144 AC_CHECK_HEADERS(sys/ptrace.h)
1145 AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1146 AC_TRY_LINK(
1147 [
1148#if HAVE_SYS_TYPES_H
1149#include <sys/types.h>
1150#endif
1151#if HAVE_SYS_PTRACE_H
1152#include <sys/ptrace.h>
1153#endif
1154 ],
1155 [
1156 int main(int argc, const char ** argv)
1157 {
1158 pid_t me = (pid_t)-1;
1159 ptrace(PTRACE_ATTACH, me, 0, 0);
1160 ptrace(PTRACE_DETACH, me, 0, 0);
1161 return 0;
1162 }
1163 ],
1164 [
1165 AC_MSG_RESULT(yes)
1166 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1167 [Whether the Linux ptrace(2) interface is available.])
1168 ],
1169 [
1170 AC_MSG_RESULT(no)
1171 LIBUNWIND_PTRACE=""
1172 ])
1173fi
1174
1175AC_SUBST(LIBUNWIND_PTRACE)
1176
1177AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1178AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1179AC_CHECK_FUNCS(__getcwd _getcwd)
1180AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1181AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1182AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1183AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1184AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1185AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1186AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1187AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1188AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1189AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1190AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1191AC_CHECK_FUNCS(prctl)
1192
1193AC_TRY_COMPILE([
1194#ifdef HAVE_SYS_PRCTL_H
1195#include <sys/prctl.h>
1196#endif
1197],
1198[int i; i = prtcl(0); ],
1199AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1200
1201#
1202#
1203#
1204case "$host_os" in
1205 *linux*)
1206 # glibc <= 2.3.2 has a broken getgrouplist
1207 AC_TRY_RUN([
1208#include <unistd.h>
1209#include <sys/utsname.h>
1210main() {
1211 /* glibc up to 2.3 has a broken getgrouplist */
1212#if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1213 int libc_major = __GLIBC__;
1214 int libc_minor = __GLIBC_MINOR__;
1215
1216 if (libc_major < 2)
1217 exit(1);
1218 if ((libc_major == 2) && (libc_minor <= 3))
1219 exit(1);
1220#endif
1221 exit(0);
1222}
1223], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1224 if test x"$linux_getgrouplist_ok" = x"yes"; then
1225 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1226 fi
1227 ;;
1228 *)
1229 AC_CHECK_FUNCS(getgrouplist)
1230 ;;
1231esac
1232
1233#
1234# stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1235#
1236
1237if test x$ac_cv_func_stat64 = xno ; then
1238 AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1239 AC_TRY_LINK([
1240#if defined(HAVE_UNISTD_H)
1241#include <unistd.h>
1242#endif
1243#include <sys/stat.h>
1244], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1245 AC_MSG_RESULT([$ac_cv_func_stat64])
1246 if test x$ac_cv_func_stat64 = xyes ; then
1247 AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1248 fi
1249fi
1250
1251if test x$ac_cv_func_lstat64 = xno ; then
1252 AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1253 AC_TRY_LINK([
1254#if defined(HAVE_UNISTD_H)
1255#include <unistd.h>
1256#endif
1257#include <sys/stat.h>
1258], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1259 AC_MSG_RESULT([$ac_cv_func_lstat64])
1260 if test x$ac_cv_func_lstat64 = xyes ; then
1261 AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1262 fi
1263fi
1264
1265if test x$ac_cv_func_fstat64 = xno ; then
1266 AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1267 AC_TRY_LINK([
1268#if defined(HAVE_UNISTD_H)
1269#include <unistd.h>
1270#endif
1271#include <sys/stat.h>
1272], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1273 AC_MSG_RESULT([$ac_cv_func_fstat64])
1274 if test x$ac_cv_func_fstat64 = xyes ; then
1275 AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1276 fi
1277fi
1278
1279#################################################
1280# Check whether struct stat has timestamps with sub-second resolution.
1281# At least IRIX and Solaris have these. FREEBSD does as well,
1282# but with different members
1283#
1284# We check that
1285# all of st_mtim, st_atim and st_ctim exist
1286# all of the members are in fact of type struct timespec
1287#
1288# There is some conflicting standards weirdness about whether we should use
1289# "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1290# prefer struct timespec.
1291AC_CACHE_CHECK([whether struct stat has timespec timestamps],
1292 samba_cv_stat_timespec_hires,
1293 [
1294 AC_TRY_COMPILE(
1295 [
1296#if TIME_WITH_SYS_TIME
1297# include <sys/time.h>
1298# include <time.h>
1299#else
1300# if HAVE_SYS_TIME_H
1301# include <sys/time.h>
1302# else
1303# include <time.h>
1304# endif
1305#endif
1306#ifdef HAVE_SYS_STAT_H
1307#include <sys/stat.h>
1308#endif
1309 ],
1310 [
1311 struct timespec t;
1312 struct stat s = {0};
1313 t = s.st_mtimespec;
1314 t = s.st_ctimespec;
1315 t = s.st_atimespec;
1316 ],
1317 samba_cv_stat_timespec_hires=yes, samba_cv_stat_timespec_hires=no)
1318 ])
1319
1320if test x"$samba_cv_stat_timespec_hires" = x"yes" ; then
1321 AC_DEFINE(HAVE_STAT_ST_MTIMESPEC, 1, [whether struct stat contains st_mtimepec])
1322 AC_DEFINE(HAVE_STAT_ST_ATIMESPEC, 1, [whether struct stat contains st_atimespec])
1323 AC_DEFINE(HAVE_STAT_ST_CTIMESPEC, 1, [whether struct stat contains st_ctimespec])
1324 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1, [whether struct stat has sub-second timestamps])
1325fi
1326
1327
1328
1329AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_cv_stat_hires,
1330 [
1331 AC_TRY_COMPILE(
1332 [
1333#if TIME_WITH_SYS_TIME
1334# include <sys/time.h>
1335# include <time.h>
1336#else
1337# if HAVE_SYS_TIME_H
1338# include <sys/time.h>
1339# else
1340# include <time.h>
1341# endif
1342#endif
1343#ifdef HAVE_SYS_STAT_H
1344#include <sys/stat.h>
1345#endif
1346 ],
1347 [
1348 struct timespec t;
1349 struct stat s = {0};
1350 t.tv_sec = s.st_mtim.tv_sec;
1351 t.tv_nsec = s.st_mtim.tv_nsec;
1352 t.tv_sec = s.st_ctim.tv_sec;
1353 t.tv_nsec = s.st_ctim.tv_nsec;
1354 t.tv_sec = s.st_atim.tv_sec;
1355 t.tv_nsec = s.st_atim.tv_nsec;
1356 ],
1357 samba_cv_stat_hires=yes, samba_cv_stat_hires=no)
1358 ])
1359
1360if test x"$samba_cv_stat_hires" = x"yes" ; then
1361 AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1362 AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1363 AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1364 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1365 [whether struct stat has sub-second timestamps])
1366fi
1367
1368AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec suffixed nsec], samba_cv_stat_hires_notimespec,
1369 [
1370 AC_TRY_COMPILE(
1371 [
1372#if TIME_WITH_SYS_TIME
1373# include <sys/time.h>
1374# include <time.h>
1375#else
1376# if HAVE_SYS_TIME_H
1377# include <sys/time.h>
1378# else
1379# include <time.h>
1380# endif
1381#endif
1382#ifdef HAVE_SYS_STAT_H
1383#include <sys/stat.h>
1384#endif
1385 ],
1386 [
1387 struct timespec t;
1388 struct stat s = {0};
1389 t.tv_sec = s.st_mtime;
1390 t.tv_nsec = s.st_mtimensec;
1391 t.tv_sec = s.st_ctime;
1392 t.tv_nsec = s.st_ctimensec;
1393 t.tv_sec = s.st_atime;
1394 t.tv_nsec = s.st_atimensec;
1395 ],
1396 samba_cv_stat_hires_notimespec=yes, samba_cv_stat_hires_notimespec=no)
1397 ])
1398
1399if test x"$samba_cv_stat_hires_notimespec" = x"yes" ; then
1400 AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1401 AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1402 AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1403 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1404 [whether struct stat has sub-second timestamps without struct timespec suffixed nsec])
1405fi
1406
1407dnl AIX stype sub-second timestamps:
1408AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec suffixed _n], samba_cv_stat_hires_notimespec_n,
1409 [
1410 AC_TRY_COMPILE(
1411 [
1412#if TIME_WITH_SYS_TIME
1413# include <sys/time.h>
1414# include <time.h>
1415#else
1416# if HAVE_SYS_TIME_H
1417# include <sys/time.h>
1418# else
1419# include <time.h>
1420# endif
1421#endif
1422#ifdef HAVE_SYS_STAT_H
1423#include <sys/stat.h>
1424#endif
1425 ],
1426 [
1427 struct timespec t;
1428 struct stat s = {0};
1429 t.tv_sec = s.st_mtime;
1430 t.tv_nsec = s.st_mtime_n;
1431 t.tv_sec = s.st_ctime;
1432 t.tv_nsec = s.st_ctime_n;
1433 t.tv_sec = s.st_atime;
1434 t.tv_nsec = s.st_atime_n;
1435 ],
1436 samba_cv_stat_hires_notimespec_n=yes, samba_cv_stat_hires_notimespec_n=no)
1437 ])
1438
1439if test x"$samba_cv_stat_hires_notimespec_n" = x"yes" ; then
1440 AC_DEFINE(HAVE_STAT_ST_MTIME_N, 1, [whether struct stat contains st_mtime_n])
1441 AC_DEFINE(HAVE_STAT_ST_ATIME_N, 1, [whether struct stat contains st_atime_n])
1442 AC_DEFINE(HAVE_STAT_ST_CTIME_N, 1, [whether struct stat contains st_ctime_n])
1443 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1444 [whether struct stat has sub-second timestamps without struct timespec suffixed _n])
1445fi
1446
1447dnl Tru64 has _micro_second_ resolution:
1448AC_CACHE_CHECK([whether struct stat has sub-second timestamps in st_uXtime], samba_cv_stat_hires_uxtime,
1449 [
1450 AC_TRY_COMPILE(
1451 [
1452#if TIME_WITH_SYS_TIME
1453# include <sys/time.h>
1454# include <time.h>
1455#else
1456# if HAVE_SYS_TIME_H
1457# include <sys/time.h>
1458# else
1459# include <time.h>
1460# endif
1461#endif
1462#ifdef HAVE_SYS_STAT_H
1463#include <sys/stat.h>
1464#endif
1465 ],
1466 [
1467 struct timespec t;
1468 struct stat s = {0};
1469 t.tv_sec = s.st_mtime;
1470 t.tv_nsec = s.st_umtime * 1000;
1471 t.tv_sec = s.st_ctime;
1472 t.tv_nsec = s.st_uctime * 1000;
1473 t.tv_sec = s.st_atime;
1474 t.tv_nsec = s.st_uatime * 1000;
1475 ],
1476 samba_cv_stat_hires_uxtime=yes, samba_cv_stat_hires_uxtime=no)
1477 ])
1478
1479if test x"$samba_cv_stat_hires_uxtime" = x"yes" ; then
1480 AC_DEFINE(HAVE_STAT_ST_UMTIME, 1, [whether struct stat contains st_umtime])
1481 AC_DEFINE(HAVE_STAT_ST_UATIME, 1, [whether struct stat contains st_uatime])
1482 AC_DEFINE(HAVE_STAT_ST_UCTIME, 1, [whether struct stat contains st_uctime])
1483 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1484 [whether struct stat has sub-second timestamps in st_uXtime])
1485fi
1486
1487AC_CACHE_CHECK([whether struct stat has st_birthtimespec], samba_cv_stat_st_birthtimespec,
1488 [
1489 AC_TRY_COMPILE(
1490 [
1491#if TIME_WITH_SYS_TIME
1492# include <sys/time.h>
1493# include <time.h>
1494#else
1495# if HAVE_SYS_TIME_H
1496# include <sys/time.h>
1497# else
1498# include <time.h>
1499# endif
1500#endif
1501#ifdef HAVE_SYS_STAT_H
1502#include <sys/stat.h>
1503#endif
1504 ],
1505 [
1506 struct timespec t;
1507 struct stat s = {0};
1508 t = s.st_birthtimespec;
1509 ],
1510 samba_cv_stat_st_birthtimespec=yes, samba_cv_stat_st_birthtimespec=no)
1511 ])
1512
1513if test x"$samba_cv_stat_st_birthtimespec" = x"yes" ; then
1514 AC_DEFINE(HAVE_STAT_ST_BIRTHTIMESPEC, 1, [whether struct stat contains st_birthtimespec])
1515fi
1516
1517AC_CACHE_CHECK([whether struct stat has st_birthtimensec], samba_cv_stat_st_birthtimensec,
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.tv_nsec = s.st_birthtimensec;
1539 ],
1540 samba_cv_stat_st_birthtimensec=yes, samba_cv_stat_st_birthtimensec=no)
1541 ])
1542
1543if test x"$samba_cv_stat_st_birthtimensec" = x"yes" ; then
1544 AC_DEFINE(HAVE_STAT_ST_BIRTHTIMENSEC, 1, [whether struct stat contains st_birthtimensec])
1545fi
1546
1547AC_CACHE_CHECK([whether struct stat has st_birthtime], samba_cv_stat_st_birthtime,
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 time_t t;
1567 struct stat s = {0};
1568 t = s.st_birthtime;
1569 ],
1570 samba_cv_stat_st_birthtime=yes, samba_cv_stat_st_birthtime=no)
1571 ])
1572
1573if test x"$samba_cv_stat_st_birthtime" = x"yes" ; then
1574 AC_DEFINE(HAVE_STAT_ST_BIRTHTIME, 1, [whether struct stat contains st_birthtime])
1575fi
1576
1577#####################################
1578# needed for SRV lookups
1579AC_CHECK_LIB(resolv, dn_expand)
1580AC_CHECK_LIB(resolv, _dn_expand)
1581AC_CHECK_LIB(resolv, __dn_expand)
1582
1583#
1584# Check for the functions putprpwnam, set_auth_parameters,
1585# getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1586# Needed for OSF1 and HPUX.
1587#
1588
1589AC_LIBTESTFUNC(security, putprpwnam)
1590AC_LIBTESTFUNC(sec, putprpwnam)
1591
1592AC_LIBTESTFUNC(security, set_auth_parameters)
1593AC_LIBTESTFUNC(sec, set_auth_parameters)
1594
1595# UnixWare 7.x has its getspnam in -lgen
1596AC_LIBTESTFUNC(gen, getspnam)
1597
1598AC_LIBTESTFUNC(security, getspnam)
1599AC_LIBTESTFUNC(sec, getspnam)
1600
1601AC_LIBTESTFUNC(security, bigcrypt)
1602AC_LIBTESTFUNC(sec, bigcrypt)
1603
1604AC_LIBTESTFUNC(security, getprpwnam)
1605AC_LIBTESTFUNC(sec, getprpwnam)
1606
1607AC_CHECK_FUNCS(strsignal)
1608
1609############################################
1610# Check if we have libattr
1611case "$host_os" in
1612 *osf*)
1613 AC_SEARCH_LIBS(getproplist, [proplist])
1614 AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1615 AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1616 AC_CHECK_FUNCS(sizeof_proplist_entry)
1617 ;;
1618 *)
1619 AC_SEARCH_LIBS(getxattr, [attr])
1620 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1621 AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1622 AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1623 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1624 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1625 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1626 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1627 ;;
1628esac
1629
1630########################################################
1631# Check if attropen() is present if this is Solaris
1632case "$host_os" in
1633 *solaris*)
1634 AC_CHECK_FUNCS(attropen)
1635 ;;
1636esac
1637
1638########################################################
1639# Do xattr functions take additional options like on Darwin?
1640if test x"$ac_cv_func_getxattr" = x"yes" ; then
1641 AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1642 old_LIBS=$LIBS
1643 LIBS="$LIBS $ACL_LIBS"
1644 AC_TRY_COMPILE([
1645 #include <sys/types.h>
1646 #if HAVE_ATTR_XATTR_H
1647 #include <attr/xattr.h>
1648 #elif HAVE_SYS_XATTR_H
1649 #include <sys/xattr.h>
1650 #endif
1651 ],[
1652 getxattr(0, 0, 0, 0, 0, 0);
1653 ],
1654 [smb_attr_cv_xattr_add_opt=yes],
1655 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1656 ])
1657 if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1658 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1659 fi
1660fi
1661
1662# Check if we have extattr
1663case "$host_os" in
1664 *freebsd4* | *dragonfly* )
1665 AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1666 ;;
1667 *)
1668 AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1669 AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1670 AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1671 AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1672 ;;
1673esac
1674
1675AC_DISABLE_STATIC
1676AC_ENABLE_SHARED
1677
1678# Set defaults
1679PIE_CFLAGS=""
1680PIE_LDFLAGS=""
1681AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1682
1683if test "x$enable_pie" != xno
1684then
1685 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1686 [
1687 cat > conftest.c <<EOF
1688int foo;
1689main () { return 0;}
1690EOF
1691 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1692 then
1693 samba_cv_fpie=yes
1694 else
1695 samba_cv_fpie=no
1696 fi
1697 rm -f conftest*
1698 ])
1699 if test x"${samba_cv_fpie}" = x"yes"
1700 then
1701 PIE_CFLAGS="-fPIE"
1702 PIE_LDFLAGS="-pie"
1703 fi
1704fi
1705
1706# Set defaults
1707RELRO_LDFLAGS=""
1708AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1709
1710if test "x$enable_relro" != xno
1711then
1712 AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1713 [
1714 cat > conftest.c <<EOF
1715int foo;
1716main () { return 0;}
1717EOF
1718 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1719 then
1720 samba_cv_relro=yes
1721 else
1722 samba_cv_relro=no
1723 fi
1724 rm -f conftest*
1725 ])
1726 if test x"${samba_cv_relro}" = x"yes"
1727 then
1728 RELRO_LDFLAGS="-Wl,-z,relro"
1729 fi
1730fi
1731
1732# Set defaults
1733SYMSEXT="syms"
1734AC_SUBST(SYMSEXT)
1735
1736# Assume non-shared by default and override below
1737BLDSHARED="false"
1738
1739# these are the defaults, good for lots of systems
1740HOST_OS="$host_os"
1741LDSHFLAGS="-shared"
1742MODULE_EXPORTS=""
1743SONAMEFLAG="#"
1744SHLD="\${CC} \${CFLAGS}"
1745PICFLAG="${PIE_CFLAGS}"
1746SHLIBEXT="so"
1747DSO_EXPORTS=""
1748
1749# this bit needs to be modified for each OS that supports share libs
1750# You need to specify how to create a shared library and
1751 # how to compile C code to produce PIC object files
1752
1753 AC_MSG_CHECKING([ability to build shared libraries])
1754
1755 # and these are for particular systems
1756 case "$host_os" in
1757 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux])
1758 BLDSHARED="true"
1759 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1760 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1761 else
1762 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1763 fi
1764 DYNEXP="-Wl,--export-dynamic"
1765 PICFLAG="-fPIC"
1766 SONAMEFLAG="-Wl,-soname="
1767 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1768 ;;
1769 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1770 BLDSHARED="true"
1771 LDSHFLAGS="-G"
1772 SONAMEFLAG="-h "
1773 if test "${GCC}" = "yes"; then
1774 PICFLAG="-fPIC"
1775 SONAMEFLAG="-Wl,-soname="
1776 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1777 DYNEXP="-Wl,-E"
1778 fi
1779 else
1780 PICFLAG="-KPIC"
1781 ## ${CFLAGS} added for building 64-bit shared
1782 ## libs using Sun's Compiler
1783 LDSHFLAGS="-G \${CFLAGS}"
1784 fi
1785 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1786 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1787 ;;
1788 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1789 BLDSHARED="true"
1790 LDSHFLAGS="-G"
1791 SONAMEFLAG="-Wl,-h,"
1792 PICFLAG="-KPIC" # Is this correct for SunOS
1793 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1794 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1795 ;;
1796 *netbsd* | *freebsd* | *dragonfly* )
1797 BLDSHARED="true"
1798 LDSHFLAGS="-shared"
1799 DYNEXP="-Wl,--export-dynamic"
1800 SONAMEFLAG="-Wl,-soname,"
1801 PICFLAG="-fPIC -DPIC"
1802 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1803 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1804 ;;
1805 *openbsd*) BLDSHARED="true"
1806 LDSHFLAGS="-shared"
1807 DYNEXP="-Wl,-Bdynamic"
1808 SONAMEFLAG="-Wl,-soname,"
1809 PICFLAG="-fPIC"
1810 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1811 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1812 ;;
1813 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1814 case "$host_os" in
1815 *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1816 ;;
1817 esac
1818 BLDSHARED="true"
1819 LDSHFLAGS="-set_version sgi1.0 -shared"
1820 SONAMEFLAG="-soname "
1821 SHLD="\${LD}"
1822 if test "${GCC}" = "yes"; then
1823 PICFLAG="-fPIC"
1824 else
1825 PICFLAG="-KPIC"
1826 fi
1827 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1828 ;;
1829 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1830 BLDSHARED="true"
1831 # use expfull to export underscored symbols
1832 # add rtl to remove /lib/crt0.o warning
1833 LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1834 DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1835 PICFLAG="-O2"
1836 # as AIX code is always position independent...
1837 # .po will just create compile warnings, use po.o:
1838 if test "${GCC}" != "yes"; then
1839 ## for funky AIX compiler using strncpy()
1840 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1841 fi
1842
1843 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1844 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1845 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1846 ;;
1847 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1848 # Use special PIC flags for the native HP-UX compiler.
1849 BLDSHARED="true"
1850 SHLD="cc"
1851 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1852 SONAMEFLAG="-Wl,+h "
1853 PICFLAG="+z"
1854 if test "${GCC}" = "yes"; then
1855 PICFLAG="-fPIC"
1856 else
1857 PICFLAG="+z +ESnolit"
1858 fi
1859 if test "$host_cpu" = "ia64"; then
1860 SHLIBEXT="so"
1861 PICFLAG="+z"
1862 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1863 else
1864 SHLIBEXT="sl"
1865 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1866 fi
1867 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1868 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1869 ;;
1870 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1871 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1872 ;;
1873 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1874 BLDSHARED="true"
1875 LDSHFLAGS="-shared"
1876 SONAMEFLAG="-Wl,-soname,"
1877 PICFLAG="-fPIC"
1878 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1879 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1880 ;;
1881 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1882 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1883 ;;
1884 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1885 BLDSHARED="true"
1886 LDSHFLAGS="-shared"
1887 SONAMEFLAG="-Wl,-soname,"
1888 PICFLAG="-KPIC"
1889 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1890 ;;
1891 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1892 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1893 ;;
1894 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1895 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1896 ;;
1897 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1898 case "$host" in
1899 *-univel-*) if [ test "$GCC" != yes ]; then
1900 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1901 fi
1902 LDSHFLAGS="-G"
1903 DYNEXP="-Bexport"
1904 ;;
1905 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1906 esac
1907 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1908 ;;
1909
1910 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1911 if [ test "$GCC" != yes ]; then
1912 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1913 fi
1914 LDSHFLAGS="-G"
1915 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1916 ;;
1917 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1918 BLDSHARED="false"
1919 LDSHFLAGS=""
1920 ;;
1921
1922 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1923 BLDSHARED="true"
1924 LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1925 CFLAGS="$CFLAGS -fno-common"
1926 SHLD="\${CC}"
1927 SHLIBEXT="dylib"
1928 MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1929 SHLIBEXT="dylib"
1930 # Since gcc doesn't fail on unrecognised options, the
1931 # PIE test incorrectly succeeds. Darwin gcc does not
1932 # actually support the PIE stuff.
1933 PIE_LDFLAGS=
1934 PIE_CFLAGS=
1935 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1936 ;;
1937
1938 *)
1939 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1940 ;;
1941 esac
1942
1943if test "$enable_shared" != "yes"; then
1944 BLDSHARED=false
1945fi
1946
1947if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1948 DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1949fi
1950
1951if test x"$BLDSHARED" = x"true" ; then
1952 LDFLAGS="$LDFLAGS -L./bin"
1953fi
1954
1955AC_MSG_RESULT($BLDSHARED)
1956
1957AC_MSG_CHECKING([LDFLAGS])
1958AC_MSG_RESULT([$LDFLAGS])
1959AC_MSG_CHECKING([DYNEXP])
1960AC_MSG_RESULT([$DYNEXP])
1961
1962#######################################################
1963# test whether building a shared library actually works
1964if test $BLDSHARED = true; then
1965
1966AC_MSG_CHECKING([SHLD])
1967AC_MSG_RESULT([$SHLD])
1968AC_MSG_CHECKING([LDSHFLAGS])
1969AC_MSG_RESULT([$LDSHFLAGS])
1970
1971AC_MSG_CHECKING([SHLIBEXT])
1972AC_MSG_RESULT([$SHLIBEXT])
1973AC_MSG_CHECKING([SONAMEFLAG])
1974AC_MSG_RESULT([$SONAMEFLAG])
1975
1976AC_MSG_CHECKING([PICFLAG])
1977AC_MSG_RESULT([$PICFLAG])
1978
1979AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1980AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1981
1982AC_CACHE_CHECK([whether building shared libraries actually works],
1983 [ac_cv_shlib_works],[
1984 # try building a trivial shared library
1985 ac_cv_shlib_works=no
1986 # The $SHLD and $LDSHFLAGS variables may contain references to other
1987 # variables so they need to be eval'ed.
1988 $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1989 shlib.o ${srcdir-.}/tests/shlib.c && \
1990 `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1991 shlib.o && ac_cv_shlib_works=yes
1992 rm -f "shlib.$SHLIBEXT" shlib.o
1993
1994])
1995if test $ac_cv_shlib_works = no; then
1996 BLDSHARED=false
1997fi
1998fi
1999
2000if test x"$BLDSHARED" != x"true"; then
2001 LDSHFLAGS="shared-libraries-disabled"
2002 SONAMEFLAG="shared-libraries-disabled"
2003 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
2004 SHLD="shared-libraries-disabled"
2005 PICFLAG="${PIE_CFLAGS}"
2006 SHLIBEXT="shared_libraries_disabled"
2007fi
2008
2009AC_MSG_CHECKING([used PICFLAG])
2010AC_MSG_RESULT([$PICFLAG])
2011
2012AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
2013
2014AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
2015
2016################
2017
2018AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2019AC_TRY_RUN([#include <stdio.h>
2020main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2021samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2022if test x"$samba_cv_have_longlong" = x"yes"; then
2023 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2024 AC_CHECK_TYPE(intptr_t, unsigned long long)
2025else
2026 AC_CHECK_TYPE(intptr_t, unsigned long)
2027fi
2028
2029#
2030# Check if the compiler supports the LL prefix on long long integers.
2031# AIX needs this.
2032
2033AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2034 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2035 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2036if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2037 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2038fi
2039
2040
2041AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2042AC_TRY_RUN([#include <time.h>
2043main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2044samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2045if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2046 AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2047fi
2048
2049AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2050AC_TRY_RUN([#include <stdio.h>
2051#include <sys/stat.h>
2052main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2053samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2054if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2055 AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2056fi
2057
2058AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2059AC_TRY_RUN([
2060#if defined(HAVE_UNISTD_H)
2061#include <unistd.h>
2062#endif
2063#include <stdio.h>
2064#include <sys/stat.h>
2065main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2066samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2067if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2068 AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2069fi
2070
2071AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2072AC_TRY_RUN([
2073#if defined(HAVE_UNISTD_H)
2074#include <unistd.h>
2075#endif
2076#include <stdio.h>
2077#include <sys/stat.h>
2078main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2079samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2080if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2081 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2082fi
2083
2084AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2085AC_TRY_RUN([
2086#if defined(HAVE_UNISTD_H)
2087#include <unistd.h>
2088#endif
2089#include <stdio.h>
2090#include <sys/stat.h>
2091main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2092samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2093if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2094 AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2095fi
2096
2097AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2098AC_TRY_RUN([
2099#if defined(HAVE_UNISTD_H)
2100#include <unistd.h>
2101#endif
2102#include <stdio.h>
2103#include <sys/stat.h>
2104main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2105samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2106if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2107 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2108fi
2109
2110AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2111AC_TRY_RUN([
2112#if defined(HAVE_UNISTD_H)
2113#include <unistd.h>
2114#endif
2115#include <stdio.h>
2116#include <sys/stat.h>
2117main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2118samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2119if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2120 AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2121fi
2122
2123AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2124AC_TRY_COMPILE([
2125#if defined(HAVE_UNISTD_H)
2126#include <unistd.h>
2127#endif
2128#include <sys/types.h>
2129#include <dirent.h>],
2130[DIR64 de;],
2131samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2132if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2133 AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2134fi
2135
2136AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2137AC_TRY_COMPILE([
2138#if defined(HAVE_UNISTD_H)
2139#include <unistd.h>
2140#endif
2141#include <sys/types.h>
2142#include <dirent.h>],
2143[struct dirent64 de;],
2144samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2145if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2146 AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2147fi
2148
2149AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2150AC_TRY_RUN([
2151#if defined(HAVE_UNISTD_H)
2152#include <unistd.h>
2153#endif
2154#include <sys/types.h>
2155main() { dev_t dev; int i = major(dev); return 0; }],
2156samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2157if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2158 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2159fi
2160
2161AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2162AC_TRY_RUN([
2163#if defined(HAVE_UNISTD_H)
2164#include <unistd.h>
2165#endif
2166#include <sys/types.h>
2167main() { dev_t dev; int i = minor(dev); return 0; }],
2168samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2169if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2170 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2171fi
2172
2173AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2174AC_TRY_RUN([
2175#if defined(HAVE_UNISTD_H)
2176#include <unistd.h>
2177#endif
2178#include <sys/types.h>
2179main() { dev_t dev = makedev(1,2); return 0; }],
2180samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2181if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2182 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2183fi
2184
2185AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2186AC_TRY_RUN([#include <stdio.h>
2187main() { char c; c=250; exit((c > 0)?0:1); }],
2188samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2189if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2190 AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2191fi
2192
2193AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2194AC_TRY_COMPILE([#include <sys/types.h>
2195#include <dirent.h>
2196void seekdir(DIR *d, long loc) { return; }],[return 0;],
2197samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2198if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2199 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2200fi
2201
2202AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2203AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2204samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2205if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2206 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2207fi
2208
2209AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2210AC_TRY_LINK([
2211#include <sys/time.h>
2212#include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2213 samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2214 samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2215if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2216 AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2217fi
2218
2219if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2220
2221 # On some systems (eg. Linux) librt can pull in libpthread. We
2222 # don't want this to happen because libpthreads changes signal delivery
2223 # semantics in ways we are not prepared for. This breaks Linux oplocks
2224 # which rely on signals.
2225
2226 AC_LIBTESTFUNC(rt, clock_gettime,
2227 [
2228 AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2229 [Whether clock_gettime is available])
2230 SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2231 SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2232 SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2233 ])
2234
2235fi
2236
2237AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2238AC_TRY_RUN([#include <sys/types.h>
2239#include <dirent.h>
2240main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2241if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2242di->d_name[0] == 0) exit(0); exit(1);} ],
2243samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2244if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2245 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2246fi
2247
2248AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2249AC_TRY_COMPILE([#include <sys/types.h>
2250#include <utime.h>],
2251[struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2252samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2253if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2254 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2255fi
2256
2257##############
2258# Check utmp details, but only if our OS offers utmp.h
2259if test x"$ac_cv_header_utmp_h" = x"yes"; then
2260dnl utmp and utmpx come in many flavours
2261dnl We need to check for many of them
2262dnl But we don't need to do each and every one, because our code uses
2263dnl mostly just the utmp (not utmpx) fields.
2264
2265AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2266
2267AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2268AC_TRY_COMPILE([#include <sys/types.h>
2269#include <utmp.h>],
2270[struct utmp ut; ut.ut_name[0] = 'a';],
2271samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2272if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2273 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2274fi
2275
2276AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2277AC_TRY_COMPILE([#include <sys/types.h>
2278#include <utmp.h>],
2279[struct utmp ut; ut.ut_user[0] = 'a';],
2280samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2281if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2282 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2283fi
2284
2285AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2286AC_TRY_COMPILE([#include <sys/types.h>
2287#include <utmp.h>],
2288[struct utmp ut; ut.ut_id[0] = 'a';],
2289samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2290if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2291 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2292fi
2293
2294AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2295AC_TRY_COMPILE([#include <sys/types.h>
2296#include <utmp.h>],
2297[struct utmp ut; ut.ut_host[0] = 'a';],
2298samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2299if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2300 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2301fi
2302
2303AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2304AC_TRY_COMPILE([#include <sys/types.h>
2305#include <utmp.h>],
2306[struct utmp ut; time_t t; ut.ut_time = t;],
2307samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2308if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2309 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2310fi
2311
2312AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2313AC_TRY_COMPILE([#include <sys/types.h>
2314#include <utmp.h>],
2315[struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
2316samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2317if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2318 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2319fi
2320
2321AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2322AC_TRY_COMPILE([#include <sys/types.h>
2323#include <utmp.h>],
2324[struct utmp ut; ut.ut_type = 0;],
2325samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2326if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2327 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2328fi
2329
2330AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2331AC_TRY_COMPILE([#include <sys/types.h>
2332#include <utmp.h>],
2333[struct utmp ut; ut.ut_pid = 0;],
2334samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2335if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2336 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2337fi
2338
2339AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2340AC_TRY_COMPILE([#include <sys/types.h>
2341#include <utmp.h>],
2342[struct utmp ut; ut.ut_exit.e_exit = 0;],
2343samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2344if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2345 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2346fi
2347
2348dnl Look for the IPv6 varient by preference. Many systems have both.
2349AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2350AC_TRY_COMPILE([#include <sys/types.h>
2351#include <utmp.h>],
2352[struct utmp ut; ut.ut_addr_v6[0] = 0;],
2353samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2354if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2355 AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2356fi
2357
2358AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2359AC_TRY_COMPILE([#include <sys/types.h>
2360#include <utmp.h>],
2361[struct utmp ut; ut.ut_addr = 0;],
2362samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2363if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2364 AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2365fi
2366
2367if test x$ac_cv_func_pututline = xyes ; then
2368 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2369 AC_TRY_COMPILE([#include <sys/types.h>
2370#include <utmp.h>],
2371 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2372 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2373 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2374 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2375 fi
2376fi
2377
2378AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2379AC_TRY_COMPILE([#include <sys/types.h>
2380#include <utmpx.h>],
2381[struct utmpx ux; ux.ut_syslen = 0;],
2382samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2383if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2384 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2385fi
2386
2387fi
2388# end utmp details
2389
2390
2391ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2392AC_ARG_WITH(libiconv,
2393[AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2394[
2395 if test "$withval" = "no" ; then
2396 AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2397 else
2398 if test "$withval" != "yes" ; then
2399 ICONV_PATH_SPEC=yes
2400 ICONV_LOOK_DIRS="$withval"
2401 fi
2402 fi
2403])
2404
2405for i in $ICONV_LOOK_DIRS ; do
2406
2407 save_LIBS="$LIBS"
2408 save_LDFLAGS="$LDFLAGS"
2409 save_CPPFLAGS="$CPPFLAGS"
2410
2411 iconv_current_LIBS=""
2412 iconv_current_LDFLAGS=""
2413 iconv_current_CPPFLAGS=""
2414
2415 ICONV_FOUND="no"
2416 unset libext
2417
2418 # This is here to handle -withval stuff for --with-libiconv
2419 # Perhaps we should always add a -L
2420 CPPFLAGS="$save_CPPFLAGS -I$i/include"
2421
2422 # Check lib and lib32 library variants to cater for IRIX ABI-specific
2423 # installation paths. This gets a little tricky since we might have iconv
2424 # in both libiconv and in libc. In this case the jm_ICONV test will always
2425 # succeed when the header is found. To counter this, make sure the
2426 # library directory is there and check the ABI directory first (which
2427 # should be harmless on other systems.
2428 # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2429 for l in "lib32" "lib" "lib/hpux32"; do
2430 if test -d "$i/$l" ; then
2431 LDFLAGS="$save_LDFLAGS -L$i/$l"
2432 LIBS=
2433 export LDFLAGS LIBS CPPFLAGS
2434 # Try to find iconv(3)
2435 jm_ICONV($i/$l)
2436 if test x"$ICONV_FOUND" = "xyes" ; then
2437 libext="$l"
2438 break
2439 fi
2440 fi
2441 done
2442
2443 if test x"$ICONV_FOUND" = "xyes" ; then
2444 iconv_current_LDFLAGS="-L$i/$libext"
2445 iconv_current_CPPFLAGS="-I$i/include"
2446
2447 if test x"$jm_cv_lib_iconv" != x; then
2448 iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2449 else
2450 # We found iconv in libc.
2451 iconv_current_LIBS=""
2452 fi
2453
2454 fi
2455
2456 if test x"$ICONV_FOUND" = "xyes" ; then
2457
2458 LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2459 CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2460 LIBS="$save_LIBS $iconv_current_LIBS"
2461 export LDFLAGS LIBS CPPFLAGS
2462
2463 default_dos_charset=no
2464 default_display_charset=no
2465 default_unix_charset=no
2466
2467 # check for default dos charset name
2468 for j in CP850 IBM850 ; do
2469 rjs_CHARSET($j)
2470 default_dos_charset="$ICONV_CHARSET"
2471 if test x"$default_dos_charset" = x"$j"; then
2472 break
2473 fi
2474 done
2475
2476 # check for default display charset name
2477 for j in ASCII 646 ; do
2478 rjs_CHARSET($j)
2479 default_display_charset="$ICONV_CHARSET"
2480 if test x"$default_display_charset" = x"$j"; then
2481 break
2482 fi
2483 done
2484
2485 # check for default unix charset name
2486 for j in UTF-8 UTF8 ; do
2487 rjs_CHARSET($j)
2488 default_unix_charset="$ICONV_CHARSET"
2489 if test x"$default_unix_charset" = x"$j"; then
2490 break
2491 fi
2492 done
2493
2494 if test "$default_dos_charset" != "no" -a \
2495 "$default_dos_charset" != "cross" -a \
2496 "$default_display_charset" != "no" -a \
2497 "$default_display_charset" != "cross" -a \
2498 "$default_unix_charset" != "no" -a \
2499 "$default_unix_charset" != "cross"
2500 then
2501 samba_cv_HAVE_NATIVE_ICONV=yes
2502 else
2503 if test "$default_dos_charset" = "cross" -o \
2504 "$default_display_charset" = "cross" -o \
2505 "$default_unix_charset" = "cross"
2506 then
2507 samba_cv_HAVE_NATIVE_ICONV=cross
2508 else
2509 samba_cv_HAVE_NATIVE_ICONV=no
2510 fi
2511 fi
2512
2513 # At this point, we have a libiconv candidate. We know that
2514 # we have the right headers and libraries, but we don't know
2515 # whether it does the conversions we want. We can't test this
2516 # because we are cross-compiling. This is not necessarily a big
2517 # deal, since we can't guarantee that the results we get now will
2518 # match the results we get at runtime anyway.
2519 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2520 default_dos_charset="CP850"
2521 default_display_charset="ASCII"
2522 default_unix_charset="UTF-8"
2523 samba_cv_HAVE_NATIVE_ICONV=yes
2524 AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2525 AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2526 fi
2527
2528 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2529
2530 CPPFLAGS=$save_CPPFLAGS
2531 LDFLAGS=$save_LDFLAGS
2532 LIBS=$save_LIBS
2533
2534 if test x"$iconv_current_LIBS" != x; then
2535 LIBS="$LIBS $iconv_current_LIBS"
2536 fi
2537
2538 # Add the flags we need to CPPFLAGS and LDFLAGS
2539 CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2540 LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2541
2542 # Turn the #defines into string literals
2543 default_dos_charset="\"$default_dos_charset\""
2544 default_display_charset="\"$default_display_charset\""
2545 default_unix_charset="\"$default_unix_charset\""
2546
2547 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2548 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2549 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2550 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2551
2552 break
2553 fi
2554