Commit 8176de1e authored by lliabraa@chromium.org's avatar lliabraa@chromium.org

Get iossim to compile with Xcode 6.

Xcode 6 moved the location of the frameworks that iossim depends on and
added a few new dependecies so new header files need to be generated by
the gyp target.

Note that this CL gets iossim to compile but iossim will not launch the
Xcode 6 simulator.

BUG=381213
NOTRY=true
TBR=rohitrao@chromium.org

Review URL: https://codereview.chromium.org/336773002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@278786 0039d316-1c4b-4281-b951-d872f2087c98
parent dabfc883
......@@ -54,6 +54,8 @@ _TEST_CODE_EXCLUDED_PATHS = (
r'chrome[/\\]browser[/\\]automation[/\\].*',
# Non-production example code.
r'mojo[/\\]examples[/\\].*',
# Launcher for running iOS tests on the simulator.
r'testing[/\\]iossim[/\\]iossim\.mm$',
)
_TEST_ONLY_WARNING = (
......
......@@ -12,9 +12,69 @@
'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'
# 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',
],
'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',
],
......@@ -48,9 +108,9 @@
'<(PRODUCT_DIR)/class-dump -I -CiPhoneSimulator <(iphone_sim_path)/DVTiPhoneSimulatorRemoteClient.framework',
'<(INTERMEDIATE_DIR)/iossim/DVTiPhoneSimulatorRemoteClient.h',
],
'message': 'Generating header',
'message': 'Generating DVTiPhoneSimulatorRemoteClient.h',
},
],
], # actions
'xcode_settings': {
'ARCHS': ['x86_64'],
'WARNING_CFLAGS': [
......
......@@ -14,34 +14,53 @@
// For best results, the iOS Simulator application should not be running when
// iossim is invoked.
//
// Headers for the iPhoneSimulatorRemoteClient framework used in this tool are
// generated by class-dump, via GYP.
// Headers for iPhoneSimulatorRemoteClient and other frameworks used in this
// tool are generated by class-dump, via GYP.
// (class-dump is available at http://www.codethecode.com/projects/class-dump/)
//
// However, there are some forward declarations required to get things to
// compile. Also, the DTiPhoneSimulatorSessionDelegate protocol is referenced
// by the iPhoneSimulatorRemoteClient framework, but not defined in the object
// file, so it must be defined here before importing the generated
// iPhoneSimulatorRemoteClient.h file.
// compile.
@class DTiPhoneSimulatorApplicationSpecifier;
@class DTiPhoneSimulatorSession;
@class DTiPhoneSimulatorSessionConfig;
@class DTiPhoneSimulatorSystemRoot;
@class DVTiPhoneSimulatorMessenger;
// TODO(lliabraa): Once all builders are on Xcode 6 this ifdef can be removed
// (crbug.com/385030).
#if defined(IOSSIM_USE_XCODE_6)
@class DVTStackBacktrace;
#import "DVTFoundation.h"
#endif // IOSSIM_USE_XCODE_6
@interface DVTPlatform : NSObject
+ (BOOL)loadAllPlatformsReturningError:(id*)arg1;
@protocol OS_dispatch_queue
@end
@protocol OS_dispatch_source
@end
@protocol OS_dispatch_queue
// TODO(lliabraa): Once all builders are on Xcode 6 this ifdef can be removed
// (crbug.com/385030).
#if defined(IOSSIM_USE_XCODE_6)
@protocol OS_xpc_object
@end
@class DVTDispatchLock;
@protocol SimBridge;
@class SimDeviceSet;
@class SimDeviceType;
@class SimRuntime;
@class SimServiceConnectionManager;
#import "CoreSimulator.h"
#endif // IOSSIM_USE_XCODE_6
@interface DVTPlatform : NSObject
+ (BOOL)loadAllPlatformsReturningError:(id*)arg1;
@end
@class DTiPhoneSimulatorApplicationSpecifier;
@class DTiPhoneSimulatorSession;
@class DTiPhoneSimulatorSessionConfig;
@class DTiPhoneSimulatorSystemRoot;
@class DVTConfinementServiceConnection;
@class DVTDispatchLock;
@class DVTiPhoneSimulatorMessenger;
@class DVTNotificationToken;
@class DVTTask;
// The DTiPhoneSimulatorSessionDelegate protocol is referenced
// by the iPhoneSimulatorRemoteClient framework, but not defined in the object
// file, so it must be defined here before importing the generated
// iPhoneSimulatorRemoteClient.h file.
@protocol DTiPhoneSimulatorSessionDelegate
- (void)session:(DTiPhoneSimulatorSession*)session
didEndWithError:(NSError*)error;
......@@ -49,7 +68,6 @@
didStart:(BOOL)started
withError:(NSError*)error;
@end
#import "DVTiPhoneSimulatorRemoteClient.h"
// An undocumented system log key included in messages from launchd. The value
......@@ -84,9 +102,14 @@ const NSTimeInterval kDefaultSessionStartTimeoutSeconds = 30;
const NSTimeInterval kOutputPollIntervalSeconds = 0.1;
// The path within the developer dir of the private Simulator frameworks.
#if defined(IOSSIM_USE_XCODE_6)
NSString* const kSimulatorFrameworkRelativePath =
@"../SharedFrameworks/DVTiPhoneSimulatorRemoteClient.framework";
#else
NSString* const kSimulatorFrameworkRelativePath =
@"Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/"
@"DVTiPhoneSimulatorRemoteClient.framework";
#endif // IOSSIM_USE_XCODE_6
NSString* const kDVTFoundationRelativePath =
@"../SharedFrameworks/DVTFoundation.framework";
NSString* const kDevToolsFoundationRelativePath =
......@@ -757,6 +780,7 @@ int main(int argc, char* const argv[]) {
exit(kExitInitializationFailure);
}
}
if (!InitializeSimulatorUserHome(simHomePath)) {
LogError(@"Unable to initialize home directory for simulator: %@",
simHomePath);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment