Rebuild LuaJIT and update LuaJIT build script.

* Clang for Windows is no longer required. Instead it requires GCC + multilib in the WSL distro.
* It will try to use Windows's installed LuaJIT, then fallback to WSL's LuaJIT. If none is found, an error will be thrown.
* Add luajit.h include file as byproducts.
This commit is contained in:
Miku AuahDark
2023-09-28 15:27:46 +08:00
parent 8bca5c43a6
commit 44ba332ebe
90 changed files with 2087 additions and 1776 deletions
+41 -6
View File
@@ -1,9 +1,10 @@
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 Build instruction assume using WSL.
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 Prerequisite:
rem * Android NDK r23 or later.
rem * GCC in WSL, with multilib.
rem * NDK path appended to %PATH% in Windows. (Protip: path %PATH%;<NDK_ROOT>\toolchains\llvm\prebuilt\windows-x86_64\bin)
rem * LuaJIT interpreter, either in Windows or WSL.
mkdir android\arm64-v8a
mkdir android\armeabi-v7a
@@ -13,6 +14,22 @@ mkdir android\x86_64
rem Reset error level
type nul
rem Find LuaJIT
luajit -v
if "%ERRORLEVEL%" == "0" (
set LUAJIT_INTERPRETER=luajit.exe
goto :ljdetermined
)
wsl luajit -v
if "%ERRORLEVEL%" == "0" (
set LUAJIT_INTERPRETER=luajit
goto :ljdetermined
)
echo You need LuaJIT either in Windows or in WSL!
goto :error
:ljdetermined
rem ARMv8
call :compile arm64-v8a aarch64-linux-android 21
if "%ERRORLEVEL%" == "1" goto :error
@@ -35,13 +52,31 @@ goto :done
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 TARGET_SONAME=libluajit.so amalg -j%NUMBER_OF_PROCESSORS%
wsl make ^
HOST_LUA=%LUAJIT_INTERPRETER% ^
"HOST_CC=gcc %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_SYS=Linux ^
TARGET_LD=%2%3-clang ^
TARGET_LDFLAGS=-fuse-ld=lld ^
TARGET_STRIP=llvm-strip.exe ^
TARGET_SONAME=libluajit.so ^
"GIT_RELVER=cp ../.relver luajit_relver.txt" ^
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
copy src\luajit.h android\%1\luajit.h
if not "%ERRORLEVEL%" == "0" goto :error
xcopy src\jit android\%1\jit /I
if not "%ERRORLEVEL%" == "0" goto :error
del android\%1\jit\.gitignore
goto :done