Android: fix resolution, upd. irrlicht compile flags, add recommended ARMv7a and x86 flags,

Android resolution fix by @sfan5
SRP fix by @red-001 (https://github.com/minetest/minetest/pull/7484)
This commit is contained in:
MoNTE48 2018-06-26 01:58:52 +02:00
parent 7bef8c982b
commit 3cf64d3947
12 changed files with 54 additions and 57 deletions

View File

@ -29,7 +29,7 @@ VERSION_PATCH := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \
TARGET_HOST = arm-linux TARGET_HOST = arm-linux
TARGET_ABI = armeabi-v7a TARGET_ABI = armeabi-v7a
TARGET_TOOLCHAIN = arm-linux-androideabi TARGET_TOOLCHAIN = arm-linux-androideabi
TARGET_CFLAGS_ADDON = -mfpu=vfpv3-d16 -march=armv7-a -Ofast -fdata-sections -ffunction-sections -fvisibility=hidden -flto -D__ANDROID_API__=$(API) TARGET_CFLAGS_ADDON = -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Ofast -fdata-sections -ffunction-sections -fvisibility=hidden -flto -D__ANDROID_API__=$(API)
TARGET_CXXFLAGS_ADDON = $(TARGET_CFLAGS_ADDON) TARGET_CXXFLAGS_ADDON = $(TARGET_CFLAGS_ADDON)
TARGET_LDFLAGS_ADDON = -Wl,--no-warn-mismatch,--gc-sections,--icf=safe TARGET_LDFLAGS_ADDON = -Wl,--no-warn-mismatch,--gc-sections,--icf=safe
CROSS_PREFIX = arm-linux-androideabi CROSS_PREFIX = arm-linux-androideabi
@ -41,7 +41,7 @@ CROSS_PREFIX = arm-linux-androideabi
# TARGET_HOST = x86-linux # TARGET_HOST = x86-linux
# TARGET_ABI = x86 # TARGET_ABI = x86
# TARGET_TOOLCHAIN = x86 # TARGET_TOOLCHAIN = x86
# TARGET_CFLAGS_ADDON = -Ofast -fdata-sections -ffunction-sections -fvisibility=hidden -flto -D__ANDROID_API__=$(API) # TARGET_CFLAGS_ADDON = -march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32 -Ofast -funroll-loops -fdata-sections -ffunction-sections -fvisibility=hidden -flto -D__ANDROID_API__=$(API)
# TARGET_CXXFLAGS_ADDON = $(TARGET_CFLAGS_ADDON) # TARGET_CXXFLAGS_ADDON = $(TARGET_CFLAGS_ADDON)
# TARGET_LDFLAGS_ADDON = -Wl,--no-warn-mismatch,--gc-sections,--icf=safe # TARGET_LDFLAGS_ADDON = -Wl,--no-warn-mismatch,--gc-sections,--icf=safe
# CROSS_PREFIX = i686-linux-android # CROSS_PREFIX = i686-linux-android
@ -98,7 +98,7 @@ ICONV_URL_HTTP = https://ftp.gnu.org/pub/gnu/libiconv/libiconv-$(ICONV_VERSION).
INTL_DIR = $(ANDR_ROOT)/deps/libintl INTL_DIR = $(ANDR_ROOT)/deps/libintl
INTL_URL_GIT = https://github.com/j-jorge/libintl-lite.git INTL_URL_GIT = https://github.com/j-jorge/libintl-lite.git
SQLITE3_VERSION = 3230100 SQLITE3_VERSION = 3240000
SQLITE3_DIR = $(ANDR_ROOT)/deps/sqlite SQLITE3_DIR = $(ANDR_ROOT)/deps/sqlite
SQLITE3_URL = https://www.sqlite.org/2018/sqlite-amalgamation-$(SQLITE3_VERSION).zip SQLITE3_URL = https://www.sqlite.org/2018/sqlite-amalgamation-$(SQLITE3_VERSION).zip
@ -234,7 +234,7 @@ $(VORBIS_LIB): $(VORBIS_TIMESTAMP)
if [ $$REFRESH -ne 0 ] ; then \ if [ $$REFRESH -ne 0 ] ; then \
echo "changed timestamp for vorbis detected building..."; \ echo "changed timestamp for vorbis detected building..."; \
cd ${VORBIS_DIR}; \ cd ${VORBIS_DIR}; \
${ANDROID_NDK}/ndk-build NDEBUG=${NDEBUG} \ ${ANDROID_NDK}/ndk-build NDEBUG=${NDEBUG} TARGET_ABI=${TARGET_ABI} \
NDK_APPLICATION_MK=${ANDR_ROOT}/jni/Deps.mk || exit 1; \ NDK_APPLICATION_MK=${ANDR_ROOT}/jni/Deps.mk || exit 1; \
touch ${VORBIS_TIMESTAMP}; \ touch ${VORBIS_TIMESTAMP}; \
touch ${VORBIS_TIMESTAMP_INT}; \ touch ${VORBIS_TIMESTAMP_INT}; \

View File

@ -33,7 +33,7 @@ When a menu or inventory is displayed:
Special settings Special settings
---------------- ----------------
There are some settings especially useful for Android users. MultiCraft's config There are some settings especially useful for Android users. MultiCraft's config
file can usually be found at /sdcard/Android/data/mobi.MultiCraft. file can usually be found at /sdcard/Android/data/mobi.MultiCraft/files.
* gui_scaling: this is a user-specified scaling factor for the GUI- In case * gui_scaling: this is a user-specified scaling factor for the GUI- In case
main menu is too big or small on your device, try changing this main menu is too big or small on your device, try changing this
@ -61,8 +61,8 @@ following software packages. The version number in parenthesis denotes the
version that was tested at the time this README was drafted; newer/older version that was tested at the time this README was drafted; newer/older
versions may or may not work. versions may or may not work.
* android SDK (26.1.1) * android SDK (27+)
* android NDK (r16b) * android NDK (r17b)
* wget * wget
* g++-multilib * g++-multilib
* m4 * m4

View File

@ -38,13 +38,13 @@ LOCAL_SRC_FILES := deps/luajit/src/libluajit.a
include $(PREBUILT_STATIC_LIBRARY) include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := multicraft LOCAL_MODULE := MultiCraft
ifdef GPROF ifdef GPROF
GPROF_DEF=-DGPROF GPROF_DEF=-DGPROF
endif endif
LOCAL_CFLAGS := -D_IRR_ANDROID_PLATFORM_ \ LOCAL_CFLAGS := \
-DJSONCPP_NO_LOCALE_SUPPORT \ -DJSONCPP_NO_LOCALE_SUPPORT \
-DHAVE_TOUCHSCREENGUI \ -DHAVE_TOUCHSCREENGUI \
-DUSE_CURL=1 \ -DUSE_CURL=1 \
@ -55,18 +55,16 @@ LOCAL_CFLAGS := -D_IRR_ANDROID_PLATFORM_ \
$(GPROF_DEF) \ $(GPROF_DEF) \
-pipe -pipe
ifndef NDEBUG
LOCAL_CFLAGS += -g -D_DEBUG -O0 -fno-omit-frame-pointer
else
ifeq ($(TARGET_ABI),armeabi-v7a) ifeq ($(TARGET_ABI),armeabi-v7a)
LOCAL_CFLAGS += \ LOCAL_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb
-mfpu=vfpv3-d16 -march=armv7-a -Ofast \
-fdata-sections -ffunction-sections -fvisibility=hidden -flto
LOCAL_CXXFLAGS += $(LOCAL_CFLAGS)
LOCAL_LDFLAGS = -Wl,--no-warn-mismatch,--gc-sections,--icf=safe
endif endif
ifeq ($(TARGET_ABI),x86)
LOCAL_CFLAGS += -march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32 -funroll-loops
endif
ifndef NDEBUG
LOCAL_CFLAGS := -g -D_DEBUG -O0 -fno-omit-frame-pointer
endif endif
ifdef GPROF ifdef GPROF
@ -74,13 +72,9 @@ PROFILER_LIBS := android-ndk-profiler
LOCAL_CFLAGS += -pg LOCAL_CFLAGS += -pg
endif endif
ifeq ($(TARGET_ABI),x86) LOCAL_CFLAGS += -Ofast -fdata-sections -ffunction-sections -fvisibility=hidden -flto
LOCAL_CFLAGS += \ LOCAL_CXXFLAGS := $(LOCAL_CFLAGS)
-fno-stack-protector -Ofast \ LOCAL_LDFLAGS := -Wl,--no-warn-mismatch,--gc-sections,--icf=safe
-fdata-sections -ffunction-sections -fvisibility=hidden -flto
LOCAL_CXXFLAGS += $(LOCAL_CFLAGS)
LOCAL_LDFLAGS = -Wl,--no-warn-mismatch,--gc-sections,--icf=safe
endif
LOCAL_C_INCLUDES := \ LOCAL_C_INCLUDES := \
jni/src \ jni/src \
@ -318,7 +312,7 @@ LOCAL_SRC_FILES += \
LOCAL_SRC_FILES += jni/lib/jsoncpp/jsoncpp.cpp LOCAL_SRC_FILES += jni/lib/jsoncpp/jsoncpp.cpp
# libiconv # libiconv
LOCAL_CFLAGS += -Wno-multichar -D_ANDROID -DLIBDIR -DBUILDING_LIBICONV LOCAL_CFLAGS += -D_ANDROID -DLIBDIR -DBUILDING_LIBICONV
LOCAL_C_INCLUDES += \ LOCAL_C_INCLUDES += \
deps/libiconv/include \ deps/libiconv/include \

View File

@ -3,6 +3,6 @@ APP_ABI := ${TARGET_ABI}
APP_STL := gnustl_static APP_STL := gnustl_static
NDK_TOOLCHAIN_VERSION := 4.9 NDK_TOOLCHAIN_VERSION := 4.9
APP_DEPRECATED_HEADERS := true APP_DEPRECATED_HEADERS := true
APP_MODULES := multicraft APP_MODULES := MultiCraft
APP_CPPFLAGS += -fexceptions -frtti APP_CPPFLAGS += -fexceptions -frtti

View File

@ -5,5 +5,5 @@ NDK_TOOLCHAIN_VERSION := 4.9
APP_DEPRECATED_HEADERS := true APP_DEPRECATED_HEADERS := true
APP_CLAFGS += ${TARGET_CFLAGS_ADDON} APP_CLAFGS += ${TARGET_CFLAGS_ADDON}
APP_CPPFLAGS += ${TARGET_CXXFLAGS_ADDON} -fexceptions APP_CPPFLAGS += ${TARGET_CXXFLAGS_ADDON} -fexceptions -frtti
APP_LDFLAGS += ${TARGET_LDFLAGS_ADDON} APP_LDFLAGS += ${TARGET_LDFLAGS_ADDON}

View File

@ -5,4 +5,4 @@ NDK_TOOLCHAIN_VERSION := 4.9
APP_DEPRECATED_HEADERS := true APP_DEPRECATED_HEADERS := true
APP_MODULES := Irrlicht APP_MODULES := Irrlicht
APP_CPPFLAGS += -fexceptions APP_CPPFLAGS += -fexceptions -frtti

View File

@ -1,21 +1,19 @@
--- irrlicht/source/Irrlicht/Android/jni/Android.mk.orig 2016-02-15 05:33:03.000000000 +0200 --- irrlicht/source/Irrlicht/Android/jni/Android.mk.orig 2016-02-15 05:33:03.000000000 +0200
+++ irrlicht/source/Irrlicht/Android/jni/Android.mk 2016-02-15 05:34:34.913711815 +0200 +++ irrlicht/source/Irrlicht/Android/jni/Android.mk 2016-02-15 05:34:34.913711815 +0200
@@ -11,7 +11,17 @@ @@ -11,7 +11,15 @@
ifndef NDEBUG ifndef NDEBUG
LOCAL_CFLAGS += -g -D_DEBUG LOCAL_CFLAGS += -g -D_DEBUG
else else
-LOCAL_CFLAGS += -fexpensive-optimizations -O3 -LOCAL_CFLAGS += -fexpensive-optimizations -O3
+ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) +ifeq ($(TARGET_ABI),armeabi-v7a)
+LOCAL_CFLAGS += -mfpu=vfpv3-d16 -march=armv7-a -Ofast -fdata-sections -ffunction-sections -fvisibility=hidden -flto +LOCAL_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb
+LOCAL_CXXFLAGS += $(LOCAL_CFLAGS)
+LOCAL_LDFLAGS += -Wl,--no-warn-mismatch,--gc-sections,--icf=safe
+endif +endif
+ifeq ($(TARGET_ARCH_ABI),x86) +ifeq ($(TARGET_ABI),x86)
+LOCAL_CFLAGS += -mhard-float -Ofast -fdata-sections -ffunction-sections -fmodulo-sched -fmodulo-sched-allow-regmoves -fvisibility=hidden -fno-stack-protector +LOCAL_CFLAGS += -march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32 -funroll-loops -fno-stack-protector
+LOCAL_CXXFLAGS += -Ofast -fdata-sections -ffunction-sections -fmodulo-sched -fmodulo-sched-allow-regmoves -fvisibility=hidden
+LOCAL_LDFLAGS = -Wl,--no-warn-mismatch,--gc-sections,--icf=safe
+LOCAL_DISABLE_FATAL_LINKER_WARNINGS := true
+endif +endif
+LOCAL_CFLAGS += -Ofast -fdata-sections -ffunction-sections -fvisibility=hidden -flto
+LOCAL_CXXFLAGS := $(LOCAL_CFLAGS)
+LOCAL_LDFLAGS := -Wl,--no-warn-mismatch,--gc-sections,--icf=safe
endif endif
LOCAL_C_INCLUDES := ../../../include LOCAL_C_INCLUDES := ../../../include

View File

@ -34,7 +34,7 @@
android:theme="@style/AppTheme"> android:theme="@style/AppTheme">
<meta-data <meta-data
android:name="android.app.lib_name" android:name="android.app.lib_name"
android:value="multicraft" /> android:value="MultiCraft" />
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />

View File

@ -9,7 +9,7 @@ import android.view.WindowManager;
public class GameActivity extends NativeActivity { public class GameActivity extends NativeActivity {
static { static {
System.loadLibrary("multicraft"); System.loadLibrary("MultiCraft");
} }
private int messageReturnCode; private int messageReturnCode;

View File

@ -550,6 +550,12 @@ void ClientLauncher::main_menu(MainMenuData *menudata)
bool ClientLauncher::create_engine_device() bool ClientLauncher::create_engine_device()
{ {
#ifdef __ANDROID__
// set correct resolution
g_settings->setU16("screen_w", porting::getDisplaySize().X);
g_settings->setU16("screen_h", porting::getDisplaySize().Y);
#endif
// Resolution selection // Resolution selection
bool fullscreen = g_settings->getBool("fullscreen"); bool fullscreen = g_settings->getBool("fullscreen");
u16 screen_w = g_settings->getU16("screen_w"); u16 screen_w = g_settings->getU16("screen_w");

View File

@ -47,7 +47,6 @@ void android_main(android_app *app)
Thread::setName("Main"); Thread::setName("Main");
try { try {
app_dummy();
char *argv[] = {strdup(PROJECT_NAME), NULL}; char *argv[] = {strdup(PROJECT_NAME), NULL};
main(ARRLEN(argv) - 1, argv); main(ARRLEN(argv) - 1, argv);
free(argv[0]); free(argv[0]);
@ -136,7 +135,7 @@ void initAndroid()
/* in the start-up code */ /* in the start-up code */
__android_log_print(ANDROID_LOG_ERROR, PROJECT_NAME_C, __android_log_print(ANDROID_LOG_ERROR, PROJECT_NAME_C,
"Initializing GPROF profiler"); "Initializing GPROF profiler");
monstartup("libmulticraft.so"); monstartup("libMultiCraft.so");
#endif #endif
} }
@ -206,7 +205,7 @@ void initializePathsAndroid()
cls_File, mt_getAbsPath, "getCacheDir"); cls_File, mt_getAbsPath, "getCacheDir");
path_storage = getAndroidPath(cls_Env, NULL, cls_File, mt_getAbsPath, path_storage = getAndroidPath(cls_Env, NULL, cls_File, mt_getAbsPath,
"getExternalStorageDirectory"); "getExternalStorageDirectory");
path_user = path_storage + DIR_DELIM + "Android/data/mobi.MultiCraft/Files"; path_user = path_storage + DIR_DELIM + "Android/data/mobi.MultiCraft/files";
path_share = path_user; path_share = path_user;
path_locale = path_user + DIR_DELIM + "locale"; path_locale = path_user + DIR_DELIM + "locale";
} }

View File

@ -611,7 +611,7 @@ SRP_Result srp_create_salted_verification_key( SRP_HashAlgorithm alg,
if (fill_buff() != SRP_OK) goto error_and_exit; if (fill_buff() != SRP_OK) goto error_and_exit;
*bytes_s = (unsigned char *)srp_alloc(size_to_fill); *bytes_s = (unsigned char *)srp_alloc(size_to_fill);
if (!*bytes_s) goto error_and_exit; if (!*bytes_s) goto error_and_exit;
memcpy(*bytes_s, &g_rand_buff + g_rand_idx, size_to_fill); memcpy(*bytes_s, &g_rand_buff[g_rand_idx], size_to_fill);
g_rand_idx += size_to_fill; g_rand_idx += size_to_fill;
} }