Index: testing/iossim/iossim.gyp |
diff --git a/testing/iossim/iossim.gyp b/testing/iossim/iossim.gyp |
index 2894be0f82b1df9560543b789a65979c17012be3..45601f4742b3806fb1dc9c596fa3b74f01d5089c 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', |
+ ], |
+ }, |
+ ], |
+ }, |
+ ], |
+ }, |
+ ], |
], |
} |