1# Copyright 2014 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
5import("//third_party/WebKit/Source/bindings/bindings.gni")
6import("//third_party/WebKit/Source/build/scripts/scripts.gni")
7import("//third_party/WebKit/Source/core/core.gni")
8import("//third_party/WebKit/Source/modules/modules.gni")
9
10visibility = [ "//third_party/WebKit/*" ]
11
12# Main interface IDL files (excluding dependencies and testing)
13# are included as properties on global objects, and in aggregate bindings.
14main_interface_idl_files = core_idl_files + modules_idl_files
15
16main_interface_idl_files_list = "$target_gen_dir/main_interface_idl_files.tmp"
17write_file(main_interface_idl_files_list,
18           rebase_path(main_interface_idl_files, root_build_dir))
19
20generated_global_constructors_idl_files = [
21  "$blink_output_dir/WindowConstructors.idl",
22  "$blink_output_dir/SharedWorkerGlobalScopeConstructors.idl",
23  "$blink_output_dir/DedicatedWorkerGlobalScopeConstructors.idl",
24  "$blink_output_dir/ServiceWorkerGlobalScopeConstructors.idl",
25]
26generated_global_constructors_header_files = [
27  "$blink_output_dir/WindowConstructors.h",
28  "$blink_output_dir/SharedWorkerGlobalScopeConstructors.h",
29  "$blink_output_dir/DedicatedWorkerGlobalScopeConstructors.h",
30  "$blink_output_dir/ServiceWorkerGlobalScopeConstructors.h",
31]
32
33# FIXME: Generate separate core_global_objects
34# http://crbug.com/358074
35# GYP version: generated.gyp:global_objects
36action("global_objects") {
37  script = "scripts/compute_global_objects.py"
38
39  inputs = [
40    "scripts/utilities.py",
41    # Only look in main IDL files (exclude dependencies and testing,
42    # which should not define global objects).
43    main_interface_idl_files_list,
44  ] + main_interface_idl_files
45
46  outputs = [
47    "$bindings_output_dir/GlobalObjects.pickle",
48  ]
49
50  args = [
51    "--idl-files-list",
52    rebase_path(main_interface_idl_files_list, root_build_dir),
53    "--write-file-only-if-changed=1",  # Always true for Ninja. FIXME: remove
54                                       # when everything switched to GN.
55    "--",
56    rebase_path("$bindings_output_dir/GlobalObjects.pickle", root_build_dir),
57  ]
58}
59
60# GYP version: generated.gyp:global_constructors_idls
61action("global_constructors_idls") {
62  script = "scripts/generate_global_constructors.py"
63
64  inputs = [
65    "scripts/generate_global_constructors.py",
66    "scripts/utilities.py",
67    "$bindings_output_dir/GlobalObjects.pickle",
68    # Only includes main IDL files (exclude dependencies and testing,
69    # which should not appear on global objects).
70    main_interface_idl_files_list,
71  ] + main_interface_idl_files
72
73  outputs = generated_global_constructors_idl_files +
74    generated_global_constructors_header_files
75
76  args = [
77    "--idl-files-list",
78    rebase_path(main_interface_idl_files_list, root_build_dir),
79    "--global-objects-file",
80    rebase_path("$bindings_output_dir/GlobalObjects.pickle", root_build_dir),
81    "--write-file-only-if-changed=1",  # Always true for Ninja.
82    "--",
83    "Window",
84    rebase_path("$blink_output_dir/WindowConstructors.idl", root_build_dir),
85    "SharedWorkerGlobalScope",
86    rebase_path("$blink_output_dir/SharedWorkerGlobalScopeConstructors.idl",
87                root_build_dir),
88    "DedicatedWorkerGlobalScope",
89    rebase_path("$blink_output_dir/DedicatedWorkerGlobalScopeConstructors.idl",
90                root_build_dir),
91    "ServiceWorkerGlobalScope",
92    rebase_path("$blink_output_dir/ServiceWorkerGlobalScopeConstructors.idl",
93                root_build_dir),
94  ]
95
96  deps = [ ":global_objects" ]
97}
98
99# GYP version: generated.gyp:generated_idls
100group("generated_idls") {
101  deps = [
102    ":global_constructors_idls",
103    "//third_party/WebKit/Source/core:generated_testing_idls",
104  ]
105}
106