# 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 path of the sysroot that is applied when compiling using the target
  # toolchain.
  target_sysroot = ""

  # The path to directory containing linux sysroot images.
  target_sysroot_dir = "//build/linux"

  # The path of the sysroot for the current toolchain. If empty, default
  # sysroot is used.
  sysroot = ""

  # Controls default is_linux sysroot. If set to true, and sysroot
  # is empty, default sysroot is calculated.
  use_sysroot = current_cpu == "x86" || current_cpu == "x64" ||
                current_cpu == "arm" || current_cpu == "arm64" ||
                current_cpu == "mipsel" || current_cpu == "mips64el"
}

if (sysroot == "") {
  if (current_os == target_os && current_cpu == target_cpu &&
      target_sysroot != "") {
    sysroot = target_sysroot
  } else if (is_android) {
    import("//build/config/android/config.gni")

    # Android uses unified headers, and thus a single compile time sysroot
    sysroot = "$android_toolchain_root/sysroot"
  } else if ((is_linux || is_chromeos) && use_sysroot) {
    # By default build against a sysroot image downloaded from Cloud Storage
    # during gclient runhooks.
    if (current_cpu == "x64") {
      sysroot = "$target_sysroot_dir/debian_sid_amd64-sysroot"
    } else if (current_cpu == "x86") {
      sysroot = "$target_sysroot_dir/debian_sid_i386-sysroot"
    } else if (current_cpu == "mipsel") {
      sysroot = "$target_sysroot_dir/debian_sid_mips-sysroot"
    } else if (current_cpu == "mips64el") {
      sysroot = "$target_sysroot_dir/debian_sid_mips64el-sysroot"
    } else if (current_cpu == "arm") {
      sysroot = "$target_sysroot_dir/debian_sid_arm-sysroot"
    } else if (current_cpu == "arm64") {
      sysroot = "$target_sysroot_dir/debian_sid_arm64-sysroot"
    } else {
      assert(false, "No linux sysroot for cpu: $target_cpu")
    }

    if (sysroot != "") {
      _script_arch = current_cpu
      if (_script_arch == "x86") {
        _script_arch = "i386"
      } else if (_script_arch == "x64") {
        _script_arch = "amd64"
      }
      assert(
          exec_script("//build/dir_exists.py",
                      [ rebase_path(sysroot) ],
                      "string") == "True",
          "Missing sysroot ($sysroot). To fix, run: build/linux/sysroot_scripts/install-sysroot.py --arch=$_script_arch")
    }
  } 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 if (is_fuchsia) {
    if (current_cpu == "arm64" || current_cpu == "x64") {
      sysroot = "//third_party/fuchsia-sdk/sdk/arch/$current_cpu/sysroot"
    }
  }
}
