OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import("config.gni") | 5 import("config.gni") |
6 if (is_clang) { | 6 if (is_clang) { |
7 import("//build/config/clang/clang.gni") | 7 import("//build/config/clang/clang.gni") |
8 } | 8 } |
9 | 9 |
10 visibility = [ "//third_party/WebKit/*" ] | 10 visibility = [ "//third_party/WebKit/*" ] |
11 | 11 |
| 12 # arguments -------------------------------------------------------------------- |
| 13 |
| 14 declare_args() { |
| 15 # Set to true to enable the clang plugin that checks the usage of the Blink |
| 16 # garbage-collection infrastructure during compilation. |
| 17 blink_gc_plugin = true |
| 18 |
| 19 # Set to true to have the clang Blink GC plugin emit class graph (in JSON) |
| 20 # with typed pointer edges; for debugging or other (internal) uses. |
| 21 blink_gc_plugin_option_do_dump_graph = false |
| 22 |
| 23 # Set to true to have the clang Blink GC plugin additionally check if |
| 24 # a class has an empty destructor which would be unnecessarily invoked |
| 25 # when finalized. |
| 26 blink_gc_plugin_option_warn_unneeded_finalizer = false |
| 27 } |
| 28 |
12 # features --------------------------------------------------------------------- | 29 # features --------------------------------------------------------------------- |
13 | 30 |
14 config("features") { | 31 config("features") { |
15 defines = feature_defines_list | 32 defines = feature_defines_list |
16 } | 33 } |
17 | 34 |
18 # inside_blink ----------------------------------------------------------------- | 35 # inside_blink ----------------------------------------------------------------- |
19 | 36 |
20 config("inside_blink") { | 37 config("inside_blink") { |
21 defines = [ | 38 defines = [ |
(...skipping 25 matching lines...) Expand all Loading... |
47 ] | 64 ] |
48 } | 65 } |
49 | 66 |
50 if (is_win) { | 67 if (is_win) { |
51 if (is_component_build) { | 68 if (is_component_build) { |
52 defines += [ "USING_V8_SHARED" ] | 69 defines += [ "USING_V8_SHARED" ] |
53 } | 70 } |
54 } | 71 } |
55 | 72 |
56 if (is_clang && blink_gc_plugin && clang_use_chrome_plugins) { | 73 if (is_clang && blink_gc_plugin && clang_use_chrome_plugins) { |
57 if (is_mac || is_ios) { | 74 # On Windows, the plugin is built directly into clang, so there's |
| 75 # no need to load it dynamically. |
| 76 if (!is_win) { |
| 77 _blink_gc_plugin_dll_extension = "so" |
| 78 if (is_mac || is_ios) { |
| 79 _blink_gc_plugin_dll_extension = "dylib" |
| 80 } |
58 cflags += [ | 81 cflags += [ |
59 "-Xclang", | 82 "-Xclang", |
60 "-load", | 83 "-load", |
61 "-Xclang", | 84 "-Xclang", |
62 rebase_path( | 85 rebase_path( |
63 "//third_party/llvm-build/Release+Asserts/lib/libBlinkGCPlugin.dylib
", | 86 "${clang_base_path}/lib/libBlinkGCPlugin.${_blink_gc_plugin_dll_exte
nsion}", |
64 root_build_dir), | |
65 ] | |
66 } else if (is_linux) { | |
67 cflags += [ | |
68 "-Xclang", | |
69 "-load", | |
70 "-Xclang", | |
71 rebase_path( | |
72 "//third_party/llvm-build/Release+Asserts/lib/libBlinkGCPlugin.so", | |
73 root_build_dir), | 87 root_build_dir), |
74 ] | 88 ] |
75 } | 89 } |
76 | |
77 cflags += [ | 90 cflags += [ |
78 "-Xclang", | 91 "-Xclang", |
79 "-add-plugin", | 92 "-add-plugin", |
80 "-Xclang", | 93 "-Xclang", |
81 "blink-gc-plugin", | 94 "blink-gc-plugin", |
82 ] | 95 ] |
| 96 |
| 97 # Add arguments for enabled GC plugin options: |
| 98 if (blink_gc_plugin_option_do_dump_graph) { |
| 99 cflags += [ |
| 100 "-Xclang", |
| 101 "-plugin-arg-blink-gc-plugin", |
| 102 "-Xclang", |
| 103 "dump-graph", |
| 104 ] |
| 105 } |
| 106 if (blink_gc_plugin_option_warn_unneeded_finalizer) { |
| 107 cflags += [ |
| 108 "-Xclang", |
| 109 "-plugin-arg-blink-gc-plugin", |
| 110 "-Xclang", |
| 111 "warn-unneeded-finalizer", |
| 112 ] |
| 113 } |
83 } | 114 } |
84 } | 115 } |
85 | 116 |
86 # The follow configs apply to all targets except for unit tests, which rely on | 117 # The follow configs apply to all targets except for unit tests, which rely on |
87 # static initializers. | 118 # static initializers. |
88 config("non_test_config") { | 119 config("non_test_config") { |
89 cflags = [] | 120 cflags = [] |
90 | 121 |
91 if (is_clang) { | 122 if (is_clang) { |
92 cflags += [ "-Wglobal-constructors" ] | 123 cflags += [ "-Wglobal-constructors" ] |
93 } | 124 } |
94 } | 125 } |
95 | 126 |
96 if (is_mac) { | 127 if (is_mac) { |
97 # This sets up precompiled headers for Mac. | 128 # This sets up precompiled headers for Mac. |
98 config("mac_precompiled_headers") { | 129 config("mac_precompiled_headers") { |
99 precompiled_header = rebase_path("build/mac/Prefix.h", root_build_dir) | 130 precompiled_header = rebase_path("build/mac/Prefix.h", root_build_dir) |
100 precompiled_source = "//third_party/WebKit/Source/build/mac/Prefix.h" | 131 precompiled_source = "//third_party/WebKit/Source/build/mac/Prefix.h" |
101 } | 132 } |
102 } | 133 } |
OLD | NEW |