blob: 81334a110bc8600bc140e733c1216f08d02c94dc [file] [log] [blame]
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
{
'conditions': [
['OS!="ios" or "<(GENERATOR)"=="ninja"', {
'targets': [
{
'target_name': 'iossim',
'toolsets': ['host'],
'type': 'executable',
'variables': {
'developer_dir': '<!(xcode-select -print-path)',
# TODO(lliabraa): Once all builders are on Xcode 6 this variable can
# be removed and the actions gated by this variable can be run by
# default (crbug.com/385030).
'xcode_version': '<!(xcodebuild -version | grep Xcode | awk \'{print $2}\')',
},
'conditions': [
['xcode_version=="6.0"', {
'variables': {
'iphone_sim_path': '<(developer_dir)/../SharedFrameworks',
},
'defines': [
'IOSSIM_USE_XCODE_6',
],
'xcode_settings': {
# The CoreSimulator.h file generated by class-dump defines a
# property of type |NSString*| and a setter for the property
# that takes a parameter of type |id|. This type mismatch causes
# a compiler warning, so turn off -Werror.
'GCC_TREAT_WARNINGS_AS_ERRORS': 'NO',
},
'actions': [
{
'action_name': 'generate_dvt_foundation_header',
'inputs': [
'<(iphone_sim_path)/DVTFoundation.framework/Versions/Current/DVTFoundation',
'<(PRODUCT_DIR)/class-dump',
],
'outputs': [
'<(INTERMEDIATE_DIR)/iossim/DVTFoundation.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.
# -I sorts classes, categories, and protocols by inheritance.
# -C <regex> only displays classes matching regular expression.
'./redirect-stdout.sh',
'<(PRODUCT_DIR)/class-dump -CDVTStackBacktrace|DVTInvalidation|DVTMixIn <(iphone_sim_path)/DVTFoundation.framework',
'<(INTERMEDIATE_DIR)/iossim/DVTFoundation.h',
],
'message': 'Generating DVTFoundation.h',
},
{
'action_name': 'generate_dvt_core_simulator',
'inputs': [
'<(developer_dir)/Library/PrivateFrameworks/CoreSimulator.framework/Versions/Current/CoreSimulator',
'<(PRODUCT_DIR)/class-dump',
],
'outputs': [
'<(INTERMEDIATE_DIR)/iossim/CoreSimulator.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.
# -I sorts classes, categories, and protocols by inheritance.
# -C <regex> only displays classes matching regular expression.
'./redirect-stdout.sh',
'<(PRODUCT_DIR)/class-dump -CSim <(developer_dir)/Library/PrivateFrameworks/CoreSimulator.framework',
'<(INTERMEDIATE_DIR)/iossim/CoreSimulator.h',
],
'message': 'Generating CoreSimulator.h',
},
], # actions
}, { # else: xcode_version!="6"
'variables': {
'iphone_sim_path': '<(developer_dir)/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks',
},
}], # xcode_version
], # conditions
'dependencies': [
'third_party/class-dump/class-dump.gyp:class-dump#host',
],
'include_dirs': [
'<(INTERMEDIATE_DIR)/iossim',
],
'sources': [
'iossim.mm',
'<(INTERMEDIATE_DIR)/iossim/iPhoneSimulatorRemoteClient.h',
],
'libraries': [
'$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
],
'actions': [
{
'action_name': 'generate_dvt_iphone_sim_header',
'inputs': [
'<(iphone_sim_path)/DVTiPhoneSimulatorRemoteClient.framework/Versions/Current/DVTiPhoneSimulatorRemoteClient',
'<(PRODUCT_DIR)/class-dump',
],
'outputs': [
'<(INTERMEDIATE_DIR)/iossim/DVTiPhoneSimulatorRemoteClient.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.
# -I sorts classes, categories, and protocols by inheritance.
# -C <regex> only displays classes matching regular expression.
'./redirect-stdout.sh',
'<(PRODUCT_DIR)/class-dump -I -CiPhoneSimulator <(iphone_sim_path)/DVTiPhoneSimulatorRemoteClient.framework',
'<(INTERMEDIATE_DIR)/iossim/DVTiPhoneSimulatorRemoteClient.h',
],
'message': 'Generating DVTiPhoneSimulatorRemoteClient.h',
},
], # actions
'xcode_settings': {
'ARCHS': ['x86_64'],
'WARNING_CFLAGS': [
'-Wno-objc-property-no-attribute',
],
},
},
],
}, { # else, OS=="ios" and "<(GENERATOR)"!="ninja"
'variables': {
'ninja_output_dir': 'ninja-iossim',
'ninja_product_dir':
'$(SYMROOT)/<(ninja_output_dir)/<(CONFIGURATION_NAME)',
},
'targets': [
{
'target_name': 'iossim',
'type': 'none',
'variables': {
# Gyp to rerun
're_run_targets': [
'testing/iossim/iossim.gyp',
],
},
'includes': ['../../build/ios/mac_build.gypi'],
'actions': [
{
'action_name': 'compile iossim',
'inputs': [],
'outputs': [],
'action': [
'<@(ninja_cmd)',
'iossim',
],
'message': 'Generating the iossim executable',
},
],
},
],
}],
],
}