]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/linkage.m4
cfgrtl: Fix MEM_EXPR update in duplicate_insn_chain [PR114924]
[thirdparty/gcc.git] / libstdc++-v3 / linkage.m4
CommitLineData
ff66d28f 1dnl
92efec6e 2dnl This file contains macros for testing linkage.
ff66d28f
PE
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
f214923c 11AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_1], [
ff66d28f
PE
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);],
92efec6e 23 [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
ff66d28f
PE
24 AC_LANG_RESTORE
25 ])
26 fi
27 AC_MSG_RESULT($glibcxx_cv_func_$1_use)
28])
29
3df45831 30
ff66d28f
PE
31dnl
32dnl Check to see if the (math function) argument passed is
33dnl 1) declared when using the c++ compiler
34dnl 2) has "C" linkage
ff66d28f
PE
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
f214923c 43AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1], [
ff66d28f
PE
44 GLIBCXX_CHECK_MATH_DECL_1($1)
45 if test x$glibcxx_cv_func_$1_use = x"yes"; then
46 AC_CHECK_FUNCS($1)
ff66d28f
PE
47 fi
48])
49
50
51dnl
52dnl Like GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1, but does a bunch of
53dnl of functions at once. It's an all-or-nothing check -- either
54dnl HAVE_XYZ is defined for each of the functions, or for none of them.
55dnl Doing it this way saves significant configure time.
f214923c 56AC_DEFUN([GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1], [
3df45831 57 define([funclist],patsubst($3,\(\w+\)\(\W*\),\1 ))dnl
ff66d28f
PE
58 AC_MSG_CHECKING([for $1 functions])
59 AC_CACHE_VAL(glibcxx_cv_func_$2_use, [
60 AC_LANG_SAVE
61 AC_LANG_CPLUSPLUS
62 AC_TRY_COMPILE([#include <math.h>],
3df45831 63 patsubst(funclist,[\w+],[\& (0);]),
ff66d28f
PE
64 [glibcxx_cv_func_$2_use=yes],
65 [glibcxx_cv_func_$2_use=no])
66 AC_LANG_RESTORE])
67 AC_MSG_RESULT($glibcxx_cv_func_$2_use)
68 if test x$glibcxx_cv_func_$2_use = x"yes"; then
3df45831 69 AC_CHECK_FUNCS(funclist)
ff66d28f 70 fi
3df45831 71 undefine([funclist])
ff66d28f
PE
72])
73
74dnl
75dnl Check to see if the (math function) argument passed is
76dnl declared when using the c++ compiler
77dnl ASSUMES argument is a math function with TWO parameters
78dnl
79dnl GLIBCXX_CHECK_MATH_DECL_2
f214923c 80AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_2], [
ff66d28f
PE
81 AC_MSG_CHECKING([for $1 declaration])
82 if test x${glibcxx_cv_func_$1_use+set} != xset; then
83 AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
84 AC_LANG_SAVE
85 AC_LANG_CPLUSPLUS
86 AC_TRY_COMPILE([#include <math.h>],
87 [ $1(0, 0);],
88 [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
89 AC_LANG_RESTORE
90 ])
91 fi
92 AC_MSG_RESULT($glibcxx_cv_func_$1_use)
93])
94
95dnl
96dnl Check to see if the (math function) argument passed is
97dnl 1) declared when using the c++ compiler
98dnl 2) has "C" linkage
99dnl
100dnl Define HAVE_CARGF etc if "cargf" is declared and links
101dnl
102dnl argument 1 is name of function to check
103dnl
104dnl ASSUMES argument is a math function with TWO parameters
105dnl
106dnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2
f214923c 107AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2], [
ff66d28f
PE
108 GLIBCXX_CHECK_MATH_DECL_2($1)
109 if test x$glibcxx_cv_func_$1_use = x"yes"; then
110 AC_CHECK_FUNCS($1)
ff66d28f
PE
111 fi
112])
113
114
115dnl
116dnl Check to see if the (math function) argument passed is
117dnl declared when using the c++ compiler
118dnl ASSUMES argument is a math function with THREE parameters
119dnl
120dnl GLIBCXX_CHECK_MATH_DECL_3
f214923c 121AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_3], [
ff66d28f
PE
122 AC_MSG_CHECKING([for $1 declaration])
123 if test x${glibcxx_cv_func_$1_use+set} != xset; then
124 AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
125 AC_LANG_SAVE
126 AC_LANG_CPLUSPLUS
127 AC_TRY_COMPILE([#include <math.h>],
128 [ $1(0, 0, 0);],
129 [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
130 AC_LANG_RESTORE
131 ])
132 fi
133 AC_MSG_RESULT($glibcxx_cv_func_$1_use)
134])
135
136dnl
137dnl Check to see if the (math function) argument passed is
138dnl 1) declared when using the c++ compiler
139dnl 2) has "C" linkage
140dnl
141dnl Define HAVE_CARGF etc if "cargf" is declared and links
142dnl
143dnl argument 1 is name of function to check
144dnl
145dnl ASSUMES argument is a math function with THREE parameters
146dnl
147dnl GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3
f214923c 148AC_DEFUN([GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3], [
ff66d28f
PE
149 GLIBCXX_CHECK_MATH_DECL_3($1)
150 if test x$glibcxx_cv_func_$1_use = x"yes"; then
151 AC_CHECK_FUNCS($1)
ff66d28f
PE
152 fi
153])
154
155
222a5b1d
RO
156dnl
157dnl Check to see if the (stdlib function) argument passed is
158dnl 1) declared when using the c++ compiler
159dnl 2) has "C" linkage
160dnl
161dnl argument 1 is name of function to check
162dnl
163dnl ASSUMES argument is a stdlib function without parameters
164dnl
165dnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0
f214923c 166AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_0], [
222a5b1d
RO
167 AC_MSG_CHECKING([for $1 declaration])
168 if test x${glibcxx_cv_func_$1_use+set} != xset; then
169 AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
170 AC_LANG_SAVE
171 AC_LANG_CPLUSPLUS
172 AC_TRY_COMPILE([#include <stdlib.h>],
173 [ $1();],
174 [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
175 AC_LANG_RESTORE
176 ])
177 fi
178 AC_MSG_RESULT($glibcxx_cv_func_$1_use)
179 if test x$glibcxx_cv_func_$1_use = x"yes"; then
180 AC_CHECK_FUNCS($1)
181 fi
182])
183
184
cc999d03
JM
185dnl
186dnl Check to see if the (stdlib function) argument passed is
187dnl 1) declared when using the c++ compiler
188dnl 2) has "C" linkage
189dnl
190dnl argument 1 is name of function to check
191dnl
192dnl ASSUMES argument is a stdlib function with ONE parameter
193dnl
194dnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_1
195AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_1], [
196 AC_MSG_CHECKING([for $1 declaration])
197 if test x${glibcxx_cv_func_$1_use+set} != xset; then
198 AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
199 AC_LANG_SAVE
200 AC_LANG_CPLUSPLUS
201 AC_TRY_COMPILE([#include <stdlib.h>],
202 [ $1(0);],
203 [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
204 AC_LANG_RESTORE
205 ])
206 fi
207 AC_MSG_RESULT($glibcxx_cv_func_$1_use)
208 if test x$glibcxx_cv_func_$1_use = x"yes"; then
209 AC_CHECK_FUNCS($1)
210 fi
211])
212
213
ff66d28f
PE
214dnl
215dnl Check to see if the (stdlib function) argument passed is
216dnl 1) declared when using the c++ compiler
217dnl 2) has "C" linkage
218dnl
219dnl argument 1 is name of function to check
220dnl
747d0b96 221dnl ASSUMES argument is a stdlib function with TWO parameters
ff66d28f
PE
222dnl
223dnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2
f214923c 224AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2], [
ff66d28f
PE
225 AC_MSG_CHECKING([for $1 declaration])
226 if test x${glibcxx_cv_func_$1_use+set} != xset; then
227 AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
228 AC_LANG_SAVE
229 AC_LANG_CPLUSPLUS
230 AC_TRY_COMPILE([#include <stdlib.h>],
231 [ $1(0, 0);],
232 [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
233 AC_LANG_RESTORE
234 ])
235 fi
236 AC_MSG_RESULT($glibcxx_cv_func_$1_use)
237 if test x$glibcxx_cv_func_$1_use = x"yes"; then
238 AC_CHECK_FUNCS($1)
239 fi
240])
241
242
243dnl
244dnl Check to see if the (stdlib function) argument passed is
245dnl 1) declared when using the c++ compiler
246dnl 2) has "C" linkage
247dnl
248dnl argument 1 is name of function to check
249dnl
747d0b96 250dnl ASSUMES argument is a stdlib function with THREE parameters
ff66d28f
PE
251dnl
252dnl GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3
f214923c 253AC_DEFUN([GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_3], [
ff66d28f
PE
254 AC_MSG_CHECKING([for $1 declaration])
255 if test x${glibcxx_cv_func_$1_use+set} != xset; then
256 AC_CACHE_VAL(glibcxx_cv_func_$1_use, [
257 AC_LANG_SAVE
258 AC_LANG_CPLUSPLUS
259 AC_TRY_COMPILE([#include <stdlib.h>],
260 [ $1(0, 0, 0);],
261 [glibcxx_cv_func_$1_use=yes], [glibcxx_cv_func_$1_use=no])
262 AC_LANG_RESTORE
263 ])
264 fi
265 AC_MSG_RESULT($glibcxx_cv_func_$1_use)
266 if test x$glibcxx_cv_func_$1_use = x"yes"; then
267 AC_CHECK_FUNCS($1)
268 fi
269])
270
ff66d28f
PE
271dnl
272dnl Check to see what the underlying c library is like
273dnl These checks need to do two things:
274dnl 1) make sure the name is declared when using the c++ compiler
275dnl 2) make sure the name has "C" linkage
276dnl This might seem like overkill but experience has shown that it's not...
277dnl
278dnl Define HAVE_STRTOLD if "strtold" is declared and links
279dnl Define HAVE_STRTOF if "strtof" is declared and links
ff66d28f
PE
280dnl
281dnl GLIBCXX_CHECK_STDLIB_SUPPORT
f214923c 282AC_DEFUN([GLIBCXX_CHECK_STDLIB_SUPPORT], [
ff66d28f
PE
283 ac_test_CXXFLAGS="${CXXFLAGS+set}"
284 ac_save_CXXFLAGS="$CXXFLAGS"
285 CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
286
cc999d03
JM
287 GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_1(at_quick_exit)
288 GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_1(quick_exit)
ff66d28f
PE
289 GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtold)
290 GLIBCXX_CHECK_STDLIB_DECL_AND_LINKAGE_2(strtof)
ff66d28f
PE
291
292 CXXFLAGS="$ac_save_CXXFLAGS"
293])
294
295dnl
296dnl Check to see what the underlying c library or math library is like.
297dnl These checks need to do two things:
298dnl 1) make sure the name is declared when using the c++ compiler
299dnl 2) make sure the name has "C" linkage
300dnl This might seem like overkill but experience has shown that it's not...
301dnl
302dnl Define HAVE_CARGF etc if "cargf" is found.
303dnl
304dnl GLIBCXX_CHECK_MATH_SUPPORT
f214923c 305AC_DEFUN([GLIBCXX_CHECK_MATH_SUPPORT], [
ff66d28f
PE
306 ac_test_CXXFLAGS="${CXXFLAGS+set}"
307 ac_save_CXXFLAGS="$CXXFLAGS"
308 CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
309
310 dnl Check libm
311 AC_CHECK_LIB(m, sin, libm="-lm")
312 ac_save_LIBS="$LIBS"
313 LIBS="$LIBS $libm"
314
315 dnl Check to see if certain C math functions exist.
316 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinf)
317 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnan)
318 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finite)
ff66d28f
PE
319 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincos)
320 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fpclass)
321 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(qfpclass)
322 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypot)
323
324 dnl Check to see if basic C math functions have float versions.
325 GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(float trig,
326 float_trig,
327 acosf asinf atanf \
328 cosf sinf tanf \
329 coshf sinhf tanhf)
330 GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(float round,
331 float_round,
332 ceilf floorf)
333 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(expf)
334 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnanf)
335 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinff)
336 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(atan2f)
337 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fabsf)
338 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(fmodf)
339 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(frexpf)
340 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypotf)
341 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpf)
342 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(logf)
343 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(log10f)
344 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modff)
3a642d50 345 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modf)
ff66d28f
PE
346 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(powf)
347 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtf)
348 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincosf)
349 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finitef)
350
351 dnl Check to see if basic C math functions have long double versions.
352 GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(long double trig,
353 long_double_trig,
354 acosl asinl atanl \
355 cosl sinl tanl \
356 coshl sinhl tanhl)
357 GLIBCXX_CHECK_MATH_DECLS_AND_LINKAGES_1(long double round,
358 long_double_round,
359 ceill floorl)
360 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isnanl)
361 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(isinfl)
ff66d28f
PE
362 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(atan2l)
363 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(expl)
364 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(fabsl)
365 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(fmodl)
366 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(frexpl)
367 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(hypotl)
368 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(ldexpl)
369 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(logl)
370 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(log10l)
371 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(modfl)
372 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_2(powl)
373 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(sqrtl)
374 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_3(sincosl)
375 GLIBCXX_CHECK_MATH_DECL_AND_LINKAGE_1(finitel)
376
ff66d28f
PE
377 LIBS="$ac_save_LIBS"
378 CXXFLAGS="$ac_save_CXXFLAGS"
379])