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

import("//build/config/android/config.gni")
import("//build/symlink.gni")

group("md5sum") {
  data_deps = [
    ":md5sum_prepare_dist($default_toolchain)",
    ":md5sum_bin_host($default_toolchain)",
  ]

  # TODO(cjhopman): Remove once group data_deps are fixed.
  deps = data_deps
}

executable("md5sum_bin") {
  sources = [
    "md5sum.cc",
  ]
  deps = [
    "//base",
  ]
}

if (current_toolchain == default_toolchain) {
  import("//build/config/android/rules.gni")

  create_native_executable_dist("md5sum_prepare_dist") {
    dist_dir = "$root_build_dir/md5sum_dist"
    binary = "$root_build_dir/md5sum_bin"
    deps = [
      ":md5sum_bin",
    ]
  }

  binary_symlink("md5sum_bin_host") {
    binary_label = ":md5sum_bin($host_toolchain)"
    output_name = "md5sum_bin_host"
  }
}
