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