chromium/third_party/blink/renderer/extensions/chromeos/BUILD.gn

# Copyright 2021 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/python.gni")
import("//third_party/blink/renderer/bindings/bindings.gni")
import("//third_party/blink/renderer/build/scripts/scripts.gni")
import("//third_party/blink/renderer/config.gni")
import("//third_party/blink/renderer/extensions/extensions.gni")

assert(use_blink_extensions_chromeos)

visibility = [
  "//third_party/blink/renderer/bindings/extensions/*",
  "//third_party/blink/renderer/extensions/*",
]

config("extensions_chromeos_implementation") {
  visibility += [ "//third_party/blink/renderer/bindings/extensions/*" ]
  defines = [ "BLINK_EXTENSIONS_CHROMEOS_IMPLEMENTATION=1" ]
}

component("chromeos") {
  output_name = "blink_extensions_chromeos"

  visibility = []  # Allow re-assignment of list.
  visibility = [ "//third_party/blink/*" ]

  sources = [
    "chromeos.cc",
    "chromeos.h",
    "chromeos_extensions.cc",
    "chromeos_extensions.h",
    "extensions_chromeos_export.h",
  ]

  # This sets the default list of configs when the blink_modules_sources target
  # is defined. The default_compiler_configs comes from BUILDCONFIG.gn and
  # is the list normally applied to static libraries and source sets.
  configs += [
    ":extensions_chromeos_implementation",

    "//third_party/blink/renderer:config",
    "//third_party/blink/renderer:non_test_config",
    "//third_party/blink/renderer:inside_blink",
  ]

  deps = [
    ":chromeos_generated",
    "//third_party/blink/renderer/core",
    "//third_party/blink/renderer/extensions/chromeos/diagnostics",
    "//third_party/blink/renderer/extensions/chromeos/kiosk",
    "//third_party/blink/renderer/modules",
  ]

  public_deps =
      [ "//third_party/blink/renderer/bindings/extensions/v8:v8_chromeos" ]
}

group("make_chromeos_generated") {
  public_deps = [
    ":make_chromeos_generated_event_names",
    ":make_chromeos_generated_event_target_names",
    ":make_chromeos_generated_event_type_names",
  ]
}

blink_chromeos_extensions_output_dir = "$blink_extensions_output_dir/chromeos"

# generate_event_interfaces ----------------------------------------------------

action_with_pydeps("chromeos_event_interfaces") {
  script = "//third_party/blink/renderer/bindings/scripts/generate_event_interface_names.py"

  inputs = [ web_idl_database_filepath ]
  outputs = [ get_path_info(".", "gen_dir") +
              "/event_interface_chromeos_names.json5" ]

  args = [
    "--web_idl_database",
    rebase_path(web_idl_database_filepath, root_build_dir),
    "--component",
    "extensions_chromeos",
    "--export-macro",
    "EXTENSIONS_CHROMEOS_EXPORT",
    "--suffix",
    "ChromeOS",
    "--output",
    rebase_path(outputs[0], root_build_dir),
  ]

  deps = [ "//third_party/blink/renderer/bindings:web_idl_database" ]
}

# make_names -------------------------------------------------------------------

make_names("make_chromeos_generated_event_target_names") {
  in_files = [ "event_target_chromeos_names.json5" ]
  output_dir = blink_chromeos_extensions_output_dir
}

make_names("make_chromeos_generated_event_names") {
  in_files = [ "$blink_chromeos_extensions_output_dir/event_interface_chromeos_names.json5" ]
  output_dir = blink_chromeos_extensions_output_dir
  deps = make_core_generated_deps + [ ":chromeos_event_interfaces" ]
}

make_names("make_chromeos_generated_event_type_names") {
  in_files = [ "event_type_chromeos_names.json5" ]
  output_dir = blink_chromeos_extensions_output_dir
}

blink_extensions_chromeos_sources("chromeos_generated") {
  # Targets from above that generate outputs that need to be compiled.
  # All sources declared as outputs from these targets will be compiled
  # into one target.
  targets_generating_sources = [
    ":make_chromeos_generated_event_names",
    ":make_chromeos_generated_event_target_names",
    ":make_chromeos_generated_event_type_names",
  ]

  sources = []
  foreach(current, targets_generating_sources) {
    sources += get_target_outputs(current)
  }
}