Index: src/untrusted/irt/nacl.scons |
=================================================================== |
--- src/untrusted/irt/nacl.scons (revision 9585) |
+++ src/untrusted/irt/nacl.scons (working copy) |
@@ -3,6 +3,7 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
+import os |
Import('env') |
@@ -11,7 +12,11 @@ |
raise UserError('src/untrusted/irt/nacl.scons in the wrong environment?') |
blob_env = env.Clone() |
-blob_env.Append(LINKFLAGS='-Wl,--section-start,.rodata=${IRT_BLOB_DATA_START}') |
+blob_env.Append(LINKFLAGS='-Wl,--section-start,.rodata=${IRT_BLOB_DATA_START}', |
+ # TODO(robertm): This define should be removed once |
+ # the IRT shim build has migrated to the Chrome tree. |
+ CPPDEFINES=['ENABLE_NACL_IRT_PPAPIHOOK_SHIMMED']) |
+ |
# 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. |
@@ -112,9 +117,34 @@ |
'm', |
] |
+# We may want to move this into ppruntime in the future to limit |
+# visibility to ppapi/generators |
+def GetPNaClShimSource(env): |
+ if not env.Bit('target_x86_64'): |
+ return 'shim_dummy.c' |
+ |
+ # Generate a 'pnacl_shim.c' |
+ # API code |
+ api_glob = env.Glob('${SOURCE_ROOT}/ppapi/api/*.idl') |
+ api_dev_glob = env.Glob('${SOURCE_ROOT}/ppapi/api/dev/*.idl') |
+ all_api = [f.abspath for f in api_glob + api_dev_glob] |
+ # Python code |
+ generators_glob = env.Glob('${SOURCE_ROOT}/ppapi/generators/*.py') |
+ return env.Command( |
+ 'pnacl_irt_shim.c', |
+ (api_glob + api_dev_glob + generators_glob), |
+ ('${PYTHON} ' + |
+ '${SOURCE_ROOT}/ppapi/generators/generator.py ' + |
+ '--srcroot=' + os.path.join('${SOURCE_ROOT}', 'ppapi', 'api') + ' ' + |
+ '--wnone --pnacl --pnaclshim=${TARGETS} ' + ' '.join(all_api))) |
+ |
+irt_shim_obj = blob_env.ComponentObject(GetPNaClShimSource(blob_env)) |
+ |
+ |
def LinkIrt(output, files, libs): |
return blob_env.ComponentProgram(output, |
- [irt_entry_obj] + irt_support_objs + files, |
+ [irt_entry_obj, irt_shim_obj] + |
+ irt_support_objs + files, |
EXTRA_LIBS=libs + irt_libs) |
irt_core_library = LinkIrt('irt_core', irt_nonbrowser, []) |