| #ifndef __SYS_CONFIG_H__ |
| #define __SYS_CONFIG_H__ |
| |
| #include <machine/ieeefp.h> /* floating point macros */ |
| #include <sys/features.h> /* POSIX defs */ |
| |
| #ifdef __aarch64__ |
| #define MALLOC_ALIGNMENT 16 |
| #endif |
| |
| /* exceptions first */ |
| #if defined(__H8500__) || defined(__W65__) |
| #define __SMALL_BITFIELDS |
| /* ??? This conditional is true for the h8500 and the w65, defining H8300 |
| in those cases probably isn't the right thing to do. */ |
| #define H8300 1 |
| #endif |
| |
| /* 16 bit integer machines */ |
| #if defined(__Z8001__) || defined(__Z8002__) || defined(__H8500__) || defined(__W65__) || defined (__mn10200__) || defined (__AVR__) |
| |
| #undef INT_MAX |
| #undef UINT_MAX |
| #define INT_MAX 32767 |
| #define UINT_MAX 65535 |
| #endif |
| |
| #if defined (__H8300__) || defined (__H8300H__) || defined(__H8300S__) || defined (__H8300SX__) |
| #define __SMALL_BITFIELDS |
| #define H8300 1 |
| #undef INT_MAX |
| #undef UINT_MAX |
| #define INT_MAX __INT_MAX__ |
| #define UINT_MAX (__INT_MAX__ * 2U + 1) |
| #endif |
| |
| #if (defined(__CR16__) || defined(__CR16C__) ||defined(__CR16CP__)) |
| #ifndef __INT32__ |
| #define __SMALL_BITFIELDS |
| #undef INT_MAX |
| #undef UINT_MAX |
| #define INT_MAX 32767 |
| #define UINT_MAX (__INT_MAX__ * 2U + 1) |
| #else /* INT32 */ |
| #undef INT_MAX |
| #undef UINT_MAX |
| #define INT_MAX 2147483647 |
| #define UINT_MAX (__INT_MAX__ * 2U + 1) |
| #endif /* INT32 */ |
| |
| #endif /* CR16C */ |
| |
| #if defined (__xc16x__) || defined (__xc16xL__) || defined (__xc16xS__) |
| #define __SMALL_BITFIELDS |
| #endif |
| |
| #ifdef __W65__ |
| #define __SMALL_BITFIELDS |
| #endif |
| |
| #if defined(__D10V__) |
| #define __SMALL_BITFIELDS |
| #undef INT_MAX |
| #undef UINT_MAX |
| #define INT_MAX __INT_MAX__ |
| #define UINT_MAX (__INT_MAX__ * 2U + 1) |
| #define _POINTER_INT short |
| #endif |
| |
| #if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__) |
| #undef INT_MAX |
| #undef UINT_MAX |
| #define INT_MAX __INT_MAX__ |
| #define UINT_MAX (__INT_MAX__ * 2U + 1) |
| #define _POINTER_INT short |
| #endif |
| |
| #if defined(__m68k__) || defined(__mc68000__) |
| #define _READ_WRITE_RETURN_TYPE _ssize_t |
| #endif |
| |
| #ifdef ___AM29K__ |
| #define _FLOAT_RET double |
| #endif |
| |
| #ifdef __i386__ |
| #ifndef __unix__ |
| /* in other words, go32 */ |
| #define _FLOAT_RET double |
| #endif |
| #if defined(__linux__) || defined(__RDOS__) |
| /* we want the reentrancy structure to be returned by a function */ |
| #define __DYNAMIC_REENT__ |
| #define HAVE_GETDATE |
| #define _HAVE_SYSTYPES |
| #define _READ_WRITE_RETURN_TYPE _ssize_t |
| #define __LARGE64_FILES 1 |
| /* we use some glibc header files so turn on glibc large file feature */ |
| #define _LARGEFILE64_SOURCE 1 |
| #endif |
| #endif |
| |
| #ifdef __mn10200__ |
| #define __SMALL_BITFIELDS |
| #endif |
| |
| #ifdef __AVR__ |
| #define __SMALL_BITFIELDS |
| #define _POINTER_INT short |
| #endif |
| |
| #ifdef __v850 |
| #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__sda__)) |
| #endif |
| |
| /* For the PowerPC eabi, force the _impure_ptr to be in .sdata */ |
| #if defined(__PPC__) |
| #if defined(_CALL_SYSV) |
| #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata"))) |
| #endif |
| #ifdef __SPE__ |
| #define _LONG_DOUBLE double |
| #endif |
| #endif |
| |
| /* Configure small REENT structure for Xilinx MicroBlaze platforms */ |
| #if defined (__MICROBLAZE__) |
| #ifndef _REENT_SMALL |
| #define _REENT_SMALL |
| #endif |
| /* Xilinx XMK uses Unix98 mutex */ |
| #ifdef __XMK__ |
| #define _UNIX98_THREAD_MUTEX_ATTRIBUTES |
| #endif |
| #endif |
| |
| #if defined(__mips__) && !defined(__rtems__) |
| #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata"))) |
| #endif |
| |
| #ifdef __xstormy16__ |
| #define __SMALL_BITFIELDS |
| #undef INT_MAX |
| #undef UINT_MAX |
| #define INT_MAX __INT_MAX__ |
| #define UINT_MAX (__INT_MAX__ * 2U + 1) |
| #define MALLOC_ALIGNMENT 8 |
| #define _POINTER_INT short |
| #define __BUFSIZ__ 16 |
| #define _REENT_SMALL |
| #endif |
| |
| #if defined __MSP430__ |
| #ifndef _REENT_SMALL |
| #define _REENT_SMALL |
| #endif |
| |
| #define __SMALL_BITFIELDS |
| |
| #ifdef __MSP430X_LARGE__ |
| #define _POINTER_INT long |
| #else |
| #define _POINTER_INT int |
| #endif |
| #endif |
| |
| #ifdef __m32c__ |
| #define __SMALL_BITFIELDS |
| #undef INT_MAX |
| #undef UINT_MAX |
| #define INT_MAX __INT_MAX__ |
| #define UINT_MAX (__INT_MAX__ * 2U + 1) |
| #define MALLOC_ALIGNMENT 8 |
| #if defined(__r8c_cpu__) || defined(__m16c_cpu__) |
| #define _POINTER_INT short |
| #else |
| #define _POINTER_INT long |
| #endif |
| #define __BUFSIZ__ 16 |
| #define _REENT_SMALL |
| #endif /* __m32c__ */ |
| |
| #ifdef __SPU__ |
| #define MALLOC_ALIGNMENT 16 |
| #define __CUSTOM_FILE_IO__ |
| #endif |
| |
| /* This block should be kept in sync with GCC's limits.h. The point |
| of having these definitions here is to not include limits.h, which |
| would pollute the user namespace, while still using types of the |
| the correct widths when deciding how to define __int32_t and |
| __int64_t. */ |
| #ifndef __INT_MAX__ |
| # ifdef INT_MAX |
| # define __INT_MAX__ INT_MAX |
| # else |
| # define __INT_MAX__ 2147483647 |
| # endif |
| #endif |
| |
| #ifndef __LONG_MAX__ |
| # ifdef LONG_MAX |
| # define __LONG_MAX__ LONG_MAX |
| # else |
| # if defined (__alpha__) || (defined (__sparc__) && defined(__arch64__)) \ |
| || defined (__sparcv9) |
| # define __LONG_MAX__ 9223372036854775807L |
| # else |
| # define __LONG_MAX__ 2147483647L |
| # endif /* __alpha__ || sparc64 */ |
| # endif |
| #endif |
| /* End of block that should be kept in sync with GCC's limits.h. */ |
| |
| #ifndef _POINTER_INT |
| #define _POINTER_INT long |
| #endif |
| |
| #ifdef __frv__ |
| #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata"))) |
| #endif |
| #undef __RAND_MAX |
| #if __INT_MAX__ == 32767 |
| #define __RAND_MAX 32767 |
| #else |
| #define __RAND_MAX 0x7fffffff |
| #endif |
| |
| #if defined(__CYGWIN__) |
| #include <cygwin/config.h> |
| #if !defined (__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L) |
| #define __USE_XOPEN2K 1 |
| #endif |
| #endif |
| |
| #if defined(__rtems__) |
| #define __FILENAME_MAX__ 255 |
| #define _READ_WRITE_RETURN_TYPE _ssize_t |
| #define __DYNAMIC_REENT__ |
| #define _REENT_GLOBAL_ATEXIT |
| #endif |
| |
| #ifndef __EXPORT |
| #define __EXPORT |
| #endif |
| |
| #ifndef __IMPORT |
| #define __IMPORT |
| #endif |
| |
| /* Define return type of read/write routines. In POSIX, the return type |
| for read()/write() is "ssize_t" but legacy newlib code has been using |
| "int" for some time. If not specified, "int" is defaulted. */ |
| #ifndef _READ_WRITE_RETURN_TYPE |
| #define _READ_WRITE_RETURN_TYPE int |
| #endif |
| /* Define `count' parameter of read/write routines. In POSIX, the `count' |
| parameter is "size_t" but legacy newlib code has been using "int" for some |
| time. If not specified, "int" is defaulted. */ |
| #ifndef _READ_WRITE_BUFSIZE_TYPE |
| #define _READ_WRITE_BUFSIZE_TYPE int |
| #endif |
| |
| #ifndef __WCHAR_MAX__ |
| #if __INT_MAX__ == 32767 || defined (_WIN32) |
| #define __WCHAR_MAX__ 0xffffu |
| #endif |
| #endif |
| |
| /* See if small reent asked for at configuration time and |
| is not chosen by the platform by default. */ |
| #ifdef _WANT_REENT_SMALL |
| #ifndef _REENT_SMALL |
| #define _REENT_SMALL |
| #endif |
| #endif |
| |
| /* If _MB_EXTENDED_CHARSETS_ALL is set, we want all of the extended |
| charsets. The extended charsets add a few functions and a couple |
| of tables of a few K each. */ |
| #ifdef _MB_EXTENDED_CHARSETS_ALL |
| #define _MB_EXTENDED_CHARSETS_ISO 1 |
| #define _MB_EXTENDED_CHARSETS_WINDOWS 1 |
| #endif |
| |
| #endif /* __SYS_CONFIG_H__ */ |