| OLD | NEW |
| 1 # Copyright (C) 2013 Google Inc. All rights reserved. | 1 # Copyright (C) 2013 Google Inc. All rights reserved. |
| 2 # | 2 # |
| 3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
| 4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
| 5 # met: | 5 # met: |
| 6 # | 6 # |
| 7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
| 8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
| 9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
| 10 # copyright notice, this list of conditions and the following disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 import v8_callback_interface | 76 import v8_callback_interface |
| 77 import v8_dictionary | 77 import v8_dictionary |
| 78 from v8_globals import includes, interfaces | 78 from v8_globals import includes, interfaces |
| 79 import v8_interface | 79 import v8_interface |
| 80 import v8_types | 80 import v8_types |
| 81 import v8_union | 81 import v8_union |
| 82 from v8_utilities import capitalize, cpp_name, conditional_string, v8_class_name | 82 from v8_utilities import capitalize, cpp_name, conditional_string, v8_class_name |
| 83 from utilities import KNOWN_COMPONENTS, idl_filename_to_component, is_valid_comp
onent_dependency, is_testing_target | 83 from utilities import KNOWN_COMPONENTS, idl_filename_to_component, is_valid_comp
onent_dependency, is_testing_target |
| 84 | 84 |
| 85 | 85 |
| 86 def normalize_and_sort_includes(include_paths): |
| 87 normalized_include_paths = [] |
| 88 for include_path in include_paths: |
| 89 match = re.search(r'/gen/blink/(.*)$', posixpath.abspath(include_path)) |
| 90 if match: |
| 91 include_path = match.group(1) |
| 92 normalized_include_paths.append(include_path) |
| 93 return sorted(normalized_include_paths) |
| 94 |
| 95 |
| 86 def render_template(include_paths, header_template, cpp_template, | 96 def render_template(include_paths, header_template, cpp_template, |
| 87 template_context, component=None): | 97 template_context, component=None): |
| 88 template_context['code_generator'] = module_pyname | 98 template_context['code_generator'] = module_pyname |
| 89 | 99 |
| 90 # Add includes for any dependencies | 100 # Add includes for any dependencies |
| 91 template_context['header_includes'] = sorted( | 101 template_context['header_includes'] = normalize_and_sort_includes( |
| 92 template_context['header_includes']) | 102 template_context['header_includes']) |
| 93 | 103 |
| 94 for include_path in include_paths: | 104 for include_path in include_paths: |
| 95 if component: | 105 if component: |
| 96 dependency = idl_filename_to_component(include_path) | 106 dependency = idl_filename_to_component(include_path) |
| 97 assert is_valid_component_dependency(component, dependency) | 107 assert is_valid_component_dependency(component, dependency) |
| 98 includes.add(include_path) | 108 includes.add(include_path) |
| 99 | 109 |
| 100 template_context['cpp_includes'] = sorted(includes) | 110 template_context['cpp_includes'] = normalize_and_sort_includes(includes) |
| 101 | 111 |
| 102 header_text = header_template.render(template_context) | 112 header_text = header_template.render(template_context) |
| 103 cpp_text = cpp_template.render(template_context) | 113 cpp_text = cpp_template.render(template_context) |
| 104 return header_text, cpp_text | 114 return header_text, cpp_text |
| 105 | 115 |
| 106 | 116 |
| 107 def set_global_type_info(info_provider): | 117 def set_global_type_info(info_provider): |
| 108 interfaces_info = info_provider.interfaces_info | 118 interfaces_info = info_provider.interfaces_info |
| 109 idl_types.set_ancestors(interfaces_info['ancestors']) | 119 idl_types.set_ancestors(interfaces_info['ancestors']) |
| 110 IdlType.set_callback_interfaces(interfaces_info['callback_interfaces']) | 120 IdlType.set_callback_interfaces(interfaces_info['callback_interfaces']) |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 | 375 |
| 366 # Add UnionTypesCore.h as a dependency when we generate modules union ty
pes | 376 # Add UnionTypesCore.h as a dependency when we generate modules union ty
pes |
| 367 # because we only generate union type containers which are used by both | 377 # because we only generate union type containers which are used by both |
| 368 # core and modules in UnionTypesCore.h. | 378 # core and modules in UnionTypesCore.h. |
| 369 # FIXME: This is an ad hoc workaround and we need a general way to | 379 # FIXME: This is an ad hoc workaround and we need a general way to |
| 370 # handle core <-> modules dependency. | 380 # handle core <-> modules dependency. |
| 371 if self.target_component == 'modules': | 381 if self.target_component == 'modules': |
| 372 additional_header_includes.append( | 382 additional_header_includes.append( |
| 373 'bindings/core/v8/UnionTypesCore.h') | 383 'bindings/core/v8/UnionTypesCore.h') |
| 374 | 384 |
| 375 template_context['header_includes'] = sorted( | 385 template_context['header_includes'] = normalize_and_sort_includes( |
| 376 template_context['header_includes'] + additional_header_includes) | 386 template_context['header_includes'] + additional_header_includes) |
| 377 | 387 |
| 378 header_text = header_template.render(template_context) | 388 header_text = header_template.render(template_context) |
| 379 cpp_text = cpp_template.render(template_context) | 389 cpp_text = cpp_template.render(template_context) |
| 380 header_path = posixpath.join(self.output_dir, | 390 header_path = posixpath.join(self.output_dir, |
| 381 'UnionTypes%s.h' % capitalized_component) | 391 'UnionTypes%s.h' % capitalized_component) |
| 382 cpp_path = posixpath.join(self.output_dir, | 392 cpp_path = posixpath.join(self.output_dir, |
| 383 'UnionTypes%s.cpp' % capitalized_component) | 393 'UnionTypes%s.cpp' % capitalized_component) |
| 384 return ( | 394 return ( |
| 385 (header_path, header_text), | 395 (header_path, header_text), |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 | 469 |
| 460 # Create a dummy file as output for the build system, | 470 # Create a dummy file as output for the build system, |
| 461 # since filenames of individual cache files are unpredictable and opaque | 471 # since filenames of individual cache files are unpredictable and opaque |
| 462 # (they are hashes of the template path, which varies based on environment) | 472 # (they are hashes of the template path, which varies based on environment) |
| 463 with open(dummy_filename, 'w') as dummy_file: | 473 with open(dummy_filename, 'w') as dummy_file: |
| 464 pass # |open| creates or touches the file | 474 pass # |open| creates or touches the file |
| 465 | 475 |
| 466 | 476 |
| 467 if __name__ == '__main__': | 477 if __name__ == '__main__': |
| 468 sys.exit(main(sys.argv)) | 478 sys.exit(main(sys.argv)) |
| OLD | NEW |