xref: /build/config/BUILD.gn (revision 5f9996aa)
15f9996aaSopenharmony_ci# Copyright (c) 2013 The Chromium Authors. All rights reserved.
25f9996aaSopenharmony_ci# Use of this source code is governed by a BSD-style license that can be
35f9996aaSopenharmony_ci# found in the LICENSE file.
45f9996aaSopenharmony_ci
55f9996aaSopenharmony_ciimport("//build/config/allocator.gni")
65f9996aaSopenharmony_ciimport("//build/config/c++/c++.gni")
75f9996aaSopenharmony_ciimport("//build/config/coverage/coverage.gni")
85f9996aaSopenharmony_ciimport("//build/config/features.gni")
95f9996aaSopenharmony_ci
105f9996aaSopenharmony_ciimport("//build/config/sanitizers/sanitizers.gni")
115f9996aaSopenharmony_ci
125f9996aaSopenharmony_cideclare_args() {
135f9996aaSopenharmony_ci  # When set (the default) enables C++ iterator debugging in debug builds.
145f9996aaSopenharmony_ci  # Iterator debugging is always off in release builds (technically, this flag
155f9996aaSopenharmony_ci  # affects the "debug" config, which is always available but applied by
165f9996aaSopenharmony_ci  # default only in debug builds).
175f9996aaSopenharmony_ci  #
185f9996aaSopenharmony_ci  # Iterator debugging is generally useful for catching bugs. But it can
195f9996aaSopenharmony_ci  # introduce extra locking to check the state of an iterator against the state
205f9996aaSopenharmony_ci  # of the current object. For iterator- and thread-heavy code, this can
215f9996aaSopenharmony_ci  # significantly slow execution.
225f9996aaSopenharmony_ci  enable_iterator_debugging = true
235f9996aaSopenharmony_ci  enable_predefined_macro = false
245f9996aaSopenharmony_ci}
255f9996aaSopenharmony_ci
265f9996aaSopenharmony_ci# ==============================================
275f9996aaSopenharmony_ci#   PLEASE DO NOT ADD MORE THINGS TO THIS LIST
285f9996aaSopenharmony_ci# ==============================================
295f9996aaSopenharmony_ci#
305f9996aaSopenharmony_ci# Legacy feature defines applied to all targets.
315f9996aaSopenharmony_ci#
325f9996aaSopenharmony_ci# These are applied to every single compile in the build and most of them are
335f9996aaSopenharmony_ci# only relevant to a few files. This bloats command lines and causes
345f9996aaSopenharmony_ci# unnecessary recompiles when flags are flipped.
355f9996aaSopenharmony_ci#
365f9996aaSopenharmony_ci# To pass defines to source code from the build, use the buildflag system which
375f9996aaSopenharmony_ci# will write headers containing the defines you need. This isolates the define
385f9996aaSopenharmony_ci# and means its definition can participate in the build graph, only recompiling
395f9996aaSopenharmony_ci# things when it actually changes.
405f9996aaSopenharmony_ci#
415f9996aaSopenharmony_ci# See //build/buildflag_header.gni for instructions on generating headers.
425f9996aaSopenharmony_ci#
435f9996aaSopenharmony_ci# This will also allow you to scope your build flag to a BUILD.gn file (or a
445f9996aaSopenharmony_ci# .gni file if you need it from more than one place) rather than making global
455f9996aaSopenharmony_ci# flags. See //build/config/BUILDCONFIG.gn for advice on where to define
465f9996aaSopenharmony_ci# build flags.
475f9996aaSopenharmony_ciconfig("feature_flags") {
485f9996aaSopenharmony_ci  # Don't use deprecated V8 APIs anywhere.
495f9996aaSopenharmony_ci  defines = [ "V8_DEPRECATION_WARNINGS" ]
505f9996aaSopenharmony_ci  if (use_udev) {
515f9996aaSopenharmony_ci    defines += [ "USE_UDEV" ]
525f9996aaSopenharmony_ci  }
535f9996aaSopenharmony_ci  if (is_win || is_linux) {
545f9996aaSopenharmony_ci    defines += [ "USE_AURA=1" ]
555f9996aaSopenharmony_ci  }
565f9996aaSopenharmony_ci  if (is_linux) {
575f9996aaSopenharmony_ci    defines += [
585f9996aaSopenharmony_ci      "USE_GLIB=1",
595f9996aaSopenharmony_ci      "USE_NSS_CERTS=1",
605f9996aaSopenharmony_ci      "USE_X11=1",
615f9996aaSopenharmony_ci    ]
625f9996aaSopenharmony_ci  }
635f9996aaSopenharmony_ci
645f9996aaSopenharmony_ci  if ((is_asan || is_lsan || is_tsan || is_msan) && using_sanitizer) {
655f9996aaSopenharmony_ci    defines += [
665f9996aaSopenharmony_ci      "MEMORY_TOOL_REPLACES_ALLOCATOR",
675f9996aaSopenharmony_ci      "MEMORY_SANITIZER_INITIAL_SIZE",
685f9996aaSopenharmony_ci    ]
695f9996aaSopenharmony_ci  }
705f9996aaSopenharmony_ci  if (is_asan && using_sanitizer) {
715f9996aaSopenharmony_ci    defines += [ "ADDRESS_SANITIZER" ]
725f9996aaSopenharmony_ci  }
735f9996aaSopenharmony_ci  if (is_lsan) {
745f9996aaSopenharmony_ci    defines += [ "LEAK_SANITIZER" ]
755f9996aaSopenharmony_ci  }
765f9996aaSopenharmony_ci  if (is_tsan) {
775f9996aaSopenharmony_ci    defines += [
785f9996aaSopenharmony_ci      "THREAD_SANITIZER",
795f9996aaSopenharmony_ci      "DYNAMIC_ANNOTATIONS_EXTERNAL_IMPL=1",
805f9996aaSopenharmony_ci      "WTF_USE_DYNAMIC_ANNOTATIONS_NOIMPL=1",
815f9996aaSopenharmony_ci    ]
825f9996aaSopenharmony_ci  }
835f9996aaSopenharmony_ci  if (is_msan) {
845f9996aaSopenharmony_ci    defines += [ "MEMORY_SANITIZER" ]
855f9996aaSopenharmony_ci  }
865f9996aaSopenharmony_ci  if (is_ubsan || is_ubsan_null || is_ubsan_vptr || is_ubsan_security) {
875f9996aaSopenharmony_ci    defines += [ "UNDEFINED_SANITIZER" ]
885f9996aaSopenharmony_ci  }
895f9996aaSopenharmony_ci  if (use_clang_coverage) {
905f9996aaSopenharmony_ci    defines += [ "CLANG_COVERAGE" ]
915f9996aaSopenharmony_ci  }
925f9996aaSopenharmony_ci  if (is_official_build) {
935f9996aaSopenharmony_ci    defines += [ "OFFICIAL_BUILD" ]
945f9996aaSopenharmony_ci  }
955f9996aaSopenharmony_ci
965f9996aaSopenharmony_ci  # ==============================================
975f9996aaSopenharmony_ci  #   PLEASE DO NOT ADD MORE THINGS TO THIS LIST
985f9996aaSopenharmony_ci  # ==============================================
995f9996aaSopenharmony_ci  #
1005f9996aaSopenharmony_ci  # See the comment at the top.
1015f9996aaSopenharmony_ci}
1025f9996aaSopenharmony_ci
1035f9996aaSopenharmony_ci# Debug/release ----------------------------------------------------------------
1045f9996aaSopenharmony_ci
1055f9996aaSopenharmony_ciconfig("debug") {
1065f9996aaSopenharmony_ci  defines = [
1075f9996aaSopenharmony_ci    "DYNAMIC_ANNOTATIONS_ENABLED=1",
1085f9996aaSopenharmony_ci    "WTF_USE_DYNAMIC_ANNOTATIONS=1",
1095f9996aaSopenharmony_ci  ]
1105f9996aaSopenharmony_ci
1115f9996aaSopenharmony_ci  if (is_nacl) {
1125f9996aaSopenharmony_ci    defines += [ "DYNAMIC_ANNOTATIONS_PREFIX=NACL_" ]
1135f9996aaSopenharmony_ci  }
1145f9996aaSopenharmony_ci
1155f9996aaSopenharmony_ci  if (is_win) {
1165f9996aaSopenharmony_ci    if (!enable_iterator_debugging) {
1175f9996aaSopenharmony_ci      # Iterator debugging is enabled by default by the compiler on debug
1185f9996aaSopenharmony_ci      # builds, and we have to tell it to turn it off.
1195f9996aaSopenharmony_ci      defines += [ "_HAS_ITERATOR_DEBUGGING=0" ]
1205f9996aaSopenharmony_ci    }
1215f9996aaSopenharmony_ci  } else if (is_linux && current_cpu == "x64" && enable_iterator_debugging) {
1225f9996aaSopenharmony_ci    # Enable libstdc++ debugging facilities to help catch problems early, see
1235f9996aaSopenharmony_ci    # http://crbug.com/65151 .
1245f9996aaSopenharmony_ci    # defines += [ "_GLIBCXX_DEBUG=1" ]
1255f9996aaSopenharmony_ci  }
1265f9996aaSopenharmony_ci}
1275f9996aaSopenharmony_ci
1285f9996aaSopenharmony_ciconfig("release") {
1295f9996aaSopenharmony_ci  defines = [ "NDEBUG" ]
1305f9996aaSopenharmony_ci
1315f9996aaSopenharmony_ci  # Sanitizers.
1325f9996aaSopenharmony_ci  if (is_tsan) {
1335f9996aaSopenharmony_ci    defines += [
1345f9996aaSopenharmony_ci      "DYNAMIC_ANNOTATIONS_ENABLED=1",
1355f9996aaSopenharmony_ci      "WTF_USE_DYNAMIC_ANNOTATIONS=1",
1365f9996aaSopenharmony_ci    ]
1375f9996aaSopenharmony_ci  } else {
1385f9996aaSopenharmony_ci    defines += [ "NVALGRIND" ]
1395f9996aaSopenharmony_ci    if (!is_nacl) {
1405f9996aaSopenharmony_ci      # NaCl always enables dynamic annotations. Currently this value is set to
1415f9996aaSopenharmony_ci      # 1 for all .nexes.
1425f9996aaSopenharmony_ci      defines += [ "DYNAMIC_ANNOTATIONS_ENABLED=0" ]
1435f9996aaSopenharmony_ci    }
1445f9996aaSopenharmony_ci  }
1455f9996aaSopenharmony_ci}
1465f9996aaSopenharmony_ci
1475f9996aaSopenharmony_ci# Default libraries ------------------------------------------------------------
1485f9996aaSopenharmony_ci
1495f9996aaSopenharmony_ci# This config defines the default libraries applied to all targets.
1505f9996aaSopenharmony_ciconfig("default_libs") {
1515f9996aaSopenharmony_ci  if (is_win) {
1525f9996aaSopenharmony_ci    libs = [
1535f9996aaSopenharmony_ci      "advapi32.lib",
1545f9996aaSopenharmony_ci      "comdlg32.lib",
1555f9996aaSopenharmony_ci      "dbghelp.lib",
1565f9996aaSopenharmony_ci      "dnsapi.lib",
1575f9996aaSopenharmony_ci      "gdi32.lib",
1585f9996aaSopenharmony_ci      "msimg32.lib",
1595f9996aaSopenharmony_ci      "odbc32.lib",
1605f9996aaSopenharmony_ci      "odbccp32.lib",
1615f9996aaSopenharmony_ci      "oleaut32.lib",
1625f9996aaSopenharmony_ci      "psapi.lib",
1635f9996aaSopenharmony_ci      "shell32.lib",
1645f9996aaSopenharmony_ci      "shlwapi.lib",
1655f9996aaSopenharmony_ci      "user32.lib",
1665f9996aaSopenharmony_ci      "usp10.lib",
1675f9996aaSopenharmony_ci      "uuid.lib",
1685f9996aaSopenharmony_ci      "version.lib",
1695f9996aaSopenharmony_ci      "wininet.lib",
1705f9996aaSopenharmony_ci      "winmm.lib",
1715f9996aaSopenharmony_ci      "winspool.lib",
1725f9996aaSopenharmony_ci      "ws2_32.lib",
1735f9996aaSopenharmony_ci
1745f9996aaSopenharmony_ci      # Please don't add more stuff here. We should actually be making this
1755f9996aaSopenharmony_ci      # list smaller, since all common things should be covered. If you need
1765f9996aaSopenharmony_ci      # some extra libraries, please just add a libs = [ "foo.lib" ] to your
1775f9996aaSopenharmony_ci      # target that needs it.
1785f9996aaSopenharmony_ci    ]
1795f9996aaSopenharmony_ci    if (current_os == "winuwp") {
1805f9996aaSopenharmony_ci      # These libraries are needed for Windows UWP (i.e. store apps).
1815f9996aaSopenharmony_ci      libs += [
1825f9996aaSopenharmony_ci        "dloadhelper.lib",
1835f9996aaSopenharmony_ci        "WindowsApp.lib",
1845f9996aaSopenharmony_ci      ]
1855f9996aaSopenharmony_ci    } else {
1865f9996aaSopenharmony_ci      # These libraries are not compatible with Windows UWP (i.e. store apps.)
1875f9996aaSopenharmony_ci      libs += [
1885f9996aaSopenharmony_ci        "delayimp.lib",
1895f9996aaSopenharmony_ci        "kernel32.lib",
1905f9996aaSopenharmony_ci        "ole32.lib",
1915f9996aaSopenharmony_ci      ]
1925f9996aaSopenharmony_ci    }
1935f9996aaSopenharmony_ci  } else if (is_ohos) {
1945f9996aaSopenharmony_ci    libs = [
1955f9996aaSopenharmony_ci      "dl",
1965f9996aaSopenharmony_ci      "m",
1975f9996aaSopenharmony_ci    ]
1985f9996aaSopenharmony_ci  } else if (is_mac) {
1995f9996aaSopenharmony_ci    # Targets should choose to explicitly link frameworks they require. Since
2005f9996aaSopenharmony_ci    # linking can have run-time side effects, nothing should be listed here.
2015f9996aaSopenharmony_ci    libs = []
2025f9996aaSopenharmony_ci  } else if (is_linux) {
2035f9996aaSopenharmony_ci    libs = [
2045f9996aaSopenharmony_ci      "dl",
2055f9996aaSopenharmony_ci      "pthread",
2065f9996aaSopenharmony_ci      "rt",
2075f9996aaSopenharmony_ci    ]
2085f9996aaSopenharmony_ci  }
2095f9996aaSopenharmony_ci}
2105f9996aaSopenharmony_ci
2115f9996aaSopenharmony_ci# Only //build/config/BUILDCONFIG.gn should reference this.
2125f9996aaSopenharmony_cigroup("common_deps") {
2135f9996aaSopenharmony_ci  public_deps = []
2145f9996aaSopenharmony_ci
2155f9996aaSopenharmony_ci  if (using_sanitizer) {
2165f9996aaSopenharmony_ci    public_deps += [ "//build/config/sanitizers:deps" ]
2175f9996aaSopenharmony_ci  }
2185f9996aaSopenharmony_ci
2195f9996aaSopenharmony_ci  if (use_custom_libcxx) {
2205f9996aaSopenharmony_ci    if (is_double_framework) {
2215f9996aaSopenharmony_ci      public_deps += [ "${asdk_libs_dir}/ndk/libcxx:libcxx" ]
2225f9996aaSopenharmony_ci    } else {
2235f9996aaSopenharmony_ci      public_deps += [ "//third_party/libcxx:libcxx" ]
2245f9996aaSopenharmony_ci    }
2255f9996aaSopenharmony_ci  }
2265f9996aaSopenharmony_ci
2275f9996aaSopenharmony_ci  if (use_afl) {
2285f9996aaSopenharmony_ci    public_deps += [ "//third_party/afl" ]
2295f9996aaSopenharmony_ci  }
2305f9996aaSopenharmony_ci
2315f9996aaSopenharmony_ci  if (is_ohos && use_order_profiling) {
2325f9996aaSopenharmony_ci    public_deps += []
2335f9996aaSopenharmony_ci  }
2345f9996aaSopenharmony_ci
2355f9996aaSopenharmony_ci  if (use_musl && current_toolchain != host_toolchain && !is_mingw) {
2365f9996aaSopenharmony_ci    public_deps += [ "//third_party/musl:soft_shared_libs" ]
2375f9996aaSopenharmony_ci  }
2385f9996aaSopenharmony_ci
2395f9996aaSopenharmony_ci  if (is_ohos && ohos_indep_compiler_enable &&
2405f9996aaSopenharmony_ci      current_toolchain != host_toolchain) {
2415f9996aaSopenharmony_ci    deps = [ "//build/common/ubsan:ubsan" ]
2425f9996aaSopenharmony_ci  }
2435f9996aaSopenharmony_ci}
2445f9996aaSopenharmony_ci
2455f9996aaSopenharmony_cigroup("executable_deps") {
2465f9996aaSopenharmony_ci  public_deps = [ ":common_deps" ]
2475f9996aaSopenharmony_ci  if (export_libcxxabi_from_executables) {
2485f9996aaSopenharmony_ci    if (!is_double_framework) {
2495f9996aaSopenharmony_ci      public_deps += [ "//third_party/libcxxabi:libc++abi" ]
2505f9996aaSopenharmony_ci    }
2515f9996aaSopenharmony_ci  }
2525f9996aaSopenharmony_ci}
2535f9996aaSopenharmony_ci
2545f9996aaSopenharmony_cigroup("loadable_module_deps") {
2555f9996aaSopenharmony_ci  public_deps = [ ":common_deps" ]
2565f9996aaSopenharmony_ci}
2575f9996aaSopenharmony_ci
2585f9996aaSopenharmony_cigroup("shared_library_deps") {
2595f9996aaSopenharmony_ci  public_deps = [ ":common_deps" ]
2605f9996aaSopenharmony_ci}
2615f9996aaSopenharmony_ci
2625f9996aaSopenharmony_cigroup("rust_library_deps") {
2635f9996aaSopenharmony_ci  public_deps = [ ":common_deps" ]
2645f9996aaSopenharmony_ci}
2655f9996aaSopenharmony_ci
2665f9996aaSopenharmony_cigroup("rust_proc_macro_deps") {
2675f9996aaSopenharmony_ci  public_deps = [ ":common_deps" ]
2685f9996aaSopenharmony_ci}
2695f9996aaSopenharmony_ci
2705f9996aaSopenharmony_cigroup("static_library_deps") {
2715f9996aaSopenharmony_ci  if (use_musl && current_toolchain != host_toolchain && !is_mingw) {
2725f9996aaSopenharmony_ci    public_deps = [ "//third_party/musl:musl_headers" ]
2735f9996aaSopenharmony_ci  }
2745f9996aaSopenharmony_ci}
2755f9996aaSopenharmony_ci
2765f9996aaSopenharmony_cigroup("source_set_deps") {
2775f9996aaSopenharmony_ci  if (use_musl && current_toolchain != host_toolchain && !is_mingw) {
2785f9996aaSopenharmony_ci    public_deps = [ "//third_party/musl:musl_headers" ]
2795f9996aaSopenharmony_ci  }
2805f9996aaSopenharmony_ci}
2815f9996aaSopenharmony_ci
2825f9996aaSopenharmony_ci# Executable configs -----------------------------------------------------------
2835f9996aaSopenharmony_ci
2845f9996aaSopenharmony_ci# Windows linker setup for EXEs and DLLs.
2855f9996aaSopenharmony_ciif (is_win) {
2865f9996aaSopenharmony_ci  _windows_linker_configs = [
2875f9996aaSopenharmony_ci    "//build/config/win:sdk_link",
2885f9996aaSopenharmony_ci    "//build/config/win:common_linker_setup",
2895f9996aaSopenharmony_ci  ]
2905f9996aaSopenharmony_ci}
2915f9996aaSopenharmony_ci
2925f9996aaSopenharmony_ci# This config defines the configs applied to all executables.
2935f9996aaSopenharmony_ciconfig("executable_config") {
2945f9996aaSopenharmony_ci  configs = []
2955f9996aaSopenharmony_ci
2965f9996aaSopenharmony_ci  if (is_win) {
2975f9996aaSopenharmony_ci    configs += _windows_linker_configs
2985f9996aaSopenharmony_ci
2995f9996aaSopenharmony_ci    # Currently only turn on linker CFI for executables.
3005f9996aaSopenharmony_ci    configs += [ "//build/config/win:cfi_linker" ]
3015f9996aaSopenharmony_ci  } else if (is_mac) {
3025f9996aaSopenharmony_ci    configs += [ "//build/config/mac:mac_dynamic_flags" ]
3035f9996aaSopenharmony_ci  } else if (is_linux || is_ohos || current_os == "aix") {
3045f9996aaSopenharmony_ci    configs += [ "//build/config/gcc:executable_ldconfig" ]
3055f9996aaSopenharmony_ci    if (is_ohos) {
3065f9996aaSopenharmony_ci      configs += [ "//build/config/ohos:executable_config" ]
3075f9996aaSopenharmony_ci    } else if (is_linux) {
3085f9996aaSopenharmony_ci      configs += [ "//build/config/linux:executable_config" ]
3095f9996aaSopenharmony_ci    }
3105f9996aaSopenharmony_ci  }
3115f9996aaSopenharmony_ci
3125f9996aaSopenharmony_ci  # If we're using the prebuilt instrumented libraries with the sanitizers, we
3135f9996aaSopenharmony_ci  # need to add ldflags to every binary to make sure they are picked up.
3145f9996aaSopenharmony_ci  if (prebuilt_instrumented_libraries_available) {
3155f9996aaSopenharmony_ci    configs += [ "//third_party/instrumented_libraries:prebuilt_ldflags" ]
3165f9996aaSopenharmony_ci  }
3175f9996aaSopenharmony_ci  if (use_locally_built_instrumented_libraries) {
3185f9996aaSopenharmony_ci    configs += [ "//third_party/instrumented_libraries:locally_built_ldflags" ]
3195f9996aaSopenharmony_ci  }
3205f9996aaSopenharmony_ci  configs += [ "//build/config/sanitizers:link_executable" ]
3215f9996aaSopenharmony_ci}
3225f9996aaSopenharmony_ci
3235f9996aaSopenharmony_ci# Shared library configs -------------------------------------------------------
3245f9996aaSopenharmony_ci
3255f9996aaSopenharmony_ci# This config defines the configs applied to all shared libraries.
3265f9996aaSopenharmony_ciconfig("shared_library_config") {
3275f9996aaSopenharmony_ci  configs = []
3285f9996aaSopenharmony_ci
3295f9996aaSopenharmony_ci  if (is_win) {
3305f9996aaSopenharmony_ci    configs += _windows_linker_configs
3315f9996aaSopenharmony_ci  } else if (is_mac) {
3325f9996aaSopenharmony_ci    configs += [ "//build/config/mac:mac_dynamic_flags" ]
3335f9996aaSopenharmony_ci  }
3345f9996aaSopenharmony_ci
3355f9996aaSopenharmony_ci  # If we're using the prebuilt instrumented libraries with the sanitizers, we
3365f9996aaSopenharmony_ci  # need to add ldflags to every binary to make sure they are picked up.
3375f9996aaSopenharmony_ci  if (prebuilt_instrumented_libraries_available) {
3385f9996aaSopenharmony_ci    configs += [ "//third_party/instrumented_libraries:prebuilt_ldflags" ]
3395f9996aaSopenharmony_ci  }
3405f9996aaSopenharmony_ci  if (use_locally_built_instrumented_libraries) {
3415f9996aaSopenharmony_ci    configs += [ "//third_party/instrumented_libraries:locally_built_ldflags" ]
3425f9996aaSopenharmony_ci  }
3435f9996aaSopenharmony_ci  configs += [ "//build/config/sanitizers:link_shared_library" ]
3445f9996aaSopenharmony_ci}
3455f9996aaSopenharmony_ci
3465f9996aaSopenharmony_ciconfig("predefined_macro") {
3475f9996aaSopenharmony_ci  if (enable_predefined_macro) {
3485f9996aaSopenharmony_ci    defines = []
3495f9996aaSopenharmony_ci    if (is_ohos) {
3505f9996aaSopenharmony_ci      defines += [ "__OHOS__" ]
3515f9996aaSopenharmony_ci    }
3525f9996aaSopenharmony_ci    if (is_mac) {
3535f9996aaSopenharmony_ci      defines += [ "__MAC__" ]
3545f9996aaSopenharmony_ci    }
3555f9996aaSopenharmony_ci    if (is_linux) {
3565f9996aaSopenharmony_ci      defines += [ "__LINUX__" ]
3575f9996aaSopenharmony_ci    }
3585f9996aaSopenharmony_ci    if (is_nacl) {
3595f9996aaSopenharmony_ci      defines += [ "__NACL__" ]
3605f9996aaSopenharmony_ci    }
3615f9996aaSopenharmony_ci    if (is_win) {
3625f9996aaSopenharmony_ci      defines += [ "__WINDOWS__" ]
3635f9996aaSopenharmony_ci    }
3645f9996aaSopenharmony_ci    if (is_mingw) {
3655f9996aaSopenharmony_ci      defines += [ "___MINGW32__" ]
3665f9996aaSopenharmony_ci    }
3675f9996aaSopenharmony_ci    if (is_android) {
3685f9996aaSopenharmony_ci      defines += [ "__ANDROID__" ]
3695f9996aaSopenharmony_ci    }
3705f9996aaSopenharmony_ci    if (is_ios) {
3715f9996aaSopenharmony_ci      defines += [ "__IOS__" ]
3725f9996aaSopenharmony_ci    }
3735f9996aaSopenharmony_ci    if (current_cpu == "x86") {
3745f9996aaSopenharmony_ci      defines += [ "__x86_32__" ]
3755f9996aaSopenharmony_ci    }
3765f9996aaSopenharmony_ci    if (current_cpu == "x86_64") {
3775f9996aaSopenharmony_ci      defines += [ "__x86_64__" ]
3785f9996aaSopenharmony_ci    }
3795f9996aaSopenharmony_ci    if (current_cpu == "arm") {
3805f9996aaSopenharmony_ci      defines += [ "__arm32__" ]
3815f9996aaSopenharmony_ci    }
3825f9996aaSopenharmony_ci    if (current_cpu == "arm64") {
3835f9996aaSopenharmony_ci      defines += [ "__arm64__" ]
3845f9996aaSopenharmony_ci    }
3855f9996aaSopenharmony_ci  }
3865f9996aaSopenharmony_ci}
387