# 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 = ""

  # Whether the Debian wheezy sysroot should be used.
  dart_use_wheezy_sysroot = false
}

if (is_linux && dart_use_wheezy_sysroot) {
  if (current_cpu == "x86") {
    target_sysroot = rebase_path("//build/linux/debian_wheezy_i386-sysroot")
  } else if (current_cpu == "x64") {
    target_sysroot = rebase_path("//build/linux/debian_wheezy_amd64-sysroot")
  } else if (current_cpu == "arm") {
    target_sysroot = rebase_path("//build/linux/debian_wheezy_arm-sysroot")
  } else if (current_cpu == "arm64") {
    target_sysroot = rebase_path("//build/linux/debian_jessie_arm64-sysroot")
  } else {
    print("There is no Debian wheezy sysroot present for $current_cpu")
    assert(false)
  }
}

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 == "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 {
    sysroot = ""
  }
} else if (is_mac) {
  import("//build/config/mac/mac_sdk.gni")
  sysroot = mac_sdk_path
} else {
  sysroot = ""
}
