| # 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("//build/config/chromeos/ui_mode.gni") |
| import("config.gni") |
| if (is_clang) { |
| import("//build/config/clang/clang.gni") |
| } |
| |
| visibility = [ "//third_party/blink/*" ] |
| |
| # arguments -------------------------------------------------------------------- |
| |
| declare_args() { |
| # Set to true to enable the clang plugin that checks the usage of the Blink |
| # garbage-collection infrastructure during compilation. |
| blink_gc_plugin = true |
| |
| # Set to true to have the clang Blink GC plugin emit class graph (in JSON) |
| # with typed pointer edges; for debugging or other (internal) uses. |
| blink_gc_plugin_option_do_dump_graph = false |
| |
| # Set to true to have the clang Blink GC plugin additionally check if |
| # a class has an empty destructor which would be unnecessarily invoked |
| # when finalized. |
| blink_gc_plugin_option_warn_unneeded_finalizer = false |
| } |
| |
| # features --------------------------------------------------------------------- |
| |
| config("features") { |
| defines = feature_defines_list |
| } |
| |
| # inside_blink ----------------------------------------------------------------- |
| |
| config("inside_blink") { |
| cflags = [] |
| defines = [ |
| "BLINK_IMPLEMENTATION=1", |
| "INSIDE_BLINK", |
| ] |
| if (is_clang) { |
| cflags += [ |
| "-Wconversion", |
| "-Wno-float-conversion", |
| "-Wno-sign-conversion", |
| "-Wno-implicit-float-conversion", |
| "-Wno-implicit-int-conversion", |
| ] |
| } |
| } |
| |
| # blink_pch -------------------------------------------------------------------- |
| |
| # Precompiled headers can save a lot of time compiling since Blink has |
| # a lot of source in header files. |
| |
| import("//build/config/pch.gni") |
| |
| config("blink_pch") { |
| if (enable_precompiled_headers) { |
| if (is_win) { |
| # This is a string rather than a file GN knows about. It has to match |
| # exactly what's in the /FI flag below, and what might appear in the |
| # source code in quotes for an #include directive. |
| precompiled_header = rebase_path("build/win/precompile.h", "//") |
| |
| # This is a file that GN will compile with the above header. It will be |
| # implicitly added to the sources (potentially multiple times, with one |
| # variant for each language used in the target). |
| precompiled_source = |
| "//third_party/blink/renderer/build/win/precompile.cc" |
| |
| # Force include the header. |
| cflags = [ "/FI$precompiled_header" ] |
| } else if (is_mac) { |
| precompiled_source = "//third_party/blink/renderer/build/mac/prefix.h" |
| } else if (is_linux) { |
| precompiled_source = "//third_party/blink/renderer/build/linux/prefix.h" |
| } |
| } |
| } |
| |
| # config ----------------------------------------------------------------------- |
| |
| config("config") { |
| cflags = [] |
| defines = [] |
| |
| if (is_win) { |
| cflags += [ |
| "/wd4305", # Truncation from 'type1' to 'type2'. |
| "/wd4324", # Struct padded due to declspec(align). |
| "/wd4714", # Function marked forceinline not inlined. |
| "/wd4800", # Value forced to bool. |
| ] |
| } |
| |
| if (is_win) { |
| if (is_component_build) { |
| defines += [ "USING_V8_SHARED" ] |
| } |
| } |
| |
| if (is_clang && clang_use_chrome_plugins) { |
| cflags += [ |
| "-Xclang", |
| "-plugin-arg-find-bad-constructs", |
| "-Xclang", |
| "check-blink-data-member-type", |
| ] |
| } |
| |
| if (is_clang && blink_gc_plugin && clang_use_chrome_plugins) { |
| # The plugin is built directly into clang, so there's no need to load it |
| # dynamically. |
| cflags += [ |
| "-Xclang", |
| "-add-plugin", |
| "-Xclang", |
| "blink-gc-plugin", |
| ] |
| |
| # Add arguments for enabled GC plugin options: |
| if (blink_gc_plugin_option_do_dump_graph) { |
| cflags += [ |
| "-Xclang", |
| "-plugin-arg-blink-gc-plugin", |
| "-Xclang", |
| "dump-graph", |
| ] |
| } |
| } |
| } |
| |
| # The follow configs apply to all targets except for unit tests, which rely on |
| # static initializers. |
| config("non_test_config") { |
| configs = [ |
| "//build/config/compiler:wexit_time_destructors", |
| "//build/config/compiler:wglobal_constructors", |
| ] |
| } |