buildandroid.sh 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #!/bin/bash
  2. #================================================================#
  3. # Build script based on
  4. # https://github.com/moai/moai-dev/blob/master/ant/libmoai/jni/luajit/build.sh
  5. #================================================================#
  6. host_os=`uname -s | tr "[:upper:]" "[:lower:]"`
  7. host_arch=`uname -m`
  8. if [ -f android/armeabi/libluajit.a ] &&
  9. [ -f android/armeabi-v7a/libluajit.a ] &&
  10. [ -f android/x86/libluajit.a ]; then
  11. echo "LuaJIT Already built"
  12. exit 0
  13. fi
  14. NDK_BUILD_LOCATION=${ANDROID_NDK}
  15. if [[ x$NDK_BUILD_LOCATION = "x" ]]; then
  16. echo "The Android NDK must be on your path."
  17. exit 1
  18. fi
  19. NDK="${NDK_BUILD_LOCATION%/ndk-build}"
  20. if [[ x$NDK = "x" ]]; then
  21. echo "The Android NDK must be on your path."
  22. exit 1
  23. fi
  24. NDKABI=9
  25. # Since OSX still has bash 3, we don't have associative arrays, fake them instead
  26. armeabi=0
  27. armeabiv7a=1
  28. x86=2
  29. NDKVER[$armeabi]="$NDK/toolchains/arm-linux-androideabi-4.8"
  30. NDKP[$armeabi]="${NDKVER[$armeabi]}/prebuilt/${host_os}-${host_arch}/bin/arm-linux-androideabi-"
  31. NDKF[$armeabi]="--sysroot \"$NDK/platforms/android-$NDKABI/arch-arm\""
  32. CFLAGS[$armeabi]=""
  33. NDKVER[$armeabiv7a]="${NDKVER[$armeabi]}"
  34. NDKP[$armeabiv7a]="${NDKP[$armeabi]}"
  35. NDKF[$armeabiv7a]="${NDKF[$armeabi]}"
  36. CFLAGS[$armeabiv7a]="${CFLAGS[$armeabi]}"
  37. NDKVER[$x86]="$NDK/toolchains/x86-4.8"
  38. NDKP[$x86]="${NDKVER[$x86]}/prebuilt/${host_os}-${host_arch}/bin/i686-linux-android-"
  39. NDKF[$x86]="--sysroot \"$NDK/platforms/android-$NDKABI/arch-x86\""
  40. CFLAGS[$x86]="-DLUAJIT_NO_LOG2"
  41. buildLuaJIT()
  42. {
  43. archkey="$1"
  44. arch="$2"
  45. ndkarch="$3"
  46. DESTDIR=../android/$arch
  47. mkdir -p $DESTDIR 2>/dev/null
  48. rm "$DESTDIR"/*.a 2>/dev/null
  49. make clean
  50. make HOST_CC="gcc -m32" CROSS="${NDKP[$archkey]}" TARGET_SYS=Linux TARGET_FLAGS="${NDKF[$archkey]} $ndkarch" TARGET_CFLAGS="${CFLAGS[$archkey]}" libluajit.a
  51. if [ -f libluajit.a ]; then
  52. mv libluajit.a $DESTDIR/libluajit.a
  53. fi;
  54. }
  55. cd src
  56. # Android/ARM, armeabi (ARMv5TE soft-float), Android 2.2+ (Froyo)
  57. buildLuaJIT $armeabi armeabi
  58. # Android/ARM, armeabi-v7a (ARMv7 VFP), Android 4.0+ (ICS)
  59. buildLuaJIT $armeabiv7a armeabi-v7a "-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -Wl,--fix-cortex-a8"
  60. # Android/x86
  61. buildLuaJIT $x86 x86
  62. make clean