linkage.m4 revision 146897
1dnl
2dnl This file contains macros for testing linkage.
3dnl
4
5dnl
6dnl Check to see if the (math function) argument passed is
7dnl declared when using the c++ compiler
8dnl ASSUMES argument is a math function with ONE parameter
9dnl
10dnl GLIBCXX_CHECK_MATH_DECL_1
11AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_1], [
12  AC_MSG_CHECKING([for $1 declaration])
13  if test x${glibcxx_cv_func_$1_use+set} != xset; then
14    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
15      AC_LANG_SAVE
16      AC_LANG_CPLUSPLUS
17      AC_TRY_COMPILE([#include <math.h>
18		      #ifdef HAVE_IEEEFP_H
19		      #include <ieeefp.h>
20		      #endif
21		     ],
22                     [ $1(0);],
23                      [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
24      AC_LANG_RESTORE
25    ])
26  fi
27  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
28])
29
30dnl
31dnl Check to see if the (math function) argument passed is
32dnl 1) declared when using the c++ compiler
33dnl 2) has "C" linkage
34dnl 3) if not, see if 1) and 2) for argument prepended with '_'
35dnl
36dnl Define HAVE_CARGF etc if "cargf" is declared and links
37dnl
38dnl argument 1 is name of function to check
39dnl
40dnl ASSUMES argument is a math function with ONE parameter
41dnl
42dnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1
43AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1], [
44  GLIBCXX_CHECK_MATH_DECL_1($1)
45  if test x$glibcxx_cv_func_$1_use = x"yes"; then
46    AC_CHECK_FUNCS($1)
47  else
48    GLIBCXX_CHECK_MATH_DECL_1(_$1)
49    if test x$glibcxx_cv_func__$1_use = x"yes"; then
50      AC_CHECK_FUNCS(_$1)
51    fi
52  fi
53])
54
55
56dnl
57dnl Like GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1, but does a bunch of
58dnl of functions at once.  It's an all-or-nothing check -- either
59dnl HAVE_XYZ is defined for each of the functions, or for none of them.
60dnl Doing it this way saves significant configure time.
61AC_DEFUN([GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1], [
62  AC_MSG_CHECKING([for $1 functions])
63  AC_CACHE_VAL(glibcxx_cv_func_$2_use, [
64    AC_LANG_SAVE
65    AC_LANG_CPLUSPLUS
66    AC_TRY_COMPILE([#include <math.h>],
67                   [ `for x in $3; do echo "$x (0);"; done` ],
68                   [glibcxx_cv_func_$2_use=yes],
69                   [glibcxx_cv_func_$2_use=no])
70    AC_LANG_RESTORE])
71  AC_MSG_RESULT($glibcxx_cv_func_$2_use)
72  if test x$glibcxx_cv_func_$2_use = x"yes"; then
73    AC_CHECK_FUNCS($3)
74  fi
75])
76
77dnl
78dnl Check to see if the (math function) argument passed is
79dnl declared when using the c++ compiler
80dnl ASSUMES argument is a math function with TWO parameters
81dnl
82dnl GLIBCXX_CHECK_MATH_DECL_2
83AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_2], [
84  AC_MSG_CHECKING([for $1 declaration])
85  if test x${glibcxx_cv_func_$1_use+set} != xset; then
86    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
87      AC_LANG_SAVE
88      AC_LANG_CPLUSPLUS
89      AC_TRY_COMPILE([#include <math.h>],
90                     [ $1(0, 0);],
91                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
92      AC_LANG_RESTORE
93    ])
94  fi
95  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
96])
97
98dnl
99dnl Check to see if the (math function) argument passed is
100dnl 1) declared when using the c++ compiler
101dnl 2) has "C" linkage
102dnl
103dnl Define HAVE_CARGF etc if "cargf" is declared and links
104dnl
105dnl argument 1 is name of function to check
106dnl
107dnl ASSUMES argument is a math function with TWO parameters
108dnl
109dnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2
110AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2], [
111  GLIBCXX_CHECK_MATH_DECL_2($1)
112  if test x$glibcxx_cv_func_$1_use = x"yes"; then
113    AC_CHECK_FUNCS($1)
114  else
115    GLIBCXX_CHECK_MATH_DECL_2(_$1)
116    if test x$glibcxx_cv_func__$1_use = x"yes"; then
117      AC_CHECK_FUNCS(_$1)
118    fi
119  fi
120])
121
122
123dnl
124dnl Check to see if the (math function) argument passed is
125dnl declared when using the c++ compiler
126dnl ASSUMES argument is a math function with THREE parameters
127dnl
128dnl GLIBCXX_CHECK_MATH_DECL_3
129AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_3], [
130  AC_MSG_CHECKING([for $1 declaration])
131  if test x${glibcxx_cv_func_$1_use+set} != xset; then
132    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
133      AC_LANG_SAVE
134      AC_LANG_CPLUSPLUS
135      AC_TRY_COMPILE([#include <math.h>],
136                     [ $1(0, 0, 0);],
137                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
138      AC_LANG_RESTORE
139    ])
140  fi
141  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
142])
143
144dnl
145dnl Check to see if the (math function) argument passed is
146dnl 1) declared when using the c++ compiler
147dnl 2) has "C" linkage
148dnl
149dnl Define HAVE_CARGF etc if "cargf" is declared and links
150dnl
151dnl argument 1 is name of function to check
152dnl
153dnl ASSUMES argument is a math function with THREE parameters
154dnl
155dnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3
156AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3], [
157  GLIBCXX_CHECK_MATH_DECL_3($1)
158  if test x$glibcxx_cv_func_$1_use = x"yes"; then
159    AC_CHECK_FUNCS($1)
160  else
161    GLIBCXX_CHECK_MATH_DECL_3(_$1)
162    if test x$glibcxx_cv_func__$1_use = x"yes"; then
163      AC_CHECK_FUNCS(_$1)
164    fi
165  fi
166])
167
168
169dnl
170dnl Check to see if the (stdlib function) argument passed is
171dnl 1) declared when using the c++ compiler
172dnl 2) has "C" linkage
173dnl
174dnl argument 1 is name of function to check
175dnl
176dnl ASSUMES argument is a stdlib function without parameters
177dnl
178dnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0
179AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0], [
180  AC_MSG_CHECKING([for $1 declaration])
181  if test x${glibcxx_cv_func_$1_use+set} != xset; then
182    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
183      AC_LANG_SAVE
184      AC_LANG_CPLUSPLUS
185      AC_TRY_COMPILE([#include <stdlib.h>],
186                     [ $1();],
187                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
188      AC_LANG_RESTORE
189    ])
190  fi
191  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
192  if test x$glibcxx_cv_func_$1_use = x"yes"; then
193    AC_CHECK_FUNCS($1)
194  fi
195])
196
197
198dnl
199dnl Check to see if the (stdlib function) argument passed is
200dnl 1) declared when using the c++ compiler
201dnl 2) has "C" linkage
202dnl
203dnl argument 1 is name of function to check
204dnl
205dnl ASSUMES argument is a stdlib function with TWO parameters
206dnl
207dnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2
208AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2], [
209  AC_MSG_CHECKING([for $1 declaration])
210  if test x${glibcxx_cv_func_$1_use+set} != xset; then
211    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
212      AC_LANG_SAVE
213      AC_LANG_CPLUSPLUS
214      AC_TRY_COMPILE([#include <stdlib.h>],
215                     [ $1(0, 0);],
216                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
217      AC_LANG_RESTORE
218    ])
219  fi
220  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
221  if test x$glibcxx_cv_func_$1_use = x"yes"; then
222    AC_CHECK_FUNCS($1)
223  fi
224])
225
226
227dnl
228dnl Check to see if the (stdlib function) argument passed is
229dnl 1) declared when using the c++ compiler
230dnl 2) has "C" linkage
231dnl
232dnl argument 1 is name of function to check
233dnl
234dnl ASSUMES argument is a stdlib function with THREE parameters
235dnl
236dnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3
237AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3], [
238  AC_MSG_CHECKING([for $1 declaration])
239  if test x${glibcxx_cv_func_$1_use+set} != xset; then
240    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
241      AC_LANG_SAVE
242      AC_LANG_CPLUSPLUS
243      AC_TRY_COMPILE([#include <stdlib.h>],
244                     [ $1(0, 0, 0);],
245                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
246      AC_LANG_RESTORE
247    ])
248  fi
249  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
250  if test x$glibcxx_cv_func_$1_use = x"yes"; then
251    AC_CHECK_FUNCS($1)
252  fi
253])
254
255dnl
256dnl Because the builtins are picky picky picky about the arguments they take,
257dnl do an explict linkage tests here.
258dnl Check to see if the (math function) argument passed is
259dnl 1) declared when using the c++ compiler
260dnl 2) has "C" linkage
261dnl
262dnl Define HAVE_CARGF etc if "cargf" is declared and links
263dnl
264dnl argument 1 is name of function to check
265dnl
266dnl ASSUMES argument is a math function with ONE parameter
267dnl
268dnl GLIBCXX_CHECK_BUILTIN_MATH_DECL_LINKAGE_1
269AC_DEFUN([GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1], [
270  AC_MSG_CHECKING([for $1 declaration])
271  if test x${glibcxx_cv_func_$1_use+set} != xset; then
272    AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
273      AC_LANG_SAVE
274      AC_LANG_CPLUSPLUS
275      AC_TRY_COMPILE([#include <math.h>],
276                     [ $1(0);],
277                     [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
278      AC_LANG_RESTORE
279    ])
280  fi
281  AC_MSG_RESULT($glibcxx_cv_func_$1_use)
282  if test x$glibcxx_cv_func_$1_use = x"yes"; then
283    AC_MSG_CHECKING([for $1 linkage])
284    if test x${glibcxx_cv_func_$1_link+set} != xset; then
285      AC_CACHE_VAL(glibcxx_cv_func_$1_link, [
286        AC_TRY_LINK([#include <math.h>],
287                    [ $1(0);],
288                    [glibcxx_cv_func_$1_link=yes], [glibcxx_cv_func_$1_link=no])
289      ])
290    fi
291    AC_MSG_RESULT($glibcxx_cv_func_$1_link)
292    if test x$glibcxx_cv_func_$1_link = x"yes"; then
293      ac_tr_func=HAVE_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
294      AC_DEFINE_UNQUOTED(${ac_tr_func}, 1, [Defined if $1 exists.])
295    fi
296  fi
297])
298
299
300dnl
301dnl Check to see what builtin math functions are supported
302dnl
303dnl check for __builtin_abs
304dnl check for __builtin_fabsf
305dnl check for __builtin_fabs
306dnl check for __builtin_fabl
307dnl check for __builtin_labs
308dnl check for __builtin_sqrtf
309dnl check for __builtin_sqrtl
310dnl check for __builtin_sqrt
311dnl check for __builtin_sinf
312dnl check for __builtin_sin
313dnl check for __builtin_sinl
314dnl check for __builtin_cosf
315dnl check for __builtin_cos
316dnl check for __builtin_cosl
317dnl
318dnl GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
319AC_DEFUN([GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT], [
320  dnl Test for builtin math functions.
321  dnl These are made in gcc/c-common.c
322  GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_abs)
323  GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsf)
324  GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabs)
325  GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsl)
326  GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_labs)
327
328  GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtf)
329  GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrt)
330  GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtl)
331
332  GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinf)
333  GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sin)
334  GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinl)
335
336  GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosf)
337  GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cos)
338  GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosl)
339])
340
341dnl
342dnl Check to see what the underlying c library is like
343dnl These checks need to do two things:
344dnl 1) make sure the name is declared when using the c++ compiler
345dnl 2) make sure the name has "C" linkage
346dnl This might seem like overkill but experience has shown that it's not...
347dnl
348dnl Define HAVE_STRTOLD if "strtold" is declared and links
349dnl Define HAVE_STRTOF if "strtof" is declared and links
350dnl
351dnl GLIBCXX_CHECK_STDLIB_SUPPORT
352AC_DEFUN([GLIBCXX_CHECK_STDLIB_SUPPORT], [
353  ac_test_CXXFLAGS="${CXXFLAGS+set}"
354  ac_save_CXXFLAGS="$CXXFLAGS"
355  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
356
357  GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
358  GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtof)
359
360  CXXFLAGS="$ac_save_CXXFLAGS"
361])
362
363dnl
364dnl Check to see what the underlying c library or math library is like.
365dnl These checks need to do two things:
366dnl 1) make sure the name is declared when using the c++ compiler
367dnl 2) make sure the name has "C" linkage
368dnl This might seem like overkill but experience has shown that it's not...
369dnl
370dnl Define HAVE_CARGF etc if "cargf" is found.
371dnl
372dnl GLIBCXX_CHECK_MATH_SUPPORT
373AC_DEFUN([GLIBCXX_CHECK_MATH_SUPPORT], [
374  ac_test_CXXFLAGS="${CXXFLAGS+set}"
375  ac_save_CXXFLAGS="$CXXFLAGS"
376  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
377
378  dnl Check libm
379  AC_CHECK_LIB(m, sin, libm="-lm")
380  ac_save_LIBS="$LIBS"
381  LIBS="$LIBS $libm"
382
383  dnl Check to see if certain C math functions exist.
384  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)
385  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)
386  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finite)
387  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(copysign)
388  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
389  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
390  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
391  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypot)
392
393  dnl Check to see if basic C math functions have float versions.
394  GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,
395                                          float_trig,
396                                          acosf asinf atanf \
397                                          cosf sinf tanf \
398                                          coshf sinhf tanhf)
399  GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(float round,
400                                          float_round,
401                                          ceilf floorf)
402  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(expf)
403  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
404  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
405  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
406  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
407  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
408  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
409  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf)
410  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
411  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
412  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
413  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modff)
414  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(powf)
415  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)
416  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
417  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
418
419  dnl Check to see if basic C math functions have long double versions.
420  GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(long double trig,
421                                          long_double_trig,
422                                          acosl asinl atanl \
423                                          cosl sinl tanl \
424                                          coshl sinhl tanhl)
425  GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(long double round,
426                                          long_double_round,
427                                          ceill floorl)
428  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)
429  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)
430  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(copysignl)
431  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)
432  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
433  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
434  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
435  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
436  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl)
437  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
438  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
439  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
440  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)
441  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(powl)
442  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)
443  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
444  GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
445
446  dnl Some runtimes have these functions with a preceding underscore. Please
447  dnl keep this sync'd with the one above. And if you add any new symbol,
448  dnl please add the corresponding block in the @BOTTOM@ section of acconfig.h.
449  dnl Check to see if certain C math functions exist.
450
451  dnl Check to see if basic C math functions have float versions.
452  GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(_float trig,
453                                          _float_trig,
454                                          _acosf _asinf _atanf \
455                                          _cosf _sinf _tanf \
456                                          _coshf _sinhf _tanhf)
457  GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(_float round,
458                                          _float_round,
459                                          _ceilf _floorf)
460
461  dnl Check to see if basic C math functions have long double versions.
462  GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double trig,
463                                          _long_double_trig,
464                                          _acosl _asinl _atanl \
465                                          _cosl _sinl _tanl \
466                                          _coshl _sinhl _tanhl)
467  GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double round,
468                                          _long_double_round,
469                                          _ceill _floorl)
470
471  LIBS="$ac_save_LIBS"
472  CXXFLAGS="$ac_save_CXXFLAGS"
473])
474
475
476dnl
477dnl Check to see if there is native support for complex
478dnl
479dnl Don't compile bits in math/* if native support exits.
480dnl
481dnl Define USE_COMPLEX_LONG_DOUBLE etc if "copysignl" is found.
482dnl
483dnl GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
484AC_DEFUN([GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT], [
485  dnl Check for complex versions of math functions of platform.  This will
486  dnl always pass if libm is available, and fail if it isn't.  If it is
487  dnl available, we assume we'll need it later, so add it to LIBS.
488  AC_CHECK_LIB(m, main)
489  AC_REPLACE_MATHFUNCS(copysignf)
490
491  dnl For __signbit to signbit conversions.
492  dnl Not sure why this is done, as these will be macros mostly. 
493  dnl Should probably coordinate this with std_cmath.h.
494  AC_CHECK_FUNCS([__signbit], , [LIBMATHOBJS="$LIBMATHOBJS signbit.lo"])
495
496  AC_CHECK_FUNCS([__signbitf], , [LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"])
497
498  dnl Compile the long double complex functions only if the function
499  dnl provides the non-complex long double functions that are needed.
500  dnl Currently this includes copysignl, which should be
501  dnl cached from the GLIBCXX_CHECK_MATH_SUPPORT macro, above.
502  if test x$ac_cv_func_copysignl = x"yes"; then
503    AC_CHECK_FUNCS([__signbitl], , [LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"])
504  fi
505
506  # Used in libmath/Makefile.am.
507  if test -n "$LIBMATHOBJS"; then
508    need_libmath=yes
509  fi
510  AC_SUBST(LIBMATHOBJS)
511])
512
513
514# Check for functions in math library.
515# Ulrich Drepper <drepper@cygnus.com>, 1998.
516#
517# This file can be copied and used freely without restrictions.  It can
518# be used in projects which are not available under the GNU Public License
519# but which still want to provide support for the GNU gettext functionality.
520# Please note that the actual code is *not* freely available.
521#
522# serial 1
523#
524dnl AC_REPLACE_MATHFUNCS(FUNCTION...)
525AC_DEFUN([AC_REPLACE_MATHFUNCS],
526[AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])])
527