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