File: BUILD.gn

package info (click to toggle)
chromium 138.0.7204.183-1~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm-proposed-updates
  • size: 6,080,960 kB
  • sloc: cpp: 34,937,079; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,954; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,811; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (216 lines) | stat: -rw-r--r-- 8,640 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
# Copyright 2018 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//chrome/common/extensions/api/api_sources.gni")
import("//chrome/common/features.gni")
import("//extensions/buildflags/buildflags.gni")
import("//pdf/features.gni")
import("//tools/json_schema_compiler/json_schema_api.gni")

assert(enable_extensions_core,
       "Cannot depend on extensions because enable_extensions_core=false.")

# This should be:
# The set of all targets needed to build out the extension API implementations
# and any necessary steps to register or instantiate them.
# Embedders should usually depend on this.
# Right now, there's currently a number of other targets that are (not ideally)
# sharded out. See https://crbug.com/883570.
group("api") {
  public_deps = [ "//chrome/browser/extensions/api:api_implementations" ]
}

# The collection of API implementations.
group("api_implementations") {
  # APIs supported on Win/Mac/Linux and desktop Android go here.
  # TODO(https://crbug.com/356905053): Add more APIs here.
  public_deps = [
    "//chrome/browser/extensions/api/activity_log_private",
    "//chrome/browser/extensions/api/browsing_data",
    "//chrome/browser/extensions/api/cookies",
    "//chrome/browser/extensions/api/extension_action",
    "//chrome/browser/extensions/api/module",
    "//chrome/browser/extensions/api/notifications",
    "//chrome/browser/extensions/api/runtime",
    "//chrome/browser/extensions/api/scripting",
  ]

  if (enable_extensions) {
    # APIs supported on Win/Mac/Linux but NOT desktop Android go here.
    # TODO(crbug.com/40245282): Add more API implementations here.
    public_deps += [
      "//chrome/browser/extensions/api/autofill_private",
      "//chrome/browser/extensions/api/braille_display_private",
      "//chrome/browser/extensions/api/command_line_private",
      "//chrome/browser/extensions/api/content_settings",
      "//chrome/browser/extensions/api/context_menus",
      "//chrome/browser/extensions/api/debugger",
      "//chrome/browser/extensions/api/desktop_capture",
      "//chrome/browser/extensions/api/downloads_internal",
      "//chrome/browser/extensions/api/enterprise_hardware_platform",
      "//chrome/browser/extensions/api/experimental_actor",
      "//chrome/browser/extensions/api/experimental_ai_data",
      "//chrome/browser/extensions/api/font_settings",
      "//chrome/browser/extensions/api/idltest",
      "//chrome/browser/extensions/api/networking_private",
      "//chrome/browser/extensions/api/omnibox",
      "//chrome/browser/extensions/api/page_capture",
      "//chrome/browser/extensions/api/permissions",
      "//chrome/browser/extensions/api/preference",
      "//chrome/browser/extensions/api/processes",
      "//chrome/browser/extensions/api/proxy",
      "//chrome/browser/extensions/api/reading_list",
      "//chrome/browser/extensions/api/resources_private",
      "//chrome/browser/extensions/api/safe_browsing_private",
      "//chrome/browser/extensions/api/search",
      "//chrome/browser/extensions/api/settings_overrides",
      "//chrome/browser/extensions/api/side_panel",
      "//chrome/browser/extensions/api/tab_capture",
      "//chrome/browser/extensions/api/tab_groups",
      "//chrome/browser/extensions/api/web_authentication_proxy",
      "//chrome/browser/extensions/api/web_navigation",
      "//chrome/browser/extensions/api/web_view",
      "//chrome/browser/extensions/api/webrtc_audio_private",
      "//chrome/browser/extensions/api/webrtc_desktop_capture_private",
      "//chrome/browser/extensions/api/webrtc_logging_private",
    ]

    if (enable_pdf) {
      public_deps += [ "//chrome/browser/extensions/api/pdf_viewer_private" ]
    }

    if (enable_service_discovery) {
      public_deps += [ "//chrome/browser/extensions/api/mdns" ]
    }

    if (is_chromeos) {
      public_deps += [
        "//chrome/browser/chromeos/extensions/smart_card_provider_private",
        "//chrome/browser/extensions/api/crash_report_private",
        "//chrome/browser/extensions/api/document_scan",
        "//chrome/browser/extensions/api/enterprise_device_attributes",
        "//chrome/browser/extensions/api/enterprise_kiosk_input",
        "//chrome/browser/extensions/api/enterprise_networking_attributes",
        "//chrome/browser/extensions/api/enterprise_platform_keys",
        "//chrome/browser/extensions/api/enterprise_platform_keys_private",
        "//chrome/browser/extensions/api/input_ime",
        "//chrome/browser/extensions/api/platform_keys",
        "//chrome/browser/extensions/api/quick_unlock_private",
        "//chrome/browser/extensions/api/terminal",
      ]
    }
  }  # if (enable_extensions)
}

# The step necessary to generate the code to register the corresponding
# ExtensionFunctions in order to map the function string name with their
# implementation.
function_registration("api_registration") {
  sources = chrome_extensions_api_schema_sources +
            chrome_extensions_api_uncompiled_sources
  impl_dir = "//chrome/browser/extensions/api"
  configs = [ "//build/config:precompiled_headers" ]
  bundle_name = "Chrome"
  root_namespace = chrome_extensions_api_root_namespace
  schema_include_rules = chrome_extensions_api_schema_include_rules

  deps = [
    # This is not directly included by the target, but specified here
    # to avoid cyclic dependency chain related to private_membership
    # protos.
    "//components/policy/proto",

    # Different APIs include headers from these targets.
    "//chrome/browser/ai",
    "//chrome/common",
    "//chrome/common:mojo_bindings",
    "//components/autofill/core/common/mojom:mojo_types",
    "//components/omnibox/browser",
    "//components/translate/core/browser",
    "//components/zoom",
    "//content/public/browser",
    "//extensions/browser",
    "//extensions/browser/api:api_implementations",
    "//extensions/common/api",

    # Different APIs include some headers from chrome/common that in turn
    # include generated headers from these targets.
    # TODO(brettw) this should be made unnecessary if possible.
    "//chrome/common/extensions/api",
    "//components/sync",
    "//skia",
    "//third_party/metrics_proto",
    "//ui/accessibility:ax_enums_mojo",
  ]

  if (is_chromeos) {
    deps += [
      "//chrome/browser/ash/extensions/autotest_private",
      "//chrome/browser/ash/extensions/file_manager",

      # TODO: We should pull these out into a separate build and function
      # generation step so that //chrome/browser/extensions has fewer
      # dependencies on //chrome/browser/chromeos.
      "//chrome/browser/chromeos/extensions/accessibility_service_private",
      "//chrome/browser/chromeos/extensions/info_private",
      "//chrome/browser/chromeos/extensions/login_screen/login_screen_storage",
      "//chrome/browser/chromeos/extensions/system_log",
      "//chrome/browser/chromeos/extensions/wallpaper",
    ]
  }
}

# KeyedService factories initialization.
source_set("keyed_service_factories") {
  sources = [
    "api_browser_context_keyed_service_factories.cc",
    "api_browser_context_keyed_service_factories.h",
  ]

  deps = [
    ":api_implementations",
    "//chrome/browser/extensions",
    "//chrome/common:buildflags",
    "//components/safe_browsing:buildflags",
    "//extensions/buildflags",
    "//pdf:buildflags",
    "//printing/buildflags",
  ]

  if (is_chromeos) {
    deps += [
      "//chrome/browser/chromeos/extensions/login_screen/login_state",
      "//chrome/browser/chromeos/extensions/wm",
    ]
  }
}

if (is_win) {
  # The files below are required to exercise the code that properly launches
  # Native Hosts with paths containing characters that are problematic for
  # cmd.exe. crbug.com/335558
  executable("native_messaging_test_echo_host") {
    testonly = true
    sources = [ "messaging/native_messaging_test_echo_host.cc" ]
    deps = [ "//base" ]
  }

  copy("native_messaging_test_echo_&_host") {
    testonly = true
    src_tool = ":native_messaging_test_echo_host"
    sources = [ get_label_info(src_tool, "root_out_dir") +
                "/native_messaging_test_echo_host.exe" ]
    outputs = [ "$root_build_dir/native_messaging_test_echo_&_host.exe" ]
    deps = [ src_tool ]
  }

  copy("native_messaging_test_echo_space_host") {
    testonly = true
    src_tool = ":native_messaging_test_echo_host"
    sources = [ get_label_info(src_tool, "root_out_dir") +
                "/native_messaging_test_echo_host.exe" ]
    outputs = [ "$root_build_dir/native_messaging_test_echo_ _host.exe" ]
    deps = [ src_tool ]
  }
}