diff options
-rw-r--r-- | breakpad/breakpad.gyp | 25 | ||||
-rw-r--r-- | build/ios/mac_build.gypi | 8 | ||||
-rw-r--r-- | testing/iossim/iossim.gyp | 189 | ||||
-rw-r--r-- | third_party/protobuf/protobuf.gyp | 63 |
4 files changed, 179 insertions, 106 deletions
diff --git a/breakpad/breakpad.gyp b/breakpad/breakpad.gyp index b121ced..e8114f4 100644 --- a/breakpad/breakpad.gyp +++ b/breakpad/breakpad.gyp @@ -718,12 +718,24 @@ ], }], [ 'OS=="ios"', { + 'variables': { + 'ninja_output_dir': 'ninja-breakpad', + 'ninja_product_dir': + '<(DEPTH)/xcodebuild/<(ninja_output_dir)/<(CONFIGURATION_NAME)', + }, + # Generation 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). 'targets': [ { - 'target_name': 'breakpad_utilities', + 'target_name': 'compile_breakpad_utilities', 'type': 'none', 'variables': { - 'ninja_output_dir': 'ninja-breakpad', # Gyp to rerun 're_run_targets': [ 'breakpad/breakpad.gyp', @@ -742,6 +754,15 @@ ], 'message': 'Generating the breakpad executables', }, + ], + }, + { + 'target_name': 'breakpad_utilities', + 'type': 'none', + 'dependencies': [ + 'compile_breakpad_utilities', + ], + 'actions': [ { 'action_name': 'copy dump_syms', 'inputs': [ diff --git a/build/ios/mac_build.gypi b/build/ios/mac_build.gypi index 9a73918..775ff26 100644 --- a/build/ios/mac_build.gypi +++ b/build/ios/mac_build.gypi @@ -13,6 +13,10 @@ # # The name of a directory used for ninja. This cannot be shared with # # another mac build. # 'ninja_output_dir': 'ninja-foo', +# # The full path to the location in which the ninja executable should be +# # placed. This cannot be shared with another mac build. +# 'ninja_product_dir': +# '<(DEPTH)/xcodebuild/<(ninja_output_dir)/<(CONFIGURATION_NAME)', # # The list of all the gyp files that contain the targets to run. # 're_run_targets': [ # 'foo.gyp', @@ -35,10 +39,6 @@ # } { 'variables': { - # Convenience variable pointing to the ninja product directory. - 'ninja_product_dir': - '<(DEPTH)/xcodebuild/<(ninja_output_dir)/<(CONFIGURATION_NAME)', - # Common ninja command line flags. 'ninja_cmd': [ # Bounce through clean_env to clean up the environment so things diff --git a/testing/iossim/iossim.gyp b/testing/iossim/iossim.gyp index 2894be0..45601f4 100644 --- a/testing/iossim/iossim.gyp +++ b/testing/iossim/iossim.gyp @@ -3,91 +3,118 @@ # found in the LICENSE file. { - 'targets': [ - { - 'target_name': 'iossim', - 'conditions': [ - ['OS != "ios"', { - 'type': 'executable', - 'variables': { - 'developer_dir': '<!(xcode-select -print-path)', - 'iphone_sim_path': '<(developer_dir)/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks', - 'other_frameworks_path': '<(developer_dir)/../OtherFrameworks' - }, - 'dependencies': [ - 'third_party/class-dump/class-dump.gyp:class-dump', - ], - 'include_dirs': [ - '<(INTERMEDIATE_DIR)/iossim', - ], - 'sources': [ - 'iossim.mm', - '<(INTERMEDIATE_DIR)/iossim/iPhoneSimulatorRemoteClient.h', - ], - 'libraries': [ - '$(SDKROOT)/System/Library/Frameworks/Foundation.framework', - ], - 'actions': [ - { - 'action_name': 'generate_iphone_sim_header', - 'inputs': [ - '<(iphone_sim_path)/iPhoneSimulatorRemoteClient.framework/Versions/Current/iPhoneSimulatorRemoteClient', - '<(PRODUCT_DIR)/class-dump', - ], - 'outputs': [ - '<(INTERMEDIATE_DIR)/iossim/iPhoneSimulatorRemoteClient.h' - ], - 'action': [ - # Actions don't provide a way to redirect stdout, so a custom - # script is invoked that will execute the first argument and write - # the output to the file specified as the second argument. - './redirect-stdout.sh', - '<(PRODUCT_DIR)/class-dump -CiPhoneSimulator <(iphone_sim_path)/iPhoneSimulatorRemoteClient.framework', - '<(INTERMEDIATE_DIR)/iossim/iPhoneSimulatorRemoteClient.h', - ], - 'message': 'Generating header', + 'conditions': [ + ['OS != "ios"', { + 'targets': [ + { + 'target_name': 'iossim', + 'type': 'executable', + 'variables': { + 'developer_dir': '<!(xcode-select -print-path)', + 'iphone_sim_path': '<(developer_dir)/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks', + 'other_frameworks_path': '<(developer_dir)/../OtherFrameworks' }, - ], - }, { # else, OS == "ios" - 'type': 'none', - 'variables': { - 'ninja_output_dir': 'ninja-iossim', - # Gyp to rerun - 're_run_targets': [ - 'testing/iossim/iossim.gyp', + 'dependencies': [ + 'third_party/class-dump/class-dump.gyp:class-dump', + ], + 'include_dirs': [ + '<(INTERMEDIATE_DIR)/iossim', + ], + 'sources': [ + 'iossim.mm', + '<(INTERMEDIATE_DIR)/iossim/iPhoneSimulatorRemoteClient.h', + ], + 'libraries': [ + '$(SDKROOT)/System/Library/Frameworks/Foundation.framework', + ], + 'actions': [ + { + 'action_name': 'generate_iphone_sim_header', + 'inputs': [ + '<(iphone_sim_path)/iPhoneSimulatorRemoteClient.framework/Versions/Current/iPhoneSimulatorRemoteClient', + '<(PRODUCT_DIR)/class-dump', + ], + 'outputs': [ + '<(INTERMEDIATE_DIR)/iossim/iPhoneSimulatorRemoteClient.h' + ], + 'action': [ + # Actions don't provide a way to redirect stdout, so a custom + # script is invoked that will execute the first argument and write + # the output to the file specified as the second argument. + './redirect-stdout.sh', + '<(PRODUCT_DIR)/class-dump -CiPhoneSimulator <(iphone_sim_path)/iPhoneSimulatorRemoteClient.framework', + '<(INTERMEDIATE_DIR)/iossim/iPhoneSimulatorRemoteClient.h', + ], + 'message': 'Generating header', + }, ], }, - 'includes': ['../../build/ios/mac_build.gypi'], - 'actions': [ - { - 'action_name': 'compile iossim', - 'inputs': [], - 'outputs': [], - 'action': [ - '<@(ninja_cmd)', - 'iossim', + ], + }, { # else, OS == "ios" + 'variables': { + 'ninja_output_dir': 'ninja-iossim', + 'ninja_product_dir': + '<(DEPTH)/xcodebuild/<(ninja_output_dir)/<(CONFIGURATION_NAME)', + }, + # Generation 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). + 'targets': [ + { + 'target_name': 'compile_iossim', + 'type': 'none', + 'variables': { + # Gyp to rerun + 're_run_targets': [ + 'testing/iossim/iossim.gyp', ], - 'message': 'Generating the iossim executable', }, - { - 'action_name': 'copy iossim', - 'inputs': [ - # TODO(ios): It should be possible to define the input, but - # adding it causes gyp to complain about duplicate id. - # '<(ninja_product_dir)/iossim', - ], - 'outputs': [ - '<(DEPTH)/xcodebuild/<(CONFIGURATION_NAME)/iossim', - ], - 'action': [ - 'cp', - '<(ninja_product_dir)/iossim', - '<(DEPTH)/xcodebuild/<(CONFIGURATION_NAME)/iossim', - ], - }, - ], - }], - ], - }, + 'includes': ['../../build/ios/mac_build.gypi'], + 'actions': [ + { + 'action_name': 'compile iossim', + 'inputs': [], + 'outputs': [], + 'action': [ + '<@(ninja_cmd)', + 'iossim', + ], + 'message': 'Generating the iossim executable', + }, + ], + }, + { + 'target_name': 'iossim', + 'type': 'none', + 'dependencies': [ + 'compile_iossim', + ], + 'actions': [ + { + 'action_name': 'copy iossim', + 'inputs': [ + # TODO(ios): It should be possible to define the input, but + # adding it causes gyp to complain about duplicate id. + # '<(ninja_product_dir)/iossim', + ], + 'outputs': [ + '<(DEPTH)/xcodebuild/<(CONFIGURATION_NAME)/iossim', + ], + 'action': [ + 'cp', + '<(ninja_product_dir)/iossim', + '<(DEPTH)/xcodebuild/<(CONFIGURATION_NAME)/iossim', + ], + }, + ], + }, + ], + }, + ], ], } diff --git a/third_party/protobuf/protobuf.gyp b/third_party/protobuf/protobuf.gyp index 6b060f2..5aa2b4f 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', |