# Copyright 2016 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

declare_args() {
  # The absolute path of the sysroot that is used with the target toolchain.
  target_sysroot = ""
}

if (current_os == target_os && target_sysroot != "") {
  sysroot = target_sysroot
} else if (is_fuchsia) {
  sysroot =
      rebase_path(get_label_info("//build/config/fuchsia:compiler_sysroot",
                                 "target_gen_dir"))
} else if (is_linux) {
  sysroot = rebase_path("//build/third_party/sysroot/${current_platform}")
} else if (is_mac) {
  import("//build/config/mac/mac_sdk.gni")
  sysroot = mac_sdk_path
} else {
  sysroot = ""
}
