From 85c02aa919cdc9b8835c4a28ce4ab0c949efb2ae Mon Sep 17 00:00:00 2001 From: Romain Goyet Date: Tue, 12 Mar 2019 14:18:51 +0100 Subject: [PATCH] [ion/sdl] Clean the Android build system --- ion/src/sdl/android/Makefile | 61 +++++++++++++++++-- ion/src/sdl/android/build.gradle | 4 +- .../src/res/mipmap-v26/ic_launcher.xml | 5 ++ ion/src/sdl/android/src/res/values/colors.xml | 5 ++ .../sdl/android/src/res/values/strings.xml | 3 + ion/src/sdl/assets/logo.svg | 3 + scripts/targets.sdl.android.mak | 22 ------- 7 files changed, 73 insertions(+), 30 deletions(-) create mode 100644 ion/src/sdl/android/src/res/mipmap-v26/ic_launcher.xml create mode 100644 ion/src/sdl/android/src/res/values/colors.xml create mode 100644 ion/src/sdl/android/src/res/values/strings.xml create mode 100644 ion/src/sdl/assets/logo.svg delete mode 100644 scripts/targets.sdl.android.mak diff --git a/ion/src/sdl/android/Makefile b/ion/src/sdl/android/Makefile index 70580f79c..9e5406c94 100644 --- a/ion/src/sdl/android/Makefile +++ b/ion/src/sdl/android/Makefile @@ -6,10 +6,59 @@ $(call object_for,ion/src/sdl/shared/main.cpp) : SFLAGS += -DEPSILON_SDL_FULLSCR LDFLAGS += -ljnigraphics -llog -ANDROID_LIB_PATH = ion/src/sdl/android/libs +# If NDK_ABI is not defined, we will re-trigger a build for each avaialble ABI. +# This is used to build APKs, which needs to embbed a binary for each ABI. -$(ANDROID_LIB_PATH)/%/libepsilon.so: -ion/src/sdl/android/libs/%/libepsilon.so: - $(Q) $(MAKE) MODEL=android NDK_ABI=$* clean - $(Q) $(MAKE) MODEL=android NDK_ABI=$* epsilon.so - $(Q) mv epsilon.so $@ +ifdef NDK_ABI + +.PHONY: epsilon.apk +epsilon.apk: + echo "To make epsilon.apk, to not define NDK_ABI" + +else + +# Cross-ABI libepsilon.so +# This file is loaded is loaded only once, which prevents us from tracking +# dependencies across ABIs. As a shortcut, we simply force a re-make of +# libepsilon.so for each ABI. + +.PHONY: force_remake + +$(BUILD_DIR)/app/libs/%/libepsilon.so: force_remake $$(@D)/. + $(Q) echo "MAKE NDK_ABI=$*" + $(Q) $(MAKE) NDK_ABI=$* epsilon.so + $(Q) cp $(BUILD_DIR)/$*/epsilon.so $@ + +# Android resources +# Some android resources needs to be filtered through ImageMagick. Others are +# simply copied over. + +$(BUILD_DIR)/app/res/mipmap/ic_launcher.png: ion/src/sdl/assets/logo.svg | $$(@D)/. + @echo "CONVERT $@" + $(Q) convert -background "#FFB734" $< $@ + +$(BUILD_DIR)/app/res/mipmap-v26/ic_launcher_foreground.png: ion/src/sdl/assets/logo.svg | $$(@D)/. + @echo "CONVERT $@" + $(Q) convert -background none $< -resize 512x512 -gravity center -background none -extent 1024x1024 $@ + +$(BUILD_DIR)/app/res/%: ion/src/sdl/android/src/res/% $$(@D)/. + @echo "COPY $@" + $(Q) cp $< $@ + +NDK_ABIS = arm64-v8a x86_64 + +epsilon_apk_deps = $(patsubst %,$(BUILD_DIR)/app/libs/%/libepsilon.so,$(NDK_ABIS)) +epsilon_apk_deps += $(subst ion/src/sdl/android/src/res,$(BUILD_DIR)/app/res,$(wildcard ion/src/sdl/android/src/res/*/*)) +epsilon_apk_deps += $(addprefix $(BUILD_DIR)/app/res/,mipmap/ic_launcher.png mipmap-v26/ic_launcher_foreground.png) + +.PHONY: epsilon.apk +epsilon.apk: $(epsilon_apk_deps) + @echo "GRADLE ion/src/sdl/android/build.gradle" + $(Q) ANDROID_HOME=/usr/local/android gradle -b ion/src/sdl/android/build.gradle assembleRelease + +.PHONY: epsilon_run +epsilon_run: $(epsilon_apk_deps) + @echo "GRADLE ion/src/sdl/android/build.gradle" + $(Q) ANDROID_HOME=/usr/local/android gradle -b ion/src/sdl/android/build.gradle installDebug + +endif diff --git a/ion/src/sdl/android/build.gradle b/ion/src/sdl/android/build.gradle index 4ebdcd6c1..e6b8d98ab 100644 --- a/ion/src/sdl/android/build.gradle +++ b/ion/src/sdl/android/build.gradle @@ -34,13 +34,13 @@ android { buildTypes { release { minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + proguardFiles getDefaultProguardFile('proguard-android.txt') } } sourceSets{ main { manifest.srcFile 'src/AndroidManifest.xml' - res.srcDir 'src/res' + res.srcDir BUILD_DIR + '/res' java.srcDir 'src' jniLibs.srcDir BUILD_DIR + '/libs' assets.srcDir '../assets' diff --git a/ion/src/sdl/android/src/res/mipmap-v26/ic_launcher.xml b/ion/src/sdl/android/src/res/mipmap-v26/ic_launcher.xml new file mode 100644 index 000000000..166130012 --- /dev/null +++ b/ion/src/sdl/android/src/res/mipmap-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/ion/src/sdl/android/src/res/values/colors.xml b/ion/src/sdl/android/src/res/values/colors.xml new file mode 100644 index 000000000..d51632f1e --- /dev/null +++ b/ion/src/sdl/android/src/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FFB734 + #F7F7F7 + diff --git a/ion/src/sdl/android/src/res/values/strings.xml b/ion/src/sdl/android/src/res/values/strings.xml new file mode 100644 index 000000000..eca07fe9d --- /dev/null +++ b/ion/src/sdl/android/src/res/values/strings.xml @@ -0,0 +1,3 @@ + + NumWorks + diff --git a/ion/src/sdl/assets/logo.svg b/ion/src/sdl/assets/logo.svg new file mode 100644 index 000000000..ef4c71e7e --- /dev/null +++ b/ion/src/sdl/assets/logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/scripts/targets.sdl.android.mak b/scripts/targets.sdl.android.mak deleted file mode 100644 index 5e815d57e..000000000 --- a/scripts/targets.sdl.android.mak +++ /dev/null @@ -1,22 +0,0 @@ -# Makefile is loaded for a single architecture at once. If NDK_ABI is not -# defined, we assume we want to build all of them. But in that case, we cannot -# track per-ABI dependencies. So as a shortcut, we force a re-make of each ABI. - -.PHONY: force_rebuild_libepsilon - -$(BUILD_DIR)/app/libs/%/libepsilon.so: force_rebuild_libepsilon $$(@D)/. - $(Q) echo "MAKE NDK_ABI=$*" - $(Q) $(MAKE) NDK_ABI=$* epsilon.so - $(Q) cp $(BUILD_DIR)/$*/epsilon.so $@ - -NDK_ABIS = arm64-v8a x86_64 - -.PHONY: epsilon.apk -epsilon.apk: $(patsubst %,$(BUILD_DIR)/app/libs/%/libepsilon.so,$(NDK_ABIS)) - @echo "GRADLE ion/src/sdl/android/build.gradle" - $(Q) ANDROID_HOME=/usr/local/android gradle -b ion/src/sdl/android/build.gradle assembleRelease - -.PHONY: epsilon_run -epsilon_run: $(patsubst %,$(BUILD_DIR)/app/libs/%/libepsilon.so,$(NDK_ABIS)) - @echo "GRADLE ion/src/sdl/android/build.gradle" - $(Q) ANDROID_HOME=/usr/local/android gradle -b ion/src/sdl/android/build.gradle installDebug