123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- # Copyright 2015 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/c++/c++.gni")
- import("//build/config/chromeos/ui_mode.gni")
- import("//build/config/compiler/compiler.gni")
- import("//build/config/nacl/config.gni")
- import("//components/nacl/features.gni")
- import("//components/nacl/toolchain.gni")
- import("//testing/test.gni")
- assert(enable_nacl)
- if (current_cpu != "arm64") {
- # This is separate so it can be used by ../broker:nacl64.
- source_set("minimal") {
- sources = [
- "nacl_ipc_adapter.cc",
- "nacl_ipc_adapter.h",
- "nacl_listener.cc",
- "nacl_listener.h",
- "nacl_main.cc",
- "nacl_main_platform_delegate.h",
- "nacl_trusted_listener.cc",
- "nacl_trusted_listener.h",
- "nacl_validation_db.h",
- "nacl_validation_query.cc",
- "nacl_validation_query.h",
- ]
- deps = [
- ":minimal_content_dummy",
- "//base",
- "//components/nacl/common:minimal",
- "//components/nacl/common:mojo_bindings",
- "//content/public/common:main_function_params",
- "//crypto",
- "//ipc",
- "//mojo/core/embedder",
- "//native_client/src/trusted/service_runtime:sel_main_chrome",
- "//ppapi/c",
- "//ppapi/proxy:ipc",
- "//sandbox",
- "//services/service_manager/public/cpp",
- ]
- if (is_win) {
- sources += [ "nacl_main_platform_delegate_win.cc" ]
- }
- if (is_mac) {
- sources += [ "nacl_main_platform_delegate_mac.mm" ]
- }
- if (is_linux || is_chromeos) {
- sources += [ "nacl_main_platform_delegate_linux.cc" ]
- }
- }
- # This exists just to make 'gn check' happy with :minimal and
- # :nacl_helper_win_64 (below). They can't depend on //content/public/common
- # or anything like that, because that would bring in lots more than counts
- # as "minimal" (stuff that should not be in the nacl64.exe build).
- source_set("minimal_content_dummy") {
- check_includes = false
- sources = []
- if (is_win) {
- sources += [ "//content/public/common/sandbox_init_win.h" ]
- }
- if (is_linux || is_chromeos) {
- sources += [ "//content/public/common/zygote/sandbox_support_linux.h" ]
- }
- }
- source_set("loader") {
- public_deps = [ ":minimal" ]
- deps = [
- "//components/nacl/common",
- "//ppapi/shared_impl",
- "//services/service_manager/public/cpp",
- ]
- data_deps = [
- "//ppapi/native_client:irt",
- "//ppapi/native_client/src/untrusted/pnacl_support_extension",
- ]
- }
- test("nacl_loader_unittests") {
- sources = [
- "nacl_ipc_adapter_unittest.cc",
- "nacl_validation_query_unittest.cc",
- "run_all_unittests.cc",
- ]
- deps = [
- ":loader",
- "//base/test:test_support",
- "//ipc:test_support",
- "//ppapi/c",
- "//testing/gtest",
- ]
- }
- }
- if ((is_linux || is_chromeos) && current_cpu != "arm64") {
- executable("nacl_helper") {
- sources = [
- "nacl_helper_linux.cc",
- "nacl_helper_linux.h",
- ]
- deps = [
- ":loader",
- "//base",
- "//components/nacl/common:switches",
- "//components/nacl/loader/sandbox_linux",
- "//content/public/common:content_descriptors",
- "//content/public/common:main_function_params",
- "//content/public/common:sandbox_support_linux",
- "//crypto",
- "//ipc",
- "//mojo/core/embedder",
- "//sandbox/linux:sandbox_services",
- "//sandbox/policy",
- "//url/ipc:url_ipc",
- ]
- if (is_chromeos) {
- # NaCl is not working with compiler-rt in ChromeOS.
- # Force libgcc as a workaround. See https://crbug.com/761103
- ldflags = [
- "-rtlib=libgcc",
- "--unwindlib=libgcc",
- ]
- # nacl_helper needs to link with libgcc_s. We already have -lgcc_s in
- # the final link command line, but it was placed within "--as-needed"
- # with the result that the dependency gets dropped. Similarly, we need
- # to add this via "ldflags" and not "libs" because libraries added via
- # the latter are also placed within an "--as-needed"'.
- # See https://crbug.com/884017
- ldflags += [ "-lgcc_s" ]
- }
- # The only symbols that nacl_helper needs to export are those specified by
- # its direct dependencies, so -rdynamic would only serve to unnecessarily
- # increase the binary size.
- if (!export_libcxxabi_from_executables) {
- configs -= [ "//build/config/compiler:export_dynamic" ]
- }
- data_deps =
- [ "//native_client/src/trusted/service_runtime/linux:bootstrap" ]
- # In order to build ARM32 nacl_helper for ARM64 Chrome OS, we need to
- # minimize the dependencies on system libraries, including indirect
- # dependencies through other parts of Chrome (see
- # https://crbug.com/1339021).
- assert_no_deps = [
- "//content/public/common",
- "//media/audio",
- ]
- if (is_minimal_toolchain) {
- assert_no_deps += [ "//net" ]
- }
- }
- # For setting up nacl_helper.
- source_set("nacl_helper_integration") {
- public = [ "nacl_helper_linux.h" ]
- data_deps = [ ":nacl_helper" ]
- }
- }
- # In ARM64 Chrome, use the ARM32 versions of nacl_helper and
- # nacl_helper_bootstrap. Copy them from the build directory for the
- # ARM32 toolchain.
- if ((is_linux || is_chromeos) && current_cpu == "arm64") {
- copy("nacl_helper") {
- label = ":nacl_helper(//build/toolchain/linux:clang_arm)"
- out_dir = get_label_info(label, "root_out_dir")
- sources = [ "${out_dir}/nacl_helper" ]
- outputs = [ "${root_out_dir}/nacl_helper" ]
- deps = [ label ]
- data_deps = [
- ":nacl_helper_bootstrap",
- "//ppapi/native_client/src/untrusted/pnacl_support_extension",
- ]
- }
- copy("nacl_helper_bootstrap") {
- label = "//native_client/src/trusted/service_runtime/linux:bootstrap(//build/toolchain/linux:clang_arm)"
- out_dir = get_label_info(label, "root_out_dir")
- sources = [ "${out_dir}/nacl_helper_bootstrap" ]
- outputs = [ "${root_out_dir}/nacl_helper_bootstrap" ]
- deps = [ label ]
- }
- }
- if (is_win && target_cpu == "x86" && current_cpu == "x64") {
- source_set("nacl_helper_win_64") {
- sources = [
- "nacl_helper_win_64.cc",
- "nacl_helper_win_64.h",
- ]
- deps = [
- ":minimal",
- ":minimal_content_dummy",
- "//base",
- "//components/nacl/broker",
- "//components/nacl/common:switches",
- "//content/public/common:main_function_params",
- "//content/public/common:static_switches",
- "//mojo/core/embedder",
- "//sandbox",
- "//sandbox/policy",
- ]
- }
- }
|