Fixes for compilation to iOS:

- 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
This commit is contained in:
kud1ing 2013-11-01 19:39:35 +01:00
parent 3a15482b9c
commit 2a333ed088
5 changed files with 26 additions and 7 deletions

View File

@ -195,8 +195,8 @@ CFG_RUN_TARG_i686-unknown-linux-gnu=$(call CFG_RUN_i686-unknown-linux-gnu,,$(2))
# 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++)

View File

@ -28,6 +28,13 @@ LIBUV_FLAGS_i386 = -m32 -fPIC -I$(S)src/etc/mingw-fix-include
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

View File

@ -6,8 +6,11 @@
.text
.code 32
.arm
#if defined(__APPLE__)
.align 2
#else
.align
#endif
.globl swap_registers
swap_registers:

View File

@ -6,8 +6,11 @@
.text
.code 32
.arm
#if defined(__APPLE__)
.align 2
#else
.align
#endif
.globl record_sp_limit
.globl get_sp_limit

View File

@ -18,8 +18,14 @@
#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__)
@ -58,7 +64,7 @@ rust_env_pairs() {
#else
extern "C" CDECL char**
rust_env_pairs() {
#ifdef __APPLE__
#if defined(__APPLE__) && !(TARGET_OS_IPHONE)
char **environ = *_NSGetEnviron();
#endif
return environ;