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

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

  use_sysroot = current_cpu == "x86" || current_cpu == "x64" ||
                current_cpu == "arm" || current_cpu == "arm64" ||
                current_cpu == "mipsel" || current_cpu == "mips64el"
}

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_ndk_root/sysroot"
} else if (is_linux && 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) {
  import("//build/config/fuchsia/config.gni")
  if (current_cpu == "arm64" || current_cpu == "x64") {
    sysroot = fuchsia_sdk + "/arch/$current_cpu/sysroot"
  } else {
    sysroot = ""
  }
} else {
  sysroot = ""
}

if (is_android) {
  # Android uses unified headers in NDK r16 and later, meaning that the
  # compile time sysroot and link time sysroot are different
  link_sysroot = sysroot
  if (current_cpu == "arm") {
    link_sysroot = "$android_ndk_root/$arm_android_sysroot_subdir"
  } else if (current_cpu == "arm64") {
    link_sysroot = "$android_ndk_root/$arm64_android_sysroot_subdir"
  } else if (current_cpu == "x86") {
    link_sysroot = "$android_ndk_root/$x86_android_sysroot_subdir"
  } else if (current_cpu == "x64") {
    link_sysroot = "$android_ndk_root/$x86_64_android_sysroot_subdir"
  } else if (current_cpu == "mipsel") {
    link_sysroot = "$android_ndk_root/$mips_android_sysroot_subdir"
  } else if (current_cpu == "mips64el") {
    link_sysroot = "$android_ndk_root/$mips64_android_sysroot_subdir"
  } else {
    assert(false, "No android link sysroot for cpu: $target_cpu")
  }
} else {
  link_sysroot = sysroot
}
