# Copyright 2017 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.

import("//build/config/chromecast_build.gni")
import("//build/config/gclient_args.gni")

declare_args() {
  # Enables Native Client support.
  # Temporarily disable nacl on arm64 linux to get rid of compilation errors.
  # TODO: When mipsel-nacl-clang is available, drop the exclusion.
  enable_nacl =
      checkout_nacl && !is_ios && !is_android && !is_fuchsia &&
      !is_chromecast && current_cpu != "mipsel" && current_cpu != "mips64el" &&
      !(is_linux && target_cpu == "arm64") && !(is_win && host_os != "win")

  # Non-SFI is not yet supported on mipsel
  enable_nacl_nonsfi = current_cpu != "mipsel" && current_cpu != "mips64el"
}

assert(!(is_win && host_os != "win") || !enable_nacl,
       "NaCl doesn't work in win cross builds, crbug.com/774186")
assert(!enable_nacl || checkout_nacl)
