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