From bcc28a0ae34e73e40f10feee705153557dc717c2 Mon Sep 17 00:00:00 2001 From: XsparkieX Date: Mon, 1 Feb 2021 21:37:07 +0100 Subject: [PATCH] Added support for building for Android on Windows. --- Makefile | 9 ++++--- Makefile.local | 11 +++++++++ android/run.bat | 64 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 5 deletions(-) create mode 100644 android/run.bat diff --git a/Makefile b/Makefile index 1dea7960..a5f74071 100644 --- a/Makefile +++ b/Makefile @@ -433,12 +433,11 @@ else # ifeq Linux ############################################################################# ifeq ($(PLATFORM),android) - ANDROID_NDK = ~/Android/Sdk/ndk/21.1.6352462 ARCH = aarch64 - CC = $(ANDROID_NDK)/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android26-clang - RANLIB = $(ANDROID_NDK)/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ranlib + CC = $(ANDROID_CC) + RANLIB = $(ANDROID_RANLIB) TOOLS_CFLAGS += -DARCH_STRING=\"$(COMPILE_ARCH)\" - BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes -pipe \ + BASE_CFLAGS = $(ANDROID_CFLAGS) -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes -pipe \ -fno-builtin-cos -fno-builtin-sin -fPIC -DARCH_STRING=\\\"$(ARCH)\\\" CLIENT_CFLAGS += $(SDL_CFLAGS) -DSDL_DISABLE_IMMINTRIN_H -fno-builtin-cos -fno-builtin-sin @@ -1275,7 +1274,7 @@ define DO_REF_STR $(echo_cmd) "REF_STR $<" $(Q)rm -f $@ $(Q)echo "const char *fallbackShader_$(notdir $(basename $<)) =" >> $@ -$(Q)cat $< | sed -e 's/^/\"/;s/$$/\\n\"/' | tr -d '\r' >> $@ +$(Q)cat $< | sed -e 's/^\(.*\)$$/\"\1\"/' >> $@ $(Q)echo ";" >> $@ endef diff --git a/Makefile.local b/Makefile.local index 496b1354..c3ba5b7a 100644 --- a/Makefile.local +++ b/Makefile.local @@ -1,4 +1,15 @@ PLATFORM=android +ANDROID_SDK_VERSION=android26 +ANDROID_NDK_VERSION=21.1.6352462 +## Uncomment for Windows host platform +# ANDROID_NDK=C:/Users//AppData/Local/Android/Sdk/ndk/$(ANDROID_NDK_VERSION) +# ANDROID_CC=$(ANDROID_NDK)/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe +# ANDROID_CFLAGS=--target=aarch64-linux-$(ANDROID_SDK_VERSION) +# ANDROID_RANLIB=$(ANDROID_NDK)/toolchains/llvm/prebuilt/windows-x86_64/bin/aarch64-linux-android-ranlib.exe +## Uncomment for Linux host platform +# ANDROID_NDK=~/Android/Sdk/ndk/$(ANDROID_NDK_VERSION) +# ANDROID_CC=$(ANDROID_NDK)/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-$(ANDROID_SDK_VERSION)-clang +# ANDROID_RANLIB=$(ANDROID_NDK)/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ranlib BUILD_CLIENT=1 BUILD_CLIENT_SMP=0 BUILD_GAME_QVM=0 diff --git a/android/run.bat b/android/run.bat new file mode 100644 index 00000000..f4b5eca5 --- /dev/null +++ b/android/run.bat @@ -0,0 +1,64 @@ +@echo off + +setlocal +cd .. +set adb="%AppData%\..\Local\Android\Sdk\platform-tools\adb.exe" +set make="%AppData%\..\Local\Android\Sdk\ndk\21.1.6352462\prebuilt\windows-x86_64\bin\make.exe" +set JAVA_HOME=C:\Program Files\Android\Android Studio\jre\jre + +%make% -j %NUMBER_OF_PROCESSORS% debug + +if %ERRORLEVEL% NEQ 0 ( + echo "Failed to build ioq3" + exit /b 1 +) + +cd android + +set GRADLE_EXIT_CONSOLE=1 +call gradlew.bat :app:assembleDebug + +if %ERRORLEVEL% NEQ 0 ( + echo "Failed to build android project" + exit /b 1 +) + +set PACKAGE_NAME=com.sparkie.ioq3quest +set ANDROID_STORAGE_LOCATION=/sdcard/Android/data/%PACKAGE_NAME%/files/ +set APK_LOCATION=.\app\build\outputs\apk\debug\app-debug.apk + +%adb% install -r %APK_LOCATION% +if %ERRORLEVEL% NEQ 0 ( + %adb% uninstall %PACKAGE_NAME% + %adb% install %APK_LOCATION% + if %ERRORLEVEL% NEQ 0 ( + echo "Failed to install apk." + exit /b 1 + ) +) + +%adb% shell mkdir -p %ANDROID_STORAGE_LOCATION% +%adb% push --sync "C:\Program Files (x86)\Steam\steamapps\common\Quake 3 Arena\baseq3" %ANDROID_STORAGE_LOCATION% +if %ERRORLEVEL% NEQ 0 ( + echo "Failed to transfer files." + exit /b 1 +) +%adb% push --sync ..\code\renderergl2\glsl %ANDROID_STORAGE_LOCATION%/baseq3/ +if %ERRORLEVEL% NEQ 0 ( + echo "Failed to transfer shaders." + exit /b 1 +) +%adb% push --sync autoexec.cfg %ANDROID_STORAGE_LOCATION%/baseq3/ +if %ERRORLEVEL% NEQ 0 ( + echo "Failed to transfer autoexec." + exit /b 1 +) + +%adb% logcat -c +%adb% shell am start -n %PACKAGE_NAME%/.MainActivity +if %ERRORLEVEL% NEQ 0 ( + echo "Failed to start application." + exit 1 +) +%adb% logcat *:S Quake3:V SDL:V DEBUG:V +endlocal