disable fortran, ojbc and objcp to reduce 35% build time of gcc
[platform/upstream/gcc48.git] / libstdc++-v3 / linkage.m4
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 ])