# Copyright 2015 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/ui.gni")
import("//testing/test.gni")
import("//services/service_manager/public/cpp/service.gni")
import("//services/service_manager/public/service_manifest.gni")
import("//services/service_manager/public/constants.gni")
import("//tools/grit/repack.gni")

group("all") {
  testonly = true
  deps = [
    ":ui",
    "//services/ui/ime/test_ime_driver",
    "//services/ui/test_wm",
  ]
}

service("ui") {
  sources = [
    "main.cc",
  ]

  deps = [
    ":lib",
    ":resources_100",
    ":resources_200",
    ":resources_strings",
    "//services/service_manager/public/cpp:sources",
    "//services/tracing/public/interfaces",
  ]

  if (is_win) {
    deps += [ ":copy_gl_libraries" ]
  }

  data_deps = [
    ":manifest",
    "//services/ui/ime/test_ime_driver",
  ]

  resources = [
    "$root_out_dir/mus_app_resources_strings.pak",
    "$root_out_dir/mus_app_resources_100.pak",
    "$root_out_dir/mus_app_resources_200.pak",
  ]
}

service_manifest("manifest") {
  name = "ui"
  source = "manifest.json"
}

if (is_win) {
  copy("copy_gl_libraries") {
    deps = [
      "//third_party/angle:libEGL",
      "//third_party/angle:libGLESv2",
    ]

    sources = [
      "$root_shlib_dir/libEGL.dll",
      "$root_shlib_dir/libGLESv2.dll",
    ]

    outputs = [
      "$root_out_dir/$packages_directory/ui/{{source_file_part}}",
    ]
  }
}

source_set("lib") {
  sources = [
    "service.cc",
    "service.h",
  ]

  public_deps = [
    "//services/ui/common:mus_common",
  ]
  deps = [
    "//base",
    "//cc",
    "//cc/surfaces",
    "//mojo/common:common_base",
    "//services/catalog/public/cpp",
    "//services/catalog/public/interfaces:constants",
    "//services/service_manager/public/cpp",
    "//services/tracing/public/cpp",
    "//services/tracing/public/interfaces:constants",
    "//services/ui/clipboard:lib",
    "//services/ui/ime:lib",
    "//services/ui/input_devices",
    "//services/ui/public/interfaces",
    "//services/ui/surfaces",
    "//services/ui/ws:lib",
    "//services/ui/ws:test_interface",
    "//ui/events",
    "//ui/events/ozone:events_ozone_layout",
    "//ui/gl:gl",
    "//ui/platform_window:platform_impls",
    "//ui/platform_window:platform_window",
  ]

  if (use_x11) {
    public_configs = [ "//build/config/linux:x11" ]
    public_deps += [ "//ui/events/platform/x11" ]
  }

  if (use_ozone) {
    deps += [ "//ui/ozone:ozone" ]
  }
}

repack("resources_strings") {
  sources = [
    "$root_gen_dir/ui/strings/app_locale_settings_en-US.pak",
  ]
  output = "$root_out_dir/mus_app_resources_strings.pak"
  deps = [
    "//ui/strings",
  ]
}

repack("resources_100") {
  sources = [
    "$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
  ]
  output = "$root_out_dir/mus_app_resources_100.pak"
  deps = [
    "//ui/resources",
  ]
}

repack("resources_200") {
  sources = [
    "$root_gen_dir/ui/resources/ui_resources_200_percent.pak",
  ]
  output = "$root_out_dir/mus_app_resources_200.pak"
  deps = [
    "//ui/resources",
  ]
}
