a49966c17b727156c9f88d41ccad87dc1c27544ca82d19751c3a492a4ba9b391e7dd7b13bb19dd90b032d8aef8b3453850fb07ca302411afde45e9e115db82 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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 os
  5. import gyp
  6. import gyp.common
  7. import gyp.msvs_emulation
  8. import json
  9. generator_supports_multiple_toolsets = True
  10. generator_wants_static_library_dependencies_adjusted = False
  11. generator_filelist_paths = {}
  12. generator_default_variables = {}
  13. for dirname in [
  14. "INTERMEDIATE_DIR",
  15. "SHARED_INTERMEDIATE_DIR",
  16. "PRODUCT_DIR",
  17. "LIB_DIR",
  18. "SHARED_LIB_DIR",
  19. ]:
  20. # Some gyp steps fail if these are empty(!).
  21. generator_default_variables[dirname] = "dir"
  22. for unused in [
  23. "RULE_INPUT_PATH",
  24. "RULE_INPUT_ROOT",
  25. "RULE_INPUT_NAME",
  26. "RULE_INPUT_DIRNAME",
  27. "RULE_INPUT_EXT",
  28. "EXECUTABLE_PREFIX",
  29. "EXECUTABLE_SUFFIX",
  30. "STATIC_LIB_PREFIX",
  31. "STATIC_LIB_SUFFIX",
  32. "SHARED_LIB_PREFIX",
  33. "SHARED_LIB_SUFFIX",
  34. "CONFIGURATION_NAME",
  35. ]:
  36. generator_default_variables[unused] = ""
  37. def CalculateVariables(default_variables, params):
  38. generator_flags = params.get("generator_flags", {})
  39. for key, val in generator_flags.items():
  40. default_variables.setdefault(key, val)
  41. default_variables.setdefault("OS", gyp.common.GetFlavor(params))
  42. flavor = gyp.common.GetFlavor(params)
  43. if flavor == "win":
  44. gyp.msvs_emulation.CalculateCommonVariables(default_variables, params)
  45. def CalculateGeneratorInputInfo(params):
  46. """Calculate the generator specific info that gets fed to input (called by
  47. gyp)."""
  48. generator_flags = params.get("generator_flags", {})
  49. if generator_flags.get("adjust_static_libraries", False):
  50. global generator_wants_static_library_dependencies_adjusted
  51. generator_wants_static_library_dependencies_adjusted = True
  52. toplevel = params["options"].toplevel_dir
  53. generator_dir = os.path.relpath(params["options"].generator_output or ".")
  54. # output_dir: relative path from generator_dir to the build directory.
  55. output_dir = generator_flags.get("output_dir", "out")
  56. qualified_out_dir = os.path.normpath(
  57. os.path.join(toplevel, generator_dir, output_dir, "gypfiles")
  58. )
  59. global generator_filelist_paths
  60. generator_filelist_paths = {
  61. "toplevel": toplevel,
  62. "qualified_out_dir": qualified_out_dir,
  63. }
  64. def GenerateOutput(target_list, target_dicts, data, params):
  65. # Map of target -> list of targets it depends on.
  66. edges = {}
  67. # Queue of targets to visit.
  68. targets_to_visit = target_list[:]
  69. while len(targets_to_visit) > 0:
  70. target = targets_to_visit.pop()
  71. if target in edges:
  72. continue
  73. edges[target] = []
  74. for dep in target_dicts[target].get("dependencies", []):
  75. edges[target].append(dep)
  76. targets_to_visit.append(dep)
  77. try:
  78. filepath = params["generator_flags"]["output_dir"]
  79. except KeyError:
  80. filepath = "."
  81. filename = os.path.join(filepath, "dump.json")
  82. f = open(filename, "w")
  83. json.dump(edges, f)
  84. f.close()
  85. print("Wrote json to %s." % filename)