| Index: third_party/protobuf/protobuf.gyp
 | 
| diff --git a/third_party/protobuf/protobuf.gyp b/third_party/protobuf/protobuf.gyp
 | 
| index 6b060f2d5c6efad576562b588fbc8b5e2580159d..5aa2b4f6b278ee41ea34c014670e49c10ff6c58e 100644
 | 
| --- a/third_party/protobuf/protobuf.gyp
 | 
| +++ b/third_party/protobuf/protobuf.gyp
 | 
| @@ -24,7 +24,47 @@
 | 
|            'WIN32_LEAN_AND_MEAN',  # Protobuf defines this itself.
 | 
|          ],
 | 
|        },
 | 
| -    }]
 | 
| +    }],
 | 
| +    ['OS=="ios"', {
 | 
| +      'variables': {
 | 
| +        'ninja_output_dir': 'ninja-protoc',
 | 
| +        'ninja_product_dir':
 | 
| +          '<(DEPTH)/xcodebuild/<(ninja_output_dir)/<(CONFIGURATION_NAME)',
 | 
| +        # Gyp to rerun
 | 
| +        're_run_targets': [
 | 
| +          'third_party/protobuf/protobuf.gyp',
 | 
| +        ],
 | 
| +      },
 | 
| +      'targets': [
 | 
| +        {
 | 
| +          # On iOS, generating protoc is done via two actions: (1) compiling
 | 
| +          # the executable with ninja, and (2) copying the executable into a
 | 
| +          # location that is shared with other projects. These actions are
 | 
| +          # separated into two targets in order to be able to specify that the
 | 
| +          # second action should not run until the first action finishes (since
 | 
| +          # the ordering of multiple actions in one target is defined only by
 | 
| +          # inputs and outputs, and it's impossible to set correct inputs for
 | 
| +          # the ninja build, so setting all the inputs and outputs isn't an
 | 
| +          # option). The first target is given here; the second target is the
 | 
| +          # normal protoc target under the condition that "OS==iOS".
 | 
| +          'target_name': 'compile_protoc',
 | 
| +          'type': 'none',
 | 
| +          'includes': ['../../build/ios/mac_build.gypi'],
 | 
| +          'actions': [
 | 
| +            {
 | 
| +              'action_name': 'compile protoc',
 | 
| +              'inputs': [],
 | 
| +              'outputs': [],
 | 
| +              'action': [
 | 
| +                '<@(ninja_cmd)',
 | 
| +                'protoc',
 | 
| +              ],
 | 
| +              'message': 'Generating the C++ protocol buffers compiler',
 | 
| +            },
 | 
| +          ],
 | 
| +        },
 | 
| +      ],
 | 
| +    }],
 | 
|    ],
 | 
|    'targets': [
 | 
|      # The "lite" lib is about 1/7th the size of the heavy lib,
 | 
| @@ -236,26 +276,11 @@
 | 
|            ],
 | 
|          }, {  # else, OS=="ios"
 | 
|            'type': 'none',
 | 
| -          'variables': {
 | 
| -            'ninja_output_dir': 'ninja-protoc',
 | 
| -            # Gyp to rerun
 | 
| -            're_run_targets': [
 | 
| -              'third_party/protobuf/protobuf.gyp',
 | 
| -            ],
 | 
| -          },
 | 
| -          'includes': ['../../build/ios/mac_build.gypi'],
 | 
| +          'dependencies': [
 | 
| +            'compile_protoc',
 | 
| +          ],
 | 
|            'actions': [
 | 
|              {
 | 
| -              'action_name': 'compile protoc',
 | 
| -              'inputs': [],
 | 
| -              'outputs': [],
 | 
| -              'action': [
 | 
| -                '<@(ninja_cmd)',
 | 
| -                'protoc',
 | 
| -              ],
 | 
| -              'message': 'Generating the C++ protocol buffers compiler',
 | 
| -            },
 | 
| -            {
 | 
|                'action_name': 'copy protoc',
 | 
|                'inputs': [
 | 
|                  '<(ninja_product_dir)/protoc',
 | 
| 
 |