| # Copyright 2014 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("config.gni") |
| if (is_clang) { |
| import("//build/config/clang/clang.gni") |
| } |
| |
| visibility = [ "//third_party/WebKit/*" ] |
| |
| # 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") { |
| defines = [ |
| "BLINK_IMPLEMENTATION=1", |
| "INSIDE_BLINK", |
| ] |
| } |
| |
| # 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", root_build_dir) |
| |
| # 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/WebKit/Source/build/win/Precompile.cpp" |
| |
| # Force include the header. |
| cflags = [ "/FI$precompiled_header" ] |
| } else if (is_mac) { |
| precompiled_source = "//third_party/WebKit/Source/build/mac/Prefix.h" |
| } |
| } |
| } |
| |
| # config ----------------------------------------------------------------------- |
| |
| config("config") { |
| include_dirs = [ |
| ".", |
| "..", |
| "$root_gen_dir/blink", |
| "$root_gen_dir/third_party/WebKit", |
| ] |
| |
| 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. |
| "/wd4996", # Deprecated function call. |
| ] |
| } |
| |
| if (is_win) { |
| if (is_component_build) { |
| defines += [ "USING_V8_SHARED" ] |
| } |
| } |
| |
| if (is_clang && blink_gc_plugin && clang_use_chrome_plugins) { |
| # On Windows, the plugin is built directly into clang, so there's |
| # no need to load it dynamically. |
| if (host_os != "win") { |
| _blink_gc_plugin_dll_extension = "so" |
| if (host_os == "mac") { |
| _blink_gc_plugin_dll_extension = "dylib" |
| } |
| cflags += [ |
| "-Xclang", |
| "-load", |
| "-Xclang", |
| rebase_path( |
| "${clang_base_path}/lib/libBlinkGCPlugin.${_blink_gc_plugin_dll_extension}", |
| root_build_dir), |
| ] |
| } |
| 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", |
| ] |
| } |
| if (blink_gc_plugin_option_warn_unneeded_finalizer) { |
| cflags += [ |
| "-Xclang", |
| "-plugin-arg-blink-gc-plugin", |
| "-Xclang", |
| "warn-unneeded-finalizer", |
| ] |
| } |
| } |
| } |
| |
| # The follow configs apply to all targets except for unit tests, which rely on |
| # static initializers. |
| config("non_test_config") { |
| cflags = [] |
| |
| if (is_clang) { |
| cflags += [ "-Wglobal-constructors" ] |
| } |
| } |