)]}'
{
  "commit": "d0a6f072070988e7b038496c4e7d6c562b649732",
  "tree": "30b0c28e7a18989dc99aacef8398a711cdfaba7d",
  "parents": [
    "3cbdb62872734f3ca71c9571fe6876a15ca55984"
  ],
  "author": {
    "name": "Robert Sesek",
    "email": "rsesek@chromium.org",
    "time": "Fri May 15 11:21:22 2020 -0400"
  },
  "committer": {
    "name": "Commit Bot",
    "email": "commit-bot@chromium.org",
    "time": "Tue May 19 16:44:35 2020 +0000"
  },
  "message": "Add weak_frameworks linking option\n\nThe -weak_framework linker flag adds a dynamic library dependency to the\noutput, but it instructs the loader to skip loading the library if it is\nnot present and leave the external symbols unresolved. This is typically\nused when a framework is present in a new version of an SDK that is not\npresent on an older OS. See\nhttps://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html\nfor details.\n\nCurrently users of gn implement this using a config, but due to the way\nconfigs propagate, the -weak_link ldflags get lost at static_library\nboundaries. Having first-class support for weakly linked frameworks\nsimplifies that.\n\nBug: chromium:1082896\nChange-Id: Ia93bf1b67e5b9205073b8f2bf3ed9b96e3af79e4\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/8464\nCommit-Queue: Brett Wilson \u003cbrettw@chromium.org\u003e\nReviewed-by: Sylvain Defresne \u003csdefresne@chromium.org\u003e\nReviewed-by: Brett Wilson \u003cbrettw@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "afd928c7400819de93ccfde48805cfc405f52c90",
      "old_mode": 33188,
      "old_path": "docs/reference.md",
      "new_id": "92d1f5703ca36807cea968779eedf10ce5bcbf02",
      "new_mode": 33188,
      "new_path": "docs/reference.md"
    },
    {
      "type": "modify",
      "old_id": "4046e3375a4601b78bc25c2b072d206edb3e0823",
      "old_mode": 33188,
      "old_path": "src/gn/c_tool.cc",
      "new_id": "7c063648c5f734578ff4e5d58bc606ad3b5567b6",
      "new_mode": 33188,
      "new_path": "src/gn/c_tool.cc"
    },
    {
      "type": "modify",
      "old_id": "081ae83045257d2f9b971125b486a222f324dddb",
      "old_mode": 33188,
      "old_path": "src/gn/command_desc.cc",
      "new_id": "278d45dbc32de842ea51150d4998e842d515a5ff",
      "new_mode": 33188,
      "new_path": "src/gn/command_desc.cc"
    },
    {
      "type": "modify",
      "old_id": "df5e73f3b78219588531ca5a212a0e282b12b8fc",
      "old_mode": 33188,
      "old_path": "src/gn/compile_commands_writer.cc",
      "new_id": "8d6c7fb382df560945e2ba9da9a2cb0e30950307",
      "new_mode": 33188,
      "new_path": "src/gn/compile_commands_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "d4f597e396c5cd544fb9b59499713febe060907c",
      "old_mode": 33188,
      "old_path": "src/gn/config_values.cc",
      "new_id": "ba5ddf780aec96947c6a5294d5988588734fe60e",
      "new_mode": 33188,
      "new_path": "src/gn/config_values.cc"
    },
    {
      "type": "modify",
      "old_id": "efd70eb6d878a2ad266eeb24ee6ca71732da64db",
      "old_mode": 33188,
      "old_path": "src/gn/config_values.h",
      "new_id": "ef57b2630706b4010e5a23d688fc968d8c47b976",
      "new_mode": 33188,
      "new_path": "src/gn/config_values.h"
    },
    {
      "type": "modify",
      "old_id": "52ef61f7cb7fac25ac3d4395e6f50ba48e5e27af",
      "old_mode": 33188,
      "old_path": "src/gn/config_values_generator.cc",
      "new_id": "c8070d26575fb8cde6f07a2c02c0129cdcd35eab",
      "new_mode": 33188,
      "new_path": "src/gn/config_values_generator.cc"
    },
    {
      "type": "modify",
      "old_id": "8ef77a6f5584d821648446c8c2eb070ea2d3eb75",
      "old_mode": 33188,
      "old_path": "src/gn/desc_builder.cc",
      "new_id": "95909755243744e4de14b829276f67754d229cb1",
      "new_mode": 33188,
      "new_path": "src/gn/desc_builder.cc"
    },
    {
      "type": "modify",
      "old_id": "9efff8eb2d036a11e96f79874adf69382bd005a4",
      "old_mode": 33188,
      "old_path": "src/gn/function_toolchain.cc",
      "new_id": "92721dc48f304f14b28c278af68df4250cd8f70a",
      "new_mode": 33188,
      "new_path": "src/gn/function_toolchain.cc"
    },
    {
      "type": "modify",
      "old_id": "cde6be625dcf12a47f7b5aeaac5aa60b3e5aabf1",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_binary_target_writer.cc",
      "new_id": "2afb3dbac3f687d904ffb6e945f6bef49ed67f06",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_binary_target_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "315232bf9cd5d2325230d43c88b8910b426a7a85",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_c_binary_target_writer_unittest.cc",
      "new_id": "bc9907a9549203c1f5d717909647334d196181a1",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_c_binary_target_writer_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "115ab8eb12e6937dde7e4a99a08441419133ad9f",
      "old_mode": 33188,
      "old_path": "src/gn/target.cc",
      "new_id": "1b26c06b86229bbbcd77692357e107664a856297",
      "new_mode": 33188,
      "new_path": "src/gn/target.cc"
    },
    {
      "type": "modify",
      "old_id": "44f7e170820a6d1efbfd800675fb22e097643af9",
      "old_mode": 33188,
      "old_path": "src/gn/target.h",
      "new_id": "6332880b0249bc0fa6df923a561e86487170cef9",
      "new_mode": 33188,
      "new_path": "src/gn/target.h"
    },
    {
      "type": "modify",
      "old_id": "655e2b758129160059497c67cbbdf1b41b1e9152",
      "old_mode": 33188,
      "old_path": "src/gn/tool.h",
      "new_id": "7fe6ed57c8a08857ae9ea47fc78aada9c19c04b6",
      "new_mode": 33188,
      "new_path": "src/gn/tool.h"
    },
    {
      "type": "modify",
      "old_id": "8a1ec2a8d9678bcce712bab7900a397c06e28eb4",
      "old_mode": 33188,
      "old_path": "src/gn/variables.cc",
      "new_id": "daabdb530d71c00b865f0fc2d299c26bcc4643c8",
      "new_mode": 33188,
      "new_path": "src/gn/variables.cc"
    },
    {
      "type": "modify",
      "old_id": "dca4e341b00fcba6a2e5fc5fd860eca0bcb2c2de",
      "old_mode": 33188,
      "old_path": "src/gn/variables.h",
      "new_id": "acd78af42268080333351ff70f0ec64d36acbc94",
      "new_mode": 33188,
      "new_path": "src/gn/variables.h"
    }
  ]
}
