Merge branch '135-xcode-project'
diff --git a/.gitignore b/.gitignore
index d3423ee..33dbe44 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,3 @@
-demo
-demo.app
-ios-deploy
-ios-deploy.dSYM
+build/*
/.DS_Store
*~
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 26974ee..0000000
--- a/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-IOS_SDK_VERSION = 8.3
-
-IOS_CC = gcc -ObjC
-DEVICE_SUPPORT = $(shell xcode-select --print-path)/Platforms/iPhoneOS.platform/DeviceSupport
-IOS_SDK = $(shell xcode-select --print-path)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS$(IOS_SDK_VERSION).sdk
-
-all: clean ios-deploy demo.app
-
-demo.app: demo Info.plist
- mkdir -p demo.app
- cp demo demo.app/
- cp Info.plist ResourceRules.plist demo.app/
- codesign -f -s "iPhone Developer" --entitlements Entitlements.plist demo.app
-
-demo: demo.c
- $(IOS_CC) -g -arch armv7 -isysroot $(IOS_SDK) -framework CoreFoundation -o demo demo.c
-
-ios-deploy: clean ios-deploy.c
- $(IOS_CC) -g -o ios-deploy -framework Foundation -framework CoreFoundation -framework MobileDevice -F/System/Library/PrivateFrameworks ios-deploy.c
-
-symlink:
- cd $(DEVICE_SUPPORT); ln -sfn "`find . -type d -maxdepth 1 -exec basename {} \; | tail -1`" Latest
-
-install: symlink ios-deploy
- mkdir -p $(prefix)/bin
- cp ios-deploy $(prefix)/bin
-
-uninstall:
- rm $(prefix)/bin/ios-deploy
-
-debug: all
- ./ios-deploy --debug --bundle demo.app
-
-clean:
- @rm -rf *.app demo ios-deploy
diff --git a/demo/.gitignore b/demo/.gitignore
new file mode 100644
index 0000000..c2ef55d
--- /dev/null
+++ b/demo/.gitignore
@@ -0,0 +1,5 @@
+demo
+demo.app
+demo.dSYM
+/.DS_Store
+*~
diff --git a/Entitlements.plist b/demo/Entitlements.plist
similarity index 100%
rename from Entitlements.plist
rename to demo/Entitlements.plist
diff --git a/Info.plist b/demo/Info.plist
similarity index 100%
rename from Info.plist
rename to demo/Info.plist
diff --git a/demo/Makefile b/demo/Makefile
new file mode 100644
index 0000000..cf7c36a
--- /dev/null
+++ b/demo/Makefile
@@ -0,0 +1,24 @@
+IOS_SDK_VERSION = 9.0
+
+IOS_CC = gcc -ObjC
+IOS_SDK = $(shell xcode-select --print-path)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS$(IOS_SDK_VERSION).sdk
+
+all: clean demo.app
+
+demo.app: demo Info.plist
+ mkdir -p demo.app
+ cp demo demo.app/
+ cp Info.plist ResourceRules.plist demo.app/
+ codesign -f -s "iPhone Developer" --entitlements Entitlements.plist demo.app
+
+demo: demo.c
+ $(IOS_CC) -g -arch armv7 -isysroot $(IOS_SDK) -framework CoreFoundation -o demo demo.c
+
+debug: all ios-deploy
+ @../build/Release/ios-deploy --debug --bundle demo.app
+
+clean:
+ @rm -rf *.app demo demo.dSYM
+
+ios-deploy:
+ @xcodebuild -project ../ios-deploy.xcodeproj
diff --git a/ResourceRules.plist b/demo/ResourceRules.plist
similarity index 100%
rename from ResourceRules.plist
rename to demo/ResourceRules.plist
diff --git a/demo.c b/demo/demo.c
similarity index 98%
rename from demo.c
rename to demo/demo.c
index 583f43b..b366b14 100644
--- a/demo.c
+++ b/demo/demo.c
@@ -6,4 +6,4 @@
printf("argv[%d] = %s\n", i, argv[i]);
}
return 0;
-}
+}
\ No newline at end of file
diff --git a/ios-deploy.xcodeproj/project.pbxproj b/ios-deploy.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..2b26eb1
--- /dev/null
+++ b/ios-deploy.xcodeproj/project.pbxproj
@@ -0,0 +1,275 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 7E70899C1B587DE4004D23AA /* ios-deploy.c in Sources */ = {isa = PBXBuildFile; fileRef = 7E7089991B587DE4004D23AA /* ios-deploy.c */; settings = {COMPILER_FLAGS = "-x objective-c -fno-objc-arc"; }; };
+ 7E70899E1B587F29004D23AA /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E70899D1B587F29004D23AA /* CoreFoundation.framework */; };
+ 7E7089A01B58801E004D23AA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E70899F1B58801E004D23AA /* Foundation.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 7E70898C1B587BF3004D23AA /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = /usr/share/man/man1/;
+ dstSubfolderSpec = 0;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 1;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 7E70898E1B587BF3004D23AA /* ios-deploy */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "ios-deploy"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 7E7089991B587DE4004D23AA /* ios-deploy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ios-deploy.c"; path = "src/ios-deploy.c"; sourceTree = SOURCE_ROOT; };
+ 7E70899A1B587DE4004D23AA /* errors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = errors.h; path = src/errors.h; sourceTree = SOURCE_ROOT; };
+ 7E70899B1B587DE4004D23AA /* MobileDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MobileDevice.h; path = src/MobileDevice.h; sourceTree = SOURCE_ROOT; };
+ 7E70899D1B587F29004D23AA /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
+ 7E70899F1B58801E004D23AA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 7E70898B1B587BF3004D23AA /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 7E7089A01B58801E004D23AA /* Foundation.framework in Frameworks */,
+ 7E70899E1B587F29004D23AA /* CoreFoundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 7E7089851B587BF3004D23AA = {
+ isa = PBXGroup;
+ children = (
+ 7E7089901B587BF3004D23AA /* ios-deploy */,
+ 7E7089A21B588219004D23AA /* Frameworks */,
+ 7E70898F1B587BF3004D23AA /* Products */,
+ );
+ sourceTree = "<group>";
+ };
+ 7E70898F1B587BF3004D23AA /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 7E70898E1B587BF3004D23AA /* ios-deploy */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 7E7089901B587BF3004D23AA /* ios-deploy */ = {
+ isa = PBXGroup;
+ children = (
+ 7E7089991B587DE4004D23AA /* ios-deploy.c */,
+ 7E70899A1B587DE4004D23AA /* errors.h */,
+ 7E70899B1B587DE4004D23AA /* MobileDevice.h */,
+ );
+ path = "ios-deploy";
+ sourceTree = "<group>";
+ };
+ 7E7089A21B588219004D23AA /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 7E70899F1B58801E004D23AA /* Foundation.framework */,
+ 7E70899D1B587F29004D23AA /* CoreFoundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 7E70898D1B587BF3004D23AA /* ios-deploy */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 7E7089951B587BF3004D23AA /* Build configuration list for PBXNativeTarget "ios-deploy" */;
+ buildPhases = (
+ 7E70898A1B587BF3004D23AA /* Sources */,
+ 7E70898B1B587BF3004D23AA /* Frameworks */,
+ 7E70898C1B587BF3004D23AA /* CopyFiles */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "ios-deploy";
+ productName = "ios-deploy";
+ productReference = 7E70898E1B587BF3004D23AA /* ios-deploy */;
+ productType = "com.apple.product-type.tool";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 7E7089861B587BF3004D23AA /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 0710;
+ ORGANIZATIONNAME = PhoneGap;
+ TargetAttributes = {
+ 7E70898D1B587BF3004D23AA = {
+ CreatedOnToolsVersion = 6.4;
+ };
+ };
+ };
+ buildConfigurationList = 7E7089891B587BF3004D23AA /* Build configuration list for PBXProject "ios-deploy" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 7E7089851B587BF3004D23AA;
+ productRefGroup = 7E70898F1B587BF3004D23AA /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 7E70898D1B587BF3004D23AA /* ios-deploy */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 7E70898A1B587BF3004D23AA /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 7E70899C1B587DE4004D23AA /* ios-deploy.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 7E7089931B587BF3004D23AA /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ MACOSX_DEPLOYMENT_TARGET = 10.8;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ OTHER_LDFLAGS = (
+ "-framework",
+ MobileDevice,
+ "-F/System/Library/PrivateFrameworks",
+ );
+ SDKROOT = macosx;
+ };
+ name = Debug;
+ };
+ 7E7089941B587BF3004D23AA /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ MACOSX_DEPLOYMENT_TARGET = 10.8;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ OTHER_LDFLAGS = (
+ "-framework",
+ MobileDevice,
+ "-F/System/Library/PrivateFrameworks",
+ );
+ SDKROOT = macosx;
+ };
+ name = Release;
+ };
+ 7E7089961B587BF3004D23AA /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ };
+ name = Debug;
+ };
+ 7E7089971B587BF3004D23AA /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 7E7089891B587BF3004D23AA /* Build configuration list for PBXProject "ios-deploy" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 7E7089931B587BF3004D23AA /* Debug */,
+ 7E7089941B587BF3004D23AA /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 7E7089951B587BF3004D23AA /* Build configuration list for PBXNativeTarget "ios-deploy" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 7E7089961B587BF3004D23AA /* Debug */,
+ 7E7089971B587BF3004D23AA /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 7E7089861B587BF3004D23AA /* Project object */;
+}
diff --git a/package.json b/package.json
index c279b07..cd4bdfb 100644
--- a/package.json
+++ b/package.json
@@ -7,9 +7,9 @@
"description": "launch iOS apps iOS devices from the command line (Xcode 7)",
"main": "ios-deploy",
"scripts": {
- "preinstall": "./check_reqs.js && make ios-deploy"
+ "preinstall": "./check_reqs.js && xcodebuild"
},
- "bin": "./ios-deploy",
+ "bin": "./build/Release/ios-deploy",
"repository": {
"type": "git",
"url": "https://github.com/phonegap/ios-deploy"
diff --git a/resources/buildbox/build.sh b/resources/buildbox/build.sh
deleted file mode 100755
index aea6cbf..0000000
--- a/resources/buildbox/build.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/env bash
-echo "$ make"
-make
\ No newline at end of file
diff --git a/MobileDevice.h b/src/MobileDevice.h
similarity index 100%
rename from MobileDevice.h
rename to src/MobileDevice.h
diff --git a/errors.h b/src/errors.h
similarity index 100%
rename from errors.h
rename to src/errors.h
diff --git a/ios-deploy.c b/src/ios-deploy.c
similarity index 98%
rename from ios-deploy.c
rename to src/ios-deploy.c
index f562079..a2cae06 100644
--- a/ios-deploy.c
+++ b/src/ios-deploy.c
@@ -169,7 +169,7 @@
char *device_id = NULL;
char *args = NULL;
char *list_root = NULL;
-int timeout = 0;
+int _timeout = 0;
int port = 0; // 0 means "dynamically assigned"
CFStringRef last_path = NULL;
service_conn_t gdbfd;
@@ -326,7 +326,7 @@
CFStringRef copy_xcode_path_for(CFStringRef subPath, CFStringRef search) {
CFStringRef xcodeDevPath = copy_xcode_dev_path();
- CFStringRef path;
+ CFStringRef path = NULL;
bool found = false;
const char* home = get_home();
CFRange slashLocation;
@@ -864,7 +864,7 @@
void
server_callback (CFSocketRef s, CFSocketCallBackType callbackType, CFDataRef address, const void *data, void *info)
{
- int res;
+ ssize_t res;
if (CFDataGetLength (data) == 0) {
// close the socket on which we've got end-of-file, the server_socket.
@@ -974,7 +974,7 @@
return -1;
}
- kill_ptree_inner(root, signum, kp, len / sizeof(struct kinfo_proc));
+ kill_ptree_inner(root, signum, kp, (int)(len / sizeof(struct kinfo_proc)));
free(kp);
return 0;
@@ -1365,7 +1365,6 @@
const void *keys[count];
CFDictionaryGetKeysAndValues(result, keys, NULL);
for(int i = 0; i < count; ++i) {
- CFStringRef test = (CFStringRef)keys[i];
NSLogOut(@"%@", (CFStringRef)keys[i]);
}
@@ -1506,8 +1505,6 @@
void make_directory(AMDeviceRef device) {
service_conn_t houseFd = start_house_arrest_service(device);
- afc_file_ref file_ref;
-
afc_connection afc_conn;
afc_connection* afc_conn_p = &afc_conn;
AFCConnectionOpen(houseFd, 0, &afc_conn_p);
@@ -1519,8 +1516,6 @@
void remove_path(AMDeviceRef device) {
service_conn_t houseFd = start_house_arrest_service(device);
- afc_file_ref file_ref;
-
afc_connection afc_conn;
afc_connection* afc_conn_p = &afc_conn;
AFCConnectionOpen(houseFd, 0, &afc_conn_p);
@@ -1862,7 +1857,7 @@
verbose = 1;
break;
case 't':
- timeout = atoi(optarg);
+ _timeout = atoi(optarg);
break;
case 'u':
unbuffered = 1;
@@ -1951,8 +1946,8 @@
setbuf(stderr, NULL);
}
- if (detect_only && timeout == 0) {
- timeout = 5;
+ if (detect_only && _timeout == 0) {
+ _timeout = 5;
}
if (app_path) {
@@ -1962,11 +1957,11 @@
}
AMDSetLogLevel(5); // otherwise syslog gets flooded with crap
- if (timeout > 0)
+ if (_timeout > 0)
{
- CFRunLoopTimerRef timer = CFRunLoopTimerCreate(NULL, CFAbsoluteTimeGetCurrent() + timeout, 0, 0, 0, timeout_callback, NULL);
+ CFRunLoopTimerRef timer = CFRunLoopTimerCreate(NULL, CFAbsoluteTimeGetCurrent() + _timeout, 0, 0, 0, timeout_callback, NULL);
CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, kCFRunLoopCommonModes);
- NSLogOut(@"[....] Waiting up to %d seconds for iOS device to be connected", timeout);
+ NSLogOut(@"[....] Waiting up to %d seconds for iOS device to be connected", _timeout);
}
else
{