tsystem.h revision 169689
1/* Get common system includes and various definitions and declarations 2 based on target macros. 3 Copyright (C) 2000, 2001, 2004, 2005 Free Software Foundation, Inc. 4 5This file is part of GCC. 6 7GCC is free software; you can redistribute it and/or modify it under 8the terms of the GNU General Public License as published by the Free 9Software Foundation; either version 2, or (at your option) any later 10version. 11 12GCC is distributed in the hope that it will be useful, but WITHOUT ANY 13WARRANTY; without even the implied warranty of MERCHANTABILITY or 14FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15for more details. 16 17You should have received a copy of the GNU General Public License 18along with GCC; see the file COPYING. If not, write to the Free 19Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 2002110-1301, USA. */ 21 22/* As a special exception, if you link this library with other files, 23 some of which are compiled with GCC, to produce an executable, 24 this library does not by itself cause the resulting executable 25 to be covered by the GNU General Public License. 26 This exception does not however invalidate any other reasons why 27 the executable file might be covered by the GNU General Public License. */ 28 29#ifndef GCC_TSYSTEM_H 30#define GCC_TSYSTEM_H 31 32/* System headers (e.g. stdio.h, stdlib.h, unistd.h) sometimes 33 indirectly include getopt.h. Our -I flags will cause gcc's gnu 34 getopt.h to be included, not the platform's copy. In the default 35 case, gnu getopt.h will provide us with a no-argument prototype 36 which will generate -Wstrict-prototypes warnings. None of the 37 target files actually use getopt, so it is safe to tell gnu 38 getopt.h we never need this prototype. */ 39#ifndef HAVE_DECL_GETOPT 40#define HAVE_DECL_GETOPT 1 41#endif 42 43/* We want everything from the glibc headers. */ 44#define _GNU_SOURCE 1 45 46/* GCC supplies these headers. */ 47#include <stddef.h> 48#include <float.h> 49 50#ifdef inhibit_libc 51 52#ifndef malloc 53extern void *malloc (size_t); 54#endif 55 56#ifndef free 57extern void free (void *); 58#endif 59 60#ifndef atexit 61extern int atexit (void (*)(void)); 62#endif 63 64#ifndef abort 65extern void abort (void) __attribute__ ((__noreturn__)); 66#endif 67 68#ifndef strlen 69extern size_t strlen (const char *); 70#endif 71 72#ifndef memcpy 73extern void *memcpy (void *, const void *, size_t); 74#endif 75 76#ifndef memset 77extern void *memset (void *, int, size_t); 78#endif 79 80#else /* ! inhibit_libc */ 81/* We disable this when inhibit_libc, so that gcc can still be built without 82 needing header files first. */ 83/* ??? This is not a good solution, since prototypes may be required in 84 some cases for correct code. */ 85 86/* GCC supplies this header. */ 87#include <stdarg.h> 88 89/* All systems have this header. */ 90#include <stdio.h> 91 92/* All systems have this header. */ 93#include <sys/types.h> 94 95/* All systems have this header. */ 96#include <errno.h> 97 98#ifndef errno 99extern int errno; 100#endif 101 102/* GCC (fixproto) guarantees these system headers exist. */ 103#include <string.h> 104#include <stdlib.h> 105#include <unistd.h> 106 107/* GCC supplies this header. */ 108#include <limits.h> 109 110/* GCC (fixproto) guarantees this system headers exists. */ 111#include <time.h> 112 113#endif /* inhibit_libc */ 114 115/* Define a generic NULL if one hasn't already been defined. */ 116#ifndef NULL 117#define NULL 0 118#endif 119 120/* GCC always provides __builtin_alloca(x). */ 121#undef alloca 122#define alloca(x) __builtin_alloca(x) 123 124#ifdef ENABLE_RUNTIME_CHECKING 125#define gcc_assert(EXPR) ((void)(!(EXPR) ? abort (), 0 : 0)) 126#else 127/* Include EXPR, so that unused variable warnings do not occur. */ 128#define gcc_assert(EXPR) ((void)(0 && (EXPR))) 129#endif 130/* Use gcc_unreachable() to mark unreachable locations (like an 131 unreachable default case of a switch. Do not use gcc_assert(0). */ 132#define gcc_unreachable() (abort ()) 133 134/* Filename handling macros. */ 135#include "filenames.h" 136 137#endif /* ! GCC_TSYSTEM_H */ 138