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