source: trunk-3.0/source/aclocal.m4@ 102

Last change on this file since 102 was 62, checked in by Paul Smedley, 18 years ago

Update source to 3.0.25c level

File size: 21.2 KB
Line 
1dnl test whether dirent has a d_off member
2AC_DEFUN(AC_DIRENT_D_OFF,
3[AC_CACHE_CHECK([for d_off in dirent], ac_cv_dirent_d_off,
4[AC_TRY_COMPILE([
5#include <unistd.h>
6#include <sys/types.h>
7#include <dirent.h>], [struct dirent d; d.d_off;],
8ac_cv_dirent_d_off=yes, ac_cv_dirent_d_off=no)])
9if test $ac_cv_dirent_d_off = yes; then
10 AC_DEFINE(HAVE_DIRENT_D_OFF,1,[Whether dirent has a d_off member])
11fi
12])
13
14dnl Mark specified module as shared
15dnl SMB_MODULE(name,static_files,shared_files,subsystem,whatif-static,whatif-shared)
16AC_DEFUN(SMB_MODULE,
17[
18 AC_MSG_CHECKING([how to build $1])
19 if test "$[MODULE_][$1]"; then
20 DEST=$[MODULE_][$1]
21 elif test "$[MODULE_]translit([$4], [A-Z], [a-z])" -a "$[MODULE_DEFAULT_][$1]"; then
22 DEST=$[MODULE_]translit([$4], [A-Z], [a-z])
23 else
24 DEST=$[MODULE_DEFAULT_][$1]
25 fi
26
27 if test x"$DEST" = xSHARED; then
28 AC_DEFINE([$1][_init], [init_module], [Whether to build $1 as shared module])
29 $4_MODULES="$$4_MODULES $3"
30 AC_MSG_RESULT([shared])
31 [$6]
32 string_shared_modules="$string_shared_modules $1"
33 elif test x"$DEST" = xSTATIC; then
34 [init_static_modules_]translit([$4], [A-Z], [a-z])="$[init_static_modules_]translit([$4], [A-Z], [a-z]) $1_init();"
35 [decl_static_modules_]translit([$4], [A-Z], [a-z])="$[decl_static_modules_]translit([$4], [A-Z], [a-z]) extern NTSTATUS $1_init(void);"
36 string_static_modules="$string_static_modules $1"
37 $4_STATIC="$$4_STATIC $2"
38 AC_SUBST($4_STATIC)
39 [$5]
40 AC_MSG_RESULT([static])
41 else
42 string_ignored_modules="$string_ignored_modules $1"
43 AC_MSG_RESULT([not])
44 fi
45])
46
47AC_DEFUN(SMB_SUBSYSTEM,
48[
49 AC_SUBST($1_STATIC)
50 AC_SUBST($1_MODULES)
51 AC_DEFINE_UNQUOTED([static_init_]translit([$1], [A-Z], [a-z]), [{$init_static_modules_]translit([$1], [A-Z], [a-z])[}], [Static init functions])
52 AC_DEFINE_UNQUOTED([static_decl_]translit([$1], [A-Z], [a-z]), [$decl_static_modules_]translit([$1], [A-Z], [a-z]), [Decl of Static init functions])
53 ifelse([$2], , :, [rm -f $2])
54])
55
56dnl AC_LIBTESTFUNC(lib, function, [actions if found], [actions if not found])
57dnl Check for a function in a library, but don't keep adding the same library
58dnl to the LIBS variable. Check whether the function is available in the
59dnl current LIBS before adding the library which prevents us spuriously
60dnl adding libraries for symbols that are in libc.
61dnl
62dnl On success, the default actions ensure that HAVE_FOO is defined. The lib
63dnl is always added to $LIBS if it was found to be necessary. The caller
64dnl can use SMB_REMOVE_LIB to strp this if necessary.
65AC_DEFUN([AC_LIBTESTFUNC],
66[
67 AC_CHECK_FUNCS($2,
68 [
69 # $2 was found in libc or existing $LIBS
70 m4_ifval([$3],
71 [
72 $3
73 ],
74 [
75 AC_DEFINE(translit([HAVE_$2], [a-z], [A-Z]), 1,
76 [Whether $2 is available])
77 ])
78 ],
79 [
80 # $2 was not found, try adding lib$1
81 case " $LIBS " in
82 *\ -l$1\ *)
83 m4_ifval([$4],
84 [
85 $4
86 ],
87 [
88 # $2 was not found and we already had lib$1
89 # nothing to do here by default
90 true
91 ])
92 ;;
93 *)
94 # $2 was not found, try adding lib$1
95 AC_CHECK_LIB($1, $2,
96 [
97 LIBS="-l$1 $LIBS"
98 m4_ifval([$3],
99 [
100 $3
101 ],
102 [
103 AC_DEFINE(translit([HAVE_$2], [a-z], [A-Z]), 1,
104 [Whether $2 is available])
105 ])
106 ],
107 [
108 m4_ifval([$4],
109 [
110 $4
111 ],
112 [
113 # $2 was not found in lib$1
114 # nothing to do here by default
115 true
116 ])
117 ])
118 ;;
119 esac
120 ])
121])
122
123# AC_CHECK_LIB_EXT(LIBRARY, [EXT_LIBS], [FUNCTION],
124# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
125# [ADD-ACTION-IF-FOUND],[OTHER-LIBRARIES])
126# ------------------------------------------------------
127#
128# Use a cache variable name containing both the library and function name,
129# because the test really is for library $1 defining function $3, not
130# just for library $1. Separate tests with the same $1 and different $3s
131# may have different results.
132#
133# Note that using directly AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$1_$3])
134# is asking for trouble, since AC_CHECK_LIB($lib, fun) would give
135# ac_cv_lib_$lib_fun, which is definitely not what was meant. Hence
136# the AS_LITERAL_IF indirection.
137#
138# FIXME: This macro is extremely suspicious. It DEFINEs unconditionally,
139# whatever the FUNCTION, in addition to not being a *S macro. Note
140# that the cache does depend upon the function we are looking for.
141#
142# It is on purpose we used `ac_check_lib_ext_save_LIBS' and not just
143# `ac_save_LIBS': there are many macros which don't want to see `LIBS'
144# changed but still want to use AC_CHECK_LIB_EXT, so they save `LIBS'.
145# And ``ac_save_LIBS' is too tempting a name, so let's leave them some
146# freedom.
147AC_DEFUN([AC_CHECK_LIB_EXT],
148[
149AH_CHECK_LIB_EXT([$1])
150ac_check_lib_ext_save_LIBS=$LIBS
151LIBS="-l$1 $$2 $7 $LIBS"
152AS_LITERAL_IF([$1],
153 [AS_VAR_PUSHDEF([ac_Lib_ext], [ac_cv_lib_ext_$1])],
154 [AS_VAR_PUSHDEF([ac_Lib_ext], [ac_cv_lib_ext_$1''])])dnl
155
156m4_ifval([$3],
157 [
158 AH_CHECK_FUNC_EXT([$3])
159 AS_LITERAL_IF([$1],
160 [AS_VAR_PUSHDEF([ac_Lib_func], [ac_cv_lib_ext_$1_$3])],
161 [AS_VAR_PUSHDEF([ac_Lib_func], [ac_cv_lib_ext_$1''_$3])])dnl
162 AC_CACHE_CHECK([for $3 in -l$1], ac_Lib_func,
163 [AC_TRY_LINK_FUNC($3,
164 [AS_VAR_SET(ac_Lib_func, yes);
165 AS_VAR_SET(ac_Lib_ext, yes)],
166 [AS_VAR_SET(ac_Lib_func, no);
167 AS_VAR_SET(ac_Lib_ext, no)])
168 ])
169 AS_IF([test AS_VAR_GET(ac_Lib_func) = yes],
170 [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$3))])dnl
171 AS_VAR_POPDEF([ac_Lib_func])dnl
172 ],[
173 AC_CACHE_CHECK([for -l$1], ac_Lib_ext,
174 [AC_TRY_LINK_FUNC([main],
175 [AS_VAR_SET(ac_Lib_ext, yes)],
176 [AS_VAR_SET(ac_Lib_ext, no)])
177 ])
178 ])
179LIBS=$ac_check_lib_ext_save_LIBS
180
181AS_IF([test AS_VAR_GET(ac_Lib_ext) = yes],
182 [m4_default([$4],
183 [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_LIB$1))
184 case "$$2" in
185 *-l$1*)
186 ;;
187 *)
188 $2="-l$1 $$2"
189 ;;
190 esac])
191 [$6]
192 ],
193 [$5])dnl
194AS_VAR_POPDEF([ac_Lib_ext])dnl
195])# AC_CHECK_LIB_EXT
196
197# AH_CHECK_LIB_EXT(LIBNAME)
198# ---------------------
199m4_define([AH_CHECK_LIB_EXT],
200[AH_TEMPLATE(AS_TR_CPP(HAVE_LIB$1),
201 [Define to 1 if you have the `]$1[' library (-l]$1[).])])
202
203# AC_CHECK_FUNCS_EXT(FUNCTION, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
204# -----------------------------------------------------------------
205dnl check for a function in a $LIBS and $OTHER_LIBS libraries variable.
206dnl AC_CHECK_FUNC_EXT(func,OTHER_LIBS,IF-TRUE,IF-FALSE)
207AC_DEFUN([AC_CHECK_FUNC_EXT],
208[
209 AH_CHECK_FUNC_EXT($1)
210 ac_check_func_ext_save_LIBS=$LIBS
211 LIBS="$2 $LIBS"
212 AS_VAR_PUSHDEF([ac_var], [ac_cv_func_ext_$1])dnl
213 AC_CACHE_CHECK([for $1], ac_var,
214 [AC_LINK_IFELSE([AC_LANG_FUNC_LINK_TRY([$1])],
215 [AS_VAR_SET(ac_var, yes)],
216 [AS_VAR_SET(ac_var, no)])])
217 LIBS=$ac_check_func_ext_save_LIBS
218 AS_IF([test AS_VAR_GET(ac_var) = yes],
219 [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1])) $3],
220 [$4])dnl
221AS_VAR_POPDEF([ac_var])dnl
222])# AC_CHECK_FUNC
223
224# AH_CHECK_FUNC_EXT(FUNCNAME)
225# ---------------------
226m4_define([AH_CHECK_FUNC_EXT],
227[AH_TEMPLATE(AS_TR_CPP(HAVE_$1),
228 [Define to 1 if you have the `]$1[' function.])])
229
230dnl Define an AC_DEFINE with ifndef guard.
231dnl AC_N_DEFINE(VARIABLE [, VALUE])
232define(AC_N_DEFINE,
233[cat >> confdefs.h <<\EOF
234[#ifndef] $1
235[#define] $1 ifelse($#, 2, [$2], $#, 3, [$2], 1)
236[#endif]
237EOF
238])
239
240dnl Add an #include
241dnl AC_ADD_INCLUDE(VARIABLE)
242define(AC_ADD_INCLUDE,
243[cat >> confdefs.h <<\EOF
244[#include] $1
245EOF
246])
247
248dnl Copied from libtool.m4
249AC_DEFUN(AC_PROG_LD_GNU,
250[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
251[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
252if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
253 ac_cv_prog_gnu_ld=yes
254else
255 ac_cv_prog_gnu_ld=no
256fi])
257])
258
259dnl Removes -I/usr/include/? from given variable
260AC_DEFUN(CFLAGS_REMOVE_USR_INCLUDE,[
261 ac_new_flags=""
262 for i in [$]$1; do
263 case [$]i in
264 -I/usr/include|-I/usr/include/) ;;
265 *) ac_new_flags="[$]ac_new_flags [$]i" ;;
266 esac
267 done
268 $1=[$]ac_new_flags
269])
270
271dnl Removes '-L/usr/lib[/]', '-Wl,-rpath,/usr/lib[/]'
272dnl and '-Wl,-rpath -Wl,/usr/lib[/]' from given variable
273AC_DEFUN(LIB_REMOVE_USR_LIB,[
274 ac_new_flags=""
275 l=""
276 for i in [$]$1; do
277 case [$]l[$]i in
278 -L/usr/lib) ;;
279 -L/usr/lib/) ;;
280 -Wl,-rpath,/usr/lib) ;;
281 -Wl,-rpath,/usr/lib/) ;;
282 -Wl,-rpath) l=[$]i;;
283 -Wl,-rpath-Wl,/usr/lib) l="";;
284 -Wl,-rpath-Wl,/usr/lib/) l="";;
285 *)
286 s=" "
287 if test x"[$]ac_new_flags" = x""; then
288 s="";
289 fi
290 if test x"[$]l" = x""; then
291 ac_new_flags="[$]ac_new_flags[$]s[$]i";
292 else
293 ac_new_flags="[$]ac_new_flags[$]s[$]l [$]i";
294 fi
295 l=""
296 ;;
297 esac
298 done
299 $1=[$]ac_new_flags
300])
301
302dnl From Bruno Haible.
303
304AC_DEFUN(jm_ICONV,
305[
306 dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
307 dnl those with the standalone portable libiconv installed).
308 AC_MSG_CHECKING(for iconv in $1)
309 jm_cv_func_iconv="no"
310 jm_cv_lib_iconv=""
311 jm_cv_giconv=no
312 jm_save_LIBS="$LIBS"
313
314 dnl Check for include in funny place but no lib needed
315 if test "$jm_cv_func_iconv" != yes; then
316 AC_TRY_LINK([#include <stdlib.h>
317#include <giconv.h>],
318 [iconv_t cd = iconv_open("","");
319 iconv(cd,NULL,NULL,NULL,NULL);
320 iconv_close(cd);],
321 jm_cv_func_iconv=yes
322 jm_cv_include="giconv.h"
323 jm_cv_giconv="yes"
324 jm_cv_lib_iconv="")
325
326 dnl Standard iconv.h include, lib in glibc or libc ...
327 if test "$jm_cv_func_iconv" != yes; then
328 AC_TRY_LINK([#include <stdlib.h>
329#include <iconv.h>],
330 [iconv_t cd = iconv_open("","");
331 iconv(cd,NULL,NULL,NULL,NULL);
332 iconv_close(cd);],
333 jm_cv_include="iconv.h"
334 jm_cv_func_iconv=yes
335 jm_cv_lib_iconv="")
336
337 if test "$jm_cv_lib_iconv" != yes; then
338 jm_save_LIBS="$LIBS"
339 LIBS="$LIBS -lgiconv"
340 AC_TRY_LINK([#include <stdlib.h>
341#include <giconv.h>],
342 [iconv_t cd = iconv_open("","");
343 iconv(cd,NULL,NULL,NULL,NULL);
344 iconv_close(cd);],
345 jm_cv_lib_iconv=yes
346 jm_cv_func_iconv=yes
347 jm_cv_include="giconv.h"
348 jm_cv_giconv=yes
349 jm_cv_lib_iconv="giconv")
350
351 LIBS="$jm_save_LIBS"
352
353 if test "$jm_cv_func_iconv" != yes; then
354 jm_save_LIBS="$LIBS"
355 LIBS="$LIBS -liconv"
356 AC_TRY_LINK([#include <stdlib.h>
357#include <iconv.h>],
358 [iconv_t cd = iconv_open("","");
359 iconv(cd,NULL,NULL,NULL,NULL);
360 iconv_close(cd);],
361 jm_cv_include="iconv.h"
362 jm_cv_func_iconv=yes
363 jm_cv_lib_iconv="iconv")
364 LIBS="$jm_save_LIBS"
365 fi
366 fi
367 fi
368 fi
369 if test "$jm_cv_func_iconv" = yes; then
370 if test "$jm_cv_giconv" = yes; then
371 AC_DEFINE(HAVE_GICONV, 1, [What header to include for iconv() function: giconv.h])
372 AC_MSG_RESULT(yes)
373 ICONV_FOUND=yes
374 else
375 if test "$jm_cv_biconv" = yes; then
376 AC_DEFINE(HAVE_BICONV, 1, [What header to include for iconv() function: biconv.h])
377 AC_MSG_RESULT(yes)
378 ICONV_FOUND=yes
379 else
380 AC_DEFINE(HAVE_ICONV, 1, [What header to include for iconv() function: iconv.h])
381 AC_MSG_RESULT(yes)
382 ICONV_FOUND=yes
383 fi
384 fi
385 else
386 AC_MSG_RESULT(no)
387 fi
388])
389
390AC_DEFUN(rjs_CHARSET,[
391 dnl Find out if we can convert from $1 to UCS2-LE
392 AC_MSG_CHECKING([can we convert from $1 to UCS2-LE?])
393 AC_TRY_RUN([
394#include <$jm_cv_include>
395main(){
396 iconv_t cd = iconv_open("$1", "UCS-2LE");
397 if (cd == 0 || cd == (iconv_t)-1) {
398 return -1;
399 }
400 return 0;
401}
402 ],ICONV_CHARSET=$1,ICONV_CHARSET=no,ICONV_CHARSET=cross)
403 AC_MSG_RESULT($ICONV_CHARSET)
404])
405
406dnl CFLAGS_ADD_DIR(CFLAGS, $INCDIR)
407dnl This function doesn't add -I/usr/include into CFLAGS
408AC_DEFUN(CFLAGS_ADD_DIR,[
409if test "$2" != "/usr/include" ; then
410 $1="$$1 -I$2"
411fi
412])
413
414dnl LIB_ADD_DIR(LDFLAGS, $LIBDIR)
415dnl This function doesn't add -L/usr/lib into LDFLAGS
416AC_DEFUN(LIB_ADD_DIR,[
417if test "$2" != "/usr/lib" ; then
418 $1="$$1 -L$2"
419fi
420])
421
422dnl AC_ENABLE_SHARED - implement the --enable-shared flag
423dnl Usage: AC_ENABLE_SHARED[(DEFAULT)]
424dnl Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
425dnl `yes'.
426AC_DEFUN([AC_ENABLE_SHARED],
427[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
428AC_ARG_ENABLE(shared,
429changequote(<<, >>)dnl
430<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
431changequote([, ])dnl
432[p=${PACKAGE-default}
433case $enableval in
434yes) enable_shared=yes ;;
435no) enable_shared=no ;;
436*)
437 enable_shared=no
438 # Look at the argument we got. We use all the common list separators.
439 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
440 for pkg in $enableval; do
441 if test "X$pkg" = "X$p"; then
442 enable_shared=yes
443 fi
444
445 done
446 IFS="$ac_save_ifs"
447 ;;
448esac],
449enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
450])
451
452dnl AC_ENABLE_STATIC - implement the --enable-static flag
453dnl Usage: AC_ENABLE_STATIC[(DEFAULT)]
454dnl Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
455dnl `yes'.
456AC_DEFUN([AC_ENABLE_STATIC],
457[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
458AC_ARG_ENABLE(static,
459changequote(<<, >>)dnl
460<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
461changequote([, ])dnl
462[p=${PACKAGE-default}
463case $enableval in
464yes) enable_static=yes ;;
465no) enable_static=no ;;
466*)
467 enable_static=no
468 # Look at the argument we got. We use all the common list separators.
469 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
470 for pkg in $enableval; do
471 if test "X$pkg" = "X$p"; then
472 enable_static=yes
473 fi
474 done
475 IFS="$ac_save_ifs"
476 ;;
477esac],
478enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
479])
480
481dnl AC_DISABLE_STATIC - set the default static flag to --disable-static
482AC_DEFUN([AC_DISABLE_STATIC],
483[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
484AC_ENABLE_STATIC(no)])
485
486dnl AC_TRY_RUN_STRICT(PROGRAM,CFLAGS,CPPFLAGS,LDFLAGS,
487dnl [ACTION-IF-TRUE],[ACTION-IF-FALSE],
488dnl [ACTION-IF-CROSS-COMPILING = RUNTIME-ERROR])
489AC_DEFUN( [AC_TRY_RUN_STRICT],
490[
491 old_CFLAGS="$CFLAGS";
492 CFLAGS="$2";
493 export CFLAGS;
494 old_CPPFLAGS="$CPPFLAGS";
495 CPPFLAGS="$3";
496 export CPPFLAGS;
497 old_LDFLAGS="$LDFLAGS";
498 LDFLAGS="$4";
499 export LDFLAGS;
500 AC_TRY_RUN([$1],[$5],[$6],[$7])
501 CFLAGS="$old_CFLAGS";
502 old_CFLAGS="";
503 export CFLAGS;
504 CPPFLAGS="$old_CPPFLAGS";
505 old_CPPFLAGS="";
506 export CPPFLAGS;
507 LDFLAGS="$old_LDFLAGS";
508 old_LDFLAGS="";
509 export LDFLAGS;
510])
511
512dnl SMB_CHECK_SYSCONF(varname)
513dnl Tests whether the sysconf(3) variable "varname" is available.
514AC_DEFUN([SMB_CHECK_SYSCONF],
515[
516 AC_CACHE_CHECK([for sysconf($1)],
517 samba_cv_SYSCONF$1,
518 [
519 AC_TRY_LINK([#include <unistd.h>],
520 [ return sysconf($1) == -1 ? 1 : 0; ],
521 [ samba_cv_SYSCONF$1=yes ],
522 [ samba_cv_SYSCONF$1=no ])
523 ])
524
525 if test x"$samba_cv_SYSCONF$1" = x"yes" ; then
526 AC_DEFINE(SYSCONF$1, 1, [Whether sysconf($1) is available])
527 fi
528])
529
530dnl SMB_IS_LIBPTHREAD_LINKED([actions if true], [actions if false])
531dnl Test whether the current LIBS results in libpthread being present.
532dnl Execute the corresponding user action list.
533AC_DEFUN([SMB_IS_LIBPTHREAD_LINKED],
534[
535 AC_MSG_CHECKING(if libpthread is linked)
536 AC_TRY_LINK([],
537 [return pthread_create(0, 0, 0, 0);],
538 [
539 AC_MSG_RESULT(yes)
540 $1
541 ],
542 [
543 AC_MSG_RESULT(no)
544 $2
545 ])
546])
547
548dnl SMB_REMOVE_LIB(lib)
549dnl Remove the given library from $LIBS