forked from qt-creator/qt-creator
iOS: Removed ios_sim tool source. simctl is used for app deployment on iOS Simulator
Task-number: QTCREATORBUG-16942 Change-Id: Ie50bdfdbf9005e383a2753a3c6081a563a175f61 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
7
src/tools/3rdparty/3rdparty.pro
vendored
7
src/tools/3rdparty/3rdparty.pro
vendored
@@ -1,10 +1,3 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
mac {
|
||||
SUBDIRS += \
|
||||
iossim \
|
||||
iossim_1_8_2
|
||||
}
|
||||
|
||||
isEmpty(BUILD_CPLUSPLUS_TOOLS):BUILD_CPLUSPLUS_TOOLS=$$(BUILD_CPLUSPLUS_TOOLS)
|
||||
!isEmpty(BUILD_CPLUSPLUS_TOOLS): SUBDIRS += cplusplus-keywordgen
|
||||
|
31
src/tools/3rdparty/iossim/IOSSIM_LICENSE
vendored
31
src/tools/3rdparty/iossim/IOSSIM_LICENSE
vendored
@@ -1,31 +0,0 @@
|
||||
Author: Landon Fuller <landonf@plausiblelabs.com>
|
||||
Copyright (c) 2008-2011 Plausible Labs Cooperative, Inc.
|
||||
All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Modifications made by the following entities are licensed as above:
|
||||
- Jeff Haynie, Appcelerator, Inc.
|
||||
- https://github.com/hborders
|
||||
- http://pivotallabs.com/users/scoward/blog
|
||||
- Eloy Duran, Fingertips <eloy@fngtps.com>
|
||||
- Fawzi Mohamed, digia <fawzi.mohamed@digia.com>
|
16
src/tools/3rdparty/iossim/Info.plist
vendored
16
src/tools/3rdparty/iossim/Info.plist
vendored
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>iossim</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.qt-project.qt-creator.iossim</string>
|
||||
<key>LSUIElement</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
@@ -1,450 +0,0 @@
|
||||
//
|
||||
// Generated by class-dump 3.5 (64 bit).
|
||||
//
|
||||
// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard.
|
||||
//
|
||||
|
||||
#pragma mark Function Pointers and Blocks
|
||||
|
||||
typedef void (*CDUnknownFunctionPointerType)(void); // return type and parameters are unknown
|
||||
|
||||
typedef void (^CDUnknownBlockType)(void); // return type and parameters are unknown
|
||||
|
||||
#pragma mark Named Structures
|
||||
|
||||
/*struct CGSize {
|
||||
double width;
|
||||
double height;
|
||||
};*/
|
||||
|
||||
#pragma mark -
|
||||
|
||||
//
|
||||
// File: $(DEVELOPER_DIR)/Library/PrivateFrameworks/CoreSimulator.framework/Versions/A/CoreSimulator
|
||||
// UUID: C7A40E7B-B10C-3CB4-85F5-42071E2E5C4C
|
||||
//
|
||||
// Arch: x86_64
|
||||
// Current version: 84.0.0
|
||||
// Compatibility version: 1.0.0
|
||||
// Source version: 84.0.0.0.0
|
||||
// Minimum Mac OS X version: 10.9.0
|
||||
// SDK version: 10.9.0
|
||||
//
|
||||
// Objective-C Garbage Collection: Unsupported
|
||||
//
|
||||
|
||||
@protocol OS_dispatch_queue;
|
||||
@protocol OS_xpc_object;
|
||||
@protocol SimBridge;
|
||||
@class SimDevice;
|
||||
@class SimDeviceSet;
|
||||
@class SimDeviceType;
|
||||
@class SimRuntime;
|
||||
@class SimDeviceNotificationManager;
|
||||
@class SimServiceConnectionManager;
|
||||
|
||||
@protocol SimDeviceNotifier
|
||||
- (BOOL)unregisterNotificationHandler:(unsigned long long)arg1 error:(id *)arg2;
|
||||
- (unsigned long long)registerNotificationHandlerOnQueue:(NSObject<OS_dispatch_queue> *)arg1 handler:(void (^)(NSDictionary *))arg2;
|
||||
- (unsigned long long)registerNotificationHandler:(void (^)(NSDictionary *))arg1;
|
||||
@end
|
||||
|
||||
@interface NSArray (argv)
|
||||
- (void)freeArgv:(char **)arg1;
|
||||
- (char **)argv;
|
||||
@end
|
||||
|
||||
@interface NSDictionary (envp)
|
||||
- (void)freeEnvp:(char **)arg1;
|
||||
- (char **)envp;
|
||||
@end
|
||||
|
||||
@interface NSError (SimError)
|
||||
+ (id)errorFromXPCDict:(id)arg1;
|
||||
+ (id)errorWithSimErrno:(int)arg1 localizedDescription:(id)arg2;
|
||||
+ (id)errorWithSimErrno:(int)arg1 userInfo:(id)arg2;
|
||||
+ (id)errorWithSimErrno:(int)arg1;
|
||||
- (id)xpcDict;
|
||||
@end
|
||||
|
||||
@interface NSString (cputype)
|
||||
+ (id)stringForCPUType:(int)arg1;
|
||||
- (int)cputype;
|
||||
@end
|
||||
|
||||
@interface NSUserDefaults (SimDefaults)
|
||||
+ (id)simulatorDefaults;
|
||||
@end
|
||||
|
||||
@interface SimDevice : NSObject <SimDeviceNotifier>
|
||||
{
|
||||
unsigned long long _state;
|
||||
NSString *_name;
|
||||
NSDictionary *_uiWindowProperties;
|
||||
SimDeviceType *_deviceType;
|
||||
SimRuntime *_runtime;
|
||||
NSUUID *_UDID;
|
||||
SimDeviceSet *_deviceSet;
|
||||
SimServiceConnectionManager *_connectionManager;
|
||||
NSString *_setPath;
|
||||
SimDeviceNotificationManager *_notificationManager;
|
||||
NSObject<OS_dispatch_queue> *_bootstrapQueue;
|
||||
NSMutableDictionary *_registeredServices;
|
||||
NSObject<OS_dispatch_queue> *_stateVariableQueue;
|
||||
NSMachPort *_deathTriggerPort;
|
||||
NSMachPort *_hostSupportPort;
|
||||
NSMachPort *_simBridgePort;
|
||||
NSDistantObject<SimBridge> *_simBridgeDistantObject;
|
||||
}
|
||||
|
||||
+ (id)simDevice:(id)arg1 UDID:(id)arg2 deviceType:(id)arg3 runtime:(id)arg4 state:(unsigned long long)arg5 connectionManager:(id)arg6 setPath:(id)arg7;
|
||||
+ (id)simDeviceAtPath:(id)arg1;
|
||||
+ (id)createDeviceWithName:(id)arg1 setPath:(id)arg2 deviceType:(id)arg3 runtime:(id)arg4;
|
||||
+ (BOOL)isValidState:(unsigned long long)arg1;
|
||||
@property(retain, nonatomic) NSDistantObject<SimBridge> *simBridgeDistantObject; // @synthesize simBridgeDistantObject=_simBridgeDistantObject;
|
||||
@property(retain, nonatomic) NSMachPort *simBridgePort; // @synthesize simBridgePort=_simBridgePort;
|
||||
@property(retain, nonatomic) NSMachPort *hostSupportPort; // @synthesize hostSupportPort=_hostSupportPort;
|
||||
@property(retain) NSMachPort *deathTriggerPort; // @synthesize deathTriggerPort=_deathTriggerPort;
|
||||
@property(retain) NSObject<OS_dispatch_queue> *stateVariableQueue; // @synthesize stateVariableQueue=_stateVariableQueue;
|
||||
@property(retain) NSMutableDictionary *registeredServices; // @synthesize registeredServices=_registeredServices;
|
||||
@property(retain) NSObject<OS_dispatch_queue> *bootstrapQueue; // @synthesize bootstrapQueue=_bootstrapQueue;
|
||||
@property(retain) SimDeviceNotificationManager *notificationManager; // @synthesize notificationManager=_notificationManager;
|
||||
@property(copy) NSString *setPath; // @synthesize setPath=_setPath;
|
||||
@property(retain) SimServiceConnectionManager *connectionManager; // @synthesize connectionManager=_connectionManager;
|
||||
@property(readonly) SimDeviceSet *deviceSet; // @synthesize deviceSet=_deviceSet;
|
||||
@property(copy) NSUUID *UDID; // @synthesize UDID=_UDID;
|
||||
@property(retain) SimRuntime *runtime; // @synthesize runtime=_runtime;
|
||||
@property(retain) SimDeviceType *deviceType; // @synthesize deviceType=_deviceType;
|
||||
//- (void).cxx_destruct;
|
||||
- (BOOL)isAvailableWithError:(id *)arg1;
|
||||
@property(readonly) BOOL available;
|
||||
- (int)launchApplicationWithID:(id)arg1 options:(id)arg2 error:(id *)arg3;
|
||||
- (void)launchApplicationAsyncWithID:(id)arg1 options:(id)arg2 completionHandler:(CDUnknownBlockType)arg3;
|
||||
- (id)installedAppsWithError:(id *)arg1;
|
||||
- (BOOL)applicationIsInstalled:(id)arg1 type:(id *)arg2 error:(id *)arg3;
|
||||
- (BOOL)uninstallApplication:(id)arg1 withOptions:(id)arg2 error:(id *)arg3;
|
||||
- (BOOL)installApplication:(id)arg1 withOptions:(id)arg2 error:(id *)arg3;
|
||||
- (BOOL)setKeyboardLanguage:(id)arg1 error:(id *)arg2;
|
||||
- (BOOL)addPhoto:(id)arg1 error:(id *)arg2;
|
||||
- (BOOL)openURL:(id)arg1 error:(id *)arg2;
|
||||
- (void)simBridgeSync:(CDUnknownBlockType)arg1;
|
||||
- (void)simBridgeAsync:(CDUnknownBlockType)arg1;
|
||||
- (void)simBridgeCommon:(CDUnknownBlockType)arg1;
|
||||
- (long long)compare:(id)arg1;
|
||||
- (id)newDeviceNotification;
|
||||
- (id)createXPCNotification:(const char *)arg1;
|
||||
- (id)createXPCRequest:(const char *)arg1;
|
||||
- (void)handleXPCRequestSpawn:(id)arg1 peer:(id)arg2;
|
||||
- (void)handleXPCRequestGetenv:(id)arg1 peer:(id)arg2;
|
||||
- (void)handleXPCRequestLookup:(id)arg1 peer:(id)arg2;
|
||||
- (void)handleXPCRequestRegister:(id)arg1 peer:(id)arg2;
|
||||
- (void)handleXPCRequestRestore:(id)arg1 peer:(id)arg2;
|
||||
- (void)handleXPCRequestUpdateUIWindow:(id)arg1 peer:(id)arg2;
|
||||
- (void)handleXPCRequestErase:(id)arg1 peer:(id)arg2;
|
||||
- (void)handleXPCRequestUpgrade:(id)arg1 peer:(id)arg2;
|
||||
- (void)handleXPCRequestShutdown:(id)arg1 peer:(id)arg2;
|
||||
- (void)handleXPCRequestBoot:(id)arg1 peer:(id)arg2;
|
||||
- (void)handleXPCRequestRename:(id)arg1 peer:(id)arg2;
|
||||
- (void)handleXPCRequest:(id)arg1 peer:(id)arg2;
|
||||
- (void)handleXPCNotificationDeviceUIWindowPropertiesChanged:(id)arg1;
|
||||
- (void)handleXPCNotificationDeviceRenamed:(id)arg1;
|
||||
- (void)handleXPCNotificationDeviceStateChanged:(id)arg1;
|
||||
- (void)handleXPCNotification:(id)arg1;
|
||||
@property(copy) NSDictionary *uiWindowProperties;
|
||||
@property(copy) NSString *name;
|
||||
@property unsigned long long state;
|
||||
- (id)stateString;
|
||||
- (BOOL)unregisterNotificationHandler:(unsigned long long)arg1 error:(id *)arg2;
|
||||
- (unsigned long long)registerNotificationHandlerOnQueue:(id)arg1 handler:(CDUnknownBlockType)arg2;
|
||||
- (unsigned long long)registerNotificationHandler:(CDUnknownBlockType)arg1;
|
||||
- (void)simulateMemoryWarning;
|
||||
- (id)memoryWarningFilePath;
|
||||
@property(readonly, copy) NSString *logPath;
|
||||
- (id)dataPath;
|
||||
- (id)devicePath;
|
||||
- (id)environment;
|
||||
- (int)_spawnFromSelfWithPath:(id)arg1 options:(id)arg2 terminationHandler:(CDUnknownBlockType)arg3 error:(id *)arg4;
|
||||
- (int)_spawnFromLaunchdWithPath:(id)arg1 options:(id)arg2 terminationHandler:(CDUnknownBlockType)arg3 error:(id *)arg4;
|
||||
- (int)spawnWithPath:(id)arg1 options:(id)arg2 terminationHandler:(CDUnknownBlockType)arg3 error:(id *)arg4;
|
||||
- (void)spawnAsyncWithPath:(id)arg1 options:(id)arg2 terminationHandler:(CDUnknownBlockType)arg3 completionHandler:(CDUnknownBlockType)arg4;
|
||||
- (BOOL)registerPort:(unsigned int)arg1 service:(id)arg2 error:(id *)arg3;
|
||||
- (unsigned int)lookup:(id)arg1 error:(id *)arg2;
|
||||
- (unsigned int)_lookup:(id)arg1 error:(id *)arg2;
|
||||
- (id)getenv:(id)arg1 error:(id *)arg2;
|
||||
- (BOOL)restoreContentsAndSettingsFromDevice:(id)arg1 error:(id *)arg2;
|
||||
- (void)restoreContentsAndSettingsAsyncFromDevice:(id)arg1 completionHandler:(CDUnknownBlockType)arg2;
|
||||
- (BOOL)updateUIWindowProperties:(id)arg1 error:(id *)arg2;
|
||||
- (void)updateAsyncUIWindowProperties:(id)arg1 completionHandler:(CDUnknownBlockType)arg2;
|
||||
- (void)_sendUIWindowPropertiesToDevice;
|
||||
- (BOOL)eraseContentsAndSettingsWithError:(id *)arg1;
|
||||
- (void)eraseContentsAndSettingsAsyncWithCompletionHandler:(CDUnknownBlockType)arg1;
|
||||
- (BOOL)upgradeToRuntime:(id)arg1 error:(id *)arg2;
|
||||
- (void)upgradeAsyncToRuntime:(id)arg1 completionHandler:(CDUnknownBlockType)arg2;
|
||||
- (BOOL)rename:(id)arg1 error:(id *)arg2;
|
||||
- (void)renameAsync:(id)arg1 completionHandler:(CDUnknownBlockType)arg2;
|
||||
- (BOOL)shutdownWithError:(id *)arg1;
|
||||
- (BOOL)_shutdownWithError:(id *)arg1;
|
||||
- (void)shutdownAsyncWithCompletionHandler:(CDUnknownBlockType)arg1;
|
||||
- (BOOL)bootWithOptions:(id)arg1 error:(id *)arg2;
|
||||
- (void)bootAsyncWithOptions:(id)arg1 completionHandler:(CDUnknownBlockType)arg2;
|
||||
- (void)launchdDeathHandlerWithDeathPort:(id)arg1;
|
||||
- (BOOL)startLaunchdWithDeathPort:(id)arg1 deathHandler:(CDUnknownBlockType)arg2 error:(id *)arg3;
|
||||
- (void)registerPortsWithLaunchd;
|
||||
@property(readonly) NSArray *launchDaemonsPaths;
|
||||
- (BOOL)removeLaunchdJobWithError:(id *)arg1;
|
||||
- (BOOL)createLaunchdJobWithError:(id *)arg1 extraEnvironment:(id)arg2;
|
||||
- (BOOL)clearTmpWithError:(id *)arg1;
|
||||
- (BOOL)ensureLogPathsWithError:(id *)arg1;
|
||||
- (BOOL)supportsFeature:(id)arg1;
|
||||
@property(readonly, copy) NSString *launchdJobName;
|
||||
- (void)saveToDisk;
|
||||
- (id)saveStateDict;
|
||||
- (void)validateAndFixState;
|
||||
@property(readonly, copy) NSString *descriptiveName;
|
||||
- (id)description;
|
||||
- (void)dealloc;
|
||||
- (id)initDevice:(id)arg1 UDID:(id)arg2 deviceType:(id)arg3 runtime:(id)arg4 state:(unsigned long long)arg5 connectionManager:(id)arg6 setPath:(id)arg7;
|
||||
|
||||
@end
|
||||
|
||||
@interface SimDeviceNotificationManager : NSObject <SimDeviceNotifier>
|
||||
{
|
||||
NSObject<OS_dispatch_queue> *_handlersQueue;
|
||||
NSMutableDictionary *_handlers;
|
||||
unsigned long long _next_regID;
|
||||
NSObject<OS_dispatch_queue> *_sendQueue;
|
||||
}
|
||||
|
||||
@property(retain) NSObject<OS_dispatch_queue> *sendQueue; // @synthesize sendQueue=_sendQueue;
|
||||
@property unsigned long long next_regID; // @synthesize next_regID=_next_regID;
|
||||
@property(retain) NSMutableDictionary *handlers; // @synthesize handlers=_handlers;
|
||||
@property(retain) NSObject<OS_dispatch_queue> *handlersQueue; // @synthesize handlersQueue=_handlersQueue;
|
||||
//- (void).cxx_destruct;
|
||||
- (void)sendNotification:(id)arg1;
|
||||
- (BOOL)unregisterNotificationHandler:(unsigned long long)arg1 error:(id *)arg2;
|
||||
- (unsigned long long)registerNotificationHandlerOnQueue:(id)arg1 handler:(CDUnknownBlockType)arg2;
|
||||
- (unsigned long long)registerNotificationHandler:(CDUnknownBlockType)arg1;
|
||||
- (void)dealloc;
|
||||
- (id)init;
|
||||
|
||||
@end
|
||||
|
||||
@interface SimDeviceSet : NSObject <SimDeviceNotifier>
|
||||
{
|
||||
NSString *_setPath;
|
||||
NSObject<OS_dispatch_queue> *_devicesQueue;
|
||||
NSMutableDictionary *__devicesByUDID;
|
||||
NSMutableDictionary *_devicesNotificationRegIDs;
|
||||
SimServiceConnectionManager *_connectionManager;
|
||||
SimDeviceNotificationManager *_notificationManager;
|
||||
}
|
||||
|
||||
+ (id)setForSetPath:(id)arg1;
|
||||
+ (id)defaultSet;
|
||||
+ (id)defaultSetPath;
|
||||
@property(retain) SimDeviceNotificationManager *notificationManager; // @synthesize notificationManager=_notificationManager;
|
||||
@property(retain) SimServiceConnectionManager *connectionManager; // @synthesize connectionManager=_connectionManager;
|
||||
@property(retain) NSMutableDictionary *devicesNotificationRegIDs; // @synthesize devicesNotificationRegIDs=_devicesNotificationRegIDs;
|
||||
@property(retain) NSMutableDictionary *_devicesByUDID; // @synthesize _devicesByUDID=__devicesByUDID;
|
||||
@property(retain) NSObject<OS_dispatch_queue> *devicesQueue; // @synthesize devicesQueue=_devicesQueue;
|
||||
@property(copy) NSString *setPath; // @synthesize setPath=_setPath;
|
||||
//- (void).cxx_destruct;
|
||||
- (void)handleXPCRequestDeleteDevice:(id)arg1 peer:(id)arg2 device:(id)arg3;
|
||||
- (void)handleXPCRequestCreateDevice:(id)arg1 peer:(id)arg2;
|
||||
- (void)handleXPCRequest:(id)arg1 peer:(id)arg2;
|
||||
- (void)handleXPCNotificationDeviceRemoved:(id)arg1;
|
||||
- (void)handleXPCNotificationDeviceAdded:(id)arg1;
|
||||
- (void)handleXPCNotification:(id)arg1;
|
||||
- (BOOL)deleteDevice:(id)arg1 error:(id *)arg2;
|
||||
- (void)deleteDeviceAsync:(id)arg1 completionHandler:(CDUnknownBlockType)arg2;
|
||||
- (id)createDeviceWithType:(id)arg1 runtime:(id)arg2 name:(id)arg3 error:(id *)arg4;
|
||||
- (void)createDeviceAsyncWithType:(id)arg1 runtime:(id)arg2 name:(id)arg3 completionHandler:(CDUnknownBlockType)arg4;
|
||||
- (BOOL)unregisterNotificationHandler:(unsigned long long)arg1 error:(id *)arg2;
|
||||
- (unsigned long long)registerNotificationHandlerOnQueue:(id)arg1 handler:(CDUnknownBlockType)arg2;
|
||||
- (unsigned long long)registerNotificationHandler:(CDUnknownBlockType)arg1;
|
||||
- (void)removeDeviceAsync:(id)arg1;
|
||||
- (void)addDevice:(id)arg1;
|
||||
- (void)addDeviceAsync:(id)arg1;
|
||||
- (void)updateDefaultDevices;
|
||||
- (id)defaultCreatedPlistPath;
|
||||
@property(readonly, copy) NSArray *availableDevices;
|
||||
@property(readonly, copy) NSArray *devices;
|
||||
@property(readonly, copy) NSDictionary *devicesByUDID;
|
||||
- (id)description;
|
||||
- (void)dealloc;
|
||||
- (id)initWithSetPath:(id)arg1;
|
||||
|
||||
@end
|
||||
|
||||
@interface SimDeviceType : NSObject
|
||||
{
|
||||
float _mainScreenScale;
|
||||
unsigned int _minRuntimeVersion;
|
||||
unsigned int _maxRuntimeVersion;
|
||||
NSString *_name;
|
||||
NSString *_identifier;
|
||||
NSString *_modelIdentifier;
|
||||
NSBundle *_bundle;
|
||||
NSArray *_supportedArchs;
|
||||
NSArray *_supportedProductFamilyIDs;
|
||||
NSDictionary *_capabilities;
|
||||
NSString *_springBoardConfigName;
|
||||
NSString *_productClass;
|
||||
NSDictionary *_environment_extra;
|
||||
NSDictionary *_aliases;
|
||||
NSDictionary *_supportedFeatures;
|
||||
NSDictionary *_supportedFeaturesConditionalOnRuntime;
|
||||
struct CGSize _mainScreenSize;
|
||||
struct CGSize _mainScreenDPI;
|
||||
}
|
||||
|
||||
+ (id)supportedDeviceTypesByName;
|
||||
+ (id)supportedDeviceTypesByAlias;
|
||||
+ (id)supportedDeviceTypesByIdentifier;
|
||||
+ (id)supportedDeviceTypes;
|
||||
+ (id)supportedDevices;
|
||||
@property(copy) NSDictionary *supportedFeaturesConditionalOnRuntime; // @synthesize supportedFeaturesConditionalOnRuntime=_supportedFeaturesConditionalOnRuntime;
|
||||
@property(copy) NSDictionary *supportedFeatures; // @synthesize supportedFeatures=_supportedFeatures;
|
||||
@property(copy) NSDictionary *aliases; // @synthesize aliases=_aliases;
|
||||
@property(copy) NSDictionary *environment_extra; // @synthesize environment_extra=_environment_extra;
|
||||
@property(copy) NSString *productClass; // @synthesize productClass=_productClass;
|
||||
@property(copy) NSString *springBoardConfigName; // @synthesize springBoardConfigName=_springBoardConfigName;
|
||||
@property unsigned int maxRuntimeVersion; // @synthesize maxRuntimeVersion=_maxRuntimeVersion;
|
||||
@property unsigned int minRuntimeVersion; // @synthesize minRuntimeVersion=_minRuntimeVersion;
|
||||
@property struct CGSize mainScreenDPI; // @synthesize mainScreenDPI=_mainScreenDPI;
|
||||
@property struct CGSize mainScreenSize; // @synthesize mainScreenSize=_mainScreenSize;
|
||||
@property(copy) NSDictionary *capabilities; // @synthesize capabilities=_capabilities;
|
||||
@property float mainScreenScale; // @synthesize mainScreenScale=_mainScreenScale;
|
||||
@property(copy) NSArray *supportedProductFamilyIDs; // @synthesize supportedProductFamilyIDs=_supportedProductFamilyIDs;
|
||||
@property(copy) NSArray *supportedArchs; // @synthesize supportedArchs=_supportedArchs;
|
||||
@property(retain) NSBundle *bundle; // @synthesize bundle=_bundle;
|
||||
@property(copy) NSString *modelIdentifier; // @synthesize modelIdentifier=_modelIdentifier;
|
||||
@property(copy) NSString *identifier; // @synthesize identifier=_identifier;
|
||||
@property(copy) NSString *name; // @synthesize name=_name;
|
||||
//- (void).cxx_destruct;
|
||||
- (Class)deviceClass;
|
||||
- (long long)compare:(id)arg1;
|
||||
- (BOOL)supportsFeatureConditionally:(id)arg1;
|
||||
- (BOOL)supportsFeature:(id)arg1;
|
||||
- (id)environmentForRuntime:(id)arg1;
|
||||
- (id)environment;
|
||||
@property(readonly, copy) NSString *productFamily;
|
||||
@property(readonly) int productFamilyID;
|
||||
- (id)description;
|
||||
- (void)dealloc;
|
||||
- (id)initWithBundle:(id)arg1;
|
||||
- (id)initWithPath:(id)arg1;
|
||||
- (id)init;
|
||||
|
||||
@end
|
||||
|
||||
@interface SimRuntime : NSObject
|
||||
{
|
||||
unsigned int _version;
|
||||
unsigned int _minHostVersion;
|
||||
unsigned int _maxHostVersion;
|
||||
NSString *_name;
|
||||
NSString *_identifier;
|
||||
NSBundle *_bundle;
|
||||
NSString *_root;
|
||||
NSString *_versionString;
|
||||
NSString *_buildVersionString;
|
||||
NSDictionary *_supportedFeatures;
|
||||
NSDictionary *_supportedFeaturesConditionalOnDeviceType;
|
||||
NSDictionary *_requiredHostServices;
|
||||
NSString *_platformPath;
|
||||
NSArray *_supportedProductFamilyIDs;
|
||||
NSDictionary *_environment_extra;
|
||||
void *_libLaunchHostHandle;
|
||||
NSDictionary *_aliases;
|
||||
}
|
||||
|
||||
+ (id)supportedRuntimesByAlias;
|
||||
+ (id)supportedRuntimesByIdentifier;
|
||||
+ (id)supportedRuntimes;
|
||||
@property unsigned int maxHostVersion; // @synthesize maxHostVersion=_maxHostVersion;
|
||||
@property unsigned int minHostVersion; // @synthesize minHostVersion=_minHostVersion;
|
||||
@property(copy) NSDictionary *aliases; // @synthesize aliases=_aliases;
|
||||
@property(nonatomic) void *libLaunchHostHandle; // @synthesize libLaunchHostHandle=_libLaunchHostHandle;
|
||||
@property(copy) NSDictionary *environment_extra; // @synthesize environment_extra=_environment_extra;
|
||||
@property(copy) NSArray *supportedProductFamilyIDs; // @synthesize supportedProductFamilyIDs=_supportedProductFamilyIDs;
|
||||
@property(copy) NSString *platformPath; // @synthesize platformPath=_platformPath;
|
||||
@property(copy) NSDictionary *requiredHostServices; // @synthesize requiredHostServices=_requiredHostServices;
|
||||
@property(copy) NSDictionary *supportedFeaturesConditionalOnDeviceType; // @synthesize supportedFeaturesConditionalOnDeviceType=_supportedFeaturesConditionalOnDeviceType;
|
||||
@property(copy) NSDictionary *supportedFeatures; // @synthesize supportedFeatures=_supportedFeatures;
|
||||
@property unsigned int version; // @synthesize version=_version;
|
||||
@property(copy) NSString *buildVersionString; // @synthesize buildVersionString=_buildVersionString;
|
||||
@property(copy) NSString *versionString; // @synthesize versionString=_versionString;
|
||||
@property(copy) NSString *root; // @synthesize root=_root;
|
||||
@property(retain) NSBundle *bundle; // @synthesize bundle=_bundle;
|
||||
@property(copy) NSString *identifier; // @synthesize identifier=_identifier;
|
||||
@property(copy) NSString *name; // @synthesize name=_name;
|
||||
//- (void).cxx_destruct;
|
||||
- (id)platformRuntimeOverlay;
|
||||
- (CDUnknownFunctionPointerType)launch_sim_set_death_handler;
|
||||
- (CDUnknownFunctionPointerType)launch_sim_waitpid;
|
||||
- (CDUnknownFunctionPointerType)launch_sim_spawn;
|
||||
- (CDUnknownFunctionPointerType)launch_sim_getenv;
|
||||
- (CDUnknownFunctionPointerType)launch_sim_bind_session_to_port;
|
||||
- (CDUnknownFunctionPointerType)launch_sim_find_endpoint;
|
||||
- (CDUnknownFunctionPointerType)launch_sim_register_endpoint;
|
||||
- (BOOL)isAvailableWithError:(id *)arg1;
|
||||
@property(readonly) BOOL available;
|
||||
- (BOOL)verifyRuntime;
|
||||
- (id)dyld_simPath;
|
||||
- (BOOL)createInitialContentPath:(id)arg1 error:(id *)arg2;
|
||||
- (void)createInitialContentPath:(id)arg1;
|
||||
- (id)sampleContentPath;
|
||||
- (long long)compare:(id)arg1;
|
||||
- (BOOL)supportsFeatureConditionally:(id)arg1;
|
||||
- (BOOL)supportsFeature:(id)arg1;
|
||||
- (BOOL)supportsDeviceType:(id)arg1;
|
||||
- (BOOL)supportsDevice:(id)arg1;
|
||||
- (id)environment;
|
||||
- (id)description;
|
||||
- (void)dealloc;
|
||||
- (id)initWithBundle:(id)arg1;
|
||||
- (id)initWithPath:(id)arg1;
|
||||
- (id)init;
|
||||
|
||||
@end
|
||||
|
||||
@interface SimServiceConnectionManager : NSObject
|
||||
{
|
||||
NSObject<OS_xpc_object> *_serviceConnection;
|
||||
NSObject<OS_dispatch_queue> *_serviceConnectionQueue;
|
||||
NSDate *_lastConnectionTime;
|
||||
}
|
||||
|
||||
+ (void)useService:(BOOL)arg1;
|
||||
+ (id)sharedConnectionManager;
|
||||
@property(retain) NSDate *lastConnectionTime; // @synthesize lastConnectionTime=_lastConnectionTime;
|
||||
@property(retain) NSObject<OS_dispatch_queue> *serviceConnectionQueue; // @synthesize serviceConnectionQueue=_serviceConnectionQueue;
|
||||
@property(retain) NSObject<OS_xpc_object> *serviceConnection; // @synthesize serviceConnection=_serviceConnection;
|
||||
//- (void).cxx_destruct;
|
||||
- (void)handleXPCEvent:(id)arg1;
|
||||
- (void)dealloc;
|
||||
- (BOOL)connect;
|
||||
- (id)init;
|
||||
|
||||
@end
|
||||
|
||||
@interface SimVerifier : NSObject
|
||||
{
|
||||
NSObject<OS_xpc_object> *_serviceConnection;
|
||||
NSObject<OS_dispatch_queue> *_serviceConnectionQueue;
|
||||
}
|
||||
|
||||
+ (id)verificationError:(int)arg1;
|
||||
+ (id)connectionError;
|
||||
+ (id)sharedVerifier;
|
||||
@property(retain) NSObject<OS_dispatch_queue> *serviceConnectionQueue; // @synthesize serviceConnectionQueue=_serviceConnectionQueue;
|
||||
@property(retain) NSObject<OS_xpc_object> *serviceConnection; // @synthesize serviceConnection=_serviceConnection;
|
||||
//- (void).cxx_destruct;
|
||||
- (id)verifyDyldSim:(id)arg1;
|
||||
- (id)verifyAll;
|
||||
- (BOOL)verifyAllWithError:(id *)arg1;
|
||||
- (void)dealloc;
|
||||
- (id)init;
|
||||
|
||||
@end
|
@@ -1,295 +0,0 @@
|
||||
#import "../coresimulator/coresimulator.h"
|
||||
|
||||
//
|
||||
// Generated by class-dump 3.5 (64 bit).
|
||||
//
|
||||
// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard.
|
||||
//
|
||||
|
||||
#pragma mark Blocks
|
||||
|
||||
typedef void (^CDUnknownBlockType)(void); // return type and parameters are unknown
|
||||
|
||||
#pragma mark -
|
||||
|
||||
//
|
||||
// File: $(DEVELOPER_DIR)/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/DVTiPhoneSimulatorRemoteClient.framework/Versions/A/DVTiPhoneSimulatorRemoteClient
|
||||
//
|
||||
// Arch: x86_64
|
||||
// Current version: 12.0.0
|
||||
// Compatibility version: 1.0.0
|
||||
// Source version: 5037.3.0.0.0
|
||||
// Minimum Mac OS X version: 10.8.0
|
||||
// SDK version: 10.9.0
|
||||
//
|
||||
// Objective-C Garbage Collection: Unsupported
|
||||
//
|
||||
// Run path: @loader_path/../../../../PrivateFrameworks/
|
||||
// = $(DEVELOPER_DIR)/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks
|
||||
//
|
||||
|
||||
|
||||
@class DTiPhoneSimulatorApplicationSpecifier;
|
||||
@class DTiPhoneSimulatorSession;
|
||||
@class DTiPhoneSimulatorSessionConfig;
|
||||
@class DTiPhoneSimulatorSystemRoot;
|
||||
@class DVTiPhoneSimulatorMessenger;
|
||||
|
||||
@protocol DTiPhoneSimulatorSessionDelegate
|
||||
|
||||
- (void) session: (DTiPhoneSimulatorSession *) session didEndWithError: (NSError *) error;
|
||||
- (void) session: (DTiPhoneSimulatorSession *) session didStart: (BOOL) started withError: (NSError *) error;
|
||||
|
||||
@end
|
||||
|
||||
@protocol OS_dispatch_source
|
||||
@end
|
||||
@protocol OS_dispatch_queue
|
||||
@end
|
||||
@class DVTDispatchLock;
|
||||
@class DVTConfinementServiceConnection;
|
||||
@class DVTTask;
|
||||
|
||||
|
||||
@interface DVTiPhoneSimulatorMessenger : NSObject
|
||||
{
|
||||
DTiPhoneSimulatorSession *_session;
|
||||
CDUnknownBlockType _readyMessageHandler;
|
||||
CDUnknownBlockType _runningMessageHandler;
|
||||
CDUnknownBlockType _appDidLaunchMessageHandler;
|
||||
CDUnknownBlockType _appDidQuitMessageHandler;
|
||||
CDUnknownBlockType _appPIDExitedMessageHandler;
|
||||
CDUnknownBlockType _toolDidLaunchMessageHandler;
|
||||
}
|
||||
|
||||
+ (id)messengerForSession:(id)arg1 withConnection:(id)arg2;
|
||||
+ (id)messengerForSession:(id)arg1;
|
||||
@property(copy, nonatomic) CDUnknownBlockType toolDidLaunchMessageHandler; // @synthesize toolDidLaunchMessageHandler=_toolDidLaunchMessageHandler;
|
||||
@property(copy, nonatomic) CDUnknownBlockType appPIDExitedMessageHandler; // @synthesize appPIDExitedMessageHandler=_appPIDExitedMessageHandler;
|
||||
@property(copy, nonatomic) CDUnknownBlockType appDidQuitMessageHandler; // @synthesize appDidQuitMessageHandler=_appDidQuitMessageHandler;
|
||||
@property(copy, nonatomic) CDUnknownBlockType appDidLaunchMessageHandler; // @synthesize appDidLaunchMessageHandler=_appDidLaunchMessageHandler;
|
||||
@property(copy, nonatomic) CDUnknownBlockType runningMessageHandler; // @synthesize runningMessageHandler=_runningMessageHandler;
|
||||
@property(copy, nonatomic) CDUnknownBlockType readyMessageHandler; // @synthesize readyMessageHandler=_readyMessageHandler;
|
||||
@property(readonly) DTiPhoneSimulatorSession *session; // @synthesize session=_session;
|
||||
- (void)doUbiquityFetchEvent;
|
||||
- (void)doFetchEventForPID:(int)arg1;
|
||||
- (void)backgroundAllApps:(int)arg1;
|
||||
- (void)startSimulatorToolSessionWithParameters:(id)arg1;
|
||||
- (void)stopSimulatingLocation;
|
||||
- (void)startSimulatingLocationWithLatitude:(id)arg1 longitute:(id)arg2;
|
||||
- (void)endSimulatorSessionWithPID:(int)arg1;
|
||||
- (void)startSimulatorSessionWithRequestInfo:(id)arg1;
|
||||
- (void)clearAllMessageHandlers;
|
||||
- (void)waitPID:(int)arg1 withAppPIDExitedMessagedHandler:(CDUnknownBlockType)arg2;
|
||||
- (void)disconnectFromService;
|
||||
- (BOOL)connectToServiceWithSessionOnLaunch:(BOOL)arg1 simulatorPID:(int *)arg2 error:(id *)arg3;
|
||||
- (id)initWithSession:(id)arg1;
|
||||
|
||||
@end
|
||||
|
||||
@interface DVTiPhoneSimulatorLocalMessenger : DVTiPhoneSimulatorMessenger
|
||||
{
|
||||
BOOL _appTerminationMessageSent;
|
||||
NSObject<OS_dispatch_source> *_pidDispatchSource;
|
||||
DVTTask *_simTask;
|
||||
}
|
||||
|
||||
- (void)doUbiquityFetchEvent;
|
||||
- (void)doFetchEventForPID:(int)arg1;
|
||||
- (void)backgroundAllApps:(int)arg1;
|
||||
- (void)_handleSimulatorToolDidLaunchMessage:(id)arg1;
|
||||
- (void)setToolDidLaunchMessageHandler:(CDUnknownBlockType)arg1;
|
||||
- (void)waitPID:(int)arg1 withAppPIDExitedMessagedHandler:(CDUnknownBlockType)arg2;
|
||||
- (void)_handleSimulatorAppDidQuitMessage:(id)arg1;
|
||||
- (void)setAppDidQuitMessageHandler:(CDUnknownBlockType)arg1;
|
||||
- (void)_handleSimulatorAppDidLaunchMessage:(id)arg1;
|
||||
- (void)setAppDidLaunchMessageHandler:(CDUnknownBlockType)arg1;
|
||||
- (void)_handleSimulatorRunningMessage:(id)arg1;
|
||||
- (void)setRunningMessageHandler:(CDUnknownBlockType)arg1;
|
||||
- (void)_handleSimulatorReadyMessage:(id)arg1;
|
||||
- (void)setReadyMessageHandler:(CDUnknownBlockType)arg1;
|
||||
- (void)startSimulatorToolSessionWithParameters:(id)arg1;
|
||||
- (void)stopSimulatingLocation;
|
||||
- (void)startSimulatingLocationWithLatitude:(id)arg1 longitute:(id)arg2;
|
||||
- (void)endSimulatorSessionWithPID:(int)arg1;
|
||||
- (void)startSimulatorSessionWithRequestInfo:(id)arg1;
|
||||
- (void)clearAllMessageHandlers;
|
||||
- (void)disconnectFromService;
|
||||
- (BOOL)connectToServiceWithSessionOnLaunch:(BOOL)arg1 simulatorPID:(int *)arg2 error:(id *)arg3;
|
||||
- (void)_enableObserver:(BOOL)arg1 forName:(id)arg2 selector:(SEL)arg3;
|
||||
|
||||
@end
|
||||
|
||||
@interface DVTiPhoneSimulatorRemoteMessenger : DVTiPhoneSimulatorMessenger
|
||||
{
|
||||
unsigned long long _commandTag;
|
||||
NSObject<OS_dispatch_queue> *_responseQueue;
|
||||
DVTDispatchLock *_awaitingLock;
|
||||
NSMutableDictionary *_awaitingSemaphores;
|
||||
NSMutableDictionary *_awaitingResponses;
|
||||
NSMutableSet *_waitingAppPIDs;
|
||||
DVTConfinementServiceConnection *_connection;
|
||||
}
|
||||
|
||||
@property(readonly) DVTConfinementServiceConnection *connection; // @synthesize connection=_connection;
|
||||
- (void)handleNotificationResponse:(id)arg1;
|
||||
- (void)waitPID:(int)arg1 withAppPIDExitedMessagedHandler:(CDUnknownBlockType)arg2;
|
||||
- (void)startSimulatorToolSessionWithParameters:(id)arg1;
|
||||
- (void)stopSimulatingLocation;
|
||||
- (void)startSimulatingLocationWithLatitude:(id)arg1 longitute:(id)arg2;
|
||||
- (void)endSimulatorSessionWithPID:(int)arg1;
|
||||
- (void)startSimulatorSessionWithRequestInfo:(id)arg1;
|
||||
- (void)disconnectFromService;
|
||||
- (BOOL)connectToServiceWithSessionOnLaunch:(BOOL)arg1 simulatorPID:(int *)arg2 error:(id *)arg3;
|
||||
- (BOOL)sendTaggedRequest:(id)arg1 awaitingResponse:(id *)arg2 error:(id *)arg3;
|
||||
- (id)nextCommandTag;
|
||||
- (id)awaitResponseWithTag:(id)arg1 error:(id *)arg2;
|
||||
- (void)enqueueResponse:(id)arg1 withTag:(id)arg2 error:(id)arg3;
|
||||
- (BOOL)sendRequest:(id)arg1 withTag:(id)arg2 error:(id *)arg3;
|
||||
- (id)initWithSession:(id)arg1 connection:(id)arg2;
|
||||
|
||||
@end
|
||||
|
||||
@interface DTiPhoneSimulatorSession : NSObject
|
||||
{
|
||||
int _simulatedApplicationPID;
|
||||
int _simulatorPID;
|
||||
NSString *_uuid;
|
||||
id <DTiPhoneSimulatorSessionDelegate> _delegate;
|
||||
NSString *_simulatedAppPath;
|
||||
long long _sessionLifecycleProgress;
|
||||
NSTimer *_timeoutTimer;
|
||||
DTiPhoneSimulatorSessionConfig *_sessionConfig;
|
||||
DVTiPhoneSimulatorMessenger *_messenger;
|
||||
}
|
||||
|
||||
@property(retain) DVTiPhoneSimulatorMessenger *messenger; // @synthesize messenger=_messenger;
|
||||
@property(copy, nonatomic) DTiPhoneSimulatorSessionConfig *sessionConfig; // @synthesize sessionConfig=_sessionConfig;
|
||||
@property(retain, nonatomic) NSTimer *timeoutTimer; // @synthesize timeoutTimer=_timeoutTimer;
|
||||
@property(nonatomic) long long sessionLifecycleProgress; // @synthesize sessionLifecycleProgress=_sessionLifecycleProgress;
|
||||
@property int simulatorPID; // @synthesize simulatorPID=_simulatorPID;
|
||||
@property(copy) NSString *simulatedAppPath; // @synthesize simulatedAppPath=_simulatedAppPath;
|
||||
@property int simulatedApplicationPID; // @synthesize simulatedApplicationPID=_simulatedApplicationPID;
|
||||
@property(retain, nonatomic) id <DTiPhoneSimulatorSessionDelegate> delegate; // @synthesize delegate=_delegate;
|
||||
@property(copy, nonatomic) NSString *uuid; // @synthesize uuid=_uuid;
|
||||
- (void)doUbiquityFetchEvent;
|
||||
- (void)doFetchEventForPID:(int)arg1;
|
||||
- (void)backgroundAllApps:(int)arg1;
|
||||
- (id)_invalidConfigError;
|
||||
- (void)_endSimulatorSession;
|
||||
- (void)_callDelegateResponseFromSessionEndedInfo:(id)arg1;
|
||||
- (void)_callDelegateResponseFromSessionStartedInfo:(id)arg1;
|
||||
- (id)_sessionStartRequestInfoFromConfig:(id)arg1 withError:(id *)arg2;
|
||||
- (BOOL)_startToolSessionInSimulatorWithError:(id *)arg1;
|
||||
- (BOOL)_startApplicationSessionInSimulatorWithError:(id *)arg1;
|
||||
- (BOOL)_startBasicSessionInSimulatorWithError:(id *)arg1;
|
||||
- (BOOL)_startSessionInSimulatorWithError:(id *)arg1;
|
||||
- (BOOL)_handleSessionEndedInSimulator:(id)arg1 notification:(id)arg2;
|
||||
- (void)_handleSessionStartedWithSim:(id)arg1;
|
||||
- (void)_handleSessionStartedInSimulator:(id)arg1;
|
||||
- (void)_handleSimulatorReadyMessage:(id)arg1;
|
||||
- (void)_timeoutElapsed:(id)arg1;
|
||||
- (BOOL)attachedToTargetWithConfig:(id)arg1 error:(id *)arg2;
|
||||
- (void)stopLocationSimulation;
|
||||
- (void)simulateLocationWithLatitude:(id)arg1 longitude:(id)arg2;
|
||||
- (void)requestEndWithTimeout:(double)arg1;
|
||||
- (BOOL)requestStartWithConfig:(id)arg1 timeout:(double)arg2 error:(id *)arg3;
|
||||
- (BOOL)_setUpSimulatorMessengerWithConfig:(id)arg1 error:(id *)arg2;
|
||||
- (id)description;
|
||||
- (void)dealloc;
|
||||
- (id)init;
|
||||
|
||||
@end
|
||||
|
||||
@interface DTiPhoneSimulatorSessionConfig : NSObject <NSCopying>
|
||||
{
|
||||
BOOL _launchForBackgroundFetch;
|
||||
BOOL _simulatedApplicationShouldWaitForDebugger;
|
||||
NSString *_localizedClientName;
|
||||
DTiPhoneSimulatorSystemRoot *_simulatedSystemRoot;
|
||||
NSString *_simulatedDeviceInfoName;
|
||||
NSNumber *_simulatedDeviceFamily;
|
||||
NSString *_simulatedArchitecture;
|
||||
NSNumber *_simulatedDisplayHeight;
|
||||
NSNumber *_simulatedDisplayScale;
|
||||
DTiPhoneSimulatorApplicationSpecifier *_applicationToSimulateOnStart;
|
||||
NSNumber *_pid;
|
||||
NSArray *_simulatedApplicationLaunchArgs;
|
||||
NSDictionary *_simulatedApplicationLaunchEnvironment;
|
||||
NSString *_simulatedApplicationStdOutPath;
|
||||
NSString *_simulatedApplicationStdErrPath;
|
||||
NSFileHandle *_stdinFileHandle;
|
||||
NSFileHandle *_stdoutFileHandle;
|
||||
NSFileHandle *_stderrFileHandle;
|
||||
id _confinementService;
|
||||
}
|
||||
|
||||
+ (id)displayNameForDeviceFamily:(id)arg1;
|
||||
@property(retain) id confinementService; // @synthesize confinementService=_confinementService;
|
||||
@property(retain) NSFileHandle *stderrFileHandle; // @synthesize stderrFileHandle=_stderrFileHandle;
|
||||
@property(retain) NSFileHandle *stdoutFileHandle; // @synthesize stdoutFileHandle=_stdoutFileHandle;
|
||||
@property(retain) NSFileHandle *stdinFileHandle; // @synthesize stdinFileHandle=_stdinFileHandle;
|
||||
@property(copy) NSString *simulatedApplicationStdErrPath; // @synthesize simulatedApplicationStdErrPath=_simulatedApplicationStdErrPath;
|
||||
@property(copy) NSString *simulatedApplicationStdOutPath; // @synthesize simulatedApplicationStdOutPath=_simulatedApplicationStdOutPath;
|
||||
@property BOOL simulatedApplicationShouldWaitForDebugger; // @synthesize simulatedApplicationShouldWaitForDebugger=_simulatedApplicationShouldWaitForDebugger;
|
||||
@property(copy) NSDictionary *simulatedApplicationLaunchEnvironment; // @synthesize simulatedApplicationLaunchEnvironment=_simulatedApplicationLaunchEnvironment;
|
||||
@property(copy) NSArray *simulatedApplicationLaunchArgs; // @synthesize simulatedApplicationLaunchArgs=_simulatedApplicationLaunchArgs;
|
||||
@property(copy) NSNumber *pid; // @synthesize pid=_pid;
|
||||
@property(copy) DTiPhoneSimulatorApplicationSpecifier *applicationToSimulateOnStart; // @synthesize applicationToSimulateOnStart=_applicationToSimulateOnStart;
|
||||
@property(copy) NSNumber *simulatedDisplayScale; // @synthesize simulatedDisplayScale=_simulatedDisplayScale;
|
||||
@property(copy) NSNumber *simulatedDisplayHeight; // @synthesize simulatedDisplayHeight=_simulatedDisplayHeight;
|
||||
@property(copy) NSString *simulatedArchitecture; // @synthesize simulatedArchitecture=_simulatedArchitecture;
|
||||
@property(copy) NSNumber *simulatedDeviceFamily; // @synthesize simulatedDeviceFamily=_simulatedDeviceFamily;
|
||||
@property(retain) NSString *simulatedDeviceInfoName; // @synthesize simulatedDeviceInfoName=_simulatedDeviceInfoName;
|
||||
@property(copy) DTiPhoneSimulatorSystemRoot *simulatedSystemRoot; // @synthesize simulatedSystemRoot=_simulatedSystemRoot;
|
||||
@property(copy) NSString *localizedClientName; // @synthesize localizedClientName=_localizedClientName;
|
||||
@property BOOL launchForBackgroundFetch; // @synthesize launchForBackgroundFetch=_launchForBackgroundFetch;
|
||||
@property(retain) SimDevice *device; // @synthesize device=_device;
|
||||
@property(retain) SimRuntime *runtime; // @synthesize runtime=_runtime;
|
||||
- (id)description;
|
||||
- (id)copyWithZone:(struct _NSZone *)arg1;
|
||||
- (id)init;
|
||||
|
||||
@end
|
||||
|
||||
@interface DTiPhoneSimulatorSystemRoot : NSObject <NSCopying>
|
||||
{
|
||||
NSString *sdkRootPath;
|
||||
NSString *sdkVersion;
|
||||
NSString *sdkDisplayName;
|
||||
}
|
||||
|
||||
+ (id)rootWithSDKVersion:(id)arg1;
|
||||
+ (id)rootWithSDKPath:(id)arg1;
|
||||
+ (id)defaultRoot;
|
||||
+ (id)knownRoots;
|
||||
+ (void)initialize;
|
||||
@property(copy) NSString *sdkDisplayName; // @synthesize sdkDisplayName;
|
||||
@property(copy) NSString *sdkVersion; // @synthesize sdkVersion;
|
||||
@property(copy) NSString *sdkRootPath; // @synthesize sdkRootPath;
|
||||
@property(readonly) SimRuntime *runtime; // @synthesize runtime=_runtime;
|
||||
- (id)description;
|
||||
- (long long)compare:(id)arg1;
|
||||
- (id)copyWithZone:(struct _NSZone *)arg1;
|
||||
- (BOOL)isEqual:(id)arg1;
|
||||
- (id)initWithSDKPath:(id)arg1;
|
||||
|
||||
@end
|
||||
|
||||
@interface DTiPhoneSimulatorApplicationSpecifier : NSObject <NSCopying>
|
||||
{
|
||||
NSString *appPath;
|
||||
NSString *bundleID;
|
||||
NSString *toolPath;
|
||||
}
|
||||
|
||||
+ (id)specifierWithToolPath:(id)arg1;
|
||||
+ (id)specifierWithApplicationBundleIdentifier:(id)arg1;
|
||||
+ (id)specifierWithApplicationPath:(id)arg1;
|
||||
@property(copy, nonatomic) NSString *toolPath; // @synthesize toolPath;
|
||||
@property(copy, nonatomic) NSString *bundleID; // @synthesize bundleID;
|
||||
@property(copy, nonatomic) NSString *appPath; // @synthesize appPath;
|
||||
- (id)description;
|
||||
- (id)copyWithZone:(struct _NSZone *)arg1;
|
||||
|
||||
@end
|
60
src/tools/3rdparty/iossim/iossim.pro
vendored
60
src/tools/3rdparty/iossim/iossim.pro
vendored
@@ -1,60 +0,0 @@
|
||||
CONFIG += console
|
||||
|
||||
QT -= core
|
||||
QT -= gui
|
||||
QT -= test
|
||||
|
||||
CONFIG -= app_bundle
|
||||
|
||||
include(../../../../qtcreator.pri)
|
||||
|
||||
# Prevent from popping up in the dock when launched.
|
||||
# We embed the Info.plist file, so the application doesn't need to
|
||||
# be a bundle.
|
||||
QMAKE_LFLAGS += -Wl,-sectcreate,__TEXT,__info_plist,\"$$PWD/Info.plist\"
|
||||
-fobjc-link-runtime
|
||||
|
||||
LIBS += \
|
||||
-framework Foundation \
|
||||
-framework CoreServices \
|
||||
-framework ApplicationServices \
|
||||
-framework CoreFoundation \
|
||||
-F/System/Library/PrivateFrameworks \
|
||||
-framework IOKit -framework AppKit
|
||||
|
||||
iPhoneSimulatorRemoteClientDirectLinking {
|
||||
LIBS += \
|
||||
-F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks \
|
||||
-F/Applications/Xcode.app/Contents/OtherFrameworks
|
||||
LIBS += \
|
||||
-framework DTViPhoneSimulatorRemoteClient
|
||||
QMAKE_RPATHDIR += /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks \
|
||||
/Applications/Xcode.app/Contents/OtherFrameworks \
|
||||
/System/Library/PrivateFrameworks
|
||||
}
|
||||
|
||||
TEMPLATE = app
|
||||
|
||||
# put into a subdir, so we can deploy a separate qt.conf for it
|
||||
DESTDIR = $$IDE_LIBEXEC_PATH/ios
|
||||
include(../../../rpath.pri)
|
||||
|
||||
OBJECTIVE_SOURCES += \
|
||||
main.mm \
|
||||
nsprintf.mm \
|
||||
nsstringexpandpath.mm \
|
||||
iphonesimulator.mm
|
||||
|
||||
HEADERS += \
|
||||
iphonesimulator.h \
|
||||
nsprintf.h \
|
||||
nsstringexpandpath.h \
|
||||
version.h \
|
||||
dvtiphonesimulatorremoteclient/dvtiphonesimulatorremoteclient.h \
|
||||
coresimulator/coresimulator.h
|
||||
|
||||
DISTFILES = IOSSIM_LICENSE \
|
||||
Info.plist
|
||||
|
||||
target.path = $$INSTALL_LIBEXEC_PATH/ios
|
||||
INSTALLS += target
|
30
src/tools/3rdparty/iossim/iossim.qbs
vendored
30
src/tools/3rdparty/iossim/iossim.qbs
vendored
@@ -1,30 +0,0 @@
|
||||
import qbs 1.0
|
||||
|
||||
QtcTool {
|
||||
name: "iossim"
|
||||
condition: qbs.targetOS.contains("macos")
|
||||
|
||||
Depends { name: "bundle" }
|
||||
Depends { name: "Qt"; submodules: ["widgets"] }
|
||||
Depends { name: "app_version_header" }
|
||||
|
||||
files: [
|
||||
"main.mm",
|
||||
"nsprintf.mm",
|
||||
"nsstringexpandpath.mm",
|
||||
"iphonesimulator.mm",
|
||||
"iphonesimulator.h",
|
||||
"nsprintf.h",
|
||||
"nsstringexpandpath.h",
|
||||
"version.h",
|
||||
"dvtiphonesimulatorremoteclient/dvtiphonesimulatorremoteclient.h"
|
||||
]
|
||||
cpp.includePaths: ["."]
|
||||
cpp.linkerFlags: base.concat(["-fobjc-link-runtime"])
|
||||
cpp.frameworks: base.concat(["Foundation", "CoreServices", "ApplicationServices", "IOKit",
|
||||
"AppKit"])
|
||||
cpp.frameworkPaths: base.concat("/System/Library/PrivateFrameworks")
|
||||
bundle.infoPlistFile: "Info.plist"
|
||||
|
||||
installDir: qtc.ide_libexec_path + "/ios"
|
||||
}
|
46
src/tools/3rdparty/iossim/iphonesimulator.h
vendored
46
src/tools/3rdparty/iossim/iphonesimulator.h
vendored
@@ -1,46 +0,0 @@
|
||||
/* Author: Landon Fuller <landonf@plausiblelabs.com>
|
||||
* Copyright (c) 2008-2011 Plausible Labs Cooperative, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* See the IOSSIM_LICENSE file in this directory for the license on the source code in this file.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "dvtiphonesimulatorremoteclient/dvtiphonesimulatorremoteclient.h"
|
||||
#import "version.h"
|
||||
|
||||
@interface iPhoneSimulator : NSObject <DTiPhoneSimulatorSessionDelegate> {
|
||||
@private
|
||||
DTiPhoneSimulatorSystemRoot *sdkRoot;
|
||||
NSFileHandle *stdoutFileHandle;
|
||||
NSFileHandle *stderrFileHandle;
|
||||
DTiPhoneSimulatorSession *mySession;
|
||||
BOOL startOnly;
|
||||
BOOL exitOnStartup;
|
||||
BOOL shouldWaitDebugger;
|
||||
BOOL shouldStartDebugger;
|
||||
BOOL useGDB;
|
||||
BOOL verbose;
|
||||
BOOL alreadyPrintedData;
|
||||
BOOL retinaDevice;
|
||||
BOOL tallDevice;
|
||||
BOOL is64BitDevice;
|
||||
NSString *deviceTypeId;
|
||||
NSString *m_stderrPath;
|
||||
NSString *m_stdoutPath;
|
||||
NSString *dataPath;
|
||||
int xcodeVersionInt;
|
||||
}
|
||||
|
||||
- (id)init;
|
||||
- (void)dealloc;
|
||||
- (void)runWithArgc:(int)argc argv:(char **)argv;
|
||||
|
||||
- (void)createStdioFIFO:(NSFileHandle **)fileHandle ofType:(NSString *)type atPath:(NSString **)path;
|
||||
- (void)removeStdioFIFO:(NSFileHandle *)fileHandle atPath:(NSString *)path;
|
||||
- (void)stop;
|
||||
- (void)doExit:(int)errorCode;
|
||||
- (SimDevice*) findDeviceWithFamily:(NSString *)family retina:(BOOL)retina isTallDevice:(BOOL)isTallDevice is64Bit:(BOOL)is64Bit;
|
||||
- (NSString*)changeDeviceType:(NSString *)family retina:(BOOL)retina isTallDevice:(BOOL)isTallDevice is64Bit:(BOOL)is64Bit;
|
||||
|
||||
@end
|
974
src/tools/3rdparty/iossim/iphonesimulator.mm
vendored
974
src/tools/3rdparty/iossim/iphonesimulator.mm
vendored
@@ -1,974 +0,0 @@
|
||||
/* Author: Landon Fuller <landonf@plausiblelabs.com>
|
||||
* Copyright (c) 2008-2011 Plausible Labs Cooperative, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* See the IOSSIM_LICENSE file in this directory for the license on the source code in this file.
|
||||
*/
|
||||
|
||||
#import "iphonesimulator.h"
|
||||
#import "nsstringexpandpath.h"
|
||||
#import "nsprintf.h"
|
||||
#import <sys/types.h>
|
||||
#import <sys/stat.h>
|
||||
#import <Foundation/NSTask.h>
|
||||
#import <Foundation/NSFileManager.h>
|
||||
@class DTiPhoneSimulatorSystemRoot;
|
||||
|
||||
NSString *simulatorPrefrencesName = @"com.apple.iphonesimulator";
|
||||
NSString *deviceProperty = @"SimulateDevice";
|
||||
NSString *deviceIphoneRetina3_5Inch = @"iPhone Retina (3.5-inch)";
|
||||
NSString *deviceIphoneRetina4_0Inch = @"iPhone Retina (4-inch)";
|
||||
NSString *deviceIphoneRetina4_0Inch_64bit = @"iPhone Retina (4-inch 64-bit)";
|
||||
NSString *deviceIphone = @"iPhone";
|
||||
NSString *deviceIpad = @"iPad";
|
||||
NSString *deviceIpadRetina = @"iPad Retina";
|
||||
NSString *deviceIpadRetina_64bit = @"iPad Retina (64-bit)";
|
||||
|
||||
NSString* deviceTypeIdIphone4s = @"com.apple.CoreSimulator.SimDeviceType.iPhone-4s";
|
||||
NSString* deviceTypeIdIphone5 = @"com.apple.CoreSimulator.SimDeviceType.iPhone-5";
|
||||
NSString* deviceTypeIdIphone5s = @"com.apple.CoreSimulator.SimDeviceType.iPhone-5s";
|
||||
NSString* deviceTypeIdIphone6 = @"com.apple.CoreSimulator.SimDeviceType.iPhone-6";
|
||||
NSString* deviceTypeIdIphone6Plus = @"com.apple.CoreSimulator.SimDeviceType.iPhone-6-Plus";
|
||||
NSString* deviceTypeIdIpad2 = @"com.apple.CoreSimulator.SimDeviceType.iPad-2";
|
||||
NSString* deviceTypeIdIpadRetina = @"com.apple.CoreSimulator.SimDeviceType.iPad-Retina";
|
||||
NSString* deviceTypeIdIpadAir = @"com.apple.CoreSimulator.SimDeviceType.iPad-Air";
|
||||
NSString* deviceTypeIdResizableIphone = @"com.apple.CoreSimulator.SimDeviceType.Resizable-iPhone";
|
||||
NSString* deviceTypeIdResizeableIpad = @"com.apple.CoreSimulator.SimDeviceType.Resizable-iPad";
|
||||
|
||||
// The path within the developer dir of the private Simulator frameworks.
|
||||
NSString* const kSimulatorFrameworkRelativePathLegacy = @"Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/DVTiPhoneSimulatorRemoteClient.framework";
|
||||
NSString* const kSimulatorFrameworkRelativePath = @"../SharedFrameworks/DVTiPhoneSimulatorRemoteClient.framework";
|
||||
NSString* const kDVTFoundationRelativePath = @"../SharedFrameworks/DVTFoundation.framework";
|
||||
NSString* const kDevToolsFoundationRelativePath = @"../OtherFrameworks/DevToolsFoundation.framework";
|
||||
//NSString* const kSimulatorRelativePath = @"Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app";
|
||||
NSString* const kCoreSimulatorRelativePath = @"Library/PrivateFrameworks/CoreSimulator.framework";
|
||||
|
||||
static pid_t gDebuggerProcessId = 0;
|
||||
|
||||
static const char *gDevDir = 0;
|
||||
|
||||
@interface DVTPlatform : NSObject
|
||||
|
||||
+ (BOOL)loadAllPlatformsReturningError:(NSError **)error;
|
||||
+ (id)platformForIdentifier:(NSString *)identifier;
|
||||
|
||||
@end
|
||||
|
||||
/**
|
||||
* A simple iPhoneSimulatorRemoteClient framework.
|
||||
*/
|
||||
@implementation iPhoneSimulator
|
||||
|
||||
- (id)init {
|
||||
self = [super init];
|
||||
deviceTypeId = 0;
|
||||
m_stderrPath = 0;
|
||||
m_stdoutPath = 0;
|
||||
dataPath = 0;
|
||||
xcodeVersionInt = 0;
|
||||
|
||||
mySession = nil;
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[mySession release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)doExit:(int)errorCode {
|
||||
if (stderrFileHandle != nil) {
|
||||
[self removeStdioFIFO:stderrFileHandle atPath:m_stderrPath];
|
||||
}
|
||||
|
||||
if (stdoutFileHandle != nil) {
|
||||
[self removeStdioFIFO:stdoutFileHandle atPath:m_stdoutPath];
|
||||
}
|
||||
nsprintf(@"<exit code=\"%d\"/>", errorCode);
|
||||
nsprintf(@"</query_result>");
|
||||
fflush(stdout);
|
||||
fflush(stderr);
|
||||
exit(errorCode);
|
||||
}
|
||||
|
||||
// Helper to find a class by name and die if it isn't found.
|
||||
-(Class) FindClassByName:(NSString*) nameOfClass {
|
||||
Class theClass = NSClassFromString(nameOfClass);
|
||||
if (!theClass) {
|
||||
nsfprintf(stderr,@"Failed to find class %@ at runtime.", nameOfClass);
|
||||
[self doExit:EXIT_FAILURE];
|
||||
}
|
||||
return theClass;
|
||||
}
|
||||
|
||||
// Loads the Simulator framework from the given developer dir.
|
||||
-(void) LoadSimulatorFramework:(NSString*) developerDir {
|
||||
// The Simulator framework depends on some of the other Xcode private
|
||||
// frameworks; manually load them first so everything can be linked up.
|
||||
NSString* dvtFoundationPath = [developerDir stringByAppendingPathComponent:kDVTFoundationRelativePath];
|
||||
|
||||
NSBundle* dvtFoundationBundle =
|
||||
[NSBundle bundleWithPath:dvtFoundationPath];
|
||||
if (![dvtFoundationBundle load]){
|
||||
nsprintf(@"Unable to dvtFoundationBundle. Error: ");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return ;
|
||||
}
|
||||
NSString* devToolsFoundationPath = [developerDir stringByAppendingPathComponent:kDevToolsFoundationRelativePath];
|
||||
NSBundle* devToolsFoundationBundle =
|
||||
[NSBundle bundleWithPath:devToolsFoundationPath];
|
||||
if (![devToolsFoundationBundle load]){
|
||||
nsprintf(@"Unable to devToolsFoundationPath.");
|
||||
return ;
|
||||
}
|
||||
NSString* coreSimulatorPath = [developerDir stringByAppendingPathComponent:kCoreSimulatorRelativePath];
|
||||
if ([[NSFileManager defaultManager] fileExistsAtPath:coreSimulatorPath]) {
|
||||
NSBundle* coreSimulatorBundle = [NSBundle bundleWithPath:coreSimulatorPath];
|
||||
if (![coreSimulatorBundle load]){
|
||||
nsprintf(@"Unable to coreSimulatorPath.");
|
||||
return ;
|
||||
}
|
||||
}
|
||||
NSString* simBundlePath = [developerDir stringByAppendingPathComponent:kSimulatorFrameworkRelativePathLegacy];
|
||||
if (![[NSFileManager defaultManager] fileExistsAtPath:simBundlePath]){
|
||||
simBundlePath = [developerDir stringByAppendingPathComponent:kSimulatorFrameworkRelativePath];
|
||||
}
|
||||
NSBundle* simBundle = [NSBundle bundleWithPath:simBundlePath];
|
||||
if (![simBundle load]){
|
||||
nsprintf(@"Unable to load simulator framework.");
|
||||
return ;
|
||||
}
|
||||
NSError* error = 0;
|
||||
// Prime DVTPlatform.
|
||||
Class DVTPlatformClass = [self FindClassByName:@"DVTPlatform"];
|
||||
if (![DVTPlatformClass loadAllPlatformsReturningError:&error]) {
|
||||
nsprintf(@"Unable to loadAllPlatformsReturningError. Error: %@",[error localizedDescription]);
|
||||
return ;
|
||||
}
|
||||
Class systemRootClass = [self FindClassByName:@"DTiPhoneSimulatorSystemRoot"];
|
||||
// The following will fail if DVTPlatform hasn't loaded all platforms.
|
||||
NSAssert(systemRootClass && [systemRootClass knownRoots] != nil,
|
||||
@"DVTPlatform hasn't been initialized yet.");
|
||||
// DTiPhoneSimulatorRemoteClient will make this same call, so let's assert
|
||||
// that it's working.
|
||||
NSAssert([DVTPlatformClass platformForIdentifier:@"com.apple.platform.iphonesimulator"] != nil,
|
||||
@"DVTPlatform hasn't been initialized yet.");
|
||||
return ;
|
||||
}
|
||||
|
||||
NSString* GetXcodeVersion() {
|
||||
// Go look for it via xcodebuild.
|
||||
NSTask* xcodeBuildTask = [[[NSTask alloc] init] autorelease];
|
||||
[xcodeBuildTask setLaunchPath:@"/usr/bin/xcodebuild"];
|
||||
[xcodeBuildTask setArguments:[NSArray arrayWithObject:@"-version"]];
|
||||
|
||||
NSPipe* outputPipe = [NSPipe pipe];
|
||||
[xcodeBuildTask setStandardOutput:outputPipe];
|
||||
NSFileHandle* outputFile = [outputPipe fileHandleForReading];
|
||||
|
||||
[xcodeBuildTask launch];
|
||||
NSData* outputData = [outputFile readDataToEndOfFile];
|
||||
[xcodeBuildTask terminate];
|
||||
|
||||
NSString* output =
|
||||
[[[NSString alloc] initWithData:outputData
|
||||
encoding:NSUTF8StringEncoding] autorelease];
|
||||
output = [output stringByTrimmingCharactersInSet:
|
||||
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
|
||||
if ([output length] == 0) {
|
||||
output = nil;
|
||||
} else {
|
||||
NSArray* parts = [output componentsSeparatedByCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
|
||||
if ([parts count] >= 2) {
|
||||
return parts[1];
|
||||
}
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
|
||||
// Finds the developer dir via xcode-select or the DEVELOPER_DIR environment
|
||||
// variable.
|
||||
NSString* FindDeveloperDir() {
|
||||
if (gDevDir)
|
||||
return [NSString stringWithCString:gDevDir encoding:NSUTF8StringEncoding];
|
||||
// Check the env first.
|
||||
NSDictionary* env = [[NSProcessInfo processInfo] environment];
|
||||
NSString* developerDir = [env objectForKey:@"DEVELOPER_DIR"];
|
||||
if ([developerDir length] > 0) {
|
||||
return developerDir;
|
||||
}
|
||||
|
||||
// Go look for it via xcode-select.
|
||||
NSTask* xcodeSelectTask = [[[NSTask alloc] init] autorelease];
|
||||
[xcodeSelectTask setLaunchPath:@"/usr/bin/xcode-select"];
|
||||
[xcodeSelectTask setArguments:[NSArray arrayWithObject:@"-print-path"]];
|
||||
|
||||
NSPipe* outputPipe = [NSPipe pipe];
|
||||
[xcodeSelectTask setStandardOutput:outputPipe];
|
||||
NSFileHandle* outputFile = [outputPipe fileHandleForReading];
|
||||
|
||||
[xcodeSelectTask launch];
|
||||
NSData* outputData = [outputFile readDataToEndOfFile];
|
||||
[xcodeSelectTask terminate];
|
||||
|
||||
NSString* output =
|
||||
[[[NSString alloc] initWithData:outputData
|
||||
encoding:NSUTF8StringEncoding] autorelease];
|
||||
output = [output stringByTrimmingCharactersInSet:
|
||||
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
|
||||
if ([output length] == 0) {
|
||||
output = nil;
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
- (void) printUsage {
|
||||
fprintf(stdout, "<msg>Usage: ios-sim <command> <options> [--args ...]\n");
|
||||
fprintf(stdout, "\n");
|
||||
fprintf(stdout, "Commands:\n");
|
||||
fprintf(stdout, " showsdks List the available iOS SDK versions\n");
|
||||
fprintf(stdout, " showdevicetypes List the available device types (Xcode6+)\n");
|
||||
fprintf(stdout, " launch <application path> Launch the application at the specified path on the iOS Simulator\n");
|
||||
fprintf(stdout, " start Launch iOS Simulator without an app\n");
|
||||
fprintf(stdout, "\n");
|
||||
fprintf(stdout, "Options:\n");
|
||||
fprintf(stdout, " --version Print the version of ios-sim\n");
|
||||
fprintf(stdout, " --developer-path <developerDir> path to the developer directory (in Xcode)");
|
||||
fprintf(stdout, " --help Show this help text\n");
|
||||
fprintf(stdout, " --verbose Set the output level to verbose\n");
|
||||
fprintf(stdout, " --exit Exit after startup\n");
|
||||
fprintf(stdout, " --wait-for-debugger Wait for debugger to attach\n");
|
||||
fprintf(stdout, " --debug Attach LLDB to the application on startup\n");
|
||||
fprintf(stdout, " --use-gdb Use GDB instead of LLDB. (Requires --debug)\n");
|
||||
fprintf(stdout, " --uuid <uuid> A UUID identifying the session (is that correct?)\n");
|
||||
fprintf(stdout, " --env <environment file path> A plist file containing environment key-value pairs that should be set\n");
|
||||
fprintf(stdout, " --setenv NAME=VALUE Set an environment variable\n");
|
||||
fprintf(stdout, " --stdout <stdout file path> The path where stdout of the simulator will be redirected to (defaults to stdout of ios-sim)\n");
|
||||
fprintf(stdout, " --stderr <stderr file path> The path where stderr of the simulator will be redirected to (defaults to stderr of ios-sim)\n");
|
||||
fprintf(stdout, " --timeout <seconds> The timeout time to wait for a response from the Simulator. Default value: 30 seconds\n");
|
||||
fprintf(stdout, " --args <...> All following arguments will be passed on to the application</msg>\n");
|
||||
fprintf(stdout, " --devicetypeid <device type> The id of the device type that should be simulated (Xcode6+). Use 'showdevicetypes' to list devices.\n");
|
||||
fprintf(stdout, " e.g \"com.apple.CoreSimulator.SimDeviceType.Resizable-iPhone6, 8.0\"\n");
|
||||
fprintf(stdout, "DEPRECATED in 3.x, use devicetypeid instead:\n");
|
||||
fprintf(stdout, " --sdk <sdkversion> The iOS SDK version to run the application on (defaults to the latest)\n");
|
||||
fprintf(stdout, " --family <device family> The device type that should be simulated (defaults to `iphone')\n");
|
||||
fprintf(stdout, " --retina Start a retina device\n");
|
||||
fprintf(stdout, " --tall In combination with --retina flag, start the tall version of the retina device (e.g. iPhone 5 (4-inch))\n");
|
||||
fprintf(stdout, " --64bit In combination with --retina flag and the --tall flag, start the 64bit version of the tall retina device (e.g. iPhone 5S (4-inch 64bit))\n");
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
- (void) printDeprecation:(char*)option {
|
||||
(void)option;
|
||||
//fprintf(stdout, "Usage of '%s' is deprecated in 3.x. Use --devicetypeid instead.\n", option);
|
||||
}
|
||||
|
||||
|
||||
- (int) showSDKs {
|
||||
Class systemRootClass = [self FindClassByName:@"DTiPhoneSimulatorSystemRoot"];
|
||||
|
||||
NSArray *roots = [systemRootClass knownRoots];
|
||||
|
||||
nsprintf(@"<device_info>");
|
||||
for (NSUInteger i = 0; i < [roots count]; ++i) {
|
||||
DTiPhoneSimulatorSystemRoot *root = [roots objectAtIndex:i];
|
||||
nsprintf(@"<item><key>sdk%d_name</key><value>%@</value></item>", i, [root sdkDisplayName]);
|
||||
nsprintf(@"<item><key>sdk%d_version</key><value>%@</value></item>", i, [root sdkVersion]);
|
||||
nsprintf(@"<item><key>sdk%d_sysroot</key><value>%@</value></item>", i, [root sdkRootPath]);
|
||||
}
|
||||
nsprintf(@"</device_info>");
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
- (int) showDeviceTypes {
|
||||
Class simDeviceSet = NSClassFromString(@"SimDeviceSet");
|
||||
nsprintf(@"<device_info>");
|
||||
bool hasDevices = false;
|
||||
if (simDeviceSet) {
|
||||
SimDeviceSet* deviceSet = [simDeviceSet defaultSet];
|
||||
NSArray* devices = [deviceSet availableDevices];
|
||||
for (SimDevice* device in devices) {
|
||||
hasDevices = true;
|
||||
nsfprintf(stdout, @"<item><key>%@, %@</key><value>%@</value></item>",device.deviceType.identifier, device.runtime.versionString, device.deviceType.name);
|
||||
}
|
||||
}
|
||||
if (!hasDevices) {
|
||||
// fallback devices for Xcode 5.x
|
||||
nsprintf(@"<item><key>com.apple.CoreSimulator.SimDeviceType.iPhone-4s</key><value>iPhone 3.5-inch Retina Display</value></item>");
|
||||
nsprintf(@"<item><key>com.apple.CoreSimulator.SimDeviceType.iPhone-5s</key><value>iPhone 4-inch Retina Display</value></item>");
|
||||
nsprintf(@"<item><key>com.apple.CoreSimulator.SimDeviceType.iPad-2</key><value>iPad</value></item>");
|
||||
nsprintf(@"<item><key>com.apple.CoreSimulator.SimDeviceType.iPad-Retina</key><value>iPad Retina Display</value></item>");
|
||||
}
|
||||
nsprintf(@"</device_info>");
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
- (void)session:(DTiPhoneSimulatorSession *)session didEndWithError:(NSError *)error {
|
||||
(void)session;
|
||||
if (verbose) {
|
||||
msgprintf(@"Session did end with error %@", error);
|
||||
}
|
||||
|
||||
if (error != nil) {
|
||||
[self doExit:EXIT_FAILURE];
|
||||
}
|
||||
|
||||
[self doExit:EXIT_SUCCESS];
|
||||
}
|
||||
|
||||
static void IgnoreSignal(int /*arg*/) {
|
||||
}
|
||||
|
||||
static void ChildSignal(int /*arg*/) {
|
||||
int status;
|
||||
waitpid(gDebuggerProcessId, &status, 0);
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
- (void)session:(DTiPhoneSimulatorSession *)session didStart:(BOOL)started withError:(NSError *)error {
|
||||
if (started) {
|
||||
// bring to front...
|
||||
[NSTask launchedTaskWithLaunchPath:@"/usr/bin/osascript"
|
||||
arguments:[NSArray arrayWithObjects:
|
||||
@"-e", @"tell application \"System Events\"",
|
||||
@"-e", @" set listOfProcesses to (name of every process where background only is false)",
|
||||
@"-e", @"end tell",
|
||||
@"-e", @"repeat with processName in listOfProcesses",
|
||||
@"-e", @" if processName starts with \"iOS Simulator\" or processName starts with \"iPhone Simulator\" then",
|
||||
@"-e", @" tell application processName to activate",
|
||||
@"-e", @" end if",
|
||||
@"-e", @"end repeat", nil]];
|
||||
}
|
||||
if (startOnly && session) {
|
||||
msgprintf(@"Simulator started (no session)");
|
||||
[self doExit:EXIT_SUCCESS];
|
||||
return;
|
||||
}
|
||||
if (started) {
|
||||
int pid = [session simulatedApplicationPID];
|
||||
if (shouldStartDebugger) {
|
||||
char*args[4] = { NULL, NULL, (char*)[[[NSNumber numberWithInt:pid] description] UTF8String], NULL };
|
||||
if (useGDB) {
|
||||
args[0] = strdup("gdb");
|
||||
args[1] = strdup("program");
|
||||
} else {
|
||||
args[0] = strdup("lldb");
|
||||
args[1] = strdup("--attach-pid");
|
||||
}
|
||||
// The parent process must live on to process the stdout/stderr fifos,
|
||||
// so start the debugger as a child process.
|
||||
pid_t child_pid = fork();
|
||||
if (child_pid == 0) {
|
||||
execvp(args[0], args);
|
||||
} else if (child_pid < 0) {
|
||||
msgprintf(@"Could not start debugger process: %d", errno);
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
gDebuggerProcessId = child_pid;
|
||||
signal(SIGINT, IgnoreSignal);
|
||||
signal(SIGCHLD, ChildSignal);
|
||||
}
|
||||
if (verbose) {
|
||||
msgprintf(@"Session started");
|
||||
}
|
||||
nsprintf(@"<inferior_pid>%d</inferior_pid>", pid);
|
||||
fflush(stdout);
|
||||
if (exitOnStartup) {
|
||||
[self doExit:EXIT_SUCCESS];
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
msgprintf(@"Session could not be started: %@", [error localizedDescription]);
|
||||
[self doExit:EXIT_FAILURE];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)stop {
|
||||
if (mySession)
|
||||
[mySession requestEndWithTimeout: 0.1];
|
||||
}
|
||||
|
||||
- (void)stdioDataIsAvailable:(NSNotification *)notification {
|
||||
[[notification object] readInBackgroundAndNotify];
|
||||
NSData *data = [[notification userInfo] valueForKey:NSFileHandleNotificationDataItem];
|
||||
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; /* dangerous if partially encoded data is at the boundary */
|
||||
if (!alreadyPrintedData) {
|
||||
if ([str length] == 0) {
|
||||
return;
|
||||
} else {
|
||||
alreadyPrintedData = YES;
|
||||
}
|
||||
}
|
||||
if ([notification object] == stdoutFileHandle) {
|
||||
printf("<app_output>%s</app_output>\n", [escapeString(str) UTF8String]);
|
||||
} else {
|
||||
nsprintf(@"<app_output>%@</app_output>", escapeString(str)); // handle stderr differently?
|
||||
}
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
|
||||
- (void)createStdioFIFO:(NSFileHandle **)fileHandle ofType:(NSString *)type atPath:(NSString **)path {
|
||||
*path = [NSString stringWithFormat:@"%@/ios-sim-%@-pipe-%d", NSTemporaryDirectory(), type, (int)time(NULL)];
|
||||
if (mkfifo([*path UTF8String], S_IRUSR | S_IWUSR) == -1) {
|
||||
msgprintf(@"Unable to create %@ named pipe `%@'", type, *path);
|
||||
[self doExit:EXIT_FAILURE];
|
||||
} else {
|
||||
if (verbose) {
|
||||
msgprintf(@"Creating named pipe at `%@'", *path);
|
||||
}
|
||||
int fd = open([*path UTF8String], O_RDONLY | O_NDELAY);
|
||||
*fileHandle = [[[NSFileHandle alloc] initWithFileDescriptor:fd] retain];
|
||||
[*fileHandle readInBackgroundAndNotify];
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(stdioDataIsAvailable:)
|
||||
name:NSFileHandleReadCompletionNotification
|
||||
object:*fileHandle];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (void)removeStdioFIFO:(NSFileHandle *)fileHandle atPath:(NSString *)path {
|
||||
if (verbose) {
|
||||
msgprintf(@"Removing named pipe at `%@'", path);
|
||||
}
|
||||
[fileHandle closeFile];
|
||||
[fileHandle release];
|
||||
if (![[NSFileManager defaultManager] removeItemAtPath:path error:NULL]) {
|
||||
msgprintf(@"Unable to remove named pipe `%@'", path);
|
||||
}
|
||||
if (dataPath && ![[NSFileManager defaultManager] removeItemAtPath:[dataPath stringByAppendingPathComponent:path] error:NULL]) {
|
||||
msgprintf(@"Unable to remove simlink at `%@'", [dataPath stringByAppendingPathComponent:path]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (int)launchApp:(NSString *)path withFamily:(NSString *)family
|
||||
uuid:(NSString *)uuid
|
||||
environment:(NSDictionary *)environment
|
||||
stdoutPath:(NSString *)stdoutPath
|
||||
stderrPath:(NSString *)stderrPath
|
||||
timeout:(NSTimeInterval)timeout
|
||||
args:(NSArray *)args {
|
||||
DTiPhoneSimulatorApplicationSpecifier *appSpec;
|
||||
DTiPhoneSimulatorSessionConfig *config;
|
||||
DTiPhoneSimulatorSession *session;
|
||||
NSError *error;
|
||||
|
||||
NSFileManager *fileManager = [[[NSFileManager alloc] init] autorelease];
|
||||
if (!startOnly && ![fileManager fileExistsAtPath:path]) {
|
||||
msgprintf(@"Application path %@ doesn't exist!", path);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
/* Create the app specifier */
|
||||
appSpec = startOnly ? nil : [[self FindClassByName:@"DTiPhoneSimulatorApplicationSpecifier"] specifierWithApplicationPath:path];
|
||||
|
||||
if (verbose) {
|
||||
msgprintf(@"App Spec: %@\n", appSpec);
|
||||
msgprintf(@"SDK Root: %@\n", sdkRoot);
|
||||
msgprintf(@"SDK Version: %@\n", [sdkRoot sdkVersion]);
|
||||
|
||||
for (id key in environment) {
|
||||
msgprintf(@"Env: %@ = %@", key, [environment objectForKey:key]);
|
||||
}
|
||||
}
|
||||
|
||||
NSString *sdkVersion = [sdkRoot sdkVersion];
|
||||
NSString *appSupportDir = [NSString stringWithFormat:@"%@/Library/Application Support/iPhone Simulator/%@",
|
||||
NSHomeDirectory(), sdkVersion];
|
||||
NSMutableDictionary *mutableEnv = [NSMutableDictionary dictionaryWithDictionary:environment];
|
||||
[mutableEnv setObject:appSupportDir forKey:@"CFFIXED_USER_HOME"];
|
||||
[mutableEnv setObject:appSupportDir forKey:@"IPHONE_SHARED_RESOURCES_DIRECTORY"];
|
||||
[mutableEnv setObject:appSupportDir forKey:@"HOME"];
|
||||
[mutableEnv setObject:[sdkRoot sdkRootPath] forKey:@"IPHONE_SIMULATOR_ROOT"];
|
||||
[mutableEnv setObject:[sdkRoot sdkRootPath] forKey:@"DYLD_ROOT_PATH"];
|
||||
[mutableEnv setObject:[sdkRoot sdkRootPath] forKey:@"DYLD_FRAMEWORK_PATH"];
|
||||
[mutableEnv setObject:[sdkRoot sdkRootPath] forKey:@"DYLD_LIBRARY_PATH"];
|
||||
[mutableEnv setObject:@"YES" forKey:@"NSUnbufferedIO"];
|
||||
environment = mutableEnv;
|
||||
|
||||
/* Set up the session configuration */
|
||||
config = [[[[self FindClassByName:@"DTiPhoneSimulatorSessionConfig"] alloc] init] autorelease];
|
||||
[config setApplicationToSimulateOnStart:appSpec];
|
||||
[config setSimulatedSystemRoot:sdkRoot];
|
||||
[config setSimulatedApplicationShouldWaitForDebugger:shouldWaitDebugger];
|
||||
|
||||
[config setSimulatedApplicationLaunchArgs:args];
|
||||
[config setSimulatedApplicationLaunchEnvironment:environment];
|
||||
|
||||
if (stderrPath) {
|
||||
stderrFileHandle = nil;
|
||||
} else if (!exitOnStartup) {
|
||||
[self createStdioFIFO:&stderrFileHandle ofType:@"stderr" atPath:&stderrPath];
|
||||
m_stderrPath = stderrPath;
|
||||
}
|
||||
[config setSimulatedApplicationStdErrPath:stderrPath];
|
||||
|
||||
if (stdoutPath) {
|
||||
stdoutFileHandle = nil;
|
||||
} else if (!exitOnStartup) {
|
||||
[self createStdioFIFO:&stdoutFileHandle ofType:@"stdout" atPath:&stdoutPath];
|
||||
m_stdoutPath = stdoutPath;
|
||||
}
|
||||
[config setSimulatedApplicationStdOutPath:stdoutPath];
|
||||
|
||||
[config setLocalizedClientName: @"iossim"];
|
||||
|
||||
// this was introduced in 3.2 of SDK
|
||||
if ([config respondsToSelector:@selector(setSimulatedDeviceFamily:)]) {
|
||||
if (family == nil) {
|
||||
family = @"iphone";
|
||||
}
|
||||
|
||||
if (verbose) {
|
||||
nsprintf(@"using device family %@",family);
|
||||
}
|
||||
|
||||
if ([family isEqualToString:@"ipad"]) {
|
||||
[config setSimulatedDeviceFamily:[NSNumber numberWithInt:2]];
|
||||
} else{
|
||||
[config setSimulatedDeviceFamily:[NSNumber numberWithInt:1]];
|
||||
}
|
||||
}
|
||||
if ([config respondsToSelector:@selector(setDevice:)]) {
|
||||
// Xcode6+
|
||||
config.device = [self findDeviceWithFamily:family retina:retinaDevice isTallDevice:tallDevice is64Bit:is64BitDevice];
|
||||
|
||||
// The iOS 8 simulator treats stdout/stderr paths relative to the simulator's data directory.
|
||||
// Create symbolic links in the data directory that points at the real stdout/stderr paths.
|
||||
if ([config.simulatedSystemRoot.sdkVersion compare:@"8.0" options:NSNumericSearch] != NSOrderedAscending) {
|
||||
dataPath = config.device.dataPath;
|
||||
NSString *simlinkStdout = [dataPath stringByAppendingPathComponent:stdoutPath];
|
||||
m_stdoutPath = stdoutPath;
|
||||
NSString *simlinkStderr = [dataPath stringByAppendingPathComponent:stderrPath];
|
||||
m_stderrPath = stderrPath;
|
||||
[[NSFileManager defaultManager] createSymbolicLinkAtPath:simlinkStdout withDestinationPath:stdoutPath error:NULL];
|
||||
[[NSFileManager defaultManager] createSymbolicLinkAtPath:simlinkStderr withDestinationPath:stderrPath error:NULL];
|
||||
}
|
||||
} else {
|
||||
// Xcode5 or older
|
||||
NSString* devicePropertyValue = [self changeDeviceType:family retina:retinaDevice isTallDevice:tallDevice is64Bit:is64BitDevice];
|
||||
[config setSimulatedDeviceInfoName:devicePropertyValue];
|
||||
}
|
||||
|
||||
/* Start the session */
|
||||
session = [[[[self FindClassByName:@"DTiPhoneSimulatorSession"] alloc] init] autorelease];
|
||||
mySession = session;
|
||||
[session setDelegate:self];
|
||||
if (uuid != nil){
|
||||
[session setUuid:uuid];
|
||||
}
|
||||
|
||||
if (![session requestStartWithConfig:config timeout:timeout error:&error]) {
|
||||
msgprintf(@"Could not start simulator session: %@", error);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
- (SimDevice*) findDeviceWithFamily:(NSString *)family retina:(BOOL)retina isTallDevice:(BOOL)isTallDevice is64Bit:(BOOL)is64Bit {
|
||||
NSString* devTypeId = self->deviceTypeId;
|
||||
|
||||
if (!devTypeId) {
|
||||
devTypeId = deviceTypeIdIphone5;
|
||||
if (retina) {
|
||||
if ([family isEqualToString:@"ipad"]) {
|
||||
if (is64Bit) {
|
||||
devTypeId = deviceTypeIdIpadAir;
|
||||
} else {
|
||||
devTypeId = deviceTypeIdIpadRetina;
|
||||
}
|
||||
} else {
|
||||
if (isTallDevice) {
|
||||
if (is64Bit) {
|
||||
devTypeId = deviceTypeIdIphone5s;
|
||||
} else {
|
||||
devTypeId = deviceTypeIdIphone5;
|
||||
}
|
||||
} else {
|
||||
devTypeId = deviceTypeIdIphone4s;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if ([family isEqualToString:@"ipad"]) {
|
||||
devTypeId = deviceTypeIdIpad2;
|
||||
} else {
|
||||
devTypeId = deviceTypeIdIphone4s;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SimDeviceSet* deviceSet = [[self FindClassByName:@"SimDeviceSet"] defaultSet];
|
||||
NSArray* devices = [deviceSet availableDevices];
|
||||
NSArray* deviceTypeAndVersion = [devTypeId componentsSeparatedByString:@","];
|
||||
if(deviceTypeAndVersion.count == 2) {
|
||||
NSString* typeIdentifier = [[deviceTypeAndVersion objectAtIndex:0] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
|
||||
NSString* versionString = [[deviceTypeAndVersion objectAtIndex:1] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];;
|
||||
for (SimDevice* device in devices) {
|
||||
if ([device.deviceType.identifier isEqualToString:typeIdentifier] && [device.runtime.versionString isEqualToString:versionString]) {
|
||||
return device;
|
||||
}
|
||||
}
|
||||
}
|
||||
//maintain old behavior (if the device identifier doesn't have a version as part of the identifier, loop through to find the first matching)
|
||||
else
|
||||
{
|
||||
for (SimDevice* device in devices) {
|
||||
if ([device.deviceType.identifier isEqualToString:devTypeId]) {
|
||||
return device;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Default to whatever is the first device
|
||||
return [devices count] > 0 ? [devices objectAtIndex:0] : nil;
|
||||
}
|
||||
|
||||
- (NSString*) changeDeviceType:(NSString *)family retina:(BOOL)retina isTallDevice:(BOOL)isTallDevice is64Bit:(BOOL)is64Bit {
|
||||
NSString *devicePropertyValue;
|
||||
if (self->deviceTypeId) {
|
||||
if ([deviceTypeIdIphone4s isEqual: deviceTypeId])
|
||||
devicePropertyValue = deviceIphoneRetina3_5Inch;
|
||||
else if ([deviceTypeIdIphone5s isEqual: deviceTypeId])
|
||||
devicePropertyValue = deviceIphoneRetina4_0Inch;
|
||||
else if ([deviceTypeIdIpad2 isEqual: deviceTypeId])
|
||||
devicePropertyValue = deviceIpad;
|
||||
else if ([deviceTypeIdIpadRetina isEqual: deviceTypeId])
|
||||
devicePropertyValue = deviceIpadRetina;
|
||||
else {
|
||||
nsprintf(@"<msg>Unknown or unsupported device type: %@</msg>\n", deviceTypeId);
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return nil;
|
||||
}
|
||||
} else if (retina) {
|
||||
if (verbose) {
|
||||
msgprintf(@"using retina");
|
||||
}
|
||||
if ([family isEqualToString:@"ipad"]) {
|
||||
if (is64Bit) {
|
||||
devicePropertyValue = deviceIpadRetina_64bit;
|
||||
} else {
|
||||
devicePropertyValue = deviceIpadRetina;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (isTallDevice) {
|
||||
if (is64Bit) {
|
||||
devicePropertyValue = deviceIphoneRetina4_0Inch_64bit;
|
||||
} else {
|
||||
devicePropertyValue = deviceIphoneRetina4_0Inch;
|
||||
}
|
||||
} else {
|
||||
devicePropertyValue = deviceIphoneRetina3_5Inch;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if ([family isEqualToString:@"ipad"]) {
|
||||
devicePropertyValue = deviceIpad;
|
||||
} else {
|
||||
devicePropertyValue = deviceIphone;
|
||||
}
|
||||
}
|
||||
CFPreferencesSetAppValue((CFStringRef)deviceProperty, (CFPropertyListRef)devicePropertyValue, (CFStringRef)simulatorPrefrencesName);
|
||||
CFPreferencesAppSynchronize((CFStringRef)simulatorPrefrencesName);
|
||||
|
||||
return devicePropertyValue;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Execute 'main'
|
||||
*/
|
||||
- (void)runWithArgc:(int)argc argv:(char **)argv {
|
||||
if (argc < 2) {
|
||||
[self printUsage];
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
NSString* xcodeVersion = GetXcodeVersion();
|
||||
if (!([xcodeVersion compare:@"6.0" options:NSNumericSearch] != NSOrderedAscending) && false) {
|
||||
nsprintf(@"You need to have at least Xcode 6.0 installed -- you have version %@.", xcodeVersion);
|
||||
nsprintf(@"Run 'xcode-select --print-path' to check which version of Xcode is enabled.");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
retinaDevice = NO;
|
||||
tallDevice = NO;
|
||||
is64BitDevice = NO;
|
||||
exitOnStartup = NO;
|
||||
alreadyPrintedData = NO;
|
||||
startOnly = strcmp(argv[1], "start") == 0;
|
||||
deviceTypeId = nil;
|
||||
|
||||
nsprintf(@"<query_result>");
|
||||
for (int i = 0; i < argc; ++i) {
|
||||
if (strcmp(argv[i], "--developer-path") == 0) {
|
||||
++i;
|
||||
if (i < argc)
|
||||
gDevDir = argv[i];
|
||||
}
|
||||
}
|
||||
NSString* developerDir = FindDeveloperDir();
|
||||
if (!developerDir) {
|
||||
nsprintf(@"<msg>Unable to find developer directory.</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
}
|
||||
NSString *xcodePlistPath = [developerDir stringByAppendingPathComponent:@"../Info.plist"];
|
||||
NSAssert([[NSFileManager defaultManager] fileExistsAtPath:xcodePlistPath isDirectory:NULL],
|
||||
@"Cannot find Xcode's plist at: %@", xcodePlistPath);
|
||||
|
||||
NSDictionary *infoDict = [NSDictionary dictionaryWithContentsOfFile:xcodePlistPath];
|
||||
NSAssert(infoDict[@"DTXcode"], @"Cannot find the 'DTXcode' key in Xcode's Info.plist.");
|
||||
|
||||
NSString *DTXcode = infoDict[@"DTXcode"];
|
||||
xcodeVersionInt = [DTXcode intValue];
|
||||
NSString* dvtFoundationPath = [developerDir stringByAppendingPathComponent:kDVTFoundationRelativePath];
|
||||
if (![[NSFileManager defaultManager] fileExistsAtPath:dvtFoundationPath]) {
|
||||
// execute old version
|
||||
char *argNew = new char[strlen(argv[0] + 7)];
|
||||
strcpy(argNew, argv[0]);
|
||||
strcat(argNew, "_1_8_2");
|
||||
char **argvNew = new char *[argc + 1];
|
||||
argvNew[0] = argNew;
|
||||
for (int iarg = 1; iarg < argc; ++iarg)
|
||||
argvNew[iarg] = argv[iarg];
|
||||
argvNew[argc] = 0;
|
||||
execv(argNew, argvNew);
|
||||
}
|
||||
if (strcmp(argv[1], "showsdks") == 0) {
|
||||
[self LoadSimulatorFramework:developerDir];
|
||||
[self doExit:[self showSDKs]];
|
||||
} else if (strcmp(argv[1], "showdevicetypes") == 0) {
|
||||
[self LoadSimulatorFramework:developerDir];
|
||||
[self doExit:[self showDeviceTypes]];
|
||||
} else if (strcmp(argv[1], "launch") == 0 || startOnly) {
|
||||
if (strcmp(argv[1], "launch") == 0 && argc < 3) {
|
||||
msgprintf(@"Missing application path argument");
|
||||
[self printUsage];
|
||||
[self doExit:EXIT_FAILURE];
|
||||
}
|
||||
|
||||
NSString *appPath = nil;
|
||||
int argOffset;
|
||||
if (startOnly) {
|
||||
argOffset = 2;
|
||||
}
|
||||
else {
|
||||
argOffset = 3;
|
||||
appPath = [[NSString stringWithUTF8String:argv[2]] expandPath];
|
||||
}
|
||||
|
||||
NSString *family = nil;
|
||||
NSString *uuid = nil;
|
||||
NSString *stdoutPath = nil;
|
||||
NSString *stderrPath = nil;
|
||||
NSString *xctest = nil;
|
||||
NSTimeInterval timeout = 60;
|
||||
NSMutableDictionary *environment = [NSMutableDictionary dictionary];
|
||||
|
||||
int i = argOffset;
|
||||
for (; i < argc; i++) {
|
||||
if (strcmp(argv[i], "--version") == 0) {
|
||||
printf("%s\n", IOS_SIM_VERSION);
|
||||
exit(EXIT_SUCCESS);
|
||||
} else if (strcmp(argv[i], "--help") == 0) {
|
||||
[self printUsage];
|
||||
exit(EXIT_SUCCESS);
|
||||
} else if (strcmp(argv[i], "--verbose") == 0) {
|
||||
verbose = YES;
|
||||
} else if (strcmp(argv[i], "--exit") == 0) {
|
||||
exitOnStartup = YES;
|
||||
} else if (strcmp(argv[i], "--wait-for-debugger") == 0) {
|
||||
shouldWaitDebugger = YES;
|
||||
} else if (strcmp(argv[i], "--debug") == 0) {
|
||||
shouldWaitDebugger = YES;
|
||||
shouldStartDebugger = YES;
|
||||
} else if (strcmp(argv[i], "--use-gdb") == 0) {
|
||||
useGDB = YES;
|
||||
} else if (strcmp(argv[i], "--developer-path") == 0) {
|
||||
++i;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --developer-path</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
} else if (strcmp(argv[i], "--timeout") == 0) {
|
||||
if (i + 1 < argc) {
|
||||
timeout = [[NSString stringWithUTF8String:argv[++i]] doubleValue];
|
||||
NSLog(@"Timeout: %f second(s)", timeout);
|
||||
}
|
||||
}
|
||||
else if (strcmp(argv[i], "--sdk") == 0) {
|
||||
[self printDeprecation:argv[i]];
|
||||
i++;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --sdk</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
[self LoadSimulatorFramework:developerDir];
|
||||
NSString* ver = [NSString stringWithCString:argv[i] encoding:NSUTF8StringEncoding];
|
||||
Class systemRootClass = [self FindClassByName:@"DTiPhoneSimulatorSystemRoot"];
|
||||
NSArray *roots = [systemRootClass knownRoots];
|
||||
for (DTiPhoneSimulatorSystemRoot *root in roots) {
|
||||
NSString *v = [root sdkVersion];
|
||||
if ([v isEqualToString:ver]) {
|
||||
sdkRoot = root;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (sdkRoot == nil) {
|
||||
msgprintf(@"Unknown or unsupported SDK version: %s\n",argv[i]);
|
||||
[self showSDKs];
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
} else if (strcmp(argv[i], "--family") == 0) {
|
||||
[self printDeprecation:argv[i]];
|
||||
i++;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --sdkfamilymsg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
family = [NSString stringWithUTF8String:argv[i]];
|
||||
} else if (strcmp(argv[i], "--uuid") == 0) {
|
||||
i++;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --uuid</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
uuid = [NSString stringWithUTF8String:argv[i]];
|
||||
} else if (strcmp(argv[i], "--devicetypeid") == 0) {
|
||||
i++;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --devicetypeid</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
deviceTypeId = [NSString stringWithUTF8String:argv[i]];
|
||||
} else if (strcmp(argv[i], "--setenv") == 0) {
|
||||
i++;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --setenv</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
NSArray *parts = [[NSString stringWithUTF8String:argv[i]] componentsSeparatedByString:@"="];
|
||||
[environment setObject:[parts objectAtIndex:1] forKey:[parts objectAtIndex:0]];
|
||||
} else if (strcmp(argv[i], "--env") == 0) {
|
||||
i++;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --env</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
NSString *envFilePath = [[NSString stringWithUTF8String:argv[i]] expandPath];
|
||||
[environment setValuesForKeysWithDictionary:[NSDictionary dictionaryWithContentsOfFile:envFilePath]];
|
||||
if (!environment) {
|
||||
msgprintf(@"Could not read environment from file: %s", argv[i]);
|
||||
[self printUsage];
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
} else if (strcmp(argv[i], "--stdout") == 0) {
|
||||
i++;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --stdout</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
stdoutPath = [[NSString stringWithUTF8String:argv[i]] expandPath];
|
||||
NSLog(@"stdoutPath: %@", stdoutPath);
|
||||
} else if (strcmp(argv[i], "--stderr") == 0) {
|
||||
i++;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --stderr</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
stderrPath = [[NSString stringWithUTF8String:argv[i]] expandPath];
|
||||
NSLog(@"stderrPath: %@", stderrPath);
|
||||
} else if (strcmp(argv[i], "--xctest") == 0) {
|
||||
i++;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --xctest</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
xctest = [[NSString stringWithUTF8String:argv[i]] expandPath];
|
||||
NSLog(@"xctest: %@", xctest);
|
||||
} else if (strcmp(argv[i], "--retina") == 0) {
|
||||
[self printDeprecation:argv[i]];
|
||||
retinaDevice = YES;
|
||||
} else if (strcmp(argv[i], "--tall") == 0) {
|
||||
[self printDeprecation:argv[i]];
|
||||
tallDevice = YES;
|
||||
} else if (strcmp(argv[i], "--64bit") == 0) {
|
||||
[self printDeprecation:argv[i]];
|
||||
is64BitDevice = YES;
|
||||
} else if (strcmp(argv[i], "--args") == 0) {
|
||||
i++;
|
||||
break;
|
||||
} else {
|
||||
msgprintf(@"unrecognized argument:%s", argv[i]);
|
||||
[self printUsage];
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
}
|
||||
NSMutableArray *args = [NSMutableArray arrayWithCapacity:MAX(argc - i,0)];
|
||||
for (; i < argc; i++) {
|
||||
[args addObject:[NSString stringWithUTF8String:argv[i]]];
|
||||
}
|
||||
|
||||
if (sdkRoot == nil) {
|
||||
[self LoadSimulatorFramework:developerDir];
|
||||
Class systemRootClass = [self FindClassByName:@"DTiPhoneSimulatorSystemRoot"];
|
||||
sdkRoot = [systemRootClass defaultRoot];
|
||||
}
|
||||
if (xctest) {
|
||||
NSString *appName = [appPath lastPathComponent];
|
||||
NSString *executableName = [appName stringByDeletingPathExtension];
|
||||
NSString *injectionPath = @"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/IDEBundleInjection.framework/IDEBundleInjection";
|
||||
[environment setValuesForKeysWithDictionary:[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
injectionPath,@"DYLD_INSERT_LIBRARIES",
|
||||
xctest, @"XCInjectBundle",
|
||||
[appPath stringByAppendingFormat:@"/%@", executableName],@"XCInjectBundleInto",
|
||||
nil]];
|
||||
}
|
||||
|
||||
/* Don't exit, adds to runloop */
|
||||
int res = [self launchApp:appPath
|
||||
withFamily:family
|
||||
uuid:uuid
|
||||
environment:environment
|
||||
stdoutPath:stdoutPath
|
||||
stderrPath:stderrPath
|
||||
timeout:timeout
|
||||
args:args];
|
||||
nsprintf(@"<app_started status=\"%@\" />", ((res == 0) ? @"SUCCESS" : @"FAILURE"));
|
||||
fflush(stdout);
|
||||
fflush(stderr);
|
||||
if (res != 0)
|
||||
[self doExit:EXIT_FAILURE];
|
||||
} else {
|
||||
if (argc == 2 && strcmp(argv[1], "--help") == 0) {
|
||||
[self printUsage];
|
||||
[self doExit:EXIT_SUCCESS];
|
||||
} else if (argc == 2 && strcmp(argv[1], "--version") == 0) {
|
||||
printf("%s\n", IOS_SIM_VERSION);
|
||||
[self doExit:EXIT_SUCCESS];
|
||||
} else {
|
||||
fprintf(stderr, "Unknown command\n");
|
||||
[self printUsage];
|
||||
[self doExit:EXIT_FAILURE];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
29
src/tools/3rdparty/iossim/main.mm
vendored
29
src/tools/3rdparty/iossim/main.mm
vendored
@@ -1,29 +0,0 @@
|
||||
/* Author: Landon Fuller <landonf@plausiblelabs.com>
|
||||
* Copyright (c) 2008-2011 Plausible Labs Cooperative, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* See the IOSSIM_LICENSE file in this directory for the license on the source code in this file.
|
||||
*/
|
||||
/* derived from https://github.com/phonegap/ios-sim */
|
||||
|
||||
#import <AppKit/AppKit.h>
|
||||
#import <Foundation/NSFileManager.h>
|
||||
|
||||
#import "iphonesimulator.h"
|
||||
|
||||
/*
|
||||
* Runs the iPhoneSimulator backed by a main runloop.
|
||||
*/
|
||||
int main (int argc, char *argv[]) {
|
||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||
iPhoneSimulator *sim = [[iPhoneSimulator alloc] init];
|
||||
|
||||
/* Execute command line handler */
|
||||
[sim runWithArgc: argc argv: argv];
|
||||
|
||||
/* Run the loop to handle added input sources, if any */
|
||||
[[NSRunLoop mainRunLoop] run];
|
||||
|
||||
[pool release];
|
||||
return 0;
|
||||
}
|
9
src/tools/3rdparty/iossim/nsprintf.h
vendored
9
src/tools/3rdparty/iossim/nsprintf.h
vendored
@@ -1,9 +0,0 @@
|
||||
/*
|
||||
* See the IOSSIM_LICENSE file in this directory for the license on the source code in this file.
|
||||
*/
|
||||
int nsvfprintf (FILE *stream, NSString *format, va_list args);
|
||||
int nsfprintf (FILE *stream, NSString *format, ...);
|
||||
int nsprintf (NSString *format, ...);
|
||||
int msgvfprintf (FILE *stream, NSString *format, va_list args);
|
||||
int msgprintf (NSString *format, ...);
|
||||
NSString *escapeString(NSString *origString);
|
75
src/tools/3rdparty/iossim/nsprintf.mm
vendored
75
src/tools/3rdparty/iossim/nsprintf.mm
vendored
@@ -1,75 +0,0 @@
|
||||
/*
|
||||
* NSLog() clone, but writes to arbitrary output stream
|
||||
*
|
||||
* See the IOSSIM_LICENSE file in this directory for the license on the source code in this file.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <stdio.h>
|
||||
|
||||
int nsvfprintf (FILE *stream, NSString *format, va_list args) {
|
||||
int retval;
|
||||
|
||||
NSString *str = (NSString *) CFStringCreateWithFormatAndArguments(NULL, NULL, (CFStringRef) format, args);
|
||||
retval = fprintf(stream, "%s\n", [str UTF8String]);
|
||||
[str release];
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
int nsfprintf (FILE *stream, NSString *format, ...) {
|
||||
va_list ap;
|
||||
int retval;
|
||||
|
||||
va_start(ap, format);
|
||||
{
|
||||
retval = nsvfprintf(stream, format, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
int nsprintf (NSString *format, ...) {
|
||||
va_list ap;
|
||||
int retval;
|
||||
|
||||
va_start(ap, format);
|
||||
{
|
||||
retval = nsvfprintf(stdout, format, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
NSString *escapeString(NSString *origString)
|
||||
{
|
||||
return [[[[origString stringByReplacingOccurrencesOfString: @"&" withString: @"&"]
|
||||
stringByReplacingOccurrencesOfString: @"\"" withString: @"""]
|
||||
stringByReplacingOccurrencesOfString: @">" withString: @">"]
|
||||
stringByReplacingOccurrencesOfString: @"<" withString: @"<"];
|
||||
}
|
||||
|
||||
int msgvfprintf (FILE *stream, NSString *format, va_list args) {
|
||||
int retval;
|
||||
|
||||
NSString *str = (NSString *) CFStringCreateWithFormatAndArguments(NULL, NULL, (CFStringRef) format, args);
|
||||
retval = fprintf(stream, "<msg>%s</msg>\n", [escapeString(str) UTF8String]);
|
||||
[str release];
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
int msgprintf(NSString *format, ...) {
|
||||
va_list ap;
|
||||
int retval;
|
||||
|
||||
va_start(ap, format);
|
||||
{
|
||||
retval = msgvfprintf(stdout, format, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
|
||||
return retval;
|
||||
}
|
11
src/tools/3rdparty/iossim/nsstringexpandpath.h
vendored
11
src/tools/3rdparty/iossim/nsstringexpandpath.h
vendored
@@ -1,11 +0,0 @@
|
||||
/*
|
||||
* See the IOSSIM_LICENSE file in this directory for the license on the source code in this file.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface NSString (ExpandPath)
|
||||
|
||||
- (NSString *)expandPath;
|
||||
|
||||
@end
|
18
src/tools/3rdparty/iossim/nsstringexpandpath.mm
vendored
18
src/tools/3rdparty/iossim/nsstringexpandpath.mm
vendored
@@ -1,18 +0,0 @@
|
||||
/*
|
||||
* See the LICENSE file for the license on the source code in this file.
|
||||
*/
|
||||
|
||||
#import "nsstringexpandpath.h"
|
||||
|
||||
@implementation NSString (ExpandPath)
|
||||
|
||||
- (NSString *)expandPath {
|
||||
if ([self isAbsolutePath]) {
|
||||
return [self stringByStandardizingPath];
|
||||
} else {
|
||||
NSString *cwd = [[NSFileManager defaultManager] currentDirectoryPath];
|
||||
return [[cwd stringByAppendingPathComponent:self] stringByStandardizingPath];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
1
src/tools/3rdparty/iossim/version.h
vendored
1
src/tools/3rdparty/iossim/version.h
vendored
@@ -1 +0,0 @@
|
||||
#define IOS_SIM_VERSION "2.0.1"
|
31
src/tools/3rdparty/iossim_1_8_2/IOSSIM_LICENSE
vendored
31
src/tools/3rdparty/iossim_1_8_2/IOSSIM_LICENSE
vendored
@@ -1,31 +0,0 @@
|
||||
Author: Landon Fuller <landonf@plausiblelabs.com>
|
||||
Copyright (c) 2008-2011 Plausible Labs Cooperative, Inc.
|
||||
All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Modifications made by the following entities are licensed as above:
|
||||
- Jeff Haynie, Appcelerator, Inc.
|
||||
- https://github.com/hborders
|
||||
- http://pivotallabs.com/users/scoward/blog
|
||||
- Eloy Duran, Fingertips <eloy@fngtps.com>
|
||||
- Fawzi Mohamed, digia <fawzi.mohamed@digia.com>
|
16
src/tools/3rdparty/iossim_1_8_2/Info.plist
vendored
16
src/tools/3rdparty/iossim_1_8_2/Info.plist
vendored
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>iossim_1_8_2</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.qt-project.qt-creator.iossim_1_8_2</string>
|
||||
<key>LSUIElement</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
30
src/tools/3rdparty/iossim_1_8_2/iossim.qbs
vendored
30
src/tools/3rdparty/iossim_1_8_2/iossim.qbs
vendored
@@ -1,30 +0,0 @@
|
||||
import qbs 1.0
|
||||
import QtcTool
|
||||
|
||||
|
||||
QtcTool {
|
||||
name: "iossim"
|
||||
condition: qbs.targetOS.contains("macos")
|
||||
|
||||
Depends { name: "Qt"; submodules: ["widgets"] }
|
||||
Depends { name: "app_version_header" }
|
||||
|
||||
files: [
|
||||
"main.mm",
|
||||
"nsprintf.mm",
|
||||
"nsstringexpandpath.mm",
|
||||
"iphonesimulator.mm",
|
||||
"iphonesimulator.h",
|
||||
"nsprintf.h",
|
||||
"nsstringexpandpath.h",
|
||||
"version.h",
|
||||
"iphonesimulatorremoteclient/iphonesimulatorremoteclient.h"
|
||||
]
|
||||
cpp.linkerFlags: base.concat(["-fobjc-link-runtime"])
|
||||
cpp.frameworks: base.concat(["Foundation", "CoreServices", "ApplicationServices", "IOKit",
|
||||
"AppKit"])
|
||||
cpp.frameworkPaths: base.concat("/System/Library/PrivateFrameworks")
|
||||
cpp.infoPlistFile: "Info.plist"
|
||||
|
||||
toolInstallDir: project.ide_libexec_path + "/ios"
|
||||
}
|
58
src/tools/3rdparty/iossim_1_8_2/iossim_1_8_2.pro
vendored
58
src/tools/3rdparty/iossim_1_8_2/iossim_1_8_2.pro
vendored
@@ -1,58 +0,0 @@
|
||||
CONFIG += console
|
||||
|
||||
QT += core
|
||||
QT += gui
|
||||
|
||||
CONFIG -= app_bundle
|
||||
|
||||
include(../../../../qtcreator.pri)
|
||||
|
||||
# Prevent from popping up in the dock when launched.
|
||||
# We embed the Info.plist file, so the application doesn't need to
|
||||
# be a bundle.
|
||||
QMAKE_LFLAGS += -Wl,-sectcreate,__TEXT,__info_plist,\"$$PWD/Info.plist\" \
|
||||
-fobjc-link-runtime
|
||||
|
||||
LIBS += \
|
||||
-framework Foundation \
|
||||
-framework CoreServices \
|
||||
-framework ApplicationServices \
|
||||
-framework CoreFoundation \
|
||||
-F/System/Library/PrivateFrameworks \
|
||||
-framework IOKit -framework AppKit
|
||||
|
||||
iPhoneSimulatorRemoteClientDirectLinking {
|
||||
LIBS += \
|
||||
-F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks \
|
||||
-F/Applications/Xcode.app/Contents/OtherFrameworks
|
||||
LIBS += \
|
||||
-framework iPhoneSimulatorRemoteClient
|
||||
QMAKE_RPATHDIR += /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks \
|
||||
/Applications/Xcode.app/Contents/OtherFrameworks
|
||||
/System/Library/PrivateFrameworks \
|
||||
}
|
||||
|
||||
TEMPLATE = app
|
||||
|
||||
# put into a subdir, so we can deploy a separate qt.conf for it
|
||||
DESTDIR = $$IDE_LIBEXEC_PATH/ios
|
||||
include(../../../rpath.pri)
|
||||
|
||||
OBJECTIVE_SOURCES += \
|
||||
main.mm \
|
||||
nsprintf.mm \
|
||||
nsstringexpandpath.mm \
|
||||
iphonesimulator.mm
|
||||
|
||||
HEADERS += \
|
||||
iphonesimulator.h \
|
||||
nsprintf.h \
|
||||
nsstringexpandpath.h \
|
||||
version.h \
|
||||
iphonesimulatorremoteclient/iphonesimulatorremoteclient.h
|
||||
|
||||
DISTFILES = IOSSIM_LICENSE \
|
||||
Info.plist
|
||||
|
||||
target.path = $$INSTALL_LIBEXEC_PATH/ios
|
||||
INSTALLS += target
|
@@ -1,41 +0,0 @@
|
||||
/* Author: Landon Fuller <landonf@plausiblelabs.com>
|
||||
* Copyright (c) 2008-2011 Plausible Labs Cooperative, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* See the IOSSIM_LICENSE file in this directory for the license on the source code in this file.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "iphonesimulatorremoteclient/iphonesimulatorremoteclient.h"
|
||||
#import "version.h"
|
||||
|
||||
@interface iPhoneSimulator : NSObject <DTiPhoneSimulatorSessionDelegate> {
|
||||
@private
|
||||
DTiPhoneSimulatorSystemRoot *sdkRoot;
|
||||
NSFileHandle *stdoutFileHandle;
|
||||
NSFileHandle *stderrFileHandle;
|
||||
DTiPhoneSimulatorSession *session;
|
||||
NSTimer *pidCheckingTimer;
|
||||
BOOL startOnly;
|
||||
BOOL exitOnStartup;
|
||||
BOOL shouldWaitDebugger;
|
||||
BOOL shouldStartDebugger;
|
||||
BOOL useGDB;
|
||||
BOOL verbose;
|
||||
BOOL alreadyPrintedData;
|
||||
BOOL retinaDevice;
|
||||
BOOL tallDevice;
|
||||
}
|
||||
|
||||
- (id)init;
|
||||
- (void)dealloc;
|
||||
- (void)runWithArgc:(int)argc argv:(char **)argv;
|
||||
|
||||
- (void)createStdioFIFO:(NSFileHandle **)fileHandle ofType:(NSString *)type atPath:(NSString **)path;
|
||||
- (void)removeStdioFIFO:(NSFileHandle *)fileHandle atPath:(NSString *)path;
|
||||
- (void)stop;
|
||||
- (void)checkPid:(NSTimer *)timer;
|
||||
- (void)doExit:(int)errorCode;
|
||||
- (void)changeDeviceType:(NSString *)family retina:(BOOL)retina isTallDevice:(BOOL)isTallDevice;
|
||||
|
||||
@end
|
634
src/tools/3rdparty/iossim_1_8_2/iphonesimulator.mm
vendored
634
src/tools/3rdparty/iossim_1_8_2/iphonesimulator.mm
vendored
@@ -1,634 +0,0 @@
|
||||
/* Author: Landon Fuller <landonf@plausiblelabs.com>
|
||||
* Copyright (c) 2008-2011 Plausible Labs Cooperative, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* See the IOSSIM_LICENSE file in this directory for the license on the source code in this file.
|
||||
*/
|
||||
|
||||
#import "iphonesimulator.h"
|
||||
#import "nsstringexpandpath.h"
|
||||
#import "nsprintf.h"
|
||||
#import <sys/types.h>
|
||||
#import <sys/stat.h>
|
||||
#import <objc/runtime.h>
|
||||
#import <AppKit/NSRunningApplication.h>
|
||||
|
||||
NSString *simulatorPrefrencesName = @"com.apple.iphonesimulator";
|
||||
NSString *deviceProperty = @"SimulateDevice";
|
||||
NSString *deviceIphoneRetina3_5Inch = @"iPhone Retina (3.5-inch)";
|
||||
NSString *deviceIphoneRetina4_0Inch = @"iPhone Retina (4-inch)";
|
||||
NSString *deviceIphone = @"iPhone";
|
||||
NSString *deviceIpad = @"iPad";
|
||||
NSString *deviceIpadRetina = @"iPad (Retina)";
|
||||
|
||||
/**
|
||||
* A simple iPhoneSimulatorRemoteClient framework.
|
||||
*/
|
||||
@implementation iPhoneSimulator
|
||||
|
||||
- (id)init {
|
||||
self = [super init];
|
||||
session = nil;
|
||||
pidCheckingTimer = nil;
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[session release];
|
||||
[pidCheckingTimer release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)doExit:(int)errorCode {
|
||||
nsprintf(@"<exit code=\"%d\"/>", errorCode);
|
||||
nsprintf(@"</query_result>");
|
||||
fflush(stdout);
|
||||
fflush(stderr);
|
||||
exit(errorCode);
|
||||
}
|
||||
|
||||
- (void) printUsage {
|
||||
fprintf(stdout, "<msg>Usage: iossim <command> <options> [--args ...]\n");
|
||||
fprintf(stdout, "\n");
|
||||
fprintf(stdout, "Commands:\n");
|
||||
fprintf(stdout, " showsdks List the available iOS SDK versions\n");
|
||||
fprintf(stdout, " launch <application path> Launch the application at the specified path on the iOS Simulator\n");
|
||||
fprintf(stdout, " start Launch iOS Simulator without an app\n");
|
||||
fprintf(stdout, "\n");
|
||||
fprintf(stdout, "Options:\n");
|
||||
fprintf(stdout, " --version Print the version of ios-sim\n");
|
||||
fprintf(stdout, " --developer-path <developerDir> path to the developer directory (in Xcode)");
|
||||
fprintf(stdout, " --help Show this help text\n");
|
||||
fprintf(stdout, " --verbose Set the output level to verbose\n");
|
||||
fprintf(stdout, " --exit Exit after startup\n");
|
||||
fprintf(stdout, " --wait-for-debugger Wait for debugger to attach\n");
|
||||
fprintf(stdout, " --debug Attach LLDB to the application on startup\n");
|
||||
fprintf(stdout, " --use-gdb Use GDB instead of LLDB. (Requires --debug)\n");
|
||||
fprintf(stdout, " --sdk <sdkversion> The iOS SDK version to run the application on (defaults to the latest)\n");
|
||||
fprintf(stdout, " --family <device family> The device type that should be simulated (defaults to `iphone')\n");
|
||||
fprintf(stdout, " --retina Start a retina device\n");
|
||||
fprintf(stdout, " --tall In combination with --retina flag, start the tall version of the retina device (e.g. iPhone 5 (4-inch))\n");
|
||||
fprintf(stdout, " --uuid <uuid> A UUID identifying the session (is that correct?)\n");
|
||||
fprintf(stdout, " --env <environment file path> A plist file containing environment key-value pairs that should be set\n");
|
||||
fprintf(stdout, " --setenv NAME=VALUE Set an environment variable\n");
|
||||
fprintf(stdout, " --stdout <stdout file path> The path where stdout of the simulator will be redirected to (defaults to stdout of ios-sim)\n");
|
||||
fprintf(stdout, " --stderr <stderr file path> The path where stderr of the simulator will be redirected to (defaults to stderr of ios-sim)\n");
|
||||
fprintf(stdout, " --timeout <seconds> The timeout time to wait for a response from the Simulator. Default value: 30 seconds\n");
|
||||
fprintf(stdout, " --args <...> All following arguments will be passed on to the application</msg>\n");
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
|
||||
- (int) showSDKs {
|
||||
NSUInteger i;
|
||||
id tClass = objc_getClass("DTiPhoneSimulatorSystemRoot");
|
||||
if (tClass == nil) {
|
||||
nsprintf(@"<msg>DTiPhoneSimulatorSystemRoot class is nil.</msg>");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
NSArray *roots = [tClass knownRoots];
|
||||
|
||||
nsprintf(@"<device_info>");
|
||||
for (i = 0; i < [roots count]; ++i) {
|
||||
DTiPhoneSimulatorSystemRoot *root = [roots objectAtIndex:i];
|
||||
nsprintf(@"<item><key>sdk%d_name</key><value>%@</value></item>", i, [root sdkDisplayName]);
|
||||
nsprintf(@"<item><key>sdk%d_version</key><value>%@</value></item>", i, [root sdkVersion]);
|
||||
nsprintf(@"<item><key>sdk%d_sysroot</key><value>%@</value></item>", i, [root sdkRootPath]);
|
||||
}
|
||||
nsprintf(@"</device_info>");
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
- (void)session:(DTiPhoneSimulatorSession *)mySession didEndWithError:(NSError *)error {
|
||||
if (verbose) {
|
||||
nsprintf(@"<msg>Session did end with error %@</msg>", error);
|
||||
}
|
||||
|
||||
if (stderrFileHandle != nil) {
|
||||
NSString *stderrPath = [[mySession sessionConfig] simulatedApplicationStdErrPath];
|
||||
[self removeStdioFIFO:stderrFileHandle atPath:stderrPath];
|
||||
}
|
||||
|
||||
if (stdoutFileHandle != nil) {
|
||||
NSString *stdoutPath = [[mySession sessionConfig] simulatedApplicationStdOutPath];
|
||||
[self removeStdioFIFO:stdoutFileHandle atPath:stdoutPath];
|
||||
}
|
||||
|
||||
if (error != nil)
|
||||
[self doExit:EXIT_FAILURE];
|
||||
else
|
||||
[self doExit:EXIT_SUCCESS];
|
||||
}
|
||||
|
||||
|
||||
- (void)session:(DTiPhoneSimulatorSession *)mySession didStart:(BOOL)started withError:(NSError *)error {
|
||||
if (startOnly && mySession) {
|
||||
[NSTask launchedTaskWithLaunchPath:@"/usr/bin/osascript"
|
||||
arguments:[NSArray arrayWithObjects:@"-e", @"tell application \"iPhone Simulator\" to activate", nil]];
|
||||
nsprintf(@"<msg>Simulator started (no session)</msg>");
|
||||
[self doExit:EXIT_SUCCESS];
|
||||
return;
|
||||
}
|
||||
if (started) {
|
||||
[NSTask launchedTaskWithLaunchPath:@"/usr/bin/osascript"
|
||||
arguments:[NSArray arrayWithObjects:@"-e", @"tell application \"iPhone Simulator\" to activate", nil]];
|
||||
if (shouldStartDebugger) {
|
||||
char*args[4] = { NULL, NULL, (char*)[[[mySession simulatedApplicationPID] description] UTF8String], NULL };
|
||||
if (useGDB) {
|
||||
args[0] = strdup("gdb");
|
||||
args[1] = strdup("program");
|
||||
} else {
|
||||
args[0] = strdup("lldb");
|
||||
args[1] = strdup("--attach-pid");
|
||||
}
|
||||
// The parent process must live on to process the stdout/stderr fifos,
|
||||
// so start the debugger as a child process.
|
||||
pid_t child_pid = fork();
|
||||
if (child_pid == 0) {
|
||||
execvp(args[0], args);
|
||||
} else if (child_pid < 0) {
|
||||
nsprintf(@"<msg>Could not start debugger process: %@</msg>", errno);
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (verbose) {
|
||||
nsprintf(@"<msg>Session started</msg>");
|
||||
}
|
||||
nsprintf(@"<inferior_pid>%@</inferior_pid>", [session simulatedApplicationPID]);
|
||||
fflush(stdout);
|
||||
if (exitOnStartup) {
|
||||
[self doExit:EXIT_SUCCESS];
|
||||
return;
|
||||
}
|
||||
pidCheckingTimer = [[NSTimer scheduledTimerWithTimeInterval:5.0 target:self
|
||||
selector:@selector(checkPid:) userInfo:nil repeats: TRUE] retain];
|
||||
} else {
|
||||
nsprintf(@"<msg>Session could not be started: %@</msg>", error);
|
||||
[self doExit:EXIT_FAILURE];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)stop {
|
||||
if (session)
|
||||
[session requestEndWithTimeout: 0.1];
|
||||
}
|
||||
|
||||
- (void)checkPid:(NSTimer *)timer {
|
||||
(void)timer;
|
||||
if (session && [[session simulatedApplicationPID]intValue] > 0) {
|
||||
if (kill((pid_t)[[session simulatedApplicationPID]intValue], 0) == -1) {
|
||||
nsprintf(@"<msg>app stopped</msg>");
|
||||
[self doExit:EXIT_SUCCESS];
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
- (void)stdioDataIsAvailable:(NSNotification *)notification {
|
||||
[[notification object] readInBackgroundAndNotify];
|
||||
NSData *data = [[notification userInfo] valueForKey:NSFileHandleNotificationDataItem];
|
||||
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; /* dangerous if partially encoded data is at the boundary */
|
||||
if (!alreadyPrintedData) {
|
||||
if ([str length] == 0) {
|
||||
return;
|
||||
} else {
|
||||
alreadyPrintedData = YES;
|
||||
}
|
||||
}
|
||||
if ([notification object] == stdoutFileHandle) {
|
||||
printf("<app_output>%s</app_output>\n", [str UTF8String]);
|
||||
} else {
|
||||
nsprintf(@"<app_output>%@</app_output>", str); // handle stderr differently?
|
||||
}
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
|
||||
- (void)createStdioFIFO:(NSFileHandle **)fileHandle ofType:(NSString *)type atPath:(NSString **)path {
|
||||
*path = [NSString stringWithFormat:@"%@/ios-sim-%@-pipe-%d", NSTemporaryDirectory(), type, (int)time(NULL)];
|
||||
if (mkfifo([*path UTF8String], S_IRUSR | S_IWUSR) == -1) {
|
||||
nsprintf(@"<msg>Unable to create %@ named pipe `%@'</msg>", type, *path);
|
||||
[self doExit:EXIT_FAILURE];
|
||||
} else {
|
||||
if (verbose) {
|
||||
nsprintf(@"<msg>Creating named pipe at `%@'</msg>", *path);
|
||||
}
|
||||
int fd = open([*path UTF8String], O_RDONLY | O_NDELAY);
|
||||
*fileHandle = [[[NSFileHandle alloc] initWithFileDescriptor:fd] retain];
|
||||
[*fileHandle readInBackgroundAndNotify];
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(stdioDataIsAvailable:)
|
||||
name:NSFileHandleReadCompletionNotification
|
||||
object:*fileHandle];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (void)removeStdioFIFO:(NSFileHandle *)fileHandle atPath:(NSString *)path {
|
||||
if (verbose) {
|
||||
nsprintf(@"<msg>Removing named pipe at `%@'</msg>", path);
|
||||
}
|
||||
[fileHandle closeFile];
|
||||
[fileHandle release];
|
||||
if (![[NSFileManager defaultManager] removeItemAtPath:path error:NULL]) {
|
||||
nsprintf(@"<msg>Unable to remove named pipe `%@'</msg>", path);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (int)launchApp:(NSString *)path withFamily:(NSString *)family
|
||||
uuid:(NSString *)uuid
|
||||
environment:(NSDictionary *)environment
|
||||
stdoutPath:(NSString *)stdoutPath
|
||||
stderrPath:(NSString *)stderrPath
|
||||
timeout:(NSTimeInterval)timeout
|
||||
args:(NSArray *)args {
|
||||
DTiPhoneSimulatorApplicationSpecifier *appSpec;
|
||||
DTiPhoneSimulatorSessionConfig *config;
|
||||
NSError *error = 0;
|
||||
id tClass;
|
||||
|
||||
NSFileManager *fileManager = [[[NSFileManager alloc] init] autorelease];
|
||||
if (!startOnly && ![fileManager fileExistsAtPath:path]) {
|
||||
nsprintf(@"<msg>Application path %@ doesn't exist!</msg>", path);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
/* Create the app specifier */
|
||||
tClass = objc_getClass("DTiPhoneSimulatorApplicationSpecifier");
|
||||
if (tClass == nil) {
|
||||
nsprintf(@"<msg>DTiPhoneSimulatorApplicationSpecifier class is nil.</msg>");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
appSpec = startOnly ? nil : [tClass specifierWithApplicationPath:path];
|
||||
|
||||
if (verbose) {
|
||||
nsprintf(@"<msg>App Spec: %@</msg>", appSpec);
|
||||
nsprintf(@"SDK Root: %@", sdkRoot);
|
||||
|
||||
for (id key in environment) {
|
||||
nsprintf(@"<msg>Env: %@ = %@</msg>", key, [environment objectForKey:key]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
NSString *sdkVersion = [sdkRoot sdkVersion];
|
||||
NSString *appSupportDir = [NSString stringWithFormat:@"%@/Library/Application Support/iPhone Simulator/%@",
|
||||
NSHomeDirectory(), sdkVersion];
|
||||
NSMutableDictionary *mutableEnv = [NSMutableDictionary dictionaryWithDictionary:environment];
|
||||
[mutableEnv setObject:appSupportDir forKey:@"CFFIXED_USER_HOME"];
|
||||
[mutableEnv setObject:appSupportDir forKey:@"IPHONE_SHARED_RESOURCES_DIRECTORY"];
|
||||
[mutableEnv setObject:appSupportDir forKey:@"HOME"];
|
||||
[mutableEnv setObject:[sdkRoot sdkRootPath] forKey:@"IPHONE_SIMULATOR_ROOT"];
|
||||
[mutableEnv setObject:[sdkRoot sdkRootPath] forKey:@"DYLD_ROOT_PATH"];
|
||||
[mutableEnv setObject:[sdkRoot sdkRootPath] forKey:@"DYLD_FRAMEWORK_PATH"];
|
||||
[mutableEnv setObject:[sdkRoot sdkRootPath] forKey:@"DYLD_LIBRARY_PATH"];
|
||||
[mutableEnv setObject:@"YES" forKey:@"NSUnbufferedIO"];
|
||||
environment = mutableEnv;
|
||||
|
||||
/* Set up the session configuration */
|
||||
tClass = objc_getClass("DTiPhoneSimulatorSessionConfig");
|
||||
if (tClass == nil) {
|
||||
nsprintf(@"<msg>DTiPhoneSimulatorApplicationSpecifier class is nil.</msg>");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
config = [[[tClass alloc] init] autorelease];
|
||||
[config setApplicationToSimulateOnStart:appSpec];
|
||||
[config setSimulatedSystemRoot:sdkRoot];
|
||||
[config setSimulatedApplicationShouldWaitForDebugger:shouldWaitDebugger];
|
||||
|
||||
[config setSimulatedApplicationLaunchArgs:args];
|
||||
[config setSimulatedApplicationLaunchEnvironment:environment];
|
||||
|
||||
if (stderrPath) {
|
||||
stderrFileHandle = nil;
|
||||
} else if (!exitOnStartup) {
|
||||
[self createStdioFIFO:&stderrFileHandle ofType:@"stderr" atPath:&stderrPath];
|
||||
}
|
||||
[config setSimulatedApplicationStdErrPath:stderrPath];
|
||||
|
||||
if (stdoutPath) {
|
||||
stdoutFileHandle = nil;
|
||||
} else if (!exitOnStartup) {
|
||||
[self createStdioFIFO:&stdoutFileHandle ofType:@"stdout" atPath:&stdoutPath];
|
||||
}
|
||||
[config setSimulatedApplicationStdOutPath:stdoutPath];
|
||||
|
||||
[config setLocalizedClientName: @"iossim"];
|
||||
|
||||
// this was introduced in 3.2 of SDK
|
||||
if ([config respondsToSelector:@selector(setSimulatedDeviceFamily:)]) {
|
||||
if (family == nil) {
|
||||
family = @"iphone";
|
||||
}
|
||||
|
||||
if (verbose) {
|
||||
nsprintf(@"using device family %@",family);
|
||||
}
|
||||
|
||||
if ([family isEqualToString:@"ipad"]) {
|
||||
[config setSimulatedDeviceFamily:[NSNumber numberWithInt:2]];
|
||||
} else{
|
||||
[config setSimulatedDeviceFamily:[NSNumber numberWithInt:1]];
|
||||
}
|
||||
}
|
||||
|
||||
[self changeDeviceType:family retina:retinaDevice isTallDevice:tallDevice];
|
||||
|
||||
/* Start the session */
|
||||
tClass = objc_getClass("DTiPhoneSimulatorSession");
|
||||
if (tClass == nil) {
|
||||
nsprintf(@"<msg>DTiPhoneSimulatorSession class is nil.</msg>");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
session = [[tClass alloc] init];
|
||||
[session setDelegate:self];
|
||||
if (uuid != nil){
|
||||
[session setUuid:uuid];
|
||||
}
|
||||
|
||||
if (![session requestStartWithConfig:config timeout:timeout error:&error]) {
|
||||
nsprintf(@"<msg>Could not start simulator session: %@</msg>", error);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
- (void) changeDeviceType:(NSString *)family retina:(BOOL)retina isTallDevice:(BOOL)isTallDevice {
|
||||
NSString *devicePropertyValue;
|
||||
if (retina) {
|
||||
if (verbose) {
|
||||
nsprintf(@"<msg>using retina</msg>");
|
||||
}
|
||||
if ([family isEqualToString:@"ipad"]) {
|
||||
devicePropertyValue = deviceIpadRetina;
|
||||
}
|
||||
else {
|
||||
if (isTallDevice) {
|
||||
devicePropertyValue = deviceIphoneRetina4_0Inch;
|
||||
} else {
|
||||
devicePropertyValue = deviceIphoneRetina3_5Inch;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if ([family isEqualToString:@"ipad"]) {
|
||||
devicePropertyValue = deviceIpad;
|
||||
} else {
|
||||
devicePropertyValue = deviceIphone;
|
||||
}
|
||||
}
|
||||
CFPreferencesSetAppValue((CFStringRef)deviceProperty, (CFPropertyListRef)devicePropertyValue, (CFStringRef)simulatorPrefrencesName);
|
||||
CFPreferencesAppSynchronize((CFStringRef)simulatorPrefrencesName);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Execute 'main'
|
||||
*/
|
||||
- (void)runWithArgc:(int)argc argv:(char **)argv {
|
||||
if (argc < 2) {
|
||||
[self printUsage];
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
retinaDevice = NO;
|
||||
tallDevice = NO;
|
||||
exitOnStartup = NO;
|
||||
alreadyPrintedData = NO;
|
||||
startOnly = strcmp(argv[1], "start") == 0;
|
||||
nsprintf(@"<query_result>");
|
||||
|
||||
if (strcmp(argv[1], "showdevicetypes") == 0) {
|
||||
nsprintf(@"<deviceinfo>");
|
||||
nsprintf(@"<item><key>com.apple.CoreSimulator.SimDeviceType.iPhone-4s</key><value>iPhone 3.5-inch Retina Display</value></item>");
|
||||
nsprintf(@"<item><key>com.apple.CoreSimulator.SimDeviceType.iPhone-5s</key><value>iPhone 4-inch Retina Display</value></item>");
|
||||
nsprintf(@"<item><key>com.apple.CoreSimulator.SimDeviceType.iPad-2</key><value>iPad</value></item>");
|
||||
nsprintf(@"<item><key>com.apple.CoreSimulator.SimDeviceType.iPad-Retina</key><value>iPad Retina Display</value></item>");
|
||||
nsprintf(@"</deviceinfo>");
|
||||
[self doExit:0];
|
||||
return;
|
||||
} else if (strcmp(argv[1], "showsdks") == 0) {
|
||||
[self doExit:[self showSDKs]];
|
||||
return;
|
||||
} else if (strcmp(argv[1], "launch") == 0 || startOnly) {
|
||||
if (strcmp(argv[1], "launch") == 0 && argc < 3) {
|
||||
nsprintf(@"<msg>Missing application path argument</msg>");
|
||||
[self printUsage];
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
|
||||
NSString *appPath = nil;
|
||||
int argOffset;
|
||||
if (startOnly) {
|
||||
argOffset = 2;
|
||||
}
|
||||
else {
|
||||
argOffset = 3;
|
||||
appPath = [[NSString stringWithUTF8String:argv[2]] expandPath];
|
||||
}
|
||||
|
||||
NSString *family = nil;
|
||||
NSString *uuid = nil;
|
||||
NSString *stdoutPath = nil;
|
||||
NSString *stderrPath = nil;
|
||||
NSTimeInterval timeout = 60;
|
||||
NSMutableDictionary *environment = [NSMutableDictionary dictionary];
|
||||
|
||||
int i = argOffset;
|
||||
for (; i < argc; i++) {
|
||||
if (strcmp(argv[i], "--version") == 0) {
|
||||
printf("%s\n", IOS_SIM_VERSION);
|
||||
exit(EXIT_SUCCESS);
|
||||
} else if (strcmp(argv[i], "--help") == 0) {
|
||||
[self printUsage];
|
||||
exit(EXIT_SUCCESS);
|
||||
} else if (strcmp(argv[i], "--verbose") == 0) {
|
||||
verbose = YES;
|
||||
} else if (strcmp(argv[i], "--exit") == 0) {
|
||||
exitOnStartup = YES;
|
||||
} else if (strcmp(argv[i], "--wait-for-debugger") == 0) {
|
||||
shouldWaitDebugger = YES;
|
||||
} else if (strcmp(argv[i], "--debug") == 0) {
|
||||
shouldWaitDebugger = YES;
|
||||
shouldStartDebugger = YES;
|
||||
} else if (strcmp(argv[i], "--use-gdb") == 0) {
|
||||
useGDB = YES;
|
||||
} else if (strcmp(argv[i], "--developer-path") == 0) {
|
||||
++i;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --developer-path</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
} else if (strcmp(argv[i], "--timeout") == 0) {
|
||||
if (i + 1 < argc) {
|
||||
timeout = [[NSString stringWithUTF8String:argv[++i]] doubleValue];
|
||||
nsprintf(@"<msg>Timeout: %f second(s)</msg>", timeout);
|
||||
}
|
||||
}
|
||||
else if (strcmp(argv[i], "--sdk") == 0) {
|
||||
i++;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --sdk</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
NSString* ver = [NSString stringWithCString:argv[i] encoding:NSUTF8StringEncoding];
|
||||
id tClass = objc_getClass("DTiPhoneSimulatorSystemRoot");
|
||||
NSArray *roots;
|
||||
if (tClass == nil) {
|
||||
nsprintf(@"<msg>DTiPhoneSimulatorSystemRoot class is nil.</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
roots = [tClass knownRoots];
|
||||
for (DTiPhoneSimulatorSystemRoot *root in roots) {
|
||||
NSString *v = [root sdkVersion];
|
||||
if ([v isEqualToString:ver]) {
|
||||
sdkRoot = root;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (sdkRoot == nil) {
|
||||
fprintf(stdout,"<msg>Unknown or unsupported SDK version: %s</msg>\n",argv[i]);
|
||||
[self showSDKs];
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
} else if (strcmp(argv[i], "--family") == 0) {
|
||||
i++;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --family</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
family = [NSString stringWithUTF8String:argv[i]];
|
||||
} else if (strcmp(argv[i], "--uuid") == 0) {
|
||||
i++;
|
||||
uuid = [NSString stringWithUTF8String:argv[i]];
|
||||
} else if (strcmp(argv[i], "--devicetypeid") == 0) {
|
||||
i++;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --devicetypeid</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
if (strcmp(argv[i], "com.apple.CoreSimulator.SimDeviceType.iPhone-4s") == 0) {
|
||||
family = [NSString stringWithUTF8String:"iphone"];
|
||||
retinaDevice = YES;
|
||||
} else if (strcmp(argv[i], "com.apple.CoreSimulator.SimDeviceType.iPad-2") == 0) {
|
||||
family = [NSString stringWithUTF8String:"ipad"];
|
||||
} else if (strcmp(argv[i], "com.apple.CoreSimulator.SimDeviceType.iPhone-5s") == 0) {
|
||||
family = [NSString stringWithUTF8String:"iphone"];
|
||||
retinaDevice = YES;
|
||||
tallDevice = YES;
|
||||
} else if (strcmp(argv[i], "com.apple.CoreSimulator.SimDeviceType.iPad-Retina") == 0) {
|
||||
family = [NSString stringWithUTF8String:"ipad"];
|
||||
retinaDevice = YES;
|
||||
} else {
|
||||
fprintf(stdout,"<msg>Unknown or unsupported device type: %s</msg>\n",argv[i]);
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
} else if (strcmp(argv[i], "--setenv") == 0) {
|
||||
i++;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --setenv</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
NSArray *parts = [[NSString stringWithUTF8String:argv[i]] componentsSeparatedByString:@"="];
|
||||
[environment setObject:[parts objectAtIndex:1] forKey:[parts objectAtIndex:0]];
|
||||
} else if (strcmp(argv[i], "--env") == 0) {
|
||||
i++;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --env</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
NSString *envFilePath = [[NSString stringWithUTF8String:argv[i]] expandPath];
|
||||
environment = [NSMutableDictionary dictionaryWithContentsOfFile:envFilePath];
|
||||
if (!environment) {
|
||||
fprintf(stdout, "<msg>Could not read environment from file: %s</msg>\n", argv[i]);
|
||||
[self printUsage];
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
} else if (strcmp(argv[i], "--stdout") == 0) {
|
||||
i++;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --stdout</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
stdoutPath = [[NSString stringWithUTF8String:argv[i]] expandPath];
|
||||
nsprintf(@"<msg>stdoutPath: %@</msg>", stdoutPath);
|
||||
} else if (strcmp(argv[i], "--stderr") == 0) {
|
||||
i++;
|
||||
if (i == argc) {
|
||||
nsprintf(@"<msg>missing arg after --stderr</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
stderrPath = [[NSString stringWithUTF8String:argv[i]] expandPath];
|
||||
nsprintf(@"<msg>stderrPath: %@</msg>", stderrPath);
|
||||
} else if (strcmp(argv[i], "--retina") == 0) {
|
||||
retinaDevice = YES;
|
||||
} else if (strcmp(argv[i], "--tall") == 0) {
|
||||
tallDevice = YES;
|
||||
} else if (strcmp(argv[i], "--args") == 0) {
|
||||
i++;
|
||||
break;
|
||||
} else {
|
||||
printf("<msg>unrecognized argument:%s</msg>\n", argv[i]);
|
||||
[self printUsage];
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
}
|
||||
NSMutableArray *args = [NSMutableArray arrayWithCapacity:MAX(argc - i,0)];
|
||||
for (; i < argc; i++) {
|
||||
[args addObject:[NSString stringWithUTF8String:argv[i]]];
|
||||
}
|
||||
|
||||
if (sdkRoot == nil) {
|
||||
id tClass = objc_getClass("DTiPhoneSimulatorSystemRoot");
|
||||
if (tClass == nil) {
|
||||
nsprintf(@"<msg>DTiPhoneSimulatorSystemRoot class is nil.</msg>");
|
||||
[self doExit:EXIT_FAILURE];
|
||||
return;
|
||||
}
|
||||
sdkRoot = [tClass defaultRoot];
|
||||
}
|
||||
|
||||
/* Don't exit, adds to runloop */
|
||||
int res = [self launchApp:appPath
|
||||
withFamily:family
|
||||
uuid:uuid
|
||||
environment:environment
|
||||
stdoutPath:stdoutPath
|
||||
stderrPath:stderrPath
|
||||
timeout:timeout
|
||||
args:args];
|
||||
nsprintf(@"<app_started status=\"%@\" />", ((res == 0) ? @"SUCCESS" : @"FAILURE"));
|
||||
fflush(stdout);
|
||||
fflush(stderr);
|
||||
if (res != 0)
|
||||
[self doExit:EXIT_FAILURE];
|
||||
} else {
|
||||
if (argc == 2 && strcmp(argv[1], "--help") == 0) {
|
||||
[self printUsage];
|
||||
[self doExit:EXIT_SUCCESS];
|
||||
} else if (argc == 2 && strcmp(argv[1], "--version") == 0) {
|
||||
printf("%s\n", IOS_SIM_VERSION);
|
||||
[self doExit:EXIT_SUCCESS];
|
||||
} else {
|
||||
fprintf(stdout, "<msg>Unknown command</msg>\n");
|
||||
[self printUsage];
|
||||
[self doExit:EXIT_FAILURE];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
@@ -1,126 +0,0 @@
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
/*
|
||||
* File: /Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/iPhoneSimulatorRemoteClient.framework/Versions/A/iPhoneSimulatorRemoteClient
|
||||
* Arch: Intel 80x86 (i386)
|
||||
* Current version: 12.0.0, Compatibility version: 1.0.0
|
||||
*
|
||||
* See the IOSSIM_LICENSE file in the parent directory for the license on the source code in this file.
|
||||
*/
|
||||
|
||||
@class DTiPhoneSimulatorSession;
|
||||
|
||||
@protocol DTiPhoneSimulatorSessionDelegate
|
||||
|
||||
- (void) session: (DTiPhoneSimulatorSession *) session didEndWithError: (NSError *) error;
|
||||
- (void) session: (DTiPhoneSimulatorSession *) session didStart: (BOOL) started withError: (NSError *) error;
|
||||
|
||||
@end
|
||||
|
||||
@interface DTiPhoneSimulatorApplicationSpecifier : NSObject <NSCopying>
|
||||
{
|
||||
NSString *_appPath;
|
||||
NSString *_bundleID;
|
||||
}
|
||||
|
||||
+ (id) specifierWithApplicationPath: (NSString *) appPath;
|
||||
+ (id) specifierWithApplicationBundleIdentifier: (NSString *) bundleID;
|
||||
- (NSString *) bundleID;
|
||||
- (void) setBundleID: (NSString *) bundleId;
|
||||
- (NSString *) appPath;
|
||||
- (void) setAppPath: (NSString *) appPath;
|
||||
|
||||
@end
|
||||
|
||||
@interface DTiPhoneSimulatorSystemRoot : NSObject <NSCopying>
|
||||
{
|
||||
NSString *sdkRootPath;
|
||||
NSString *sdkVersion;
|
||||
NSString *sdkDisplayName;
|
||||
}
|
||||
|
||||
+ (id) defaultRoot;
|
||||
|
||||
+ (id)rootWithSDKPath:(id)fp8;
|
||||
+ (id)rootWithSDKVersion:(id)fp8;
|
||||
+ (NSArray *) knownRoots;
|
||||
- (id)initWithSDKPath:(id)fp8;
|
||||
- (id)sdkDisplayName;
|
||||
- (void)setSdkDisplayName:(id)fp8;
|
||||
- (id)sdkVersion;
|
||||
- (void)setSdkVersion:(id)fp8;
|
||||
- (id)sdkRootPath;
|
||||
- (void)setSdkRootPath:(id)fp8;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
@interface DTiPhoneSimulatorSessionConfig : NSObject <NSCopying>
|
||||
{
|
||||
NSString *_localizedClientName;
|
||||
DTiPhoneSimulatorSystemRoot *_simulatedSystemRoot;
|
||||
DTiPhoneSimulatorApplicationSpecifier *_applicationToSimulateOnStart;
|
||||
NSArray *_simulatedApplicationLaunchArgs;
|
||||
NSDictionary *_simulatedApplicationLaunchEnvironment;
|
||||
BOOL _simulatedApplicationShouldWaitForDebugger;
|
||||
NSString *_simulatedApplicationStdOutPath;
|
||||
NSString *_simulatedApplicationStdErrPath;
|
||||
}
|
||||
|
||||
- (id)simulatedApplicationStdErrPath;
|
||||
- (void)setSimulatedApplicationStdErrPath:(id)fp8;
|
||||
- (id)simulatedApplicationStdOutPath;
|
||||
- (void)setSimulatedApplicationStdOutPath:(id)fp8;
|
||||
- (id)simulatedApplicationLaunchEnvironment;
|
||||
- (void)setSimulatedApplicationLaunchEnvironment:(id)fp8;
|
||||
- (id)simulatedApplicationLaunchArgs;
|
||||
- (void)setSimulatedApplicationLaunchArgs:(id)fp8;
|
||||
|
||||
- (DTiPhoneSimulatorApplicationSpecifier *) applicationToSimulateOnStart;
|
||||
- (void) setApplicationToSimulateOnStart: (DTiPhoneSimulatorApplicationSpecifier *) appSpec;
|
||||
- (DTiPhoneSimulatorSystemRoot *) simulatedSystemRoot;
|
||||
- (void) setSimulatedSystemRoot: (DTiPhoneSimulatorSystemRoot *) simulatedSystemRoot;
|
||||
|
||||
|
||||
- (BOOL) simulatedApplicationShouldWaitForDebugger;
|
||||
- (void) setSimulatedApplicationShouldWaitForDebugger: (BOOL) waitForDebugger;
|
||||
|
||||
- (id)localizedClientName;
|
||||
- (void)setLocalizedClientName:(id)fp8;
|
||||
|
||||
// Added in 3.2 to support iPad/iPhone device families
|
||||
- (void)setSimulatedDeviceFamily:(NSNumber*)family;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface DTiPhoneSimulatorSession : NSObject {
|
||||
NSString *_uuid;
|
||||
id <DTiPhoneSimulatorSessionDelegate> _delegate;
|
||||
NSNumber *_simulatedApplicationPID;
|
||||
int _sessionLifecycleProgress;
|
||||
NSTimer *_timeoutTimer;
|
||||
DTiPhoneSimulatorSessionConfig *_sessionConfig;
|
||||
struct ProcessSerialNumber _simulatorPSN;
|
||||
}
|
||||
|
||||
- (BOOL) requestStartWithConfig: (DTiPhoneSimulatorSessionConfig *) config timeout: (NSTimeInterval) timeout error: (NSError **) outError;
|
||||
- (void) requestEndWithTimeout: (NSTimeInterval) timeout;
|
||||
|
||||
- (id)sessionConfig;
|
||||
- (void)setSessionConfig:(id)fp8;
|
||||
- (id)timeoutTimer;
|
||||
- (void)setTimeoutTimer:(id)fp8;
|
||||
- (int)sessionLifecycleProgress;
|
||||
- (void)setSessionLifecycleProgress:(int)fp8;
|
||||
- (id)simulatedApplicationPID;
|
||||
- (void)setSimulatedApplicationPID:(id)fp8;
|
||||
|
||||
- (id<DTiPhoneSimulatorSessionDelegate>) delegate;
|
||||
- (void) setDelegate: (id<DTiPhoneSimulatorSessionDelegate>) delegate;
|
||||
|
||||
- (id)uuid;
|
||||
- (void)setUuid:(id)fp8;
|
||||
|
||||
@end
|
77
src/tools/3rdparty/iossim_1_8_2/main.mm
vendored
77
src/tools/3rdparty/iossim_1_8_2/main.mm
vendored
@@ -1,77 +0,0 @@
|
||||
/* Author: Landon Fuller <landonf@plausiblelabs.com>
|
||||
* Copyright (c) 2008-2011 Plausible Labs Cooperative, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* See the IOSSIM_LICENSE file in this directory for the license on the source code in this file.
|
||||
*/
|
||||
/* derived from https://github.com/phonegap/ios-sim */
|
||||
#import <AppKit/AppKit.h>
|
||||
#import "iphonesimulator.h"
|
||||
#include <QLibrary>
|
||||
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
|
||||
#include <QApplication>
|
||||
#else
|
||||
#include <QGuiApplication>
|
||||
#endif
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
|
||||
/* to do:
|
||||
* - try to stop inferior when killed (or communicate with creator to allow killing the inferior)
|
||||
* - remove unneeded functionality and streamline a bit
|
||||
*/
|
||||
|
||||
/*
|
||||
* Runs the iPhoneSimulator backed by a main runloop.
|
||||
*/
|
||||
int main (int argc, char *argv[]) {
|
||||
int qtargc = 1;
|
||||
char *qtarg = 0;
|
||||
if (argc)
|
||||
qtarg = argv[0];
|
||||
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
|
||||
QApplication a(qtargc, &qtarg);
|
||||
#else
|
||||
QGuiApplication a(qtargc, &qtarg);
|
||||
#endif
|
||||
|
||||
|
||||
//NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||
|
||||
QString xcodePath = QLatin1String("/Applications/Xcode.app/Contents/Developer/");
|
||||
for (int i = 0; i + 1 < argc; ++i) {
|
||||
if (strcmp(argv[i], "--developer-path") == 0)
|
||||
xcodePath = QString::fromLocal8Bit(argv[i + 1]);
|
||||
}
|
||||
if (!xcodePath.endsWith(QLatin1Char('/')))
|
||||
xcodePath.append(QLatin1Char('/'));
|
||||
|
||||
/* manual loading of the private deps */
|
||||
QStringList deps = QStringList()
|
||||
<< QLatin1String("/System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols")
|
||||
<< QLatin1String("/System/Library/PrivateFrameworks/CoreSymbolication.framework/CoreSymbolication")
|
||||
<< (xcodePath + QLatin1String("../OtherFrameworks/DevToolsFoundation.framework/DevToolsFoundation"));
|
||||
foreach (const QString &libPath, deps) {
|
||||
QLibrary *lib = new QLibrary(libPath);
|
||||
//lib->setLoadHints(QLibrary::ExportExternalSymbolsHint);
|
||||
if (!lib->load())
|
||||
printf("<msg>error loading %s</msg>", libPath.toUtf8().constData());
|
||||
}
|
||||
QLibrary *libIPhoneSimulatorRemoteClient = new QLibrary(xcodePath
|
||||
+ QLatin1String("Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/iPhoneSimulatorRemoteClient.framework/iPhoneSimulatorRemoteClient"));
|
||||
//libIPhoneSimulatorRemoteClient->setLoadHints(QLibrary::ResolveAllSymbolsHint|QLibrary::ExportExternalSymbolsHint);
|
||||
if (!libIPhoneSimulatorRemoteClient->load())
|
||||
printf("<msg>error loading iPhoneSimulatorRemoteClient</msg>");
|
||||
|
||||
iPhoneSimulator *sim = [[iPhoneSimulator alloc] init];
|
||||
|
||||
/* Execute command line handler */
|
||||
[sim runWithArgc: argc argv: argv];
|
||||
|
||||
/* Run the loop to handle added input sources, if any */
|
||||
|
||||
int res = a.exec();
|
||||
exit(res);
|
||||
// [pool release];
|
||||
return 0;
|
||||
}
|
6
src/tools/3rdparty/iossim_1_8_2/nsprintf.h
vendored
6
src/tools/3rdparty/iossim_1_8_2/nsprintf.h
vendored
@@ -1,6 +0,0 @@
|
||||
/*
|
||||
* See the IOSSIM_LICENSE file in this directory for the license on the source code in this file.
|
||||
*/
|
||||
int nsvfprintf (FILE *stream, NSString *format, va_list args);
|
||||
int nsfprintf (FILE *stream, NSString *format, ...);
|
||||
int nsprintf (NSString *format, ...);
|
44
src/tools/3rdparty/iossim_1_8_2/nsprintf.mm
vendored
44
src/tools/3rdparty/iossim_1_8_2/nsprintf.mm
vendored
@@ -1,44 +0,0 @@
|
||||
/*
|
||||
* NSLog() clone, but writes to arbitrary output stream
|
||||
*
|
||||
* See the IOSSIM_LICENSE file in this directory for the license on the source code in this file.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <stdio.h>
|
||||
|
||||
int nsvfprintf (FILE *stream, NSString *format, va_list args) {
|
||||
int retval;
|
||||
|
||||
NSString *str = (NSString *) CFStringCreateWithFormatAndArguments(NULL, NULL, (CFStringRef) format, args);
|
||||
retval = fprintf(stream, "%s\n", [str UTF8String]);
|
||||
[str release];
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
int nsfprintf (FILE *stream, NSString *format, ...) {
|
||||
va_list ap;
|
||||
int retval;
|
||||
|
||||
va_start(ap, format);
|
||||
{
|
||||
retval = nsvfprintf(stream, format, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
int nsprintf (NSString *format, ...) {
|
||||
va_list ap;
|
||||
int retval;
|
||||
|
||||
va_start(ap, format);
|
||||
{
|
||||
retval = nsvfprintf(stdout, format, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
|
||||
return retval;
|
||||
}
|
@@ -1,11 +0,0 @@
|
||||
/*
|
||||
* See the IOSSIM_LICENSE file in this directory for the license on the source code in this file.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface NSString (ExpandPath)
|
||||
|
||||
- (NSString *)expandPath;
|
||||
|
||||
@end
|
@@ -1,18 +0,0 @@
|
||||
/*
|
||||
* See the IOSSIM_LICENSE file in this directory for the license on the source code in this file.
|
||||
*/
|
||||
|
||||
#import "nsstringexpandpath.h"
|
||||
|
||||
@implementation NSString (ExpandPath)
|
||||
|
||||
- (NSString *)expandPath {
|
||||
if ([self isAbsolutePath]) {
|
||||
return [self stringByStandardizingPath];
|
||||
} else {
|
||||
NSString *cwd = [[NSFileManager defaultManager] currentDirectoryPath];
|
||||
return [[cwd stringByAppendingPathComponent:self] stringByStandardizingPath];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
1
src/tools/3rdparty/iossim_1_8_2/version.h
vendored
1
src/tools/3rdparty/iossim_1_8_2/version.h
vendored
@@ -1 +0,0 @@
|
||||
#define IOS_SIM_VERSION "1.8.2m"
|
Reference in New Issue
Block a user