Rebuild LuaJIT for Android with NDK r23.

This commit is contained in:
Miku AuahDark
2022-02-05 11:39:41 +08:00
parent 6ed08b13d4
commit 03f32dc1bd
81 changed files with 27129 additions and 83 deletions
+37 -83
View File
@@ -1,13 +1,10 @@
rem Build script assume using WSL + Clang for Windows (with MSVC x86+x64 toolset for -m32 switch)
rem This assume NDK r19 or later. See https://github.com/LuaJIT/LuaJIT/issues/477 for more information.
rem Setting this up for MSYS/MinGW-w64 should be possible but WSL is easier to setup.
rem Build instruction assume using WSL + Clang for Windows (with MSVC x86+x64 toolset for -m32 switch)
rem This build script requires NDK r23 or later.
rem Make sure LuaJIT and the prebuilt is already in your PATH environment variable.
rem If you're confused which one should be added your path:
rem Make sure LuaJIT (yes, you need LuaJIT interpreter) and the NDK toolchain binaries is already in
rem your PATH environment variable. If you're confused which part of the NDK should be added your path:
rem <NDK_ROOT>\toolchains\llvm\prebuilt\windows-x86_64\bin
rem Once all environment variable is set, simply run this script with Command Prompt.
mkdir android\arm64-v8a
mkdir android\armeabi-v7a
mkdir android\x86
@@ -17,91 +14,48 @@ rem Reset error level
type nul
rem ARMv8
echo Where aarch64-linux-android21-clang?
where aarch64-linux-android21-clang
if errorlevel 1 goto :error
if not exist android\arm64-v8a\libluajit.a (
wsl make clean
if errorlevel 1 goto :error
wsl make HOST_LUA=luajit.exe HOST_CC=clang.exe HOST_CFLAGS=-D_CRT_SECURE_NO_WARNINGS CC=clang ^
CROSS=aarch64-linux-android- ^
"STATIC_CC=aarch64-linux-android21-clang -fPIC" ^
"DYNAMIC_CC=aarch64-linux-android21-clang -fuse-ld=lld -fPIC" ^
"TARGET_AR=aarch64-linux-android-ar.exe rcus" ^
TARGET_LD=aarch64-linux-android21-clang ^
TARGET_STRIP=aarch64-linux-android-strip.exe amalg -j4
if errorlevel 1 goto :error
copy src\libluajit.a android\arm64-v8a\libluajit.a
if errorlevel 1 goto :error
copy src\libluajit.so android\arm64-v8a\libluajit.so
if errorlevel 1 goto :error
)
call :compile arm64-v8a aarch64-linux-android 21
if "%ERRORLEVEL%" == "1" goto :error
rem ARMv7
echo Where armv7a-linux-androideabi16-clang?
where armv7a-linux-androideabi16-clang
if errorlevel 1 goto :error
if not exist android\armeabi-v7a\libluajit.a (
wsl make clean
if errorlevel 1 goto :error
wsl make HOST_LUA=luajit.exe "HOST_CC=clang.exe -m32" HOST_CFLAGS=-D_CRT_SECURE_NO_WARNINGS CC=clang ^
CROSS=arm-linux-android- ^
"STATIC_CC=armv7a-linux-androideabi16-clang -fPIC" ^
"DYNAMIC_CC=armv7a-linux-androideabi16-clang -fuse-ld=lld -fPIC" ^
"TARGET_AR=arm-linux-androideabi-ar.exe rcus" ^
TARGET_LD=armv7a-linux-androideabi16-clang ^
TARGET_STRIP=arm-linux-androideabi-strip.exe amalg -j4
if errorlevel 1 goto :error
copy src\libluajit.a android\armeabi-v7a\libluajit.a
if errorlevel 1 goto :error
copy src\libluajit.so android\armeabi-v7a\libluajit.so
if errorlevel 1 goto :error
)
rem ARMv7 is complicated.
if exist android\armeabi-v7a\libluajit.a goto :x86
wsl make clean
if not "%ERRORLEVEL%" == "0" goto :error
wsl make HOST_LUA=luajit.exe "HOST_CC=clang.exe -m32" HOST_CFLAGS=-D_CRT_SECURE_NO_WARNINGS CC=clang CROSS=arm-linux-androideabi- STATIC_CC=armv7a-linux-androideabi16-clang "DYNAMIC_CC=armv7a-linux-androideabi16-clang -fPIC" "TARGET_AR=llvm-ar.exe rcus" TARGET_LD=armv7a-linux-androideabi16-clang TARGET_LDFLAGS=-fuse-ld=lld TARGET_STRIP=llvm-strip.exe amalg -j4
if not "%ERRORLEVEL%" == "0" goto :error
copy src\libluajit.a android\armeabi-v7a\libluajit.a
if not "%ERRORLEVEL%" == "0" goto :error
copy src\libluajit.so android\armeabi-v7a\libluajit.so
if not "%ERRORLEVEL%" == "0" goto :error
xcopy src\jit android\armeabi-v7a\jit /I
del android\armeabi-v7a\jit\.gitignore
:x86
rem x86
echo Where i686-linux-android16-clang?
where i686-linux-android16-clang
if errorlevel 1 goto :error
if not exist android\x86\libluajit.a (
wsl make clean
if errorlevel 1 goto :error
wsl make HOST_LUA=luajit.exe "HOST_CC=clang.exe -m32" HOST_CFLAGS=-D_CRT_SECURE_NO_WARNINGS CC=clang ^
CROSS=i686-linux-android- ^
"STATIC_CC=i686-linux-android16-clang -fPIC" ^
"DYNAMIC_CC=i686-linux-android16-clang -fuse-ld=lld -fPIC" ^
"TARGET_AR=i686-linux-android-ar.exe rcus" ^
TARGET_LD=i686-linux-android16-clang ^
TARGET_STRIP=i686-linux-android-strip.exe amalg -j4
if errorlevel 1 goto :error
copy src\libluajit.a android\x86\libluajit.a
if errorlevel 1 goto :error
copy src\libluajit.so android\x86\libluajit.so
if errorlevel 1 goto :error
)
call :compile x86 i686-linux-android 16 -m32
if not "%ERRORLEVEL%" == "0" goto :error
rem x86_64
echo Where x86_64-linux-android21-clang?
where x86_64-linux-android21-clang
if errorlevel 1 goto :error
if not exist android\x86_64\libluajit.a (
wsl make clean
if errorlevel 1 goto :error
wsl make HOST_LUA=luajit.exe HOST_CC=clang.exe HOST_CFLAGS=-D_CRT_SECURE_NO_WARNINGS CC=clang ^
CROSS=x86_64-linux-android- ^
"STATIC_CC=x86_64-linux-android21-clang -fPIC" ^
"DYNAMIC_CC=x86_64-linux-android21-clang -fuse-ld=lld -fPIC" ^
"TARGET_AR=x86_64-linux-android-ar.exe rcus" ^
TARGET_LD=x86_64-linux-android21-clang ^
TARGET_STRIP=x86_64-linux-android-strip.exe amalg -j4
if errorlevel 1 goto :error
copy src\libluajit.a android\x86_64\libluajit.a
if errorlevel 1 goto :error
copy src\libluajit.so android\x86_64\libluajit.so
if errorlevel 1 goto :error
)
call :compile x86_64 x86_64-linux-android 21
if not "%ERRORLEVEL%" == "0" goto :error
goto :done
:compile
if exist android\%1\libluajit.a exit /b 0
wsl make clean
if not "%ERRORLEVEL%" == "0" goto :error
wsl make HOST_LUA=luajit.exe "HOST_CC=clang.exe %4" HOST_CFLAGS=-D_CRT_SECURE_NO_WARNINGS CC=clang CROSS=%2- "STATIC_CC=%2%3-clang -fPIC" "DYNAMIC_CC=%2%3-clang -fPIC" "TARGET_AR=llvm-ar.exe rcus" TARGET_LD=%2%3-clang TARGET_LDFLAGS=-fuse-ld=lld TARGET_STRIP=llvm-strip.exe amalg -j%NUMBER_OF_PROCESSORS%
if not "%ERRORLEVEL%" == "0" goto :error
copy src\libluajit.a android\%1\libluajit.a
if not "%ERRORLEVEL%" == "0" goto :error
copy src\libluajit.so android\%1\libluajit.so
if not "%ERRORLEVEL%" == "0" goto :error
xcopy src\jit android\%1\jit /I
del android\%1\jit\.gitignore
goto :done
:error
exit /b 1