# 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.

# GYP: //tools/android/md5sum/md5sum.gyp:md5sum
group("md5sum") {
  datadeps = [
    ":md5sum_bin($host_toolchain)",
    ":md5sum_bin($default_toolchain)",
    ":md5sum_prepare_dist($default_toolchain)",
    ":md5sum_copy_host($host_toolchain)",
  ]
  # TODO(cjhopman): Remove once group datadeps are fixed.
  deps = datadeps
}

# GYP: //tools/android/md5sum/md5sum.gyp:md5sum_bin_device (and md5sum_bin_host)
executable("md5sum_bin") {
  sources = [
    "md5sum.cc"
  ]
  deps = [
    "//base"
  ]

  # TODO(GYP)
  #'conditions': [
  #[ 'order_profiling!=0 and OS=="android"', {
  #'dependencies': [ '../../../tools/cygprofile/cygprofile.gyp:cygprofile', ],
  #}],
  #],
}

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

  # GYP: //tools/android/md5sum/md5sum.gyp:md5sum_stripped_device_bin
  create_native_executable_dist("md5sum_prepare_dist") {
    dist_dir = "$root_build_dir/md5sum_dist"
    binary = "$root_build_dir/exe.stripped/md5sum_bin"
  }
} else {
  # GYP: //tools/android/md5sum/md5sum.gyp:md5sum_bin_host
  copy("md5sum_copy_host") {
    sources = [
      "$root_out_dir/md5sum_bin"
    ]
    outputs = [
      "$root_build_dir/md5sum_bin_host"
    ]
  }
}

