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

gcc_toolchain("default") {
  cc = getenv("CC")
  cxx = getenv("CXX")
  ar = getenv("AR")
  nm = getenv("NM")
  ld = cxx

  extra_cflags = getenv("CFLAGS")
  extra_cppflags = getenv("CPPFLAGS")
  extra_cxxflags = getenv("CXXFLAGS")
  extra_ldflags = getenv("LDFLAGS")

  toolchain_args = {
    current_cpu = current_cpu
    current_os = current_os
  }
}

gcc_toolchain("host") {
  cc = getenv("BUILD_CC")
  cxx = getenv("BUILD_CXX")
  ar = getenv("BUILD_AR")
  nm = getenv("BUILD_NM")
  ld = cxx

  extra_cflags = getenv("BUILD_CFLAGS")
  extra_cppflags = getenv("BUILD_CPPFLAGS")
  extra_cxxflags = getenv("BUILD_CXXFLAGS")
  extra_ldflags = getenv("BUILD_LDFLAGS")

  toolchain_args = {
    current_cpu = current_cpu
    current_os = current_os
  }
}
