- remove /usr/include from the include path since the iOS SDK provides the correct version
- `_NSGetEnviron()` is private and not available on iOS
- `.align` without an argument is not allowed with the Apple tools. 2^2 should be the default alignment
- ignore error messages for XCode < 5
- pass include path to libuv
# arm-apple-darwin configuration
ifeq ($(CFG_OSTYPE),apple-darwin)
-CFG_IOS_SDK = $(shell xcrun --show-sdk-path -sdk iphoneos)
-CFG_IOS_FLAGS = -target arm-apple-darwin -isysroot $(CFG_IOS_SDK) -I $(CFG_IOS_SDK)/usr/include -I $(CFG_IOS_SDK)/usr/include/c++/4.2.1 -I /usr/include
+CFG_IOS_SDK = $(shell xcrun --show-sdk-path -sdk iphoneos 2>/dev/null)
+CFG_IOS_FLAGS = -target arm-apple-darwin -isysroot $(CFG_IOS_SDK) -I$(CFG_IOS_SDK)/usr/include -I$(CFG_IOS_SDK)/usr/include/c++/4.2.1
CC_arm-apple-darwin = $(shell xcrun -find -sdk iphoneos clang)
CXX_arm-apple-darwin = $(shell xcrun -find -sdk iphoneos clang++)
CPP_arm-apple-darwin = $(shell xcrun -find -sdk iphoneos clang++)
LIBUV_FLAGS_x86_64 = -m64 -fPIC
ifeq ($(OSTYPE_$(1)), linux-androideabi)
LIBUV_FLAGS_arm = -fPIC -DANDROID -std=gnu99
+else ifeq ($(OSTYPE_$(1)), apple-darwin)
+ ifeq ($(HOST_$(1)), arm)
+ IOS_SDK := $(shell xcrun --show-sdk-path -sdk iphoneos 2>/dev/null)
+ LIBUV_FLAGS_arm := -fPIC -std=gnu99 -I$(IOS_SDK)/usr/include -I$(IOS_SDK)/usr/include/c++/4.2.1
+ else
+ LIBUV_FLAGS_arm := -fPIC -std=gnu99
+ endif
else
LIBUV_FLAGS_arm = -fPIC -std=gnu99
endif
.text
.code 32
.arm
+#if defined(__APPLE__)
+.align 2
+#else
.align
-
+#endif
.globl swap_registers
swap_registers:
.text
.code 32
.arm
+#if defined(__APPLE__)
+.align 2
+#else
.align
-
+#endif
.globl record_sp_limit
.globl get_sp_limit
#include <time.h>
#ifdef __APPLE__
-#include <crt_externs.h>
-#include <mach/mach_time.h>
+ #include <TargetConditionals.h>
+ #include <mach/mach_time.h>
+
+ #if (TARGET_OS_IPHONE)
+ extern char **environ;
+ #else
+ #include <crt_externs.h>
+ #endif
#endif
#if !defined(__WIN32__)
#else
extern "C" CDECL char**
rust_env_pairs() {
-#ifdef __APPLE__
+#if defined(__APPLE__) && !(TARGET_OS_IPHONE)
char **environ = *_NSGetEnviron();
#endif
return environ;