# Copyright 2017 The Cobalt Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import("//starboard/linux/shared/clang.gni")

###############################################################################
# This file is imported into BUILDCONFIG.gn. As a side effect, any variable
# defined here becomes a global variable in all GN files.
#
# Adding new variables to this file could result in variable name conflicts, so
# keep the number of variables in this file to a minimum!
#
# If you need to define a temporary variable, prefix it with an underscore like
# _this. Prefixing a variable with an underscore makes it a private variable
# that won't bleed into other files.
###############################################################################

# Target OS and CPU.
# BUILDCONFIG.gn sets target_os and target_cpu to the values of these two
# variables below. Unfortunately, due to GN's restrictions on how variables can
# be changed, we can't directly set target_os and target_cpu here.
target_os_ = "linux"
target_cpu_ = "x64"

# The target and host toolchain
if (use_clang) {
  target_toolchain = "//starboard/build/toolchain/linux:clang_x64"
  host_toolchain = "//starboard/build/toolchain/linux:clang_$host_cpu"
} else {
  target_toolchain = "//starboard/build/toolchain/linux:x64"
  host_toolchain = "//starboard/build/toolchain/linux:$host_cpu"
}
