# 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/rules.gni")
import("//mojo/public/mojo_application.gni")

shared_library("libdevice_name") {
  output_name = "device_name"

  deps = [
    "//base",
    "//mojo/public/c/system",
    "//mojo/public/cpp/application:standalone",
    "//mojo/public/cpp/bindings",
    "//mojo/public/cpp/system",
    "//mojo/public/cpp/utility",
    "//mojo/public/platform/native:system",
    ":jni_headers",
  ]

  sources = [
    "device_name.cc",
  ]
}

generate_jni("jni_headers") {
  sources = [
    "java/src/org/chromium/mojo/examples/DeviceName.java",
  ]

  jni_package = "mojo"
}

dex_output_path = "$target_out_dir/device_name_java.dex.jar"
android_library("device_name_java") {
  java_files = [ "java/src/org/chromium/mojo/examples/DeviceName.java" ]

  deps = [
    "//base:base_java",
  ]

  dex_path = dex_output_path
}

mojo_android_application("device_name") {
  input_so = "$root_out_dir/lib.stripped/libdevice_name.so"
  input_dex_jar = dex_output_path
}
