diff options
Diffstat (limited to 'libcef/features/BUILD.gn')
-rw-r--r-- | libcef/features/BUILD.gn | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/libcef/features/BUILD.gn b/libcef/features/BUILD.gn new file mode 100644 index 00000000..79684293 --- /dev/null +++ b/libcef/features/BUILD.gn @@ -0,0 +1,101 @@ +# 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", + + # CEF generates some header files that also need to be discoverable. + "$root_build_dir/includes", + ] + defines = [ + "BUILDING_CEF_SHARED", + "USING_CHROMIUM_INCLUDES", + ] +} |