1 |
689 |
jeremybenn |
/* Copyright (C) 2003, 2004, 2005, 2006, 2009, 2011, 2012
|
2 |
|
|
Free Software Foundation.
|
3 |
|
|
|
4 |
|
|
Define macros useful in tests for bulitin functions. */
|
5 |
|
|
|
6 |
|
|
/* Define HAVE_C99_RUNTIME if the entire C99 runtime is available on
|
7 |
|
|
the target system. The value of HAVE_C99_RUNTIME should be the
|
8 |
|
|
same as the value of TARGET_C99_FUNCTIONS in the GCC machine
|
9 |
|
|
description. (Perhaps GCC should predefine a special macro
|
10 |
|
|
indicating whether or not TARGET_C99_FUNCTIONS is set, but it does
|
11 |
|
|
not presently do that.) */
|
12 |
|
|
|
13 |
|
|
#if defined(__hppa) && defined(__hpux)
|
14 |
|
|
/* PA HP-UX doesn't have the entire C99 runtime. */
|
15 |
|
|
#elif defined(__INTERIX)
|
16 |
|
|
/* Interix6 doesn't have the entire C99 runtime. */
|
17 |
|
|
#elif defined(__AVR__)
|
18 |
|
|
/* AVR doesn't have the entire C99 runtime. */
|
19 |
|
|
#elif defined(__FreeBSD__) && (__FreeBSD__ < 9)
|
20 |
|
|
/* FreeBSD up to version 8 lacks support for cexp and friends. */
|
21 |
|
|
#elif defined(__vxworks)
|
22 |
|
|
/* VxWorks doesn't have a full C99 time. (cabs is missing, for example.) */
|
23 |
|
|
#elif defined(_WIN32) && !defined(__CYGWIN__)
|
24 |
|
|
/* Windows doesn't have the entire C99 runtime. */
|
25 |
|
|
#elif (defined(__APPLE__) && defined(__ppc__) \
|
26 |
|
|
&& ! defined (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__))
|
27 |
|
|
/* MacOS versions before 10.3 don't have many C99 functions.
|
28 |
|
|
But, if you're including this file, you probably want to test the
|
29 |
|
|
newer behaviour, so: */
|
30 |
|
|
#error forgot to set -mmacosx-version-min.
|
31 |
|
|
#elif (defined(__APPLE__) && defined(__ppc__) \
|
32 |
|
|
&& __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1030)
|
33 |
|
|
/* MacOS versions before 10.3 don't have many C99 functions. */
|
34 |
|
|
#else
|
35 |
|
|
/* Newlib has the "f" variants of the math functions, but not the "l"
|
36 |
|
|
variants. TARGET_C99_FUNCTIONS is only defined if all C99
|
37 |
|
|
functions are present. Therefore, on systems using newlib, tests
|
38 |
|
|
of builtins will fail the "l" variants, and we should therefore not
|
39 |
|
|
define HAVE_C99_RUNTIME. Including <sys/types.h> gives us a way of
|
40 |
|
|
seeing if _NEWLIB_VERSION is defined. Including <math.h> would work
|
41 |
|
|
too, but the GLIBC math inlines cause us to generate inferior code,
|
42 |
|
|
which causes the test to fail, so it is not safe. Including <limits.h>
|
43 |
|
|
also fails because the include search paths are ordered such that GCC's
|
44 |
|
|
version will be found before the newlib version. Similarly, uClibc
|
45 |
|
|
lacks the C99 functions. */
|
46 |
|
|
#include <sys/types.h>
|
47 |
|
|
#if defined(_NEWLIB_VERSION) || defined(__UCLIBC__)
|
48 |
|
|
#elif defined(__sun) && __STDC_VERSION__ - 0 < 199901L
|
49 |
|
|
/* If you're including this file, you probably want to test the newer
|
50 |
|
|
behaviour, so ensure the right flags were used for each test: */
|
51 |
|
|
#error forgot to set -std=c99.
|
52 |
|
|
#elif defined(__sun) && ! defined (_STDC_C99)
|
53 |
|
|
/* Solaris up to 9 doesn't have the entire C99 runtime.
|
54 |
|
|
Solaris 10 defines _STDC_C99 if __STDC_VERSION__ is >= 199901L.
|
55 |
|
|
This macro is defined in <sys/feature_tests.h> which is included by
|
56 |
|
|
various system headers, in this case <sys/types.h> above. */
|
57 |
|
|
#else
|
58 |
|
|
#define HAVE_C99_RUNTIME
|
59 |
|
|
#endif
|
60 |
|
|
#endif
|