Jelajahi Sumber

resource: use 32-bit LuaJIT for android

Daniele Bartolini 2 tahun lalu
induk
melakukan
e51cff644e

+ 2 - 3
.github/workflows/main.yml

@@ -26,8 +26,7 @@ jobs:
       run: |
         sudo apt-get update
         sudo apt-get install libc6-dev-i386
-        ANDROID_ROOT=/usr/local/lib/android
-        ANDROID_SDK_ROOT=${ANDROID_ROOT}/sdk
+        ANDROID_SDK_ROOT=/usr/local/lib/android/sdk
         SDKMANAGER=${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager
         echo "y" | $SDKMANAGER "ndk;21.4.7075529"
     - name: android-arm-make-debug
@@ -67,7 +66,7 @@ jobs:
     - name: prepare
       run: |
         sudo apt-get update
-        sudo apt-get install mesa-common-dev libgl1-mesa-dev libpulse-dev libxrandr-dev
+        sudo apt-get install mesa-common-dev libgl1-mesa-dev libpulse-dev libxrandr-dev libc6-dev-i386
         sudo apt-get install libgtk-3-dev
         sudo add-apt-repository ppa:vala-team
         sudo apt-get install valac libgee-0.8-dev

+ 8 - 2
docs/hackers/building.rst

@@ -26,14 +26,20 @@ Android
 	export ANDROID_NDK_ROOT=<path/to/android_ndk>
 	export ANDROID_NDK_ABI=23
 
-3. Continue to `Build`_.
+3. Install LuaJIT dependencies:
+
+.. core::
+
+	sudo apt-get install libc6-dev-i386
+
+4. Continue to `Build`_.
 
 Linux (Ubuntu >= 18.04)
 -----------------------
 
 .. code::
 
-	sudo apt install build-essential mesa-common-dev libgl1-mesa-dev libpulse-dev libxrandr-dev
+	sudo apt install build-essential mesa-common-dev libgl1-mesa-dev libpulse-dev libxrandr-dev libc6-dev-i386
 
 	sudo add-apt-repository ppa:vala-team
 	sudo apt install libgtk-3-dev valac libgee-0.8-dev

+ 17 - 5
makefile

@@ -48,12 +48,24 @@ build/android-arm64/bin/libluajit.a:
 	cp -r 3rdparty/luajit/src/jit 3rdparty/luajit/src/libluajit.a build/android-arm64/bin
 	"$(MAKE)" -j$(MAKE_JOBS) -R -C 3rdparty/luajit/src clean
 
+build/linux64/bin/luajit32:
+	$(MAKE) -j$(MAKE_JOBS) -R -C 3rdparty/luajit/src CC="gcc -m32" CCOPT="-O2 -fomit-frame-pointer -msse2" TARGET_SYS=Linux BUILDMODE=static
+	mkdir -p build/linux64/bin
+	cp -r 3rdparty/luajit/src/luajit build/linux64/bin/luajit32
+	$(MAKE) -j$(MAKE_JOBS) -R -C 3rdparty/luajit/src clean
+
 build/linux64/bin/luajit:
 	"$(MAKE)" -j$(MAKE_JOBS) -R -C 3rdparty/luajit/src CC="gcc -m64" CCOPT="-O2 -fomit-frame-pointer -msse2" TARGET_SYS=Linux BUILDMODE=static
 	mkdir -p build/linux64/bin
 	cp -r 3rdparty/luajit/src/jit 3rdparty/luajit/src/luajit 3rdparty/luajit/src/libluajit.a build/linux64/bin
 	"$(MAKE)" -j$(MAKE_JOBS) -R -C 3rdparty/luajit/src clean
 
+build/mingw64/bin/luajit32.exe:
+	$(MAKE) -j$(MAKE_JOBS) -R -C 3rdparty/luajit/src CC="$(MINGW)/bin/x86_64-w64-mingw32-gcc -m32" CCOPT="-O2 -fomit-frame-pointer -msse2" TARGET_SYS=Windows BUILDMODE=static
+	mkdir -p build/mingw64/bin
+	cp 3rdparty/luajit/src/luajit.exe build/mingw32/bin/luajit32
+	$(MAKE) -j$(MAKE_JOBS) -R -C 3rdparty/luajit/src clean
+
 build/mingw64/bin/luajit.exe:
 	"$(MAKE)" -j$(MAKE_JOBS) -R -C 3rdparty/luajit/src CC="$(MINGW)/bin/x86_64-w64-mingw32-gcc -m64" CCOPT="-O2 -fomit-frame-pointer -msse2" TARGET_SYS=Windows BUILDMODE=static
 	-$(MKDIR) "build/mingw64/bin"
@@ -75,7 +87,7 @@ build/windows64/bin/luajit.exe:
 	-@rm -f 3rdparty/luajit/src/minilua.*
 
 build/projects/android-arm:
-	$(GENIE) --gfxapi=gles3 --no-luajit --compiler=android-arm gmake
+	$(GENIE) --gfxapi=gles3 --compiler=android-arm gmake
 android-arm-debug: build/projects/android-arm build/android-arm/bin/libluajit.a
 	"$(MAKE)" -j$(MAKE_JOBS) -R -C build/projects/android-arm config=debug
 android-arm-development: build/projects/android-arm build/android-arm/bin/libluajit.a
@@ -105,9 +117,9 @@ build/projects/linux:
 	$(GENIE) --file=3rdparty/bgfx/scripts/genie.lua --with-tools --gcc=linux-gcc gmake
 	$(GENIE) --file=3rdparty/bimg/scripts/genie.lua --with-tools --gcc=linux-gcc gmake
 	$(GENIE) --gfxapi=gl32 --with-tools --compiler=linux-gcc gmake
-linux-debug64: build/projects/linux build/linux64/bin/luajit build/linux64/bin/texturec build/linux64/bin/shaderc
+linux-debug64: build/projects/linux build/linux64/bin/luajit build/linux64/bin/luajit32 build/linux64/bin/texturec build/linux64/bin/shaderc
 	"$(MAKE)" -j$(MAKE_JOBS) -R -C build/projects/linux crown config=debug64
-linux-development64: build/projects/linux build/linux64/bin/luajit build/linux64/bin/texturec build/linux64/bin/shaderc
+linux-development64: build/projects/linux build/linux64/bin/luajit build/linux64/bin/luajit32 build/linux64/bin/texturec build/linux64/bin/shaderc
 	"$(MAKE)" -j$(MAKE_JOBS) -R -C build/projects/linux crown config=development64
 linux-release64: build/projects/linux build/linux64/bin/luajit
 	"$(MAKE)" -j$(MAKE_JOBS) -R -C build/projects/linux crown config=release64
@@ -124,9 +136,9 @@ build/projects/mingw:
 	$(GENIE) --file=3rdparty/bgfx/scripts/genie.lua --with-tools --gcc=mingw-gcc gmake
 	$(GENIE) --file=3rdparty/bimg/scripts/genie.lua --with-tools --gcc=mingw-gcc gmake
 	$(GENIE) --gfxapi=d3d11 --with-tools --compiler=mingw-gcc gmake
-mingw-debug64: build/projects/mingw build/mingw64/bin/luajit.exe build/mingw64/bin/texturec.exe build/mingw64/bin/shaderc.exe
+mingw-debug64: build/projects/mingw build/mingw64/bin/luajit.exe build/mingw64/bin/luajit32.exe build/mingw64/bin/texturec.exe build/mingw64/bin/shaderc.exe
 	"$(MAKE)" -j$(MAKE_JOBS) -R -C build/projects/mingw config=debug64
-mingw-development64: build/projects/mingw build/mingw64/bin/luajit.exe build/mingw64/bin/texturec.exe build/mingw64/bin/shaderc.exe
+mingw-development64: build/projects/mingw build/mingw64/bin/luajit.exe build/mingw64/bin/luajit32.exe build/mingw64/bin/texturec.exe build/mingw64/bin/shaderc.exe
 	"$(MAKE)" -j$(MAKE_JOBS) -R -C build/projects/mingw config=development64
 mingw-release64: build/projects/mingw build/mingw64/bin/luajit.exe
 	"$(MAKE)" -j$(MAKE_JOBS) -R -C build/projects/mingw config=release64

+ 1 - 0
src/resource/data_compiler.cpp

@@ -75,6 +75,7 @@ struct PlatformInfo
 static const PlatformInfo platform_info[] =
 {
 	{ "android",       Platform::ANDROID       },
+	{ "android-arm64", Platform::ANDROID_ARM64 },
 	{ "linux",         Platform::LINUX         },
 	{ "windows",       Platform::WINDOWS       }
 };

+ 5 - 1
src/resource/lua_resource.cpp

@@ -103,9 +103,13 @@ namespace lua_resource_internal
 		opts.absolute_path(lua_src, opts.source_path());
 		opts.temporary_path(lua_out, "lua");
 
+		const char *luajit = EXE_PATH("luajit");
+		if (opts._platform == Platform::ANDROID)
+			luajit = EXE_PATH("luajit32");
+
 		const char *argv[] =
 		{
-			EXE_PATH("luajit"),
+			luajit,
 			LUAJIT_FLAGS,
 			lua_src.c_str(),
 			lua_out.c_str(),

+ 1 - 0
src/resource/shader_resource.cpp

@@ -51,6 +51,7 @@ namespace shader_resource_internal
 	static const char *shaderc_platform[] =
 	{
 		"android", // Platform::ANDROID
+		"android", // Platform::ANDROID_ARM64
 		"linux",   // Platform::LINUX
 		"windows"  // Platform::WINDOWS
 	};

+ 1 - 0
src/resource/types.h

@@ -40,6 +40,7 @@ struct Platform
 	enum Enum
 	{
 		ANDROID,
+		ANDROID_ARM64,
 		LINUX,
 		WINDOWS,