# Copyright 2016 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/toolchain/cc_wrapper.gni")
import("//build/toolchain/rbe.gni")
import("//build/toolchain/siso.gni")

declare_args() {
  # Precompiled header file support is by default available, except on the
  # following scenarios:
  # - Remote executions or when doing official builds.
  # - When using cc_wrapper because ccache requires a particular configuration
  #   and some compiler options currently not used by Chromium:
  #   https://ccache.dev/manual/latest.html#_precompiled_headers and it isn't
  #   supported by sccache: https://github.com/mozilla/sccache/issues/978.
  # - On Linux it slows down the build.
  enable_precompiled_headers =
      !is_official_build && !use_remoteexec && cc_wrapper == "" && !is_linux
}
