dump_mozbuild.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. # Copyright (c) 2012 Google Inc. All rights reserved.
  2. # Use of this source code is governed by a BSD-style license that can be
  3. # found in the LICENSE file.
  4. import collections
  5. import os
  6. import gyp
  7. import gyp.common
  8. import gyp.msvs_emulation
  9. import json
  10. import sys
  11. generator_supports_multiple_toolsets = True
  12. generator_wants_static_library_dependencies_adjusted = False
  13. generator_default_variables = {
  14. }
  15. for dirname in ['INTERMEDIATE_DIR', 'SHARED_INTERMEDIATE_DIR', 'PRODUCT_DIR',
  16. 'LIB_DIR', 'SHARED_LIB_DIR']:
  17. # Some gyp steps fail if these are empty(!).
  18. generator_default_variables[dirname] = 'dir'
  19. for unused in ['RULE_INPUT_PATH', 'RULE_INPUT_ROOT', 'RULE_INPUT_NAME',
  20. 'RULE_INPUT_DIRNAME', 'RULE_INPUT_EXT',
  21. 'EXECUTABLE_PREFIX', 'EXECUTABLE_SUFFIX',
  22. 'STATIC_LIB_PREFIX', 'STATIC_LIB_SUFFIX',
  23. 'SHARED_LIB_PREFIX', 'SHARED_LIB_SUFFIX',
  24. 'CONFIGURATION_NAME']:
  25. generator_default_variables[unused] = ''
  26. def CalculateVariables(default_variables, params):
  27. generator_flags = params.get('generator_flags', {})
  28. for key, val in generator_flags.items():
  29. default_variables.setdefault(key, val)
  30. default_variables.setdefault('OS', gyp.common.GetFlavor(params))
  31. flavor = gyp.common.GetFlavor(params)
  32. if flavor =='win':
  33. # Copy additional generator configuration data from VS, which is shared
  34. # by the Windows Ninja generator.
  35. import gyp.generator.msvs as msvs_generator
  36. generator_additional_non_configuration_keys = getattr(msvs_generator,
  37. 'generator_additional_non_configuration_keys', [])
  38. generator_additional_path_sections = getattr(msvs_generator,
  39. 'generator_additional_path_sections', [])
  40. gyp.msvs_emulation.CalculateCommonVariables(default_variables, params)
  41. def CalculateGeneratorInputInfo(params):
  42. """Calculate the generator specific info that gets fed to input (called by
  43. gyp)."""
  44. generator_flags = params.get('generator_flags', {})
  45. if generator_flags.get('adjust_static_libraries', False):
  46. global generator_wants_static_library_dependencies_adjusted
  47. generator_wants_static_library_dependencies_adjusted = True
  48. def GetOS(params):
  49. for d in params['defines']:
  50. pass
  51. def GenerateOutput(target_list, target_dicts, data, params):
  52. # Map of target -> list of targets it depends on.
  53. edges = {}
  54. # Queue of targets to visit.
  55. targets_to_visit = target_list[:]
  56. sources = [];
  57. while len(targets_to_visit) > 0:
  58. target = targets_to_visit.pop()
  59. if target in edges:
  60. continue
  61. edges[target] = []
  62. target_sources = target_dicts[target].get('sources')
  63. if target_sources:
  64. for source in target_sources:
  65. if source.endswith('.cpp'):
  66. sources.append(source)
  67. for dep in target_dicts[target].get('dependencies', []):
  68. edges[target].append(dep)
  69. targets_to_visit.append(dep)
  70. skia_os = data['gyp/core.gyp']['variables']['skia_os%']
  71. f = open('sources.json', 'w')
  72. json.dump(sources, f)
  73. f.close()