mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-12-01 01:36:09 +03:00
200 lines
5.6 KiB
Plaintext
200 lines
5.6 KiB
Plaintext
# 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("//build/config/chrome_build.gni")
|
|
import("//build/config/features.gni")
|
|
import("//ppapi/buildflags/buildflags.gni")
|
|
|
|
# Implements "content_main" given the defines and visibility. On Windows this
|
|
# is compiled with a different define for browser and child, but all code needs
|
|
# to be shared.
|
|
template("implement_content_app") {
|
|
runner_target_name = "content_main_runner_" + target_name
|
|
main_target_name = target_name
|
|
|
|
extra_configs = [
|
|
"//build/config/compiler:wexit_time_destructors",
|
|
"//content:content_implementation",
|
|
"//tools/v8_context_snapshot:use_v8_context_snapshot",
|
|
"//v8:external_startup_data",
|
|
]
|
|
|
|
content_app_deps = [
|
|
"//base",
|
|
"//base:i18n",
|
|
"//components/tracing:startup_tracing",
|
|
"//content:export",
|
|
"//content:sandbox_helper_win",
|
|
"//content/public/common:common_sources",
|
|
"//content/public/common:service_names",
|
|
"//crypto",
|
|
"//services/service_manager/embedder",
|
|
"//services/service_manager/public/mojom",
|
|
"//services/service_manager/runner/common",
|
|
"//mojo/edk",
|
|
"//ppapi/buildflags",
|
|
"//ui/base",
|
|
"//ui/gfx",
|
|
"//ui/gfx/geometry",
|
|
]
|
|
|
|
if (is_win) {
|
|
content_app_deps += [ "//sandbox" ]
|
|
} else if (is_android) {
|
|
# Android doesn't use the browser/child split and in the component build
|
|
# all symbols are exported from the .so, so the Android-specific files
|
|
# can include headers from both places. Many of these are required for
|
|
# JNI registration.
|
|
content_app_deps += [
|
|
"//content/browser",
|
|
"//content/child",
|
|
"//content/public/android:jni",
|
|
"//device/bluetooth",
|
|
"//device/gamepad",
|
|
"//device/geolocation",
|
|
"//device/usb",
|
|
"//gpu",
|
|
"//media",
|
|
"//media/capture",
|
|
"//media/midi",
|
|
"//net",
|
|
"//skia",
|
|
"//third_party/android_tools:cpu_features",
|
|
"//ui/android",
|
|
"//ui/events",
|
|
"//ui/shell_dialogs",
|
|
]
|
|
}
|
|
|
|
if (!is_multi_dll_chrome && enable_plugins) {
|
|
content_app_deps += [ "//content/ppapi_plugin:ppapi_plugin_sources" ]
|
|
}
|
|
|
|
# Compile content_main_runner_impl.[h, cc] in a separate target to exempt from
|
|
# GN header checking without exempting any other source file. These files
|
|
# includes headers of all process types and varies significantly per platform
|
|
# in between browser and child. Otherwise it would require many "nogncheck"
|
|
# annotations that would both be useless and add noise.
|
|
#
|
|
# This will generate :content_main_runner_both, :content_main_runner_browser,
|
|
# and :content_main_runner_child.
|
|
source_set(runner_target_name) {
|
|
visibility = [ ":$main_target_name" ]
|
|
check_includes = false
|
|
|
|
sources = [
|
|
"content_main_runner_impl.cc",
|
|
"content_main_runner_impl.h",
|
|
]
|
|
|
|
configs += extra_configs
|
|
deps = content_app_deps
|
|
if (defined(invoker.deps)) {
|
|
deps += invoker.deps
|
|
}
|
|
|
|
forward_variables_from(invoker, [ "defines" ])
|
|
}
|
|
|
|
source_set(main_target_name) {
|
|
sources = [
|
|
"content_service_manager_main_delegate.cc",
|
|
"content_service_manager_main_delegate.h",
|
|
"mojo/mojo_init.cc",
|
|
"mojo/mojo_init.h",
|
|
]
|
|
|
|
configs += extra_configs
|
|
deps = content_app_deps + [
|
|
":$runner_target_name",
|
|
"//ipc",
|
|
"//services/service_manager/embedder",
|
|
]
|
|
forward_variables_from(invoker,
|
|
[
|
|
"defines",
|
|
"visibility",
|
|
])
|
|
|
|
if (is_android) {
|
|
sources += [
|
|
"android/content_child_process_service_delegate.cc",
|
|
"android/content_jni_onload.cc",
|
|
"android/content_main.cc",
|
|
"android/library_loader_hooks.cc",
|
|
"android/library_loader_hooks.h",
|
|
]
|
|
deps += [
|
|
"//mojo/android:libsystem_java",
|
|
"//ui/gl",
|
|
]
|
|
} else {
|
|
sources += [ "content_main.cc" ]
|
|
}
|
|
}
|
|
}
|
|
|
|
group("content_app_browser_deps") {
|
|
deps = [
|
|
"//content/browser",
|
|
"//content/public/browser:browser_sources",
|
|
]
|
|
}
|
|
|
|
group("content_app_child_deps") {
|
|
deps = [
|
|
"//content/public/gpu:gpu_sources",
|
|
"//content/public/renderer:renderer_sources",
|
|
"//content/public/utility:utility_sources",
|
|
]
|
|
}
|
|
|
|
# This includes the app sources for both the browser and child processes.
|
|
implement_content_app("both") {
|
|
# Only the public target should depend on this. All other targets (even
|
|
# internal content ones) should depend on the public one.
|
|
visibility = [
|
|
":both_for_content_tests", # See top of //content/BUILD.gn for why.
|
|
"//content/public/app:*",
|
|
]
|
|
deps = [
|
|
":content_app_browser_deps",
|
|
":content_app_child_deps",
|
|
"//content/gpu:gpu_sources",
|
|
"//content/renderer",
|
|
"//content/utility",
|
|
]
|
|
}
|
|
|
|
# See comment at the top of //content/BUILD.gn for how this works.
|
|
group("both_for_content_tests") {
|
|
visibility = [ "//content/test/*" ]
|
|
if (!is_component_build) {
|
|
public_deps = [
|
|
":both",
|
|
]
|
|
}
|
|
}
|
|
|
|
if (is_multi_dll_chrome) {
|
|
# It doesn't make sense to do the browser/child dll split in component mode.
|
|
assert(!is_component_build)
|
|
|
|
implement_content_app("browser") {
|
|
visibility = [ "//content/public/app:browser" ]
|
|
defines = [ "CHROME_MULTIPLE_DLL_BROWSER" ]
|
|
deps = [
|
|
":content_app_browser_deps",
|
|
]
|
|
}
|
|
|
|
implement_content_app("child") {
|
|
visibility = [ "//content/public/app:child" ]
|
|
defines = [ "CHROME_MULTIPLE_DLL_CHILD" ]
|
|
deps = [
|
|
":content_app_child_deps",
|
|
]
|
|
}
|
|
}
|