# Copyright 2015 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/toolchain/gcc_toolchain.gni")

declare_args() {
  toolchain_prefix = ""
}

gcc_toolchain("target") {
  assert(toolchain_prefix != "", "Must provide toolchain_prefix")

  cc = "${toolchain_prefix}gcc"
  cxx = "${toolchain_prefix}g++"
  ar = "${toolchain_prefix}ar"
  ld = cxx
  readelf = "${toolchain_prefix}readelf"
  nm = "${toolchain_prefix}nm"

  toolchain_cpu = "${target_cpu}"
  toolchain_os = "linux"
  is_clang = is_clang
  use_ccache = false
  use_goma = false

}
