| # Copyright 2016 The Chromium Embedded Framework 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("//build/buildflag_header.gni") |
| import("//cef/libcef/features/features.gni") |
| |
| # This file is in a separate directory so all targets in the build can refer to |
| # the buildflag header to get the necessary preprocessor defines without |
| # bringing in any CEF targets. Other targets can depend on this target |
| # regardless of whether CEF is being built. Set the `enable_cef=false` GN arg to |
| # disable the CEF changes when building Chrome. |
| # |
| # Example usage: |
| # |
| # 1. An existing GN configuration file at path/to/foo/BUILD.gn: |
| # |
| # # Import the `enable_cef` arg. |
| # import("//cef/libcef/features/features.gni") |
| # ... |
| # |
| # # An existing target that is modified for CEF. |
| # # The target type might instead be `component`, `source_set`, etc. |
| # static_library("foo") { |
| # sources = [ ... ] |
| # |
| # deps = [ |
| # # Always include the CEF features. |
| # "//cef/libcef/features", |
| # ... |
| # ] |
| # |
| # if (enable_cef) { |
| # # Actions to perform when the CEF build is enabled. |
| # |
| # # Optionally include CEF source files directly in this target. This |
| # # approach is required for targets that are either directly or |
| # # indirectly included in a `component` target (otherwise |
| # # `is_component_build=true` builds will fail). Keep in mind that these |
| # # files are part of this target instead of the `libcef_static` target |
| # # and therefore subject to any target-specific configuration settings |
| # # such as include paths, defines, compiler flags, etc. |
| # sources += [ |
| # "//cef/libcef/browser/foo_helper.cc", |
| # "//cef/libcef/browser/foo_helper.h", |
| # ] |
| # |
| # # Always include the CEF configuration. |
| # configs += [ "//cef/libcef/features:config" ] |
| # } |
| # ... |
| # } |
| # |
| # 2. An existing C++ source file at path/to/foo/foo.cc: |
| # |
| # // Include the `BUILDFLAG(ENABLE_CEF)` definition. |
| # #include "cef/libcef/features/features.h" |
| # ... |
| # |
| # #if BUILDFLAG(ENABLE_CEF) |
| # // CEF headers here... |
| # #include "cef/libcef/browser/foo_helper.h" |
| # #else |
| # // Chrome headers here... |
| # #endif |
| # |
| # // An existing function that is modified for CEF. |
| # void DoFoo() { |
| # #if BUILDFLAG(ENABLE_CEF) |
| # // CEF implementation here... |
| # cef_foo_helper::DoFoo(); |
| # #else |
| # // Chrome implementation here... |
| # #endif // !BUILDFLAG(ENABLE_CEF) |
| # } |
| # ... |
| # |
| |
| buildflag_header("features") { |
| header = "features.h" |
| |
| flags = [ |
| "ENABLE_CEF=$enable_cef", |
| "IS_CEF_SANDBOX_BUILD=$is_cef_sandbox_build", |
| ] |
| } |
| |
| # Configuration for all targets that include CEF source code library-side. |
| config("config") { |
| # CEF sources use includes relative to the CEF root directory. |
| include_dirs = [ "//cef" ] |
| defines = [ |
| "BUILDING_CEF_SHARED", |
| "USING_CHROMIUM_INCLUDES", |
| ] |
| } |