# Copyright 2016 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")

java_prebuilt("asm_java") {
  # Not "testonly" because //build/android/bytecode:java_bytecode_rewriter
  # depends on it.
  jar_path = "lib/asm.jar"
}

java_prebuilt("asm_tree_java") {
  # Not "testonly" because //build/android/bytecode:java_bytecode_rewriter
  # depends on it.
  jar_path = "lib/asm-tree.jar"
  deps = [
    ":asm_java",
  ]
}

java_prebuilt("asm_analysis_java") {
  testonly = true
  jar_path = "lib/asm-analysis.jar"
  deps = [
    ":asm_tree_java",
  ]
}

java_prebuilt("asm_commons_java") {
  testonly = true
  jar_path = "lib/asm-commons.jar"
  deps = [
    ":asm_tree_java",
  ]
}

java_prebuilt("asm_util_java") {
  # Not "testonly" because //build/android/bytecode:java_bytecode_rewriter
  # depends on it.
  jar_path = "lib/asm-util.jar"
  deps = [
    ":asm_tree_java",
  ]
}
