blob: 01f59751fac98f1f3ac16c8ead708d945540d004 [file] [log] [blame]
# 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",
]
}