xref: /aosp_15_r20/external/cronet/build/build_config.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2012 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker // This file doesn't belong to any GN target by design for faster build and
6*6777b538SAndroid Build Coastguard Worker // less developer overhead.
7*6777b538SAndroid Build Coastguard Worker 
8*6777b538SAndroid Build Coastguard Worker // This file adds build flags about the OS we're currently building on. They are
9*6777b538SAndroid Build Coastguard Worker // defined directly in this file instead of via a `buildflag_header` target in a
10*6777b538SAndroid Build Coastguard Worker // GN file for faster build. They are defined using the corresponding OS defines
11*6777b538SAndroid Build Coastguard Worker // (e.g. OS_WIN) which are also defined in this file (except for OS_CHROMEOS,
12*6777b538SAndroid Build Coastguard Worker // which is set by the build system). These defines are deprecated and should
13*6777b538SAndroid Build Coastguard Worker // NOT be used directly. For example:
14*6777b538SAndroid Build Coastguard Worker //    Please Use: #if BUILDFLAG(IS_WIN)
15*6777b538SAndroid Build Coastguard Worker //    Deprecated: #if defined(OS_WIN)
16*6777b538SAndroid Build Coastguard Worker //
17*6777b538SAndroid Build Coastguard Worker //  Operating System:
18*6777b538SAndroid Build Coastguard Worker //    IS_AIX / IS_ANDROID / IS_ASMJS / IS_CHROMEOS / IS_FREEBSD / IS_FUCHSIA /
19*6777b538SAndroid Build Coastguard Worker //    IS_IOS / IS_IOS_MACCATALYST / IS_IOS_VISION / IS_IOS_WATCH / IS_LINUX /
20*6777b538SAndroid Build Coastguard Worker //    IS_MAC / IS_NACL / IS_NETBSD / IS_OPENBSD / IS_QNX / IS_SOLARIS / IS_WIN
21*6777b538SAndroid Build Coastguard Worker //  Operating System family:
22*6777b538SAndroid Build Coastguard Worker //    IS_APPLE: MAC or IOS or IOS_MACCATALYST or IOS_VISION or IOS_WATCH
23*6777b538SAndroid Build Coastguard Worker //    IS_IOS: IOS or IOS_MACCATALYST or IOS_VISION or IOS_WATCH
24*6777b538SAndroid Build Coastguard Worker //    IS_BSD: FREEBSD or NETBSD or OPENBSD
25*6777b538SAndroid Build Coastguard Worker //    IS_POSIX: AIX or ANDROID or ASMJS or CHROMEOS or FREEBSD or IOS
26*6777b538SAndroid Build Coastguard Worker //              or IOS_MACCATALYST or IOS_VISION or IOS_WATCH or LINUX or MAC
27*6777b538SAndroid Build Coastguard Worker //              or NACL or NETBSD or OPENBSD or QNX or SOLARIS
28*6777b538SAndroid Build Coastguard Worker 
29*6777b538SAndroid Build Coastguard Worker // This file also adds defines specific to the platform, architecture etc.
30*6777b538SAndroid Build Coastguard Worker //
31*6777b538SAndroid Build Coastguard Worker //  Platform:
32*6777b538SAndroid Build Coastguard Worker //    IS_OZONE
33*6777b538SAndroid Build Coastguard Worker //
34*6777b538SAndroid Build Coastguard Worker //  Compiler:
35*6777b538SAndroid Build Coastguard Worker //    COMPILER_MSVC / COMPILER_GCC
36*6777b538SAndroid Build Coastguard Worker //
37*6777b538SAndroid Build Coastguard Worker //  Processor:
38*6777b538SAndroid Build Coastguard Worker //    ARCH_CPU_ARM64 / ARCH_CPU_ARMEL / ARCH_CPU_LOONGARCH32 /
39*6777b538SAndroid Build Coastguard Worker //    ARCH_CPU_LOONGARCH64 / ARCH_CPU_MIPS / ARCH_CPU_MIPS64 /
40*6777b538SAndroid Build Coastguard Worker //    ARCH_CPU_MIPS64EL / ARCH_CPU_MIPSEL / ARCH_CPU_PPC64 / ARCH_CPU_S390 /
41*6777b538SAndroid Build Coastguard Worker //    ARCH_CPU_S390X / ARCH_CPU_X86 / ARCH_CPU_X86_64 / ARCH_CPU_RISCV64
42*6777b538SAndroid Build Coastguard Worker //  Processor family:
43*6777b538SAndroid Build Coastguard Worker //    ARCH_CPU_ARM_FAMILY: ARMEL or ARM64
44*6777b538SAndroid Build Coastguard Worker //    ARCH_CPU_LOONGARCH_FAMILY: LOONGARCH32 or LOONGARCH64
45*6777b538SAndroid Build Coastguard Worker //    ARCH_CPU_MIPS_FAMILY: MIPS64EL or MIPSEL or MIPS64 or MIPS
46*6777b538SAndroid Build Coastguard Worker //    ARCH_CPU_PPC64_FAMILY: PPC64
47*6777b538SAndroid Build Coastguard Worker //    ARCH_CPU_S390_FAMILY: S390 or S390X
48*6777b538SAndroid Build Coastguard Worker //    ARCH_CPU_X86_FAMILY: X86 or X86_64
49*6777b538SAndroid Build Coastguard Worker //    ARCH_CPU_RISCV_FAMILY: Riscv64
50*6777b538SAndroid Build Coastguard Worker //  Processor features:
51*6777b538SAndroid Build Coastguard Worker //    ARCH_CPU_31_BITS / ARCH_CPU_32_BITS / ARCH_CPU_64_BITS
52*6777b538SAndroid Build Coastguard Worker //    ARCH_CPU_BIG_ENDIAN / ARCH_CPU_LITTLE_ENDIAN
53*6777b538SAndroid Build Coastguard Worker 
54*6777b538SAndroid Build Coastguard Worker #ifndef BUILD_BUILD_CONFIG_H_
55*6777b538SAndroid Build Coastguard Worker #define BUILD_BUILD_CONFIG_H_
56*6777b538SAndroid Build Coastguard Worker 
57*6777b538SAndroid Build Coastguard Worker #include "build/buildflag.h"  // IWYU pragma: export
58*6777b538SAndroid Build Coastguard Worker 
59*6777b538SAndroid Build Coastguard Worker // A set of macros to use for platform detection.
60*6777b538SAndroid Build Coastguard Worker #if defined(__native_client__)
61*6777b538SAndroid Build Coastguard Worker // __native_client__ must be first, so that other OS_ defines are not set.
62*6777b538SAndroid Build Coastguard Worker #define OS_NACL 1
63*6777b538SAndroid Build Coastguard Worker #elif defined(ANDROID)
64*6777b538SAndroid Build Coastguard Worker #define OS_ANDROID 1
65*6777b538SAndroid Build Coastguard Worker #elif defined(__APPLE__)
66*6777b538SAndroid Build Coastguard Worker // Only include TargetConditionals after testing ANDROID as some Android builds
67*6777b538SAndroid Build Coastguard Worker // on the Mac have this header available and it's not needed unless the target
68*6777b538SAndroid Build Coastguard Worker // is really an Apple platform.
69*6777b538SAndroid Build Coastguard Worker #include <TargetConditionals.h>
70*6777b538SAndroid Build Coastguard Worker #if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
71*6777b538SAndroid Build Coastguard Worker #define OS_IOS 1
72*6777b538SAndroid Build Coastguard Worker // Catalyst is the technology that allows running iOS apps on macOS. These
73*6777b538SAndroid Build Coastguard Worker // builds are both OS_IOS and OS_IOS_MACCATALYST.
74*6777b538SAndroid Build Coastguard Worker #if defined(TARGET_OS_MACCATALYST) && TARGET_OS_MACCATALYST
75*6777b538SAndroid Build Coastguard Worker #define OS_IOS_MACCATALYST
76*6777b538SAndroid Build Coastguard Worker #endif  // defined(TARGET_OS_MACCATALYST) && TARGET_OS_MACCATALYST
77*6777b538SAndroid Build Coastguard Worker #if defined(TARGET_OS_VISION) && TARGET_OS_VISION
78*6777b538SAndroid Build Coastguard Worker #define OS_IOS_VISION 1
79*6777b538SAndroid Build Coastguard Worker #endif  // defined(TARGET_OS_VISION) && TARGET_OS_VISION
80*6777b538SAndroid Build Coastguard Worker #if defined(TARGET_OS_WATCH) && TARGET_OS_WATCH
81*6777b538SAndroid Build Coastguard Worker #define OS_IOS_WATCH 1
82*6777b538SAndroid Build Coastguard Worker #endif  // defined(TARGET_OS_WATCH) && TARGET_OS_WATCH
83*6777b538SAndroid Build Coastguard Worker #else
84*6777b538SAndroid Build Coastguard Worker #define OS_MAC 1
85*6777b538SAndroid Build Coastguard Worker #endif  // defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
86*6777b538SAndroid Build Coastguard Worker #elif defined(__linux__)
87*6777b538SAndroid Build Coastguard Worker #if !defined(OS_CHROMEOS)
88*6777b538SAndroid Build Coastguard Worker // Do not define OS_LINUX on Chrome OS build.
89*6777b538SAndroid Build Coastguard Worker // The OS_CHROMEOS macro is defined in GN.
90*6777b538SAndroid Build Coastguard Worker #define OS_LINUX 1
91*6777b538SAndroid Build Coastguard Worker #endif  // !defined(OS_CHROMEOS)
92*6777b538SAndroid Build Coastguard Worker // Include a system header to pull in features.h for glibc/uclibc macros.
93*6777b538SAndroid Build Coastguard Worker #include <assert.h>
94*6777b538SAndroid Build Coastguard Worker #if defined(__GLIBC__) && !defined(__UCLIBC__)
95*6777b538SAndroid Build Coastguard Worker // We really are using glibc, not uClibc pretending to be glibc.
96*6777b538SAndroid Build Coastguard Worker #define LIBC_GLIBC 1
97*6777b538SAndroid Build Coastguard Worker #endif
98*6777b538SAndroid Build Coastguard Worker #elif defined(_WIN32)
99*6777b538SAndroid Build Coastguard Worker #define OS_WIN 1
100*6777b538SAndroid Build Coastguard Worker #elif defined(__Fuchsia__)
101*6777b538SAndroid Build Coastguard Worker #define OS_FUCHSIA 1
102*6777b538SAndroid Build Coastguard Worker #elif defined(__FreeBSD__)
103*6777b538SAndroid Build Coastguard Worker #define OS_FREEBSD 1
104*6777b538SAndroid Build Coastguard Worker #elif defined(__NetBSD__)
105*6777b538SAndroid Build Coastguard Worker #define OS_NETBSD 1
106*6777b538SAndroid Build Coastguard Worker #elif defined(__OpenBSD__)
107*6777b538SAndroid Build Coastguard Worker #define OS_OPENBSD 1
108*6777b538SAndroid Build Coastguard Worker #elif defined(__sun)
109*6777b538SAndroid Build Coastguard Worker #define OS_SOLARIS 1
110*6777b538SAndroid Build Coastguard Worker #elif defined(__QNXNTO__)
111*6777b538SAndroid Build Coastguard Worker #define OS_QNX 1
112*6777b538SAndroid Build Coastguard Worker #elif defined(_AIX)
113*6777b538SAndroid Build Coastguard Worker #define OS_AIX 1
114*6777b538SAndroid Build Coastguard Worker #elif defined(__asmjs__) || defined(__wasm__)
115*6777b538SAndroid Build Coastguard Worker #define OS_ASMJS 1
116*6777b538SAndroid Build Coastguard Worker #elif defined(__MVS__)
117*6777b538SAndroid Build Coastguard Worker #define OS_ZOS 1
118*6777b538SAndroid Build Coastguard Worker #else
119*6777b538SAndroid Build Coastguard Worker #error Please add support for your platform in build/build_config.h
120*6777b538SAndroid Build Coastguard Worker #endif
121*6777b538SAndroid Build Coastguard Worker // NOTE: Adding a new port? Please follow
122*6777b538SAndroid Build Coastguard Worker // https://chromium.googlesource.com/chromium/src/+/main/docs/new_port_policy.md
123*6777b538SAndroid Build Coastguard Worker 
124*6777b538SAndroid Build Coastguard Worker #if defined(OS_MAC) || defined(OS_IOS)
125*6777b538SAndroid Build Coastguard Worker #define OS_APPLE 1
126*6777b538SAndroid Build Coastguard Worker #endif
127*6777b538SAndroid Build Coastguard Worker 
128*6777b538SAndroid Build Coastguard Worker // For access to standard BSD features, use OS_BSD instead of a
129*6777b538SAndroid Build Coastguard Worker // more specific macro.
130*6777b538SAndroid Build Coastguard Worker #if defined(OS_FREEBSD) || defined(OS_NETBSD) || defined(OS_OPENBSD)
131*6777b538SAndroid Build Coastguard Worker #define OS_BSD 1
132*6777b538SAndroid Build Coastguard Worker #endif
133*6777b538SAndroid Build Coastguard Worker 
134*6777b538SAndroid Build Coastguard Worker // For access to standard POSIXish features, use OS_POSIX instead of a
135*6777b538SAndroid Build Coastguard Worker // more specific macro.
136*6777b538SAndroid Build Coastguard Worker #if defined(OS_AIX) || defined(OS_ANDROID) || defined(OS_ASMJS) ||  \
137*6777b538SAndroid Build Coastguard Worker     defined(OS_FREEBSD) || defined(OS_IOS) || defined(OS_LINUX) ||  \
138*6777b538SAndroid Build Coastguard Worker     defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_NACL) ||  \
139*6777b538SAndroid Build Coastguard Worker     defined(OS_NETBSD) || defined(OS_OPENBSD) || defined(OS_QNX) || \
140*6777b538SAndroid Build Coastguard Worker     defined(OS_SOLARIS) || defined(OS_ZOS)
141*6777b538SAndroid Build Coastguard Worker #define OS_POSIX 1
142*6777b538SAndroid Build Coastguard Worker #endif
143*6777b538SAndroid Build Coastguard Worker 
144*6777b538SAndroid Build Coastguard Worker // OS build flags
145*6777b538SAndroid Build Coastguard Worker #if defined(OS_AIX)
146*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_AIX() (1)
147*6777b538SAndroid Build Coastguard Worker #else
148*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_AIX() (0)
149*6777b538SAndroid Build Coastguard Worker #endif
150*6777b538SAndroid Build Coastguard Worker 
151*6777b538SAndroid Build Coastguard Worker #if defined(OS_ANDROID)
152*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_ANDROID() (1)
153*6777b538SAndroid Build Coastguard Worker #else
154*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_ANDROID() (0)
155*6777b538SAndroid Build Coastguard Worker #endif
156*6777b538SAndroid Build Coastguard Worker 
157*6777b538SAndroid Build Coastguard Worker #if defined(OS_APPLE)
158*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_APPLE() (1)
159*6777b538SAndroid Build Coastguard Worker #else
160*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_APPLE() (0)
161*6777b538SAndroid Build Coastguard Worker #endif
162*6777b538SAndroid Build Coastguard Worker 
163*6777b538SAndroid Build Coastguard Worker #if defined(OS_ASMJS)
164*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_ASMJS() (1)
165*6777b538SAndroid Build Coastguard Worker #else
166*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_ASMJS() (0)
167*6777b538SAndroid Build Coastguard Worker #endif
168*6777b538SAndroid Build Coastguard Worker 
169*6777b538SAndroid Build Coastguard Worker #if defined(OS_BSD)
170*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_BSD() (1)
171*6777b538SAndroid Build Coastguard Worker #else
172*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_BSD() (0)
173*6777b538SAndroid Build Coastguard Worker #endif
174*6777b538SAndroid Build Coastguard Worker 
175*6777b538SAndroid Build Coastguard Worker #if defined(OS_CHROMEOS)
176*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_CHROMEOS() (1)
177*6777b538SAndroid Build Coastguard Worker #else
178*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_CHROMEOS() (0)
179*6777b538SAndroid Build Coastguard Worker #endif
180*6777b538SAndroid Build Coastguard Worker 
181*6777b538SAndroid Build Coastguard Worker #if defined(OS_FREEBSD)
182*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_FREEBSD() (1)
183*6777b538SAndroid Build Coastguard Worker #else
184*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_FREEBSD() (0)
185*6777b538SAndroid Build Coastguard Worker #endif
186*6777b538SAndroid Build Coastguard Worker 
187*6777b538SAndroid Build Coastguard Worker #if defined(OS_FUCHSIA)
188*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_FUCHSIA() (1)
189*6777b538SAndroid Build Coastguard Worker #else
190*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_FUCHSIA() (0)
191*6777b538SAndroid Build Coastguard Worker #endif
192*6777b538SAndroid Build Coastguard Worker 
193*6777b538SAndroid Build Coastguard Worker #if defined(OS_IOS)
194*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_IOS() (1)
195*6777b538SAndroid Build Coastguard Worker #else
196*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_IOS() (0)
197*6777b538SAndroid Build Coastguard Worker #endif
198*6777b538SAndroid Build Coastguard Worker 
199*6777b538SAndroid Build Coastguard Worker #if defined(OS_IOS_MACCATALYST)
200*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_IOS_MACCATALYST() (1)
201*6777b538SAndroid Build Coastguard Worker #else
202*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_IOS_MACCATALYST() (0)
203*6777b538SAndroid Build Coastguard Worker #endif
204*6777b538SAndroid Build Coastguard Worker 
205*6777b538SAndroid Build Coastguard Worker #if defined(OS_IOS_VISION)
206*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_IOS_VISION() (1)
207*6777b538SAndroid Build Coastguard Worker #else
208*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_IOS_VISION() (0)
209*6777b538SAndroid Build Coastguard Worker #endif
210*6777b538SAndroid Build Coastguard Worker 
211*6777b538SAndroid Build Coastguard Worker #if defined(OS_IOS_WATCH)
212*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_IOS_WATCH() (1)
213*6777b538SAndroid Build Coastguard Worker #else
214*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_IOS_WATCH() (0)
215*6777b538SAndroid Build Coastguard Worker #endif
216*6777b538SAndroid Build Coastguard Worker 
217*6777b538SAndroid Build Coastguard Worker #if defined(OS_LINUX)
218*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_LINUX() (1)
219*6777b538SAndroid Build Coastguard Worker #else
220*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_LINUX() (0)
221*6777b538SAndroid Build Coastguard Worker #endif
222*6777b538SAndroid Build Coastguard Worker 
223*6777b538SAndroid Build Coastguard Worker #if defined(OS_MAC)
224*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_MAC() (1)
225*6777b538SAndroid Build Coastguard Worker #else
226*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_MAC() (0)
227*6777b538SAndroid Build Coastguard Worker #endif
228*6777b538SAndroid Build Coastguard Worker 
229*6777b538SAndroid Build Coastguard Worker #if defined(OS_NACL)
230*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_NACL() (1)
231*6777b538SAndroid Build Coastguard Worker #else
232*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_NACL() (0)
233*6777b538SAndroid Build Coastguard Worker #endif
234*6777b538SAndroid Build Coastguard Worker 
235*6777b538SAndroid Build Coastguard Worker #if defined(OS_NETBSD)
236*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_NETBSD() (1)
237*6777b538SAndroid Build Coastguard Worker #else
238*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_NETBSD() (0)
239*6777b538SAndroid Build Coastguard Worker #endif
240*6777b538SAndroid Build Coastguard Worker 
241*6777b538SAndroid Build Coastguard Worker #if defined(OS_OPENBSD)
242*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_OPENBSD() (1)
243*6777b538SAndroid Build Coastguard Worker #else
244*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_OPENBSD() (0)
245*6777b538SAndroid Build Coastguard Worker #endif
246*6777b538SAndroid Build Coastguard Worker 
247*6777b538SAndroid Build Coastguard Worker #if defined(OS_POSIX)
248*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_POSIX() (1)
249*6777b538SAndroid Build Coastguard Worker #else
250*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_POSIX() (0)
251*6777b538SAndroid Build Coastguard Worker #endif
252*6777b538SAndroid Build Coastguard Worker 
253*6777b538SAndroid Build Coastguard Worker #if defined(OS_QNX)
254*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_QNX() (1)
255*6777b538SAndroid Build Coastguard Worker #else
256*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_QNX() (0)
257*6777b538SAndroid Build Coastguard Worker #endif
258*6777b538SAndroid Build Coastguard Worker 
259*6777b538SAndroid Build Coastguard Worker #if defined(OS_SOLARIS)
260*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_SOLARIS() (1)
261*6777b538SAndroid Build Coastguard Worker #else
262*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_SOLARIS() (0)
263*6777b538SAndroid Build Coastguard Worker #endif
264*6777b538SAndroid Build Coastguard Worker 
265*6777b538SAndroid Build Coastguard Worker #if defined(OS_WIN)
266*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_WIN() (1)
267*6777b538SAndroid Build Coastguard Worker #else
268*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_WIN() (0)
269*6777b538SAndroid Build Coastguard Worker #endif
270*6777b538SAndroid Build Coastguard Worker 
271*6777b538SAndroid Build Coastguard Worker #if defined(USE_OZONE)
272*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_OZONE() (1)
273*6777b538SAndroid Build Coastguard Worker #else
274*6777b538SAndroid Build Coastguard Worker #define BUILDFLAG_INTERNAL_IS_OZONE() (0)
275*6777b538SAndroid Build Coastguard Worker #endif
276*6777b538SAndroid Build Coastguard Worker 
277*6777b538SAndroid Build Coastguard Worker // Compiler detection. Note: clang masquerades as GCC on POSIX and as MSVC on
278*6777b538SAndroid Build Coastguard Worker // Windows.
279*6777b538SAndroid Build Coastguard Worker #if defined(__GNUC__)
280*6777b538SAndroid Build Coastguard Worker #define COMPILER_GCC 1
281*6777b538SAndroid Build Coastguard Worker #elif defined(_MSC_VER)
282*6777b538SAndroid Build Coastguard Worker #define COMPILER_MSVC 1
283*6777b538SAndroid Build Coastguard Worker #else
284*6777b538SAndroid Build Coastguard Worker #error Please add support for your compiler in build/build_config.h
285*6777b538SAndroid Build Coastguard Worker #endif
286*6777b538SAndroid Build Coastguard Worker 
287*6777b538SAndroid Build Coastguard Worker // Processor architecture detection.  For more info on what's defined, see:
288*6777b538SAndroid Build Coastguard Worker //   http://msdn.microsoft.com/en-us/library/b0084kay.aspx
289*6777b538SAndroid Build Coastguard Worker //   http://www.agner.org/optimize/calling_conventions.pdf
290*6777b538SAndroid Build Coastguard Worker //   or with gcc, run: "echo | gcc -E -dM -"
291*6777b538SAndroid Build Coastguard Worker #if defined(_M_X64) || defined(__x86_64__)
292*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_X86_FAMILY 1
293*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_X86_64 1
294*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_64_BITS 1
295*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_LITTLE_ENDIAN 1
296*6777b538SAndroid Build Coastguard Worker #elif defined(_M_IX86) || defined(__i386__)
297*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_X86_FAMILY 1
298*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_X86 1
299*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_32_BITS 1
300*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_LITTLE_ENDIAN 1
301*6777b538SAndroid Build Coastguard Worker #elif defined(__s390x__)
302*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_S390_FAMILY 1
303*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_S390X 1
304*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_64_BITS 1
305*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_BIG_ENDIAN 1
306*6777b538SAndroid Build Coastguard Worker #elif defined(__s390__)
307*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_S390_FAMILY 1
308*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_S390 1
309*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_31_BITS 1
310*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_BIG_ENDIAN 1
311*6777b538SAndroid Build Coastguard Worker #elif (defined(__PPC64__) || defined(__PPC__)) && defined(__BIG_ENDIAN__)
312*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_PPC64_FAMILY 1
313*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_PPC64 1
314*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_64_BITS 1
315*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_BIG_ENDIAN 1
316*6777b538SAndroid Build Coastguard Worker #elif defined(__PPC64__)
317*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_PPC64_FAMILY 1
318*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_PPC64 1
319*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_64_BITS 1
320*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_LITTLE_ENDIAN 1
321*6777b538SAndroid Build Coastguard Worker #elif defined(__ARMEL__)
322*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_ARM_FAMILY 1
323*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_ARMEL 1
324*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_32_BITS 1
325*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_LITTLE_ENDIAN 1
326*6777b538SAndroid Build Coastguard Worker #elif defined(__aarch64__) || defined(_M_ARM64)
327*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_ARM_FAMILY 1
328*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_ARM64 1
329*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_64_BITS 1
330*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_LITTLE_ENDIAN 1
331*6777b538SAndroid Build Coastguard Worker #elif defined(__pnacl__) || defined(__asmjs__) || defined(__wasm__)
332*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_32_BITS 1
333*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_LITTLE_ENDIAN 1
334*6777b538SAndroid Build Coastguard Worker #elif defined(__MIPSEL__)
335*6777b538SAndroid Build Coastguard Worker #if defined(__LP64__)
336*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_MIPS_FAMILY 1
337*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_MIPS64EL 1
338*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_64_BITS 1
339*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_LITTLE_ENDIAN 1
340*6777b538SAndroid Build Coastguard Worker #else
341*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_MIPS_FAMILY 1
342*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_MIPSEL 1
343*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_32_BITS 1
344*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_LITTLE_ENDIAN 1
345*6777b538SAndroid Build Coastguard Worker #endif
346*6777b538SAndroid Build Coastguard Worker #elif defined(__MIPSEB__)
347*6777b538SAndroid Build Coastguard Worker #if defined(__LP64__)
348*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_MIPS_FAMILY 1
349*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_MIPS64 1
350*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_64_BITS 1
351*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_BIG_ENDIAN 1
352*6777b538SAndroid Build Coastguard Worker #else
353*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_MIPS_FAMILY 1
354*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_MIPS 1
355*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_32_BITS 1
356*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_BIG_ENDIAN 1
357*6777b538SAndroid Build Coastguard Worker #endif
358*6777b538SAndroid Build Coastguard Worker #elif defined(__loongarch__)
359*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_LOONGARCH_FAMILY 1
360*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_LITTLE_ENDIAN 1
361*6777b538SAndroid Build Coastguard Worker #if __loongarch_grlen == 64
362*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_LOONGARCH64 1
363*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_64_BITS 1
364*6777b538SAndroid Build Coastguard Worker #else
365*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_LOONGARCH32 1
366*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_32_BITS 1
367*6777b538SAndroid Build Coastguard Worker #endif
368*6777b538SAndroid Build Coastguard Worker #elif defined(__riscv) && (__riscv_xlen == 64)
369*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_RISCV_FAMILY 1
370*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_RISCV64 1
371*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_64_BITS 1
372*6777b538SAndroid Build Coastguard Worker #define ARCH_CPU_LITTLE_ENDIAN 1
373*6777b538SAndroid Build Coastguard Worker #else
374*6777b538SAndroid Build Coastguard Worker #error Please add support for your architecture in build/build_config.h
375*6777b538SAndroid Build Coastguard Worker #endif
376*6777b538SAndroid Build Coastguard Worker 
377*6777b538SAndroid Build Coastguard Worker // Type detection for wchar_t.
378*6777b538SAndroid Build Coastguard Worker #if defined(OS_WIN)
379*6777b538SAndroid Build Coastguard Worker #define WCHAR_T_IS_16_BIT
380*6777b538SAndroid Build Coastguard Worker #elif defined(OS_FUCHSIA)
381*6777b538SAndroid Build Coastguard Worker #define WCHAR_T_IS_32_BIT
382*6777b538SAndroid Build Coastguard Worker #elif defined(OS_POSIX) && defined(COMPILER_GCC) && defined(__WCHAR_MAX__) && \
383*6777b538SAndroid Build Coastguard Worker     (__WCHAR_MAX__ == 0x7fffffff || __WCHAR_MAX__ == 0xffffffff)
384*6777b538SAndroid Build Coastguard Worker #define WCHAR_T_IS_32_BIT
385*6777b538SAndroid Build Coastguard Worker #elif defined(OS_POSIX) && defined(COMPILER_GCC) && defined(__WCHAR_MAX__) && \
386*6777b538SAndroid Build Coastguard Worker     (__WCHAR_MAX__ == 0x7fff || __WCHAR_MAX__ == 0xffff)
387*6777b538SAndroid Build Coastguard Worker // On Posix, we'll detect short wchar_t, but projects aren't guaranteed to
388*6777b538SAndroid Build Coastguard Worker // compile in this mode (in particular, Chrome doesn't). This is intended for
389*6777b538SAndroid Build Coastguard Worker // other projects using base who manage their own dependencies and make sure
390*6777b538SAndroid Build Coastguard Worker // short wchar works for them.
391*6777b538SAndroid Build Coastguard Worker #define WCHAR_T_IS_16_BIT
392*6777b538SAndroid Build Coastguard Worker #else
393*6777b538SAndroid Build Coastguard Worker #error Please add support for your compiler in build/build_config.h
394*6777b538SAndroid Build Coastguard Worker #endif
395*6777b538SAndroid Build Coastguard Worker 
396*6777b538SAndroid Build Coastguard Worker #if defined(OS_ANDROID)
397*6777b538SAndroid Build Coastguard Worker // The compiler thinks std::string::const_iterator and "const char*" are
398*6777b538SAndroid Build Coastguard Worker // equivalent types.
399*6777b538SAndroid Build Coastguard Worker #define STD_STRING_ITERATOR_IS_CHAR_POINTER
400*6777b538SAndroid Build Coastguard Worker // The compiler thinks std::u16string::const_iterator and "char16*" are
401*6777b538SAndroid Build Coastguard Worker // equivalent types.
402*6777b538SAndroid Build Coastguard Worker #define BASE_STRING16_ITERATOR_IS_CHAR16_POINTER
403*6777b538SAndroid Build Coastguard Worker #endif
404*6777b538SAndroid Build Coastguard Worker 
405*6777b538SAndroid Build Coastguard Worker #endif  // BUILD_BUILD_CONFIG_H_
406