# Copyright (c) 2016, 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("../executable_suffix.gni")

_dart_root = rebase_path("../..")

_prebuilt_dart_exe =
    "$_dart_root/tools/sdks/dart-sdk/bin/dart$executable_suffix"

# When the first argument is "exec_script", gn_run_binary.py always exits with
# status 0, but gives non-empty output when the command it is given fails.
_prebuilt_dart_exe_trial = exec_script("../gn_run_binary.py",
                                       [
                                         "exec_script",
                                         _prebuilt_dart_exe,
                                         "--version",
                                       ],
                                       "string")
if (_prebuilt_dart_exe_trial == "") {
  prebuilt_dart_exe_works = true
} else {
  prebuilt_dart_exe_works = false
}
