diff options
author | bbudge@chromium.org <bbudge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-16 00:35:01 +0000 |
---|---|---|
committer | bbudge@chromium.org <bbudge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-16 00:35:01 +0000 |
commit | 21f977570e42b26a9c50da35bf8d12e44645371a (patch) | |
tree | 79d2c7ceb5dd24a3ddef8a02590a2786e6768b0e /ppapi/native_client/native_client.gyp | |
parent | 8df26d4b2c07009cca88c4082bee5a4acff16a77 (diff) | |
download | chromium_src-21f977570e42b26a9c50da35bf8d12e44645371a.zip chromium_src-21f977570e42b26a9c50da35bf8d12e44645371a.tar.gz chromium_src-21f977570e42b26a9c50da35bf8d12e44645371a.tar.bz2 |
Add untrusted NaCl build for PPAPI proxy.
This patch refactors ppapi_shared.gypi and ppapi_proxy.gypi into proper includes, adds ppapi_shared_untrusted and ppapi_proxy_untrusted .gyp files, and integrates them into the nacl_irt build (ppapi/native_client/native_client.gyp). In order to build without link errors, it includes our plugin side initialization of PluginDispatcher, and a PpapiPluginMain definition. When the 'build_ppapi_ipc_proxy_untrusted' gyp flag is set to '1', this will build a working NaCl IRT using the Chrome IPC proxy.
BUG=116317
TEST=compiles, runs HelloWorld and GetURL SDK examples.
Review URL: https://chromiumcodereview.appspot.com/10565015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@142540 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/native_client/native_client.gyp')
-rw-r--r-- | ppapi/native_client/native_client.gyp | 163 |
1 files changed, 162 insertions, 1 deletions
diff --git a/ppapi/native_client/native_client.gyp b/ppapi/native_client/native_client.gyp index c34d6b5..c68bf0d 100644 --- a/ppapi/native_client/native_client.gyp +++ b/ppapi/native_client/native_client.gyp @@ -4,7 +4,7 @@ { 'includes': [ - '../../native_client/build/common.gypi', + '../../native_client/build/untrusted.gypi', ], 'conditions': [ ['disable_nacl==0 and disable_nacl_untrusted==0', { @@ -53,6 +53,12 @@ }, ], }, + ], + }], + # TODO(bbudge) Remove the build_ppapi_ipc_proxy_untrusted flag, factor out common + # properties from both IRT flavors, and build them side by side. + ['disable_nacl==0 and disable_nacl_untrusted==0 and build_ppapi_ipc_proxy_untrusted==0', { + 'targets': [ { 'target_name': 'nacl_irt', 'type': 'none', @@ -179,5 +185,160 @@ }, ], }], + ['disable_nacl==0 and disable_nacl_untrusted==0 and build_ppapi_ipc_proxy_untrusted==1', { + 'targets': [ + { + 'target_name': 'nacl_irt', + 'type': 'none', + 'variables': { + 'nexe_target': 'nacl_irt', + # These out_* fields override the default filenames, which + # include a "_newlib" suffix. + 'out_newlib64': '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe', + 'out_newlib32': '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe', + 'out_newlib_arm': '<(PRODUCT_DIR)/nacl_irt_arm.nexe', + 'build_glibc': 0, + 'build_newlib': 1, + 'include_dirs': [ + 'lib/gl/include', + '..', + ], + 'link_flags': [ + '-Wl,--start-group', + '-lirt_browser', + '-lppapi_proxy_untrusted', + '-lppapi_shared_untrusted', + '-lipc_untrusted', + '-lbase_untrusted', + '-lsrpc', + '-limc_syscalls', + '-lplatform', + '-lgio', + '-Wl,--end-group', + '-lm', + ], + # See http://code.google.com/p/nativeclient/issues/detail?id=2691. + # The PNaCl linker (gold) does not implement the "-Ttext-segment" + # option. However, with the linker for x86, the "-Ttext" option + # does not affect the executable's base address. + # TODO(olonho): simplify flags handling and avoid duplication + # with NaCl logic. + 'conditions': [ + ['target_arch!="arm"', + { + 'link_flags': [ + '-Wl,--section-start,.rodata=<(NACL_IRT_DATA_START)', + '-Wl,-Ttext-segment=<(NACL_IRT_TEXT_START)', + ] + }, { # target_arch == "arm" + 'link_flags': [ + '-Wl,--section-start,.rodata=<(NACL_IRT_DATA_START)', + '-Wl,-Ttext=<(NACL_IRT_TEXT_START)', + '--pnacl-allow-native', + '-arch', 'arm', + '-Wt,-mtls-use-call', + ], + }, + ], + ], + 'sources': [ + ], + 'extra_args': [ + '--strip-debug', + ], + # TODO(bradchen): get rid of extra_deps64 and extra_deps32 + # once native_client/build/untrusted.gypi no longer needs them. + 'extra_deps64': [ + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libppapi_proxy_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libppapi_shared_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libipc_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libbase_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libirt_browser.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libsrpc.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libplatform.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libimc_syscalls.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libgio.a', + ], + 'extra_deps32': [ + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libppapi_proxy_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libppapi_shared_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libipc_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libbase_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libirt_browser.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libsrpc.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libplatform.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libimc_syscalls.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libgio.a', + ], + 'extra_deps_newlib64': [ + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libppapi_proxy_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libppapi_shared_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libipc_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libbase_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libirt_browser.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libsrpc.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libplatform.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libimc_syscalls.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib64/libgio.a', + ], + 'extra_deps_newlib32': [ + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libppapi_proxy_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libppapi_shared_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libipc_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libbase_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libirt_browser.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libsrpc.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libplatform.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libimc_syscalls.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/lib32/libgio.a', + ], + 'extra_deps_glibc64': [ + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib64/libppapi_proxy_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib64/libppapi_shared_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib64/libipc_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib64/libbase_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib64/libirt_browser.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib64/libsrpc.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib64/libplatform.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib64/libimc_syscalls.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib64/libgio.a', + ], + 'extra_deps_glibc32': [ + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib32/libppapi_proxy_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib32/libppapi_shared_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib32/libipc_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib32/libbase_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib32/libirt_browser.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib32/libsrpc.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib32/libplatform.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib32/libimc_syscalls.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_glibc/lib32/libgio.a', + ], + 'extra_deps_arm': [ + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/libarm/libppapi_proxy_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/libarm/libppapi_shared_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/libarm/libipc_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/libarm/libbase_untrusted.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/libarm/libirt_browser.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/libarm/libsrpc.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/libarm/libplatform.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/libarm/libimc_syscalls.a', + '<(SHARED_INTERMEDIATE_DIR)/tc_newlib/libarm/libgio.a', + ], + }, + 'dependencies': [ + '../ppapi_proxy_untrusted.gyp:ppapi_proxy_untrusted', + '../ppapi_shared_untrusted.gyp:ppapi_shared_untrusted', + '../../ipc/ipc_untrusted.gyp:ipc_untrusted', + '../../base/base_untrusted.gyp:base_untrusted', + '../../native_client/src/untrusted/irt/irt.gyp:irt_browser_lib', + '../../native_client/src/shared/srpc/srpc.gyp:srpc_lib', + '../../native_client/src/shared/platform/platform.gyp:platform_lib', + '../../native_client/src/untrusted/nacl/nacl.gyp:imc_syscalls_lib', + '../../native_client/src/shared/gio/gio.gyp:gio_lib', + ], + }, + ], + }], ], } |