Skip to content

Doc building for ios

kud1ing edited this page Nov 3, 2013 · 98 revisions

This currently does not work.

Options

Option 1: Convert Rust's LLVM bitcode to C-code

rustc foo.rs -o foo.stage2 -O --save-temps
llc -march=c foo.bc -o foo.c

Option 2: Use Rust's Android-ARM assembler code

TODO: something using rustc --emit-llvm -S --target=arm-linux-androideabi

Option 3: Add native iOS-support to Rust

  1. Adjust src/rt/rust_builtin.cpp:
#ifdef __APPLE__
    #include <TargetConditionals.h>
    #include <mach/mach_time.h>

    #if defined(TARGET_OS_IPHONE)
        extern char **environ;
    #else
        #include <crt_externs.h>
    #endif
#endif

and

rust_env_pairs() {
#ifdef __APPLE__ && !defined(TARGET_OS_IPHONE)
    char **environ = *_NSGetEnviron();
#endif
  1. Adjust src/rt/arch/arm/_context.S:
#if defined(__APPLE__)
.align 2
#else
.align
#endif
  1. Adjust src/rt/arch/arm/record_sp.S:
#if defined(__APPLE__)
.align 2
#else
.align
#endif
  1. Build Rust:
mkdir build; cd build
../configure --target-triples=arm-apple-darwin
make VERBOSE=1
  1. Use Rust:
rustc --target=arm-apple-darwin foo.rs

TODO

  • Compilation currently fails in libuv, see #10249.

Possible adjustments

Resources

All Categories:

Clone this wiki locally