OSDN Git Service

fabf314a0248207a4e564ce29a8b1ca59a973a68
[pf3gnuchains/gcc-fork.git] / gcc / cppdefault.c
1 /* CPP Library.
2    Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
3    1999, 2000, 2003, 2004, 2006, 2007, 2010, 2011
4    Free Software Foundation, Inc.
5    Contributed by Per Bothner, 1994-95.
6    Based on CCCP program by Paul Rubin, June 1986
7    Adapted to ANSI C, Richard Stallman, Jan 1987
8
9    This program is free software; you can redistribute it and/or modify it
10    under the terms of the GNU General Public License as published by the
11    Free Software Foundation; either version 3, or (at your option) any
12    later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program; see the file COPYING3.  If not see
21    <http://www.gnu.org/licenses/>.  */
22
23 #include "config.h"
24 #include "system.h"
25 #include "coretypes.h"
26 #include "tm.h"
27 #include "cppdefault.h"
28
29 #ifndef NATIVE_SYSTEM_HEADER_COMPONENT
30 #define NATIVE_SYSTEM_HEADER_COMPONENT 0
31 #endif
32
33 #if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
34 # undef LOCAL_INCLUDE_DIR
35 #else
36 # undef CROSS_INCLUDE_DIR
37 #endif
38
39 const struct default_include cpp_include_defaults[]
40 #ifdef INCLUDE_DEFAULTS
41 = INCLUDE_DEFAULTS;
42 #else
43 = {
44 #ifdef GPLUSPLUS_INCLUDE_DIR
45     /* Pick up GNU C++ generic include files.  */
46     { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
47 #endif
48 #ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
49     /* Pick up GNU C++ target-dependent include files.  */
50     { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 0, 1 },
51 #endif
52 #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
53     /* Pick up GNU C++ backward and deprecated include files.  */
54     { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
55 #endif
56 #ifdef GCC_INCLUDE_DIR
57     /* This is the dir for gcc's private headers.  */
58     { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
59 #endif
60 #ifdef LOCAL_INCLUDE_DIR
61     /* /usr/local/include comes before the fixincluded header files.  */
62     { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
63 #endif
64 #ifdef PREFIX_INCLUDE_DIR
65     { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0 },
66 #endif
67 #ifdef FIXED_INCLUDE_DIR
68     /* This is the dir for fixincludes.  */
69     { FIXED_INCLUDE_DIR, "GCC", 0, 0, 0,
70       /* A multilib suffix needs adding if different multilibs use
71          different headers.  */
72 #ifdef SYSROOT_HEADERS_SUFFIX_SPEC
73       1
74 #else
75       0
76 #endif
77     },
78 #endif
79 #ifdef CROSS_INCLUDE_DIR
80     /* One place the target system's headers might be.  */
81     { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
82 #endif
83 #ifdef TOOL_INCLUDE_DIR
84     /* Another place the target system's headers might be.  */
85     { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0 },
86 #endif
87     /* /usr/include comes dead last.  */
88     { NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 0 },
89     { 0, 0, 0, 0, 0, 0 }
90   };
91 #endif /* no INCLUDE_DEFAULTS */
92
93 #ifdef GCC_INCLUDE_DIR
94 const char cpp_GCC_INCLUDE_DIR[] = GCC_INCLUDE_DIR;
95 const size_t cpp_GCC_INCLUDE_DIR_len = sizeof GCC_INCLUDE_DIR - 8;
96 #else
97 const char cpp_GCC_INCLUDE_DIR[] = "";
98 const size_t cpp_GCC_INCLUDE_DIR_len = 0;
99 #endif
100
101 /* The configured prefix.  */
102 const char cpp_PREFIX[] = PREFIX;
103 const size_t cpp_PREFIX_len = sizeof PREFIX - 1;
104 const char cpp_EXEC_PREFIX[] = STANDARD_EXEC_PREFIX;
105
106 /* This value is set by cpp_relocated at runtime */
107 const char *gcc_exec_prefix;
108
109 /* Return true if the toolchain is relocated.  */
110 bool
111 cpp_relocated (void)
112 {
113   static int relocated = -1;
114
115   /* A relocated toolchain ignores standard include directories.  */
116   if (relocated == -1)
117     {
118       /* Check if the toolchain was relocated?  */
119       gcc_exec_prefix = getenv ("GCC_EXEC_PREFIX");
120       if (gcc_exec_prefix)
121        relocated = 1;
122       else
123        relocated = 0;
124     }
125
126   return relocated;
127 }