]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/cppdefault.cc
Update copyright years.
[thirdparty/gcc.git] / gcc / cppdefault.cc
CommitLineData
60893f43 1/* CPP Library.
a945c346 2 Copyright (C) 1986-2024 Free Software Foundation, Inc.
60893f43
ZW
3 Contributed by Per Bothner, 1994-95.
4 Based on CCCP program by Paul Rubin, June 1986
5 Adapted to ANSI C, Richard Stallman, Jan 1987
6
9dcd6f09
NC
7 This program is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by the
9 Free Software Foundation; either version 3, or (at your option) any
10 later version.
60893f43 11
9dcd6f09
NC
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
60893f43 16
9dcd6f09
NC
17 You should have received a copy of the GNU General Public License
18 along with this program; see the file COPYING3. If not see
19 <http://www.gnu.org/licenses/>. */
60893f43 20
60893f43
ZW
21#include "config.h"
22#include "system.h"
4977bab6
ZW
23#include "coretypes.h"
24#include "tm.h"
60893f43
ZW
25#include "cppdefault.h"
26
08b2bad2
SB
27#ifndef NATIVE_SYSTEM_HEADER_COMPONENT
28#define NATIVE_SYSTEM_HEADER_COMPONENT 0
5793b276
NB
29#endif
30
2989d30c 31#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
5793b276 32# undef LOCAL_INCLUDE_DIR
859ed2a7 33# undef NATIVE_SYSTEM_HEADER_DIR
5793b276
NB
34#else
35# undef CROSS_INCLUDE_DIR
36#endif
37
60893f43
ZW
38const struct default_include cpp_include_defaults[]
39#ifdef INCLUDE_DEFAULTS
40= INCLUDE_DEFAULTS;
41#else
42= {
43#ifdef GPLUSPLUS_INCLUDE_DIR
e2187d3b 44 /* Pick up GNU C++ generic include files. */
17719d09
HS
45 { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,
46 GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
60893f43 47#endif
e2187d3b
BK
48#ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
49 /* Pick up GNU C++ target-dependent include files. */
17719d09
HS
50 { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,
51 GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },
e2187d3b 52#endif
98c2359b
BK
53#ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
54 /* Pick up GNU C++ backward and deprecated include files. */
17719d09
HS
55 { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,
56 GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
98c2359b 57#endif
662b9c55
IS
58#ifdef GPLUSPLUS_LIBCXX_INCLUDE_DIR
59 /* Pick up libc++ include files, if we have -stdlib=libc++. */
60 { GPLUSPLUS_LIBCXX_INCLUDE_DIR, "G++", 2, 1,
61 GPLUSPLUS_LIBCXX_INCLUDE_DIR_ADD_SYSROOT, 0 },
62#endif
da46381f
KT
63#ifdef GCC_INCLUDE_DIR
64 /* This is the dir for gcc's private headers. */
65 { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
66#endif
60893f43
ZW
67#ifdef LOCAL_INCLUDE_DIR
68 /* /usr/local/include comes before the fixincluded header files. */
e0cdc09f 69 { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },
2b6dd222 70 { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
60893f43 71#endif
793e9558 72#ifdef PREFIX_INCLUDE_DIR
2b6dd222 73 { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0 },
793e9558 74#endif
f686ec05
JM
75#ifdef FIXED_INCLUDE_DIR
76 /* This is the dir for fixincludes. */
a5a9237e
JJ
77#ifndef SYSROOT_HEADERS_SUFFIX_SPEC
78 { FIXED_INCLUDE_DIR, "GCC", 0, 0, 0, 2 },
79#endif
14da6073
JM
80 { FIXED_INCLUDE_DIR, "GCC", 0, 0, 0,
81 /* A multilib suffix needs adding if different multilibs use
82 different headers. */
83#ifdef SYSROOT_HEADERS_SUFFIX_SPEC
84 1
85#else
86 0
87#endif
88 },
f686ec05 89#endif
60893f43
ZW
90#ifdef CROSS_INCLUDE_DIR
91 /* One place the target system's headers might be. */
2b6dd222 92 { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
60893f43
ZW
93#endif
94#ifdef TOOL_INCLUDE_DIR
95 /* Another place the target system's headers might be. */
2b6dd222 96 { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0 },
60893f43 97#endif
859ed2a7 98#ifdef NATIVE_SYSTEM_HEADER_DIR
60893f43 99 /* /usr/include comes dead last. */
e0cdc09f 100 { NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 2 },
08b2bad2 101 { NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 0 },
859ed2a7 102#endif
2b6dd222 103 { 0, 0, 0, 0, 0, 0 }
60893f43
ZW
104 };
105#endif /* no INCLUDE_DEFAULTS */
106
107#ifdef GCC_INCLUDE_DIR
108const char cpp_GCC_INCLUDE_DIR[] = GCC_INCLUDE_DIR;
109const size_t cpp_GCC_INCLUDE_DIR_len = sizeof GCC_INCLUDE_DIR - 8;
110#else
111const char cpp_GCC_INCLUDE_DIR[] = "";
112const size_t cpp_GCC_INCLUDE_DIR_len = 0;
113#endif
76642aab
CD
114
115/* The configured prefix. */
116const char cpp_PREFIX[] = PREFIX;
117const size_t cpp_PREFIX_len = sizeof PREFIX - 1;
6d4817e3 118const char cpp_EXEC_PREFIX[] = STANDARD_EXEC_PREFIX;
76642aab
CD
119
120/* This value is set by cpp_relocated at runtime */
121const char *gcc_exec_prefix;
122
123/* Return true if the toolchain is relocated. */
124bool
125cpp_relocated (void)
126{
127 static int relocated = -1;
128
129 /* A relocated toolchain ignores standard include directories. */
130 if (relocated == -1)
131 {
132 /* Check if the toolchain was relocated? */
71f3e391 133 gcc_exec_prefix = getenv ("GCC_EXEC_PREFIX");
76642aab
CD
134 if (gcc_exec_prefix)
135 relocated = 1;
136 else
137 relocated = 0;
138 }
139
140 return relocated;
141}