# 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 || !is_win) { cflags += [ "-Wno-unused-variable", ] } else { cflags += [ "/wd4101", "/wd4805", ] } if (is_clang) { cflags += [ "-Wconversion", "-Wno-float-conversion", "-Wno-sign-conversion", "-Wno-implicit-float-conversion", "-Wno-implicit-int-conversion", "-Wno-unused-variable", ] } } # 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 && 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", "-Xclang", "-plugin-arg-blink-gc-plugin", "-Xclang", "fix-bugs-of-is-considered-abstract", ] # 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") { cflags = [] if (is_clang) { cflags += [ "-Wglobal-constructors" ] } }