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

android_aar_prebuilt("gvr_common_java") {
  aar_path = "src/ndk-beta/lib/common_library.aar"
  jar_excluded_patterns = [ "*/protobuf/*" ]
}

android_aar_prebuilt("gvr_base_java") {
  aar_path = "src/libraries/base/base.aar"
}

android_aar_prebuilt("gvr_controller_java") {
  aar_path = "src/libraries/controller/controller.aar"
}

source_set("libgvr") {
  deps = [
    ":libgvr_shared_library",
  ]
  libs = [ "$root_out_dir/libgvr.so" ]
}

copy("libgvr_shared_library") {
  if (target_cpu == "arm") {
    sources = [
      "src/ndk-beta/lib/android_arm/libgvr.so",
    ]
  } else if (target_cpu == "arm64") {
    sources = [
      "src/ndk-beta/lib/android_arm64/libgvr.so",
    ]
  } else if (target_cpu == "x86") {
    sources = [
      "src/ndk-beta/lib/android_x86/libgvr.so",
    ]
  } else if (target_cpu == "x64") {
    sources = [
      "src/ndk-beta/lib/android_x86_64/libgvr.so",
    ]
  }
  outputs = [
    "${root_out_dir}/libgvr.so",
  ]
}

config("libgvr_config") {
  include_dirs = [ "src/ndk-beta/include/" ]
}
