# Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

import("../configs.gni")
import("platform_sources.gni")

if (is_fuchsia) {
  import("//build/fuchsia/sdk.gni")
}

library_for_all_configs("libdart_platform") {
  target_type = "source_set"
  public_configs = [ "../vm:libdart_vm_config" ]
  sources = platform_sources
  include_dirs = [ ".." ]
  extra_deps = []

  if (is_fuchsia) {
    if (using_fuchsia_gn_sdk) {
      extra_deps += [
        "$fuchsia_sdk_root/pkg/sys_cpp",
        "$fuchsia_sdk_root/pkg/sys_inspect_cpp",
      ]
    } else if (using_fuchsia_sdk) {
      extra_deps += [
        "$fuchsia_sdk_root/pkg:sys_cpp",
        "$fuchsia_sdk_root/pkg:sys_inspect_cpp",
      ]
    } else {
      extra_deps += [
        "//sdk/lib/sys/cpp",
        "//sdk/lib/sys/inspect/cpp",
      ]
    }
  }
}
