# Copyright 2017 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/rules.gni")

# This target is used only by retrace. proguard.jar (v5.2.1) is used for
# compiling, and is reference directly via "java -jar proguar.jar"
java_prebuilt("proguard603_java") {
  jar_path = "lib/proguard603.jar"
  data = [
    "$root_build_dir/lib.java/third_party/proguard/proguard603.jar",
  ]
}

java_prebuilt("retrace_java") {
  jar_path = "lib/retrace603.jar"
  deps = [
    ":proguard603_java",
  ]
  data = [
    "$root_build_dir/lib.java/third_party/proguard/retrace603.jar",
  ]
}
