ts_library.gni 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. # Copyright 2021 The Chromium Authors. All rights reserved.
  2. # Use of this source code is governed by a BSD-style license that can be
  3. # found in the LICENSE file.
  4. import("//build/config/chromeos/ui_mode.gni")
  5. import("//third_party/node/node.gni")
  6. template("ts_library") {
  7. node(target_name) {
  8. script = "//tools/typescript/ts_library.py"
  9. forward_variables_from(invoker,
  10. [
  11. "deps",
  12. "extra_deps",
  13. "in_files",
  14. "tsconfig_base",
  15. "manifest_excludes",
  16. "testonly",
  17. "visibility",
  18. ])
  19. inputs = [ "//tools/typescript/tsconfig_base.json" ]
  20. outputs = [ "$target_gen_dir/tsconfig_$target_name.json" ]
  21. assert(defined(in_files) || defined(invoker.definitions))
  22. root_dir = "."
  23. if (defined(invoker.root_dir)) {
  24. root_dir = invoker.root_dir
  25. }
  26. out_dir = target_gen_dir
  27. if (defined(invoker.out_dir)) {
  28. out_dir = invoker.out_dir
  29. }
  30. composite = false
  31. if (defined(invoker.composite)) {
  32. composite = invoker.composite
  33. }
  34. if (defined(in_files)) {
  35. outputs += [ "$target_gen_dir/$target_name.manifest" ]
  36. foreach(_source, in_files) {
  37. inputs += [ "$root_dir/$_source" ]
  38. _dirname =
  39. rebase_path(get_path_info(_source, "gen_dir"), target_gen_dir)
  40. _filename = get_path_info(_source, "name")
  41. outputs += [ "$out_dir/$_dirname/$_filename.js" ]
  42. if (composite) {
  43. outputs += [ "$out_dir/$_dirname/$_filename.d.ts" ]
  44. }
  45. }
  46. }
  47. args = [
  48. "--root_dir",
  49. rebase_path(root_dir, root_build_dir),
  50. "--gen_dir",
  51. rebase_path(target_gen_dir, root_build_dir),
  52. "--out_dir",
  53. rebase_path(out_dir, root_build_dir),
  54. "--output_suffix",
  55. target_name,
  56. ]
  57. if (defined(in_files)) {
  58. args += [ "--in_files" ] + in_files
  59. }
  60. if (defined(manifest_excludes)) {
  61. assert(defined(in_files))
  62. args += [ "--manifest_excludes" ] + manifest_excludes
  63. }
  64. if (defined(invoker.definitions)) {
  65. inputs += invoker.definitions
  66. definitions = []
  67. foreach(_definition, invoker.definitions) {
  68. definitions += [ rebase_path(_definition, target_gen_dir) ]
  69. }
  70. args += [ "--definitions" ] + definitions
  71. }
  72. if (defined(deps)) {
  73. args += [ "--deps" ]
  74. foreach(dep, deps) {
  75. name = get_label_info(dep, "name")
  76. args += [ rebase_path(get_label_info(dep, "dir"), ".") +
  77. "/tsconfig_$name.json" ]
  78. }
  79. }
  80. if (defined(tsconfig_base)) {
  81. inputs += [ tsconfig_base ]
  82. args += [
  83. "--tsconfig_base",
  84. rebase_path(tsconfig_base, target_gen_dir),
  85. ]
  86. }
  87. if (composite) {
  88. args += [ "--composite" ]
  89. }
  90. if (defined(extra_deps)) {
  91. if (!defined(deps)) {
  92. deps = []
  93. }
  94. deps += extra_deps
  95. }
  96. path_mappings = [
  97. "chrome://resources/*|" +
  98. rebase_path("$root_gen_dir/ui/webui/resources/preprocessed/*",
  99. target_gen_dir),
  100. "//resources/*|" +
  101. rebase_path("$root_gen_dir/ui/webui/resources/preprocessed/*",
  102. target_gen_dir),
  103. "chrome://resources/polymer/v3_0/*|" +
  104. rebase_path("//third_party/polymer/v3_0/components-chromium/*",
  105. target_gen_dir),
  106. "//resources/polymer/v3_0/*|" +
  107. rebase_path("//third_party/polymer/v3_0/components-chromium/*",
  108. target_gen_dir),
  109. "chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js|" + rebase_path(
  110. "//third_party/polymer/v3_0/components-chromium/polymer/polymer.d.ts",
  111. target_gen_dir),
  112. "//resources/polymer/v3_0/polymer/polymer_bundled.min.js|" + rebase_path(
  113. "//third_party/polymer/v3_0/components-chromium/polymer/polymer.d.ts",
  114. target_gen_dir),
  115. "/tools/typescript/definitions/*|" +
  116. rebase_path("//tools/typescript/definitions/*", target_gen_dir),
  117. ]
  118. if (is_chromeos_ash) {
  119. path_mappings += [
  120. "chrome://resources/ash/common/*|" + rebase_path(
  121. "$root_gen_dir/ash/webui/common/resources/preprocessed/*",
  122. target_gen_dir),
  123. "//resources/ash/common/*|" + rebase_path(
  124. "$root_gen_dir/ash/webui/common/resources/preprocessed/*",
  125. target_gen_dir),
  126. ]
  127. }
  128. args += [ "--path_mappings" ] + path_mappings
  129. if (defined(invoker.path_mappings)) {
  130. args += invoker.path_mappings
  131. }
  132. }
  133. }