OSDN Git Service

2003-08-04 Phil Edwards <pme@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / linkage.m4
1 dnl
2 dnl This file contains stuff.
3 dnl
4
5 dnl
6 dnl Check to see if the (math function) argument passed is
7 dnl declared when using the c++ compiler
8 dnl ASSUMES argument is a math function with ONE parameter
9 dnl
10 dnl GLIBCXX_CHECK_MATH_DECL_1
11 AC_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
30 dnl
31 dnl Check to see if the (math function) argument passed is
32 dnl 1) declared when using the c++ compiler
33 dnl 2) has "C" linkage
34 dnl 3) if not, see if 1) and 2) for argument prepended with '_'
35 dnl
36 dnl Define HAVE_CARGF etc if "cargf" is declared and links
37 dnl
38 dnl argument 1 is name of function to check
39 dnl
40 dnl ASSUMES argument is a math function with ONE parameter
41 dnl
42 dnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1
43 AC_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
56 dnl
57 dnl Like GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1, but does a bunch of
58 dnl of functions at once.  It's an all-or-nothing check -- either
59 dnl HAVE_XYZ is defined for each of the functions, or for none of them.
60 dnl Doing it this way saves significant configure time.
61 AC_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
77 dnl
78 dnl Check to see if the (math function) argument passed is
79 dnl declared when using the c++ compiler
80 dnl ASSUMES argument is a math function with TWO parameters
81 dnl
82 dnl GLIBCXX_CHECK_MATH_DECL_2
83 AC_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
98 dnl
99 dnl Check to see if the (math function) argument passed is
100 dnl 1) declared when using the c++ compiler
101 dnl 2) has "C" linkage
102 dnl
103 dnl Define HAVE_CARGF etc if "cargf" is declared and links
104 dnl
105 dnl argument 1 is name of function to check
106 dnl
107 dnl ASSUMES argument is a math function with TWO parameters
108 dnl
109 dnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2
110 AC_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
123 dnl
124 dnl Check to see if the (math function) argument passed is
125 dnl declared when using the c++ compiler
126 dnl ASSUMES argument is a math function with THREE parameters
127 dnl
128 dnl GLIBCXX_CHECK_MATH_DECL_3
129 AC_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
144 dnl
145 dnl Check to see if the (math function) argument passed is
146 dnl 1) declared when using the c++ compiler
147 dnl 2) has "C" linkage
148 dnl
149 dnl Define HAVE_CARGF etc if "cargf" is declared and links
150 dnl
151 dnl argument 1 is name of function to check
152 dnl
153 dnl ASSUMES argument is a math function with THREE parameters
154 dnl
155 dnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3
156 AC_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
169 dnl
170 dnl Check to see if the (stdlib function) argument passed is
171 dnl 1) declared when using the c++ compiler
172 dnl 2) has "C" linkage
173 dnl
174 dnl argument 1 is name of function to check
175 dnl
176 dnl ASSUMES argument is a math function with TWO parameters
177 dnl
178 dnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2
179 AC_DEFUN(GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2, [
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(0, 0);],
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
198 dnl
199 dnl Check to see if the (stdlib function) argument passed is
200 dnl 1) declared when using the c++ compiler
201 dnl 2) has "C" linkage
202 dnl
203 dnl argument 1 is name of function to check
204 dnl
205 dnl ASSUMES argument is a function with THREE parameters
206 dnl
207 dnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3
208 AC_DEFUN(GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3, [
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, 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 dnl
227 dnl Because the builtins are picky picky picky about the arguments they take,
228 dnl do an explict linkage tests here.
229 dnl Check to see if the (math function) argument passed is
230 dnl 1) declared when using the c++ compiler
231 dnl 2) has "C" linkage
232 dnl
233 dnl Define HAVE_CARGF etc if "cargf" is declared and links
234 dnl
235 dnl argument 1 is name of function to check
236 dnl
237 dnl ASSUMES argument is a math function with ONE parameter
238 dnl
239 dnl GLIBCXX_CHECK_BUILTIN_MATH_DECL_LINKAGE_1
240 AC_DEFUN(GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1, [
241   AC_MSG_CHECKING([for $1 declaration])
242   if test x${glibcxx_cv_func_$1_use+set} != xset; then
243     AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
244       AC_LANG_SAVE
245       AC_LANG_CPLUSPLUS
246       AC_TRY_COMPILE([#include <math.h>],
247                      [ $1(0);],
248                      [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
249       AC_LANG_RESTORE
250     ])
251   fi
252   AC_MSG_RESULT($glibcxx_cv_func_$1_use)
253   if test x$glibcxx_cv_func_$1_use = x"yes"; then
254     AC_MSG_CHECKING([for $1 linkage])
255     if test x${glibcxx_cv_func_$1_link+set} != xset; then
256       AC_CACHE_VAL(glibcxx_cv_func_$1_link, [
257         AC_TRY_LINK([#include <math.h>],
258                     [ $1(0);],
259                     [glibcxx_cv_func_$1_link=yes], [glibcxx_cv_func_$1_link=no])
260       ])
261     fi
262     AC_MSG_RESULT($glibcxx_cv_func_$1_link)
263     if test x$glibcxx_cv_func_$1_link = x"yes"; then
264       ac_tr_func=HAVE_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
265       AC_DEFINE_UNQUOTED(${ac_tr_func})
266     fi
267   fi
268 ])
269
270
271 dnl
272 dnl Check to see what builtin math functions are supported
273 dnl
274 dnl check for __builtin_abs
275 dnl check for __builtin_fabsf
276 dnl check for __builtin_fabs
277 dnl check for __builtin_fabl
278 dnl check for __builtin_labs
279 dnl check for __builtin_sqrtf
280 dnl check for __builtin_sqrtl
281 dnl check for __builtin_sqrt
282 dnl check for __builtin_sinf
283 dnl check for __builtin_sin
284 dnl check for __builtin_sinl
285 dnl check for __builtin_cosf
286 dnl check for __builtin_cos
287 dnl check for __builtin_cosl
288 dnl
289 dnl GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
290 AC_DEFUN(GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT, [
291   dnl Test for builtin math functions.
292   dnl These are made in gcc/c-common.c
293   GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_abs)
294   GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsf)
295   GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabs)
296   GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_fabsl)
297   GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_labs)
298
299   GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtf)
300   GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrt)
301   GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sqrtl)
302
303   GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinf)
304   GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sin)
305   GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_sinl)
306
307   GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosf)
308   GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cos)
309   GLIBCXX_CHECK_BUILTIN_MATH_DECL_AND_LINKAGE_1(__builtin_cosl)
310
311   dnl There is, without a doubt, a more elegant way to have these
312   dnl names exported so that they won't be stripped out of acconfig.h by
313   dnl autoheader. I leave this as an exercise to somebody less frustrated
314   dnl than I.... please email the libstdc++ list if you can figure out a
315   dnl more elegant approach (see autoconf/acgen.m4 and specifically
316   dnl AC_CHECK_FUNC for things to steal.)
317   dummyvar=no
318   if test x$dummyvar = x"yes"; then
319     AC_DEFINE(HAVE___BUILTIN_ABS)
320     AC_DEFINE(HAVE___BUILTIN_LABS)
321     AC_DEFINE(HAVE___BUILTIN_COS)
322     AC_DEFINE(HAVE___BUILTIN_COSF)
323     AC_DEFINE(HAVE___BUILTIN_COSL)
324     AC_DEFINE(HAVE___BUILTIN_FABS)
325     AC_DEFINE(HAVE___BUILTIN_FABSF)
326     AC_DEFINE(HAVE___BUILTIN_FABSL)
327     AC_DEFINE(HAVE___BUILTIN_SIN)
328     AC_DEFINE(HAVE___BUILTIN_SINF)
329     AC_DEFINE(HAVE___BUILTIN_SINL)
330     AC_DEFINE(HAVE___BUILTIN_SQRT)
331     AC_DEFINE(HAVE___BUILTIN_SQRTF)
332     AC_DEFINE(HAVE___BUILTIN_SQRTL)
333   fi
334 ])
335
336 dnl
337 dnl Check to see what the underlying c library is like
338 dnl These checks need to do two things:
339 dnl 1) make sure the name is declared when using the c++ compiler
340 dnl 2) make sure the name has "C" linkage
341 dnl This might seem like overkill but experience has shown that it's not...
342 dnl
343 dnl Define HAVE_STRTOLD if "strtold" is declared and links
344 dnl Define HAVE_STRTOF if "strtof" is declared and links
345 dnl Define HAVE_DRAND48 if "drand48" is declared and links
346 dnl
347 dnl GLIBCXX_CHECK_STDLIB_SUPPORT
348 AC_DEFUN(GLIBCXX_CHECK_STDLIB_SUPPORT, [
349   ac_test_CXXFLAGS="${CXXFLAGS+set}"
350   ac_save_CXXFLAGS="$CXXFLAGS"
351   CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
352
353   GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
354   GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtof)
355   AC_CHECK_FUNCS(drand48)
356
357   CXXFLAGS="$ac_save_CXXFLAGS"
358 ])
359
360 dnl
361 dnl Check to see what the underlying c library or math library is like.
362 dnl These checks need to do two things:
363 dnl 1) make sure the name is declared when using the c++ compiler
364 dnl 2) make sure the name has "C" linkage
365 dnl This might seem like overkill but experience has shown that it's not...
366 dnl
367 dnl Define HAVE_CARGF etc if "cargf" is found.
368 dnl
369 dnl GLIBCXX_CHECK_MATH_SUPPORT
370 AC_DEFUN(GLIBCXX_CHECK_MATH_SUPPORT, [
371   ac_test_CXXFLAGS="${CXXFLAGS+set}"
372   ac_save_CXXFLAGS="$CXXFLAGS"
373   CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
374
375   dnl Check libm
376   AC_CHECK_LIB(m, sin, libm="-lm")
377   ac_save_LIBS="$LIBS"
378   LIBS="$LIBS $libm"
379
380   dnl Check to see if certain C math functions exist.
381   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)
382   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)
383   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finite)
384   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(copysign)
385   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
386   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
387   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
388   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypot)
389
390   dnl Check to see if basic C math functions have float versions.
391   GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,
392                                           float_trig,
393                                           acosf asinf atanf \
394                                           cosf sinf tanf \
395                                           coshf sinhf tanhf)
396   GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(float round,
397                                           float_round,
398                                           ceilf floorf)
399   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(expf)
400   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
401   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
402   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
403   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
404   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
405   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
406   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf)
407   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
408   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
409   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
410   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modff)
411   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(powf)
412   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)
413   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
414   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
415
416   dnl Check to see if basic C math functions have long double versions.
417   GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(long double trig,
418                                           long_double_trig,
419                                           acosl asinl atanl \
420                                           cosl sinl tanl \
421                                           coshl sinhl tanhl)
422   GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(long double round,
423                                           long_double_round,
424                                           ceill floorl)
425   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)
426   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)
427   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(copysignl)
428   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)
429   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
430   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
431   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
432   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
433   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl)
434   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
435   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
436   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
437   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)
438   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(powl)
439   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)
440   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
441   GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
442
443   dnl Some runtimes have these functions with a preceding underscore. Please
444   dnl keep this sync'd with the one above. And if you add any new symbol,
445   dnl please add the corresponding block in the @BOTTOM@ section of acconfig.h.
446   dnl Check to see if certain C math functions exist.
447
448   dnl Check to see if basic C math functions have float versions.
449   GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(_float trig,
450                                           _float_trig,
451                                           _acosf _asinf _atanf \
452                                           _cosf _sinf _tanf \
453                                           _coshf _sinhf _tanhf)
454   GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(_float round,
455                                           _float_round,
456                                           _ceilf _floorf)
457
458   dnl Check to see if basic C math functions have long double versions.
459   GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double trig,
460                                           _long_double_trig,
461                                           _acosl _asinl _atanl \
462                                           _cosl _sinl _tanl \
463                                           _coshl _sinhl _tanhl)
464   GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(_long double round,
465                                           _long_double_round,
466                                           _ceill _floorl)
467
468   LIBS="$ac_save_LIBS"
469   CXXFLAGS="$ac_save_CXXFLAGS"
470 ])
471
472
473 dnl
474 dnl Check to see if there is native support for complex
475 dnl
476 dnl Don't compile bits in math/* if native support exits.
477 dnl
478 dnl Define USE_COMPLEX_LONG_DOUBLE etc if "copysignl" is found.
479 dnl
480 dnl GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
481 AC_DEFUN(GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT, [
482   dnl Check for complex versions of math functions of platform.  This will
483   dnl always pass if libm is available, and fail if it isn't.  If it is
484   dnl available, we assume we'll need it later, so add it to LIBS.
485   AC_CHECK_LIB(m, main)
486   AC_REPLACE_MATHFUNCS(nan copysignf)
487
488   dnl For __signbit to signbit conversions.
489   AC_CHECK_FUNCS([__signbit], , [LIBMATHOBJS="$LIBMATHOBJS signbit.lo"])
490   AC_CHECK_FUNCS([__signbitf], , [LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"])
491
492   dnl Compile the long double complex functions only if the function
493   dnl provides the non-complex long double functions that are needed.
494   dnl Currently this includes copysignl, which should be
495   dnl cached from the GLIBCXX_CHECK_MATH_SUPPORT macro, above.
496   if test x$ac_cv_func_copysignl = x"yes"; then
497     AC_CHECK_FUNCS([__signbitl], , [LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"])
498   fi
499
500   if test -n "$LIBMATHOBJS"; then
501     need_libmath=yes
502   fi
503   AC_SUBST(LIBMATHOBJS)
504 ])
505
506
507 # Check for functions in math library.
508 # Ulrich Drepper <drepper@cygnus.com>, 1998.
509 #
510 # This file can be copied and used freely without restrictions.  It can
511 # be used in projects which are not available under the GNU Public License
512 # but which still want to provide support for the GNU gettext functionality.
513 # Please note that the actual code is *not* freely available.
514 #
515 # serial 1
516 #
517 dnl AC_REPLACE_MATHFUNCS(FUNCTION...)
518 AC_DEFUN(AC_REPLACE_MATHFUNCS,
519 [AC_CHECK_FUNCS([$1], , [LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"])])
520
521 dnl vim:et:ts=2