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