# Copyright (c) 2020 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This file contains configs that need to be added or removed to all
# SwiftShader libraries

import("../swiftshader.gni")
import("//build_overrides/build.gni")

declare_args() {
  # Subzero doesn't support ARM64, MIPS64, PPC64, and RISCV64 (only x86 and ARMv7a).
  supports_subzero = current_cpu != "arm64" && current_cpu != "mips64el" && current_cpu != "ppc64" && current_cpu != "riscv64"
}

declare_args() {
  supports_llvm = is_linux || is_chromeos || is_fuchsia || is_win || is_android
    # LLVM uses C++17 features which require macOS 10.12, while Chrome's minimum platform for x86 is 10.11.
    # Don't build LLVM on Mac, unless we have to. This only happens on ARM64 devices, which launched with 11.0.
    # TODO(b/174843857): Remove check for !supports_subzero once Chrome supports macOS 10.12
    || (is_mac && !supports_subzero)
}

declare_args() {
  # Subzero produces much smaller binaries, so always use it when available,
  # except for MSan builds which only get Reactor code instrumented with LLVM.
  use_swiftshader_with_subzero = supports_subzero && !is_msan
}
