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

  # 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

  # When verify_sdk_hash is true, this string is used as the verification hash
  # instead of calculating one from the contents of the tree using the
  # make_version.py script.
  dart_sdk_verification_hash = ""

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

if (default_git_folder == "") {
  default_git_folder = exec_script("$_dart_root/tools/get_dot_git_folder.py",
                                   [
                                     rebase_path("$_dart_root/.git"),
                                     "$_dart_root/.git",
                                   ],
                                   "trim string")
}

# 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 = dart_sdk_verification_hash
  if (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"
}
