# 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.

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("//chrome/installer/linux/debian_wheezy_amd64-sysroot")
  } else if (current_cpu == "x86") {
    sysroot = rebase_path("//chrome/installer/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 {
    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 = ""
}
