)]}'
{
  "commit": "a09ec16183b550073c04fa8eeee230047835d118",
  "tree": "9e58c1798f3ac84cf96de3c0068e8789b762ac02",
  "parents": [
    "e214b5d358985016c9b8781e019eba70a03e4fc2"
  ],
  "author": {
    "name": "Sylvain Defresne",
    "email": "sdefresne@chromium.org",
    "time": "Thu Jan 16 12:36:40 2020 +0100"
  },
  "committer": {
    "name": "Commit Bot",
    "email": "commit-bot@chromium.org",
    "time": "Thu Jan 16 17:53:11 2020 +0000"
  },
  "message": "Improve support for frameworks in gn\n\nAdd \"frameworks\" and \"framework_dirs\" variables to targets and configs\nthat are propagated using the following rules:\n\n-   \"frameworks\" is propagated to all linkable targets (executables,\n    shared libraries and complete static libraries)\n\n-   \"framework_dirs\" is propagated to direct compile dependencies as\n    \"include_dirs\" and also to all linkable targets (executables,\n    shared libraries and complete static libraries)\n\nThe non-conventional propagation rules for \"framework_dirs\" is there\nto support how framework are used on Apple\u0027s platforms (macOS \u0026 iOS).\nA framework bundle is a way to ship a shared library with its public\nheaders, so the path to the framework needs to be propagated to the\ncompiler (to resolve import statement for the framework\u0027s header) and\nto the linker (to find the path to the shared library contained in the\nframework).\n\nAdd target of type CREATE_BUNDLE that generate a framework (identified\nby the product type \"com.apple.product-type.framework\") as inherited\nlibraries since they contains shared library and add them to the list\nof implicit dependencies to force the regeneration of linkable targets\nif any of the framework API changes (this is bit pessimistic since it\ncan force an unnecessary rebuild if the linkable target does not link\nwith the framework, but this should be rare).\n\nBug: crbug.com/gn/119, crbug.com/1037607\nChange-Id: Icef50c38ac02afab71f2348fe3f73b6124a29112\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/6660\nCommit-Queue: Brett Wilson \u003cbrettw@chromium.org\u003e\nReviewed-by: Brett Wilson \u003cbrettw@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "029f83458bd8028632a35b528464ec47db8c6bb9",
      "old_mode": 33261,
      "old_path": "build/gen.py",
      "new_id": "592e65f91ac09c9be0f259c4e5a17491f2dc24fc",
      "new_mode": 33261,
      "new_path": "build/gen.py"
    },
    {
      "type": "modify",
      "old_id": "f76c5b5f711a14ffbbb133bdec1111ee751c1c44",
      "old_mode": 33188,
      "old_path": "docs/reference.md",
      "new_id": "7abdd205d722209ba308f8b935e9ff37f93b1298",
      "new_mode": 33188,
      "new_path": "docs/reference.md"
    },
    {
      "type": "modify",
      "old_id": "fbf82c0389773db768c5a6493197241666dcc28b",
      "old_mode": 33188,
      "old_path": "src/gn/bundle_data.h",
      "new_id": "10a42b18e24b56eb5db90ab7b3c4235e564a682d",
      "new_mode": 33188,
      "new_path": "src/gn/bundle_data.h"
    },
    {
      "type": "modify",
      "old_id": "e142eb70e06016888606d005b129f43cf0847a20",
      "old_mode": 33188,
      "old_path": "src/gn/c_substitution_type.cc",
      "new_id": "b21fea42800f0bc292aaf086651f151d5835d4e9",
      "new_mode": 33188,
      "new_path": "src/gn/c_substitution_type.cc"
    },
    {
      "type": "modify",
      "old_id": "a2df7c228d5d690031b3f6dd1a3e0ccf6cd2a81e",
      "old_mode": 33188,
      "old_path": "src/gn/c_substitution_type.h",
      "new_id": "e95531219db174c2087fa2c6ca4e945d52f3c6bd",
      "new_mode": 33188,
      "new_path": "src/gn/c_substitution_type.h"
    },
    {
      "type": "modify",
      "old_id": "b0f930b50ad3f4dec7dc0c43626f89b2b78991b7",
      "old_mode": 33188,
      "old_path": "src/gn/c_tool.cc",
      "new_id": "4046e3375a4601b78bc25c2b072d206edb3e0823",
      "new_mode": 33188,
      "new_path": "src/gn/c_tool.cc"
    },
    {
      "type": "modify",
      "old_id": "13e61c18fc22572b80e06194bc8ef0ccbc879cc0",
      "old_mode": 33188,
      "old_path": "src/gn/command_desc.cc",
      "new_id": "086d5f1ce0697e12c4fd81228d68b6162f8c53d4",
      "new_mode": 33188,
      "new_path": "src/gn/command_desc.cc"
    },
    {
      "type": "modify",
      "old_id": "9ff67cab41aa885c1052bd61ad3c495239166cfc",
      "old_mode": 33188,
      "old_path": "src/gn/compile_commands_writer.cc",
      "new_id": "5dfd2f69fc1a427e8cf670dc6e05db96026de2ba",
      "new_mode": 33188,
      "new_path": "src/gn/compile_commands_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "bcb8c33002363585416d0531a563020fb9ea6907",
      "old_mode": 33188,
      "old_path": "src/gn/config_values.cc",
      "new_id": "d4f597e396c5cd544fb9b59499713febe060907c",
      "new_mode": 33188,
      "new_path": "src/gn/config_values.cc"
    },
    {
      "type": "modify",
      "old_id": "0b4ca18f1fdf58986c31e3a0ee18525713d37154",
      "old_mode": 33188,
      "old_path": "src/gn/config_values.h",
      "new_id": "efd70eb6d878a2ad266eeb24ee6ca71732da64db",
      "new_mode": 33188,
      "new_path": "src/gn/config_values.h"
    },
    {
      "type": "modify",
      "old_id": "6e0df36eb52d7e9025103638e2b7beb9dbec5757",
      "old_mode": 33188,
      "old_path": "src/gn/config_values_generator.cc",
      "new_id": "52ef61f7cb7fac25ac3d4395e6f50ba48e5e27af",
      "new_mode": 33188,
      "new_path": "src/gn/config_values_generator.cc"
    },
    {
      "type": "modify",
      "old_id": "5cd97744c7d1ed2ccb4913a04211831c589c52e8",
      "old_mode": 33188,
      "old_path": "src/gn/desc_builder.cc",
      "new_id": "4e8f6900734e2b49dcf9c800474d25cfb9ebc9a2",
      "new_mode": 33188,
      "new_path": "src/gn/desc_builder.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4aba827432bf65955cd200c0ee3e4c5950c1c5d9",
      "new_mode": 33188,
      "new_path": "src/gn/frameworks_utils.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b9df3e77c8d9f101b404c53a41eb44145431d89b",
      "new_mode": 33188,
      "new_path": "src/gn/frameworks_utils.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3e20823052078885880b79e0a19e52997eb40747",
      "new_mode": 33188,
      "new_path": "src/gn/frameworks_utils_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "fc9b0c1b6bc4b87da927acb65cf89642903abe5d",
      "old_mode": 33188,
      "old_path": "src/gn/function_toolchain.cc",
      "new_id": "0efcd1e4530ff06928dab0f443033ad8d26ef48e",
      "new_mode": 33188,
      "new_path": "src/gn/function_toolchain.cc"
    },
    {
      "type": "modify",
      "old_id": "bf517a2ef2b70921f1254faa7cb78da1af8dbc9d",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_binary_target_writer.cc",
      "new_id": "1a3e9b944cdcdae2e0b5810d27b22690de4323be",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_binary_target_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "0eceed71af8865d7fd4e85249939c06674a45ba6",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_binary_target_writer.h",
      "new_id": "7539ebb01be30d22b785bb0dd7bc168cadec0a43",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_binary_target_writer.h"
    },
    {
      "type": "modify",
      "old_id": "f1d2fe5189c8745198d6b157dd0f197052b774e7",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_c_binary_target_writer.cc",
      "new_id": "ebc2d1703884a895a2c73aa568394a21138750e4",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_c_binary_target_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "48ff9e4d28bb260ee15058ad0674432ea456d243",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_c_binary_target_writer_unittest.cc",
      "new_id": "6b0fd64e1ea1f849bfebecd618330265f3864160",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_c_binary_target_writer_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "2ac19780a04be1c9b8938f73855f9f40e878026e",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_rust_binary_target_writer.cc",
      "new_id": "0f3895a92334fd888fcf97ee95d84f8a9f66666a",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_rust_binary_target_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "3b192ab412f2040b2741edfc6691b0d257dacfdb",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_target_command_util.h",
      "new_id": "022d5e7edab836f5b3e664bfc37d715a4ae6013c",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_target_command_util.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "248db301d57ee79c48c6d8d71cb41cf6a6cf05dc",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_target_command_util_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "0d76159a09f128c050bd829e09083de18da547a5",
      "old_mode": 33188,
      "old_path": "src/gn/target.cc",
      "new_id": "0b5402e174fbbded8667552bd1790437aa444290",
      "new_mode": 33188,
      "new_path": "src/gn/target.cc"
    },
    {
      "type": "modify",
      "old_id": "b86a893eaa032b4dbdf1cceb98f5385fc8f707d4",
      "old_mode": 33188,
      "old_path": "src/gn/target.h",
      "new_id": "fbe0f716c37ffda26d200f9b1abbc931a60cd5dd",
      "new_mode": 33188,
      "new_path": "src/gn/target.h"
    },
    {
      "type": "modify",
      "old_id": "fbac9aa17e9cb342c4ab9043fcce0c735e863096",
      "old_mode": 33188,
      "old_path": "src/gn/target_unittest.cc",
      "new_id": "3844d043dfd99095a2c11bed171302c3133b7362",
      "new_mode": 33188,
      "new_path": "src/gn/target_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "b83d4166ec01e3013cb0a786c6530a678c32b35a",
      "old_mode": 33188,
      "old_path": "src/gn/tool.h",
      "new_id": "655e2b758129160059497c67cbbdf1b41b1e9152",
      "new_mode": 33188,
      "new_path": "src/gn/tool.h"
    },
    {
      "type": "modify",
      "old_id": "f6ce4dca4a238a9d9b5598f95e94f3d6f7b532d5",
      "old_mode": 33188,
      "old_path": "src/gn/variables.cc",
      "new_id": "08509eaf8124ae6304273f29c17306b6b4ea837e",
      "new_mode": 33188,
      "new_path": "src/gn/variables.cc"
    },
    {
      "type": "modify",
      "old_id": "93a97a6ea136c848a3a4aa79a59eb5a392221b23",
      "old_mode": 33188,
      "old_path": "src/gn/variables.h",
      "new_id": "c684caf3a099d5faa35643232ac96c88cbf99ab2",
      "new_mode": 33188,
      "new_path": "src/gn/variables.h"
    }
  ]
}
