summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DEPS2
-rwxr-xr-xbuild/scan_sources.py236
-rw-r--r--chrome/nacl.gypi82
-rw-r--r--ppapi/native_client/native_client.gyp59
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy.gyp94
-rw-r--r--ppapi/ppapi_tests.gypi76
6 files changed, 311 insertions, 238 deletions
diff --git a/DEPS b/DEPS
index 2476dd0..58d2ed9 100644
--- a/DEPS
+++ b/DEPS
@@ -8,7 +8,7 @@ vars = {
"webkit_revision": "99142",
"chromium_git": "http://git.chromium.org/git",
"swig_revision": "69281",
- "nacl_revision": "7085",
+ "nacl_revision": "6965",
# After changing nacl_revision, run 'glient sync' and check native_client/DEPS
# to update other nacl_*_revision's.
# TODO(brettw) We should use the "From" syntax to avoid hardcoding the
diff --git a/build/scan_sources.py b/build/scan_sources.py
new file mode 100755
index 0000000..60febef
--- /dev/null
+++ b/build/scan_sources.py
@@ -0,0 +1,236 @@
+#!/usr/bin/python
+# Copyright (c) 2011 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.
+
+from optparse import OptionParser
+import os
+import re
+import sys
+
+"""Header Scanner.
+
+This module will scan a set of input sources for include dependencies. Use
+the command-line switch -Ixxxx to add include paths. All filenames and paths
+are expected and returned with POSIX separators.
+"""
+
+
+debug = False
+
+
+def DebugPrint(txt):
+ if debug: print txt
+
+
+class PathConverter(object):
+ """PathConverter does path manipulates using Posix style pathnames.
+
+ Regardless of the native path type, all inputs and outputs to the path
+ functions are with POSIX style separators.
+ """
+ def ToNativePath(self, pathname):
+ return os.path.sep.join(pathname.split('/'))
+
+ def ToPosixPath(self, pathname):
+ return '/'.join(pathname.split(os.path.sep))
+
+ def exists(self, pathname):
+ ospath = self.ToNativePath(pathname)
+ return os.path.exists(ospath)
+
+ def getcwd(self):
+ return self.ToPosixPath(os.getcwd())
+
+ def isabs(self, pathname):
+ ospath = self.ToNativePath(pathname)
+ return os.path.isabs(ospath)
+
+ def isdir(self, pathname):
+ ospath = self.ToNativePath(pathname)
+ return os.path.isdir(ospath)
+
+ def open(self, pathname):
+ ospath = self.ToNativePath(pathname)
+ return open(ospath)
+
+ def realpath(self, pathname):
+ ospath = self.ToNativePath(pathname)
+ ospath = os.path.realpath(ospath)
+ return self.ToPosixPath(ospath)
+
+
+class Resolver(object):
+ """Resolver finds and generates relative paths for include files.
+
+ The Resolver object provides a mechanism to to find and convert a source or
+ include filename into a relative path based on provided search paths. All
+ paths use POSIX style separator.
+ """
+ def __init__(self, pathobj=PathConverter()):
+ self.search_dirs = []
+ self.pathobj = pathobj
+ self.cwd = self.pathobj.getcwd()
+ self.offs = len(self.cwd)
+
+ def AddOneDirectory(self, pathname):
+ """Add an include search path."""
+ pathname = self.pathobj.realpath(pathname)
+ DebugPrint('Adding DIR: %s' % pathname)
+ if pathname not in self.search_dirs:
+ if self.pathobj.isdir(pathname):
+ self.search_dirs.append(pathname)
+ else:
+ sys.stderr.write('Not a directory: %s\n' % pathname)
+ return False
+ return True
+
+ def AddDirectories(self, pathlist):
+ """Add list of space separated directories."""
+ failed = False
+ dirlist = ' '.join(pathlist)
+ for dirname in dirlist.split(' '):
+ if not self.AddOneDirectory(dirname):
+ failed = True
+ return not failed
+
+ def GetDirectories(self):
+ return self.search_dirs
+
+ def RealToRelative(self, filepath, basepath):
+ """Returns a relative path from an absolute basepath and filepath."""
+ path_parts = filepath.split('/')
+ base_parts = basepath.split('/')
+ while path_parts and base_parts and path_parts[0] == base_parts[0]:
+ path_parts = path_parts[1:]
+ base_parts = base_parts[1:]
+ rel_parts = ['..'] * len(base_parts) + path_parts
+ return '/'.join(rel_parts)
+
+ def FilenameToRelative(self, filepath):
+ """Returns a relative path from CWD to filepath."""
+ filepath = self.pathobj.realpath(filepath)
+ basepath = self.cwd
+ return self.RealToRelative(filepath, basepath)
+
+ def FindFile(self, filename):
+ """Search for <filename> across the search directories, if the path is not
+ absolute. Return the filepath relative to the CWD or None. """
+ if self.pathobj.isabs(filename):
+ if self.pathobj.exists(filename):
+ return self.FilenameToRelative(filename)
+ return None
+ for pathname in self.search_dirs:
+ fullname = '%s/%s' % (pathname, filename)
+ if self.pathobj.exists(fullname):
+ return self.FilenameToRelative(fullname)
+ return None
+
+
+def LoadFile(filename):
+ # Catch cases where the file does not exist
+ try:
+ fd = PathConverter().open(filename)
+ except IOError:
+ DebugPrint('Exception on file: %s' % filename)
+ return ''
+ # Go ahead and throw if you fail to read
+ return fd.read()
+
+
+class Scanner(object):
+ """Scanner searches for '#include' to find dependencies."""
+
+ def __init__(self, loader=None):
+ regex = r'\#[ \t]*include[ \t]*[<"]([^>^"]+)[>"]'
+ self.parser = re.compile(regex)
+ self.loader = loader
+ if not loader:
+ self.loader = LoadFile
+
+ def ScanData(self, data):
+ """Generate a list of includes from this text block."""
+ return self.parser.findall(data)
+
+ def ScanFile(self, filename):
+ """Generate a list of includes from this filename."""
+ includes = self.ScanData(self.loader(filename))
+ DebugPrint('Source %s contains:\n\t%s' % (filename, '\n\t'.join(includes)))
+ return includes
+
+
+class WorkQueue(object):
+ """WorkQueue contains the list of files to be scanned.
+
+ WorkQueue contains provides a queue of files to be processed. The scanner
+ will attempt to push new items into the queue, which will be ignored if the
+ item is already in the queue. If the item is new, it will be added to the
+ work list, which is drained by the scanner.
+ """
+ def __init__(self, resolver, scanner=Scanner()):
+ self.added_set = set()
+ self.todo_list = list()
+ self.scanner = scanner
+ self.resolver = resolver
+
+ def PushIfNew(self, filename):
+ """Add this dependency to the list of not already there."""
+ DebugPrint('Adding %s' % filename)
+ resolved_name = self.resolver.FindFile(filename)
+ if not resolved_name:
+ DebugPrint('Failed to resolve %s' % filename)
+ return
+ DebugPrint('Resolvd as %s' % resolved_name)
+ if resolved_name in self.added_set:
+ return
+ self.todo_list.append(resolved_name)
+ self.added_set.add(resolved_name)
+
+ def PopIfAvail(self):
+ """Fetch the next dependency to search."""
+ if not self.todo_list:
+ return None
+ return self.todo_list.pop()
+
+ def Run(self):
+ """Search through the available dependencies until the list becomes empty.
+ The list must be primed with one or more source files to search."""
+ scan_name = self.PopIfAvail()
+ while scan_name:
+ includes = self.scanner.ScanFile(scan_name)
+ for include_file in includes:
+ self.PushIfNew(include_file)
+ scan_name = self.PopIfAvail()
+ return sorted(self.added_set)
+
+
+def Main(argv):
+ global debug
+ parser = OptionParser()
+ parser.add_option('-I', dest='includes', action='append',
+ help='Set include path.')
+ parser.add_option('-D', dest='debug', action='store_true',
+ help='Enable debugging output.', default=False)
+ (options, files) = parser.parse_args(argv[1:])
+
+ if options.debug:
+ debug = Trueglobal_var_name,
+
+ resolver = Resolver()
+ if options.includes:
+ if not resolver.AddDirectories(options.includes):
+ return -1
+
+ workQ = WorkQueue(resolver)
+ for filename in files:
+ workQ.PushIfNew(filename)
+
+ sorted_list = workQ.Run()
+ for pathname in sorted_list:
+ sys.stderr.write(pathname + '\n')
+ return 0
+
+
+if __name__ == '__main__':
+ sys.exit(Main(sys.argv))
+
diff --git a/chrome/nacl.gypi b/chrome/nacl.gypi
index 025de62..0e717b8 100644
--- a/chrome/nacl.gypi
+++ b/chrome/nacl.gypi
@@ -3,9 +3,6 @@
# found in the LICENSE file.
{
- 'includes': [
- '../native_client/build/untrusted.gypi',
- ],
'target_defaults': {
'variables': {
'nacl_target': 0,
@@ -65,15 +62,16 @@
'type': 'static_library',
'variables': {
'nacl_target': 1,
- },
+ 'irt_build_cmd': [
+ 'python', 'build_nacl_irt.py', '--outdir', '<(PRODUCT_DIR)',
+ ],
+ 'irt_inputs_cmd':
+ 'python build_nacl_irt.py --inputs',
+ },
'dependencies': [
- # TODO(gregoryd): chrome_resources and chrome_strings could be
- # shared with the 64-bit target, but it does not work due to a gyp
- # issue
'chrome_resources',
'chrome_strings',
'common',
- '../ppapi/native_client/native_client.gyp:nacl_irt',
'../webkit/support/webkit_support.gyp:glue',
'../ppapi/native_client/src/trusted/plugin/plugin.gyp:ppGoogleNaClPluginChrome',
'../native_client/src/trusted/service_runtime/service_runtime.gyp:sel',
@@ -86,6 +84,74 @@
'<@(nacl_defines)',
],
},
+ 'conditions': [
+ ['OS=="win"', {
+ # Windows needs both the x86-32 and x86-64 IRT.
+ 'actions': [
+ {
+ 'action_name': 'nacl_irt',
+ 'message': 'Building NaCl IRT',
+ 'inputs': [
+ '<!@(<(irt_inputs_cmd) --platform=x86-32 --platform=x86-64)',
+ ],
+ 'outputs': ['<(PRODUCT_DIR)/nacl_irt_x86_32.nexe',
+ '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe'],
+ 'action': [
+ '<@(irt_build_cmd)',
+ '--platform', 'x86-32',
+ '--platform', 'x86-64',
+ ],
+ },
+ ],
+ }],
+ ['OS!="win" and target_arch=="ia32"', {
+ # Linux-x86-32 and OSX need only the x86-32 IRT.
+ 'actions': [
+ {
+ 'action_name': 'nacl_irt',
+ 'message': 'Building NaCl IRT',
+ 'inputs': [
+ '<!@(<(irt_inputs_cmd) --platform=x86-32)',
+ ],
+ 'outputs': ['<(PRODUCT_DIR)/nacl_irt_x86_32.nexe'],
+ 'action': [
+ '<@(irt_build_cmd)', '--platform', 'x86-32',
+ ],
+ },
+ ],
+ }],
+ ['OS!="win" and target_arch=="x64"', {
+ # Linux-x86-64 needs only the x86-64 IRT.
+ 'actions': [
+ {
+ 'action_name': 'nacl_irt',
+ 'message': 'Building NaCl IRT',
+ 'inputs': [
+ '<!@(<(irt_inputs_cmd) --platform=x86-64)',
+ ],
+ 'outputs': ['<(PRODUCT_DIR)/nacl_irt_x86_64.nexe'],
+ 'action': [
+ '<@(irt_build_cmd)', '--platform', 'x86-64',
+ ],
+ },
+ ],
+ }],
+ ['OS!="win" and target_arch=="arm"', {
+ 'actions': [
+ {
+ 'action_name': 'nacl_irt',
+ 'message': 'Building NaCl IRT',
+ 'inputs': [
+ '<!@(<(irt_inputs_cmd) --platform=arm)',
+ ],
+ 'outputs': ['<(PRODUCT_DIR)/nacl_irt_arm.nexe'],
+ 'action': [
+ '<@(irt_build_cmd)', '--platform', 'arm',
+ ],
+ },
+ ],
+ }],
+ ],
},
],
'conditions': [
diff --git a/ppapi/native_client/native_client.gyp b/ppapi/native_client/native_client.gyp
deleted file mode 100644
index fa51ee2..0000000
--- a/ppapi/native_client/native_client.gyp
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (c) 2011 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.
-
-{
- 'includes': [
- '../../native_client/build/untrusted.gypi',
- ],
- 'conditions': [
- ['disable_nacl!=1', {
- 'targets': [
- {
- 'target_name': 'nacl_irt',
- 'type': 'none',
- 'variables': {
- 'nexe_target': 'nacl_irt',
- 'out64': '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe',
- 'out32': '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe',
- 'build_glibc': 0,
- 'build_newlib': 1,
- 'include_dirs': [
- 'lib/gl/include',
- '..',
- ],
- 'link_flags': [
- '-lirt_browser',
- '-lppruntime',
- '-lsrpc',
- '-limc_syscalls',
- '-lplatform',
- '-lgio',
- '-lm',
- ],
- 'sources': [
- ],
- },
- 'conditions': [
- ['target_arch=="x64" or target_arch == "ia32"', {
- 'variables': {
- 'link_flags': [
- '-Wl,--section-start,.rodata=0x3ef00000',
- '-Wl,-Ttext-segment=0x0fc00000',
- ],
- },
- }],
- ],
- 'dependencies': [
- 'src/shared/ppapi_proxy/ppapi_proxy.gyp:ppruntime_lib',
- '../../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',
- ],
- },
- ],
- }],
- ],
-}
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy.gyp b/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy.gyp
index 26ff85e..b071b0a 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy.gyp
+++ b/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy.gyp
@@ -68,99 +68,5 @@
'<(DEPTH)/ppapi/ppapi.gyp:ppapi_c',
],
},
- {
- 'target_name': 'ppruntime_lib',
- 'type': 'none',
- 'dependencies': [
- '<(DEPTH)/native_client/tools.gyp:prep_toolchain'
- ],
- 'variables': {
- 'nlib_target': 'libppruntime.a',
- 'build_glibc': 0,
- 'build_newlib': 1,
- 'include_dirs': [
- '<(DEPTH)/gpu',
- '<(DEPTH)/ppapi/native_client/src/shared/ppapi_proxy/untrusted',
- ],
- 'sources': [
- '<(DEPTH)/gpu/command_buffer/common/cmd_buffer_common.cc',
- '<(DEPTH)/gpu/command_buffer/common/gles2_cmd_format.cc',
- '<(DEPTH)/gpu/command_buffer/common/gles2_cmd_utils.cc',
- '<(DEPTH)/gpu/command_buffer/common/logging.cc',
-
- '<(DEPTH)/gpu/command_buffer/client/cmd_buffer_helper.cc',
- '<(DEPTH)/gpu/command_buffer/client/fenced_allocator.cc',
- '<(DEPTH)/gpu/command_buffer/client/gles2_c_lib.cc',
- '<(DEPTH)/gpu/command_buffer/client/gles2_cmd_helper.cc',
- '<(DEPTH)/gpu/command_buffer/client/gles2_implementation.cc',
- '<(DEPTH)/gpu/command_buffer/client/program_info_manager.cc',
- '<(DEPTH)/gpu/command_buffer/client/gles2_lib.cc',
- '<(DEPTH)/gpu/command_buffer/client/mapped_memory.cc',
- '<(DEPTH)/gpu/command_buffer/client/ring_buffer.cc',
- '<(DEPTH)/gpu/command_buffer/common/id_allocator.cc',
-
- 'command_buffer_nacl.cc',
- 'input_event_data.cc',
- 'object_serialize.cc',
- 'plugin_callback.cc',
- 'plugin_globals.cc',
- 'plugin_instance_data.cc',
- 'plugin_main.cc',
- 'plugin_nacl_file.cc',
- 'plugin_opengles.cc',
- 'plugin_ppb.cc',
- 'plugin_ppb_audio.cc',
- 'plugin_ppb_audio_config.cc',
- 'plugin_ppb_buffer.cc',
- 'plugin_ppb_core.cc',
- 'plugin_ppb_cursor_control.cc',
- 'plugin_ppb_file_io.cc',
- 'plugin_ppb_file_system.cc',
- 'plugin_ppb_file_ref.cc',
- 'plugin_ppb_find.cc',
- 'plugin_ppb_font.cc',
- 'plugin_ppb_fullscreen.cc',
- 'plugin_ppb_graphics_2d.cc',
- 'plugin_ppb_graphics_3d.cc',
- 'plugin_ppb_image_data.cc',
- 'plugin_ppb_input_event.cc',
- 'plugin_ppb_instance.cc',
- 'plugin_ppb_memory.cc',
- 'plugin_ppb_messaging.cc',
- 'plugin_ppb_mouse_lock.cc',
- 'plugin_ppb_pdf.cc',
- 'plugin_ppb_scrollbar.cc',
- 'plugin_ppb_testing.cc',
- 'plugin_ppb_url_loader.cc',
- 'plugin_ppb_url_request_info.cc',
- 'plugin_ppb_url_response_info.cc',
- 'plugin_ppb_var.cc',
- 'plugin_ppb_widget.cc',
- 'plugin_ppb_zoom.cc',
- 'plugin_ppp_find_rpc_server.cc',
- 'plugin_ppp_input_event_rpc_server.cc',
- 'plugin_ppp_instance_rpc_server.cc',
- 'plugin_ppp_messaging_rpc_server.cc',
- 'plugin_ppp_mouse_lock_rpc_server.cc',
- 'plugin_ppp_printing_rpc_server.cc',
- 'plugin_ppp_scrollbar_rpc_server.cc',
- 'plugin_ppp_selection_rpc_server.cc',
- 'plugin_ppp_widget_rpc_server.cc',
- 'plugin_ppp_zoom_rpc_server.cc',
- 'plugin_ppp_rpc_server.cc',
- 'plugin_resource.cc',
- 'plugin_resource_tracker.cc',
- 'plugin_threading.cc',
- 'plugin_upcall.cc',
- 'proxy_var.cc',
- 'proxy_var_cache.cc',
- 'utility.cc',
- # Autogenerated files
- 'ppp_rpc_server.cc',
- 'ppb_rpc_client.cc',
- 'upcall_client.cc'
- ],
- },
- },
],
}
diff --git a/ppapi/ppapi_tests.gypi b/ppapi/ppapi_tests.gypi
index c2de235..352cfd1 100644
--- a/ppapi/ppapi_tests.gypi
+++ b/ppapi/ppapi_tests.gypi
@@ -261,82 +261,6 @@
],
'conditions': [
- ['disable_nacl!=1', {
- 'targets': [
- {
- 'target_name': 'ppapi_nacl_tests',
- 'type': 'none',
- 'dependencies': [
- 'native_client/native_client.gyp:nacl_irt',
- ],
- 'variables': {
- 'nexe_target': 'ppapi_nacl_tests',
- 'build_glibc': 0,
- 'build_newlib': 1,
- 'include_dirs': [
- 'lib/gl/include',
- '..',
- ],
- 'sources': [
- # Common test files
- 'tests/test_case.cc',
- 'tests/test_utils.cc',
- 'tests/testing_instance.cc',
-
- # Compile-time tests
- 'tests/test_c_includes.c',
- 'tests/test_cpp_includes.cc',
- 'tests/test_struct_sizes.c',
-
- # Test cases (PLEASE KEEP THIS SECTION IN ALPHABETICAL ORDER)
- # Add/uncomment PPAPI interfaces below when they get proxied.
- # Not yet proxied.
- #'test_broker.cc',
- # Not yet proxied.
- #'test_buffer.cc',
- # Not yet proxied.
- #'test_char_set.cc',
- 'tests/test_cursor_control.cc',
- # Fails in DeleteDirectoryRecursively.
- # BUG: http://code.google.com/p/nativeclient/issues/detail?id=2107
- #'test_directory_reader.cc',
- 'tests/test_file_io.cc',
- 'tests/test_file_ref.cc',
- 'tests/test_file_system.cc',
- 'tests/test_memory.cc',
- 'tests/test_graphics_2d.cc',
- 'tests/test_image_data.cc',
- 'tests/test_paint_aggregator.cc',
- # test_post_message.cc relies on synchronous scripting, which is not
- # available for untrusted tests.
- # Does not compile under nacl (uses private interface ExecuteScript).
- #'test_post_message.cc',
- 'tests/test_scrollbar.cc',
- # Not yet proxied.
- #'tests/test_transport.cc',
- # Not yet proxied.
- #'tests/test_uma.cc',
- # Activating the URL loader test requires a test httpd that
- # understands HTTP POST, which our current httpd.py doesn't.
- # It also requires deactivating the tests that use FileIOTrusted
- # when running in NaCl.
- #'tests/test_url_loader.cc',
- # Does not compile under nacl (uses VarPrivate).
- #'test_url_util.cc',
- # Not yet proxied.
- #'test_video_decoder.cc',
- 'tests/test_var.cc',
-
- # Deprecated test cases.
- #'tests/test_instance_deprecated.cc',
- # Var_deprecated fails in TestPassReference, and we probably won't
- # fix it.
- #'tests/test_var_deprecated.cc'
- ],
- },
- },
- ],
- }],
# NOTE: the PPAPI examples fail to build on mac & windows.
# http://code.google.com/p/chromium/issues/detail?id=54005 tracks mac.
['OS!="mac"', {