# Copyright (c) 2013 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.

# This header file defines the "sysroot" variable which is the absolute path
# of the sysroot. If no sysroot applies, the variable will be an empty string.

import("//build/config/chrome_build.gni")

declare_args() {
  # The absolute path of the sysroot that is applied when compiling using
  # the target toolchain.
  target_sysroot = ""
}

if (current_toolchain == default_toolchain && target_sysroot != "") {
  sysroot = target_sysroot
} else if (is_android) {
  import("//build/config/android/config.gni")
  if (current_cpu == "x86") {
    sysroot = rebase_path("$android_ndk_root/$x86_android_sysroot_subdir")
  } else if (current_cpu == "arm") {
    sysroot = rebase_path("$android_ndk_root/$arm_android_sysroot_subdir")
  } else if (current_cpu == "mipsel") {
    sysroot = rebase_path("$android_ndk_root/$mips_android_sysroot_subdir")
  } else if (current_cpu == "x64") {
    sysroot = rebase_path("$android_ndk_root/$x86_64_android_sysroot_subdir")
  } else if (current_cpu == "arm64") {
    sysroot = rebase_path("$android_ndk_root/$arm64_android_sysroot_subdir")
  } else if (current_cpu == "mips64") {
    sysroot = rebase_path("$android_ndk_root/$mips64_android_sysroot_subdir")
  } else {
    sysroot = ""
  }
} else if (is_linux && is_chrome_branded && is_official_build && !is_chromeos) {
  # For official builds, use the sysroot checked into the internal source repo
  # so that the builds work on older versions of Linux.
  if (current_cpu == "x64") {
    sysroot = rebase_path("//build/linux/debian_wheezy_amd64-sysroot")
  } else if (current_cpu == "x86") {
    sysroot = rebase_path("//build/linux/debian_wheezy_i386-sysroot")
  } else {
    # Any other builds don't use a sysroot.
    sysroot = ""
  }
} else if (is_linux && !is_chromeos) {
  if (current_cpu == "mipsel") {
    sysroot = rebase_path("//mipsel-sysroot/sysroot")
  } else if (current_cpu == "arm") {
    sysroot = rebase_path("//build/linux/debian_wheezy_arm-sysroot")
  } else {
    sysroot = ""
  }
} else if (is_mac) {
  import("//build/config/mac/mac_sdk.gni")

  sysroot = mac_sdk_path
} else if (is_ios) {
  import("//build/config/ios/ios_sdk.gni")
  sysroot = ios_sdk_path
} else {
  sysroot = ""
}
