make HOST_CC="gcc -m32" CROSS=arm-linux-gnueabi- \
TARGET_CFLAGS="-mfloat-abi=soft"
-# ARM soft-float ABI with VFP (example for Cortex-A8)
+# ARM soft-float ABI with VFP (example for Cortex-A9)
make HOST_CC="gcc -m32" CROSS=arm-linux-gnueabi- \
- TARGET_CFLAGS="-mcpu=cortex-a8 -mfloat-abi=softfp"
+ TARGET_CFLAGS="-mcpu=cortex-a9 -mfloat-abi=softfp"
-# ARM hard-float ABI with VFP (armhf, requires recent toolchain)
+# ARM hard-float ABI with VFP (armhf, most modern toolchains)
make HOST_CC="gcc -m32" CROSS=arm-linux-gnueabihf-
+# ARM64
+make CROSS=aarch64-linux-
+
# PPC
make HOST_CC="gcc -m32" CROSS=powerpc-linux-gnu-
-# PPC/e500v2 (fast interpreter only)
-make HOST_CC="gcc -m32" CROSS=powerpc-e500v2-linux-gnuspe-
-# MIPS big-endian
+# MIPS32 big-endian
make HOST_CC="gcc -m32" CROSS=mips-linux-
-# MIPS little-endian
+# MIPS32 little-endian
make HOST_CC="gcc -m32" CROSS=mipsel-linux-
+
+# MIPS64 big-endian
+make CROSS=mips-linux- TARGET_CFLAGS="-mips64r2 -mabi=64"
+# MIPS64 little-endian
+make CROSS=mipsel-linux- TARGET_CFLAGS="-mips64r2 -mabi=64"
</pre>
<p>
- You can cross-compile for <b id="android">Android</b> using the <a href="https://developer.android.com/ndk/index.html">Android NDK</a>.
- The environment variables need to match the install locations and the
- desired target platform. E.g. Android 4.0 corresponds to ABI level 14.
- For details check the folder <tt>docs</tt> in the NDK directory.
- </p>
- <p>
- Only a few common variations for the different CPUs, ABIs and platforms
- are listed. Please use your own judgement for which combination you want
- to build/deploy or which lowest common denominator you want to pick:
+ You can cross-compile for <b id="android">Android</b> using the <a href="http://developer.android.com/ndk/"><span class="ext">»</span> Android NDK</a>.
+ Please adapt the environment variables to match the install locations and the
+ desired target platform. E.g. Android 4.1 corresponds to ABI level 16.
</p>
<pre class="code">
- # Android/ARM, armeabi (ARMv5TE soft-float), Android 2.2+ (Froyo)
- NDK=/opt/android/ndk
- NDKABI=8
- NDKVER=$NDK/toolchains/arm-linux-androideabi-4.9
- NDKP=$NDKVER/prebuilt/linux-x86/bin/arm-linux-androideabi-
- NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-arm"
- make HOST_CC="gcc -m32" CROSS=$NDKP TARGET_FLAGS="$NDKF"
-
- # Android/ARM, armeabi-v7a (ARMv7 VFP), Android 4.0+ (ICS)
- NDK=/opt/android/ndk
- NDKABI=14
- NDKVER=$NDK/toolchains/arm-linux-androideabi-4.9
- NDKP=$NDKVER/prebuilt/linux-x86/bin/arm-linux-androideabi-
- NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-arm"
- NDKARCH="-march=armv7-a -mfloat-abi=softfp -Wl,--fix-cortex-a8"
- make HOST_CC="gcc -m32" CROSS=$NDKP TARGET_FLAGS="$NDKF $NDKARCH"
-
- # Android/MIPS, mipsel (MIPS32R1 hard-float), Android 4.0+ (ICS)
- NDK=/opt/android/ndk
- NDKABI=14
- NDKVER=$NDK/toolchains/mipsel-linux-android-4.9
- NDKP=$NDKVER/prebuilt/linux-x86/bin/mipsel-linux-android-
- NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-mips"
- make HOST_CC="gcc -m32" CROSS=$NDKP TARGET_FLAGS="$NDKF"
-# Android/ARM, armeabi-v7a (ARMv7 VFP), Android 4.1+ (JB)
++# Android/ARM64, aarch64, Android 5.0+ (L)
++NDKDIR=/opt/android/ndk
++NDKBIN=$NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin
++NDKCROSS=$NDKBIN/aarch64-linux-android-
++NDKCC=$NDKBIN/aarch64-linux-android21-clang
++make CROSS=$NDKCROSS \
++ STATIC_CC=$NDKCC DYNAMIC_CC="$NDKCC -fPIC" \
++ TARGET_LD=$NDKCC
- # Android/x86, x86 (i686 SSE3), Android 4.0+ (ICS)
- NDK=/opt/android/ndk
- NDKABI=14
- NDKVER=$NDK/toolchains/x86-4.9
- NDKP=$NDKVER/prebuilt/linux-x86/bin/i686-linux-android-
- NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-x86"
- make HOST_CC="gcc -m32" CROSS=$NDKP TARGET_FLAGS="$NDKF"
++# Android/ARM, armeabi-v7a (ARMv7 VFP), Android 4.1+ (JB)
+ NDKDIR=/opt/android/ndk
+ NDKBIN=$NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin
+ NDKCROSS=$NDKBIN/arm-linux-androideabi-
+ NDKCC=$NDKBIN/armv7a-linux-androideabi16-clang
+ make HOST_CC="gcc -m32" CROSS=$NDKCROSS \
+ STATIC_CC=$NDKCC DYNAMIC_CC="$NDKCC -fPIC" \
+ TARGET_LD=$NDKCC
</pre>
<p>
- You can cross-compile for <b id="ios">iOS 3.0+</b> (iPhone/iPad) using the <a href="http://developer.apple.com/devcenter/ios/index.action"><span class="ext">»</span> iOS SDK</a>:
-Please use the LuaJIT 2.1 branch to compile for
-<b id="ios">iOS</b> (iPhone/iPad).
++You can cross-compile for <b id="ios">iOS 3.0+</b> (iPhone/iPad) using the <a href="http://developer.apple.com/ios/"><span class="ext">»</span> iOS SDK</a>:
</p>
- # iOS/ARM (32 bit)
- ISDKP=$(xcrun --sdk iphoneos --show-sdk-path)
- ICC=$(xcrun --sdk iphoneos --find clang)
- ISDKF="-arch armv7 -isysroot $ISDKP"
- make DEFAULT_CC=clang HOST_CC="clang -m32 -arch i386" \
- CROSS="$(dirname $ICC)/" TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS
-
+<p style="font-size: 8pt;">
+Note: <b>the JIT compiler is disabled for iOS</b>, because regular iOS Apps
+are not allowed to generate code at runtime. You'll only get the performance
+of the LuaJIT interpreter on iOS. This is still faster than plain Lua, but
+much slower than the JIT compiler. Please complain to Apple, not me.
+Or use Android. :-p
+</p>
+<pre class="code">
+# iOS/ARM64
+ISDKP=$(xcrun --sdk iphoneos --show-sdk-path)
+ICC=$(xcrun --sdk iphoneos --find clang)
+ISDKF="-arch arm64 -isysroot $ISDKP"
+make DEFAULT_CC=clang CROSS="$(dirname $ICC)/" \
+ TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS
+</pre>
<h3 id="consoles">Cross-compiling for consoles</h3>
<p>