# Copyright (c) 2019, 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.

_dart_root = get_path_info(".", "abspath")

declare_args() {
  # Absolute path to the .git folder.
  #
  # This is used in rules that need to refer to `.git/logs/HEAD` to include
  # a hash in the version string. By default the folder is `.git`, but we define
  # it as an argument so it can be overridden by users of `git-worktree` (See
  # Issue #33619).
  #
  # When using git-worktree, you can add
  #
  #    default_git_folder = "/path/to/main/git/repo/.git/worktrees/name/"
  #
  # to out/ReleaseX64/args.gn. The path above can be extracted from the `.git`
  # file under the git worktree folder.
  # The script run here should take care of everything automatically though.
  default_git_folder = exec_script("$_dart_root/tools/get_dot_git_folder.py",
                                   [
                                     rebase_path("$_dart_root/.git"),
                                     "$_dart_root/.git",
                                   ],
                                   "trim string")

  # Whether to enable the SDK hash check that will prevent loading a kernel
  # into a VM which was built with a different SDK.
  verify_sdk_hash = true

  # The location in the build output directory of the built Dart SDK.
  dart_sdk_output = "dart-sdk"
}

# The SDK hash to build into VM and kernels.
# The value 0000000000 signifies no hash is set, which will disable the check.
if (verify_sdk_hash) {
  sdk_hash = exec_script("$_dart_root/tools/make_version.py",
                         [ "--format={{GIT_HASH}}" ],
                         "trim string",
                         [
                           "$_dart_root/tools/VERSION",
                           "$_dart_root/tools/utils.py",
                           "$default_git_folder/logs/HEAD",
                         ])
} else {
  sdk_hash = "0000000000"
}
