Index: tools/process_gypis.py |
diff --git a/tools/process_gypis.py b/tools/process_gypis.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..b74ce2c1b18129ed68b03a07b6dfe2a1fe94f1d2 |
--- /dev/null |
+++ b/tools/process_gypis.py |
@@ -0,0 +1,69 @@ |
+#!/usr/bin/env python |
+# Copyright 2016, the Dart project authors. Please see the AUTHORS file |
+# for details. All rights reserved. Use of this source code is governed by a |
+# BSD-style license that can be found in the LICENSE file. |
+ |
+import gn_helpers |
+import os.path |
+import sys |
+ |
+# Given a list of dart package names read in the set of runtime and sdk library |
+# sources into variables in a gn scope. |
+ |
+ |
+def LoadPythonDictionary(path): |
+ file_string = open(path).read() |
+ try: |
+ file_data = eval(file_string, {'__builtins__': None}, None) |
+ except SyntaxError, e: |
+ e.filename = path |
+ raise |
+ except Exception, e: |
+ raise Exception('Unexpected error while reading %s: %s' % |
+ (path, str(e))) |
+ |
+ assert isinstance( |
+ file_data, dict), '%s does not eval to a dictionary' % path |
+ return file_data |
+ |
+ |
+def main(): |
+ dart_root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |
+ runtime_dir = os.path.join(dart_root_dir, 'runtime') |
+ runtime_lib_dir = os.path.join(runtime_dir, 'lib') |
+ sdk_lib_dir = os.path.join(dart_root_dir, 'sdk', 'lib') |
+ libs = sys.argv[1:] |
+ data = {} |
+ data['allsources'] = [] |
+ |
+ for lib in libs: |
+ runtime_path = os.path.join(runtime_lib_dir, lib + '_sources.gypi') |
+ sdk_path = os.path.join(sdk_lib_dir, lib, lib + '_sources.gypi') |
+ runtime_dict = LoadPythonDictionary(runtime_path) |
+ for source in runtime_dict['sources']: |
+ data['allsources'].append(source) |
+ data[lib + '_runtime_sources'] = runtime_dict['sources'] |
+ sdk_dict = LoadPythonDictionary(sdk_path) |
+ data[lib + '_sdk_sources'] = sdk_dict['sources'] |
+ |
+ vm_sources_path = os.path.join(runtime_dir, 'vm', 'vm_sources.gypi') |
+ vm_sources_dict = LoadPythonDictionary(vm_sources_path) |
+ data['vm_sources'] = vm_sources_dict['sources'] |
+ |
+ platform_sources_base = os.path.join(runtime_dir, 'platform', 'platform_') |
+ platform_headers_dict = LoadPythonDictionary( |
+ platform_sources_base + 'headers.gypi') |
+ platform_sources_dict = LoadPythonDictionary( |
+ platform_sources_base + 'sources.gypi') |
+ data['platform_sources'] = platform_headers_dict[ |
+ 'sources'] + platform_sources_dict['sources'] |
+ |
+ bin_io_sources_path = os.path.join(runtime_dir, 'bin', 'io_sources.gypi') |
+ bin_io_sources_dict = LoadPythonDictionary(bin_io_sources_path) |
+ data['bin_io_sources'] = bin_io_sources_dict['sources'] |
+ |
+ print gn_helpers.ToGNString(data) |
+ return 0 |
+ |
+if __name__ == '__main__': |
+ sys.exit(main()) |