blob: f44fa761345130d640fe7e60af2627c5d25ad63f [file] [log] [blame]
# 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.
{
'variables': {
'chromium_code': 1,
},
'includes': [
'../build/common_untrusted.gypi',
],
'conditions': [
['disable_nacl==0 and disable_nacl_untrusted==0', {
'targets': [
{
# nacl_helper_nonsfi is similar to nacl_helper (built in nacl.gyp)
# but for the NaCl plugin in Non-SFI mode.
# This binary is built using the PNaCl toolchain, but it is native
# linux binary and will run on Linux directly.
# Most library code can be shared with the one for untrusted build
# (i.e. the one for irt.nexe built by the NaCl/PNaCl toolchain), but
# as nacl_helper_nonsfi runs on Linux, there are some differences,
# such as MessageLoopForIO (which is based on libevent in Non-SFI
# mode) or ipc_channel implementation.
# Because of the toolchain, in both builds, OS_NACL macro (derived
# from __native_client__ macro) is defined. Code can test whether
# __native_client_nonsfi__ is #defined in order to determine
# whether it is being compiled for SFI mode or Non-SFI mode.
#
# Currently, nacl_helper_nonsfi is under development and the binary
# does nothing (i.e. it has only empty main(), now).
# TODO(crbug.com/358465): Implement it then switch nacl_helper in
# Non-SFI mode to nacl_helper_nonsfi.
'target_name': 'nacl_helper_nonsfi',
'type': 'none',
'variables': {
'nacl_untrusted_build': 1,
'nexe_target': 'nacl_helper_nonsfi',
# Rename the output binary file to nacl_helper_nonsfi and put it
# directly under out/{Debug,Release}/.
'out_newlib32_nonsfi': '<(PRODUCT_DIR)/nacl_helper_nonsfi',
'out_newlib_arm_nonsfi': '<(PRODUCT_DIR)/nacl_helper_nonsfi',
'build_glibc': 0,
'build_newlib': 0,
'build_irt': 0,
'build_pnacl_newlib': 0,
'build_nonsfi_helper': 1,
'sources': [
'nacl/common/nacl_messages.cc',
'nacl/common/nacl_switches.cc',
'nacl/common/nacl_types.cc',
'nacl/common/nacl_types_param_traits.cc',
'nacl/loader/nacl_helper_linux.cc',
'nacl/loader/nacl_trusted_listener.cc',
'nacl/loader/nonsfi/nonsfi_listener.cc',
'nacl/loader/nonsfi/nonsfi_main.cc',
],
'link_flags': [
'-lbase_nacl_nonsfi',
'-lcommand_buffer_client_nacl',
'-lcommand_buffer_common_nacl',
'-lcontent_common_nacl_nonsfi',
'-lelf_loader',
'-levent_nacl_nonsfi',
'-lgio',
'-lgles2_cmd_helper_nacl',
'-lgles2_implementation_nacl',
'-lgles2_utils_nacl',
'-lgpu_ipc_nacl',
'-lipc_nacl_nonsfi',
'-lnacl_helper_nonsfi_sandbox',
'-lplatform',
'-lppapi_ipc_nacl',
'-lppapi_proxy_nacl',
'-lppapi_shared_nacl',
'-lsandbox_linux_nacl_nonsfi',
'-lshared_memory_support_nacl',
'-ltracing_nacl',
],
'conditions': [
['target_arch=="ia32" or target_arch=="x64"', {
'extra_deps_newlib32_nonsfi': [
'>(tc_lib_dir_nonsfi_helper32)/libbase_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper32)/libcommand_buffer_client_nacl.a',
'>(tc_lib_dir_nonsfi_helper32)/libcommand_buffer_common_nacl.a',
'>(tc_lib_dir_nonsfi_helper32)/libcontent_common_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper32)/libelf_loader.a',
'>(tc_lib_dir_nonsfi_helper32)/libevent_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper32)/libgio.a',
'>(tc_lib_dir_nonsfi_helper32)/libgles2_cmd_helper_nacl.a',
'>(tc_lib_dir_nonsfi_helper32)/libgles2_implementation_nacl.a',
'>(tc_lib_dir_nonsfi_helper32)/libgles2_utils_nacl.a',
'>(tc_lib_dir_nonsfi_helper32)/libgpu_ipc_nacl.a',
'>(tc_lib_dir_nonsfi_helper32)/libipc_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper32)/libnacl_helper_nonsfi_sandbox.a',
'>(tc_lib_dir_nonsfi_helper32)/libplatform.a',
'>(tc_lib_dir_nonsfi_helper32)/libppapi_ipc_nacl.a',
'>(tc_lib_dir_nonsfi_helper32)/libppapi_proxy_nacl.a',
'>(tc_lib_dir_nonsfi_helper32)/libppapi_shared_nacl.a',
'>(tc_lib_dir_nonsfi_helper32)/libsandbox_linux_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper32)/libshared_memory_support_nacl.a',
'>(tc_lib_dir_nonsfi_helper32)/libtracing_nacl.a',
],
}],
['target_arch=="arm"', {
'extra_deps_newlib_arm_nonsfi': [
'>(tc_lib_dir_nonsfi_helper_arm)/libbase_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libcommand_buffer_client_nacl.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libcommand_buffer_common_nacl.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libcontent_common_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libelf_loader.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libevent_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libgio.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libgles2_cmd_helper_nacl.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libgles2_implementation_nacl.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libgles2_utils_nacl.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libgpu_ipc_nacl.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libipc_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libnacl_helper_nonsfi_sandbox.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libplatform.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libppapi_ipc_nacl.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libppapi_proxy_nacl.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libppapi_shared_nacl.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libsandbox_linux_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libshared_memory_support_nacl.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libtracing_nacl.a',
],
}],
],
},
'dependencies': [
'../base/base_nacl.gyp:base_nacl_nonsfi',
'../content/content_nacl_nonsfi.gyp:content_common_nacl_nonsfi',
'../ipc/ipc_nacl.gyp:ipc_nacl_nonsfi',
'../native_client/src/nonsfi/irt/irt.gyp:nacl_sys_private',
'../native_client/src/nonsfi/loader/loader.gyp:elf_loader',
'../native_client/src/untrusted/nacl/nacl.gyp:nacl_lib_newlib',
'../ppapi/ppapi_proxy_nacl.gyp:ppapi_proxy_nacl',
'../sandbox/linux/sandbox_linux_nacl_nonsfi.gyp:sandbox_linux_nacl_nonsfi',
'nacl_helper_nonsfi_sandbox',
],
},
{
'target_name': 'nacl_helper_nonsfi_sandbox',
'type': 'none',
'variables': {
'nacl_untrusted_build': 1,
'nlib_target': 'libnacl_helper_nonsfi_sandbox.a',
'build_glibc': 0,
'build_newlib': 0,
'build_irt': 0,
'build_pnacl_newlib': 0,
'build_nonsfi_helper': 1,
'sources': [
'nacl/loader/nonsfi/nonsfi_sandbox.cc',
'nacl/loader/sandbox_linux/nacl_sandbox_linux.cc',
],
},
'dependencies': [
'../base/base_nacl.gyp:base_nacl_nonsfi',
'../content/content_nacl_nonsfi.gyp:content_common_nacl_nonsfi',
'../sandbox/linux/sandbox_linux_nacl_nonsfi.gyp:sandbox_linux_nacl_nonsfi',
],
},
],
}],
['disable_nacl==0 and disable_nacl_untrusted==0 and enable_nacl_nonsfi_test==1', {
'targets': [
{
'target_name': 'nacl_helper_nonsfi_unittests_main',
'type': 'none',
'variables': {
'nacl_untrusted_build': 1,
'nexe_target': 'nacl_helper_nonsfi_unittests_main',
# Rename the output binary file to
# nacl_helper_nonsfi_unittests_main and put it directly under
# out/{Debug,Release}/, so that this is in the standard location,
# for running on the buildbots.
'out_newlib32_nonsfi': '<(PRODUCT_DIR)/nacl_helper_nonsfi_unittests_main',
'out_newlib_arm_nonsfi': '<(PRODUCT_DIR)/nacl_helper_nonsfi_unittests_main',
'build_glibc': 0,
'build_newlib': 0,
'build_irt': 0,
'build_pnacl_newlib': 0,
'build_nonsfi_helper': 1,
'sources': [
'nacl/loader/nonsfi/nonsfi_sandbox_sigsys_unittest.cc',
'nacl/loader/nonsfi/nonsfi_sandbox_unittest.cc',
'nacl/loader/nonsfi/run_all_unittests.cc',
],
'link_flags': [
'-lbase_nacl_nonsfi',
'-lcontent_common_nacl_nonsfi',
'-levent_nacl_nonsfi',
'-lgio',
'-lgtest_nacl',
'-lnacl_helper_nonsfi_sandbox',
'-lplatform',
'-lsandbox_linux_nacl_nonsfi',
'-lsandbox_linux_test_utils_nacl_nonsfi',
'-ltest_support_base_nacl_nonsfi',
],
'conditions': [
['target_arch=="ia32" or target_arch=="x64"', {
'extra_deps_newlib32_nonsfi': [
'>(tc_lib_dir_nonsfi_helper32)/libbase_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper32)/libcontent_common_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper32)/libevent_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper32)/libgio.a',
'>(tc_lib_dir_nonsfi_helper32)/libgtest_nacl.a',
'>(tc_lib_dir_nonsfi_helper32)/libnacl_helper_nonsfi_sandbox.a',
'>(tc_lib_dir_nonsfi_helper32)/libplatform.a',
'>(tc_lib_dir_nonsfi_helper32)/libsandbox_linux_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper32)/libsandbox_linux_test_utils_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper32)/libtest_support_base_nacl_nonsfi.a',
],
}],
['target_arch=="arm"', {
'extra_deps_newlib_arm_nonsfi': [
'>(tc_lib_dir_nonsfi_helper_arm)/libbase_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libcontent_common_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libevent_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libgio.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libgtest_nacl.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libnacl_helper_nonsfi_sandbox.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libplatform.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libsandbox_linux_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libsandbox_linux_test_utils_nacl_nonsfi.a',
'>(tc_lib_dir_nonsfi_helper_arm)/libtest_support_base_nacl_nonsfi.a',
],
}],
],
},
'dependencies': [
'../base/base_nacl.gyp:base_nacl_nonsfi',
'../base/base_nacl.gyp:test_support_base_nacl_nonsfi',
'../content/content_nacl_nonsfi.gyp:content_common_nacl_nonsfi',
'../native_client/src/nonsfi/irt/irt.gyp:nacl_sys_private',
'../native_client/src/untrusted/nacl/nacl.gyp:nacl_lib_newlib',
'../sandbox/linux/sandbox_linux_nacl_nonsfi.gyp:sandbox_linux_nacl_nonsfi',
'../sandbox/linux/sandbox_linux_nacl_nonsfi.gyp:sandbox_linux_test_utils_nacl_nonsfi',
'../testing/gtest_nacl.gyp:gtest_nacl',
'nacl_helper_nonsfi_sandbox',
],
},
],
}],
['disable_nacl==0 and disable_nacl_untrusted==0 and enable_nacl_nonsfi_test==1 and test_isolation_mode!="noop"', {
'targets': [
{
'target_name': 'nacl_helper_nonsfi_unittests_run',
'type': 'none',
'dependencies': [
'nacl.gyp:nacl_helper_nonsfi_unittests',
'nacl_helper_nonsfi_unittests_main',
],
'includes': [
'../build/isolate.gypi',
],
'sources': [
'nacl_helper_nonsfi_unittests.isolate',
],
},
],
}],
],
}