Ctrl K
ComunidadGuías…

BUILD.gn

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Copyright 2014 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("./config/gni/devtools_grd_files.gni")
import("./config/gni/devtools_image_files.gni")
import("./front_end/emulated_devices/optimized/optimized_images.gni")
import("./scripts/build/ninja/copy.gni")
import("./scripts/build/ninja/node.gni")
import("./scripts/build/ninja/vars.gni")
import("./scripts/build/typescript/typescript.gni")
import("./third_party/blink/public/public_features.gni")

#-------------------------------------------------------------------------------

devtools_frontend_resources_deps = [
  ":favicon",
  "front_end",
]

group("devtools_all_files") {
  testonly = true
  data = [
    # This enables us to test bots with whitespace changes.
    "scripts/whitespaces.txt",
  ]

  data_deps = devtools_frontend_resources_deps + [
                "front_end:web_test_resources",
                "test",
              ]
  deps = [ ":frontend_indexer_tsconfig" ]
  public_deps = [ "front_end/ui/components/docs" ]
}

group("devtools_frontend_resources") {
  public_deps = devtools_frontend_resources_deps
  deps = [
    ":assert_grd",
    ":assert_third_party_readmes",
  ]
}

group("generate_devtools_inspector_overlay_resources") {
  public_deps = [ "inspector_overlay:build_inspector_overlay" ]
}

action("assert_grd") {
  script = "scripts/build/assert_grd.py"

  deps = [
    ":expected_grd_files",
    ":input_grd_files",
  ]

  inputs = [
    "$target_gen_dir/expected_grd_files.json",
    "$target_gen_dir/input_grd_files.json",
  ]

  args = [
    rebase_path("$target_gen_dir/expected_grd_files.json", root_build_dir),
    rebase_path("$target_gen_dir/input_grd_files.json", root_build_dir),
    rebase_path("$target_gen_dir/assert_grd.stamp", root_build_dir),
  ]

  outputs = [ "$target_gen_dir/assert_grd.stamp" ]
}

action("assert_third_party_readmes") {
  script = "scripts/build/assert_third_party_readmes.py"

  deps = [ ":expected_grd_files" ]

  inputs = [
    "$target_gen_dir/expected_grd_files.json",
    "front_end/third_party/additional_readme_paths.json",
  ]

  args = [
    rebase_path("$target_gen_dir/expected_grd_files.json", root_build_dir),
    rebase_path("front_end/third_party/additional_readme_paths.json",
                root_build_dir),
    rebase_path("$target_gen_dir/assert_third_party_readmes.stamp",
                root_build_dir),
  ]

  outputs = [ "$target_gen_dir/assert_third_party_readmes.stamp" ]
}

_expected_grd_files = []
_expected_grd_files += grd_files_bundled_sources
if (!devtools_bundle) {
  _expected_grd_files += grd_files_unbundled_sources
}

generated_file("expected_grd_files") {
  outputs = [ "$target_gen_dir/expected_grd_files.json" ]

  contents = _expected_grd_files

  output_conversion = "json"
}

generated_file("input_grd_files") {
  outputs = [ "$target_gen_dir/input_grd_files.json" ]

  data_keys = [ "grd_files" ]

  output_conversion = "json"
  rebase = target_gen_dir

  deps = [ "front_end" ]
}

_compressable_grd_files = filter_include(_expected_grd_files,
                                         [
                                           "*.css",
                                           "*.html",
                                           "*.js",
                                           "*.svg",
                                           "*.json",
                                           "*.md",
                                         ])

if (!is_debug) {
  node_action("compress") {
    script = "scripts/build/compress_files.js"
    public_deps = [ ":devtools_frontend_resources" ]

    sources = []
    foreach(_grd_file, _compressable_grd_files) {
      sources += [ "$target_gen_dir/$_grd_file" ]
    }

    response_file_contents = rebase_path(sources, root_build_dir)

    outputs = []
    foreach(_grd_file, _compressable_grd_files) {
      outputs += [
        "$target_gen_dir/$_grd_file.compressed",
        "$target_gen_dir/$_grd_file.hash",
      ]
    }

    args = [
      "--file_list",
      "{{response_file_name}}",
    ]
  }
} else {
  not_needed([ "_compressable_grd_files" ])
}

action("generate_devtools_grd") {
  script = "scripts/build/generate_devtools_grd.py"

  response_file_contents = rebase_path(_expected_grd_files, "front_end")
  outfile = "$target_gen_dir/front_end/devtools_resources.grd"
  outputs = [ outfile ]

  args = [
    "--file_list",
    "{{response_file_name}}",
    "--output",
    rebase_path(outfile, root_build_dir),
  ]

  inputs = []

  if (is_debug) {
    deps = [ ":devtools_frontend_resources" ]
    foreach(_grd_file, _expected_grd_files) {
      inputs += [ "$target_gen_dir/$_grd_file" ]
    }
  } else {
    deps = [ ":compress" ]
    foreach(_grd_file, _expected_grd_files) {
      inputs += [ "$target_gen_dir/$_grd_file" ]
    }
    foreach(_grd_file, _compressable_grd_files) {
      inputs += [ "$target_gen_dir/$_grd_file.compressed" ]
    }

    # Compression is slow, particularly in debug builds, so only compress in
    # non-debug builds.
    args += [ "--compress" ]
  }
}

generated_file("indexer_ts_files") {
  outputs = [ "$root_build_dir/indexer_ts_files.txt" ]
  data_keys = [ "typescript_files" ]

  deps = [
    "front_end",
    "front_end:unittests",
  ]
}

ts_library("frontend_indexer_tsconfig") {
  tsconfigonly = true
  sourceslist = "$root_build_dir/indexer_ts_files.txt"
  public_deps = [ ":indexer_ts_files" ]
}

copy_to_gen("favicon") {
  sources = [ "favicon.ico" ]
}