Browse Source

Android build via CMake (#13528)

* the thing

* the thing 2
sfan5 11 months ago
parent
commit
8cccd75e81

+ 12 - 2
CMakeLists.txt

@@ -67,9 +67,17 @@ set(ENABLE_UPDATE_CHECKER (NOT ${DEVELOPMENT_BUILD}) CACHE BOOL
 # Included stuff
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
 
+# Load default options for Android
+if(ANDROID)
+	cmake_minimum_required(VERSION 3.20)
+	include(MinetestAndroidLibs)
+endif()
+
 
 set(IRRLICHTMT_BUILD_DIR "" CACHE PATH "Path to IrrlichtMt build directory.")
-if(NOT "${IRRLICHTMT_BUILD_DIR}" STREQUAL "")
+if(ANDROID)
+	# currently manually provided
+elseif(NOT "${IRRLICHTMT_BUILD_DIR}" STREQUAL "")
 	find_package(IrrlichtMt QUIET
 		PATHS "${IRRLICHTMT_BUILD_DIR}"
 		NO_DEFAULT_PATH
@@ -120,7 +128,9 @@ else()
 	endif()
 endif()
 
-if(BUILD_CLIENT AND TARGET IrrlichtMt::IrrlichtMt)
+if(ANDROID)
+	# skipped for now
+elseif(BUILD_CLIENT AND TARGET IrrlichtMt::IrrlichtMt)
 	# retrieve version somehow
 	if(NOT IrrlichtMt_VERSION)
 		get_target_property(IrrlichtMt_VERSION IrrlichtMt VERSION)

+ 1 - 1
android/app/src/main/AndroidManifest.xml

@@ -54,7 +54,7 @@
 			</intent-filter>
 			<meta-data
 				android:name="android.app.lib_name"
-				android:value="Minetest" />
+				android:value="minetest" />
 		</activity>
 
 		<service

+ 1 - 1
android/app/src/main/java/net/minetest/minetest/GameActivity.java

@@ -48,7 +48,7 @@ import java.util.Objects;
 public class GameActivity extends NativeActivity {
 	static {
 		System.loadLibrary("c++_shared");
-		System.loadLibrary("Minetest");
+		System.loadLibrary("minetest");
 	}
 
 	private int messageReturnCode = -1;

+ 1 - 2
android/build.gradle

@@ -3,9 +3,8 @@
 project.ext.set("versionMajor", 5)      // Version Major
 project.ext.set("versionMinor", 8)      // Version Minor
 project.ext.set("versionPatch", 0)      // Version Patch
-project.ext.set("versionExtra", "-dev") // Version Extra
+// ^ keep in sync with cmake
 project.ext.set("versionCode", 44)      // Android Version Code
-project.ext.set("developmentBuild", 1) // Whether it is a development build, or a release
 // NOTE: +2 after each release!
 // +1 for ARM and +1 for ARM64 APK's, because
 // each APK must have a larger `versionCode` than the previous

+ 7 - 15
android/native/build.gradle

@@ -9,20 +9,18 @@ android {
 		minSdkVersion 21
 		targetSdkVersion 33
 		externalNativeBuild {
-			ndkBuild {
-				arguments '-j' + Runtime.getRuntime().availableProcessors(),
-						"versionMajor=${versionMajor}",
-						"versionMinor=${versionMinor}",
-						"versionPatch=${versionPatch}",
-						"versionExtra=${versionExtra}",
-						"developmentBuild=${developmentBuild}"
+            cmake {
+				arguments "-DANDROID_STL=c++_shared",
+					"-DENABLE_CURL=1", "-DENABLE_SOUND=1",
+					"-DENABLE_TOUCH=1", "-DENABLE_GETTEXT=1",
+					"-DBUILD_UNITTESTS=0", "-DENABLE_UPDATE_CHECKER=0"
 			}
 		}
 	}
 
 	externalNativeBuild {
-		ndkBuild {
-			path file('jni/Android.mk')
+		cmake {
+			path file("../../CMakeLists.txt")
 		}
 	}
 
@@ -37,12 +35,6 @@ android {
 
 	buildTypes {
 		release {
-			externalNativeBuild {
-				ndkBuild {
-					arguments 'NDEBUG=1'
-				}
-			}
-
 			ndk {
 				debugSymbolLevel 'SYMBOL_TABLE'
 			}

+ 0 - 301
android/native/jni/Android.mk

@@ -1,301 +0,0 @@
-LOCAL_PATH := $(call my-dir)/..
-
-#LOCAL_ADDRESS_SANITIZER:=true
-#USE_BUILTIN_LUA:=true
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := Curl
-LOCAL_SRC_FILES := deps/$(APP_ABI)/Curl/libcurl.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libmbedcrypto
-LOCAL_SRC_FILES := deps/$(APP_ABI)/Curl/libmbedcrypto.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libmbedtls
-LOCAL_SRC_FILES := deps/$(APP_ABI)/Curl/libmbedtls.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libmbedx509
-LOCAL_SRC_FILES := deps/$(APP_ABI)/Curl/libmbedx509.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := Freetype
-LOCAL_SRC_FILES := deps/$(APP_ABI)/Freetype/libfreetype.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := Iconv
-LOCAL_SRC_FILES := deps/$(APP_ABI)/Iconv/libiconv.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libcharset
-LOCAL_SRC_FILES := deps/$(APP_ABI)/Iconv/libcharset.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := Irrlicht
-LOCAL_SRC_FILES := deps/$(APP_ABI)/Irrlicht/libIrrlichtMt.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := Irrlicht-libpng
-LOCAL_SRC_FILES := deps/$(APP_ABI)/Irrlicht/libpng.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := Irrlicht-libjpeg
-LOCAL_SRC_FILES := deps/$(APP_ABI)/Irrlicht/libjpeg.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-ifndef USE_BUILTIN_LUA
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := LuaJIT
-LOCAL_SRC_FILES := deps/$(APP_ABI)/LuaJIT/libluajit.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-endif
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := OpenAL
-LOCAL_SRC_FILES := deps/$(APP_ABI)/OpenAL-Soft/libopenal.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := Gettext
-LOCAL_SRC_FILES := deps/$(APP_ABI)/Gettext/libintl.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := SQLite3
-LOCAL_SRC_FILES := deps/$(APP_ABI)/SQLite/libsqlite3.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := Vorbis
-LOCAL_SRC_FILES := deps/$(APP_ABI)/Vorbis/libvorbis.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libvorbisfile
-LOCAL_SRC_FILES := deps/$(APP_ABI)/Vorbis/libvorbisfile.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libogg
-LOCAL_SRC_FILES := deps/$(APP_ABI)/Vorbis/libogg.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := Zstd
-LOCAL_SRC_FILES := deps/$(APP_ABI)/Zstd/libzstd.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := Minetest
-
-LOCAL_CFLAGS += \
-	-DJSONCPP_NO_LOCALE_SUPPORT     \
-	-DHAVE_TOUCHSCREENGUI           \
-	-DUSE_CURL=1                    \
-	-DUSE_SOUND=1                   \
-	-DUSE_LEVELDB=0                 \
-	-DUSE_GETTEXT=1                 \
-	-DVERSION_MAJOR=${versionMajor} \
-	-DVERSION_MINOR=${versionMinor} \
-	-DVERSION_PATCH=${versionPatch} \
-	-DVERSION_EXTRA=${versionExtra} \
-	-DDEVELOPMENT_BUILD=${developmentBuild} \
-	$(GPROF_DEF)
-
-ifdef USE_BUILTIN_LUA
-	LOCAL_CFLAGS += -DUSE_LUAJIT=0
-else
-	LOCAL_CFLAGS += -DUSE_LUAJIT=1
-endif
-
-ifdef NDEBUG
-	LOCAL_CFLAGS += -DNDEBUG=1
-endif
-
-ifdef GPROF
-	GPROF_DEF := -DGPROF
-	PROFILER_LIBS := android-ndk-profiler
-	LOCAL_CFLAGS += -pg
-endif
-
-LOCAL_C_INCLUDES := \
-	../../src                                    \
-	../../src/script                             \
-	../../lib/gmp                                \
-	../../lib/jsoncpp                            \
-	deps/$(APP_ABI)/Curl/include                       \
-	deps/$(APP_ABI)/Freetype/include/freetype2         \
-	deps/$(APP_ABI)/Irrlicht/include                   \
-	deps/$(APP_ABI)/Gettext/include                    \
-	deps/$(APP_ABI)/Iconv/include                      \
-	deps/$(APP_ABI)/OpenAL-Soft/include                \
-	deps/$(APP_ABI)/SQLite/include                     \
-	deps/$(APP_ABI)/Vorbis/include                     \
-	deps/$(APP_ABI)/Zstd/include
-
-ifdef USE_BUILTIN_LUA
-	LOCAL_C_INCLUDES += \
-		../../lib/lua/src                    \
-		../../lib/bitop
-else
-	LOCAL_C_INCLUDES += deps/$(APP_ABI)/LuaJIT/include
-endif
-
-LOCAL_SRC_FILES := \
-	$(wildcard ../../src/client/*.cpp)           \
-	$(wildcard ../../src/client/*/*.cpp)         \
-	$(wildcard ../../src/content/*.cpp)          \
-	../../src/database/database.cpp              \
-	../../src/database/database-dummy.cpp        \
-	../../src/database/database-files.cpp        \
-	../../src/database/database-sqlite3.cpp      \
-	$(wildcard ../../src/gui/*.cpp)              \
-	$(wildcard ../../src/irrlicht_changes/*.cpp) \
-	$(wildcard ../../src/mapgen/*.cpp)           \
-	$(wildcard ../../src/network/*.cpp)          \
-	$(wildcard ../../src/script/*.cpp)           \
-	$(wildcard ../../src/script/*/*.cpp)         \
-	$(wildcard ../../src/server/*.cpp)           \
-	$(wildcard ../../src/threading/*.cpp)        \
-	$(wildcard ../../src/util/*.c)               \
-	$(wildcard ../../src/util/*.cpp)             \
-	../../src/ban.cpp                            \
-	../../src/chat.cpp                           \
-	../../src/clientiface.cpp                    \
-	../../src/collision.cpp                      \
-	../../src/content_mapnode.cpp                \
-	../../src/content_nodemeta.cpp               \
-	../../src/convert_json.cpp                   \
-	../../src/craftdef.cpp                       \
-	../../src/debug.cpp                          \
-	../../src/defaultsettings.cpp                \
-	../../src/emerge.cpp                         \
-	../../src/environment.cpp                    \
-	../../src/face_position_cache.cpp            \
-	../../src/filesys.cpp                        \
-	../../src/gettext.cpp                        \
-	../../src/httpfetch.cpp                      \
-	../../src/hud.cpp                            \
-	../../src/inventory.cpp                      \
-	../../src/inventorymanager.cpp               \
-	../../src/itemdef.cpp                        \
-	../../src/itemstackmetadata.cpp              \
-	../../src/light.cpp                          \
-	../../src/lighting.cpp                       \
-	../../src/log.cpp                            \
-	../../src/main.cpp                           \
-	../../src/map.cpp                            \
-	../../src/map_settings_manager.cpp           \
-	../../src/mapblock.cpp                       \
-	../../src/mapnode.cpp                        \
-	../../src/mapsector.cpp                      \
-	../../src/metadata.cpp                       \
-	../../src/modchannels.cpp                    \
-	../../src/nameidmapping.cpp                  \
-	../../src/nodedef.cpp                        \
-	../../src/nodemetadata.cpp                   \
-	../../src/nodetimer.cpp                      \
-	../../src/noise.cpp                          \
-	../../src/objdef.cpp                         \
-	../../src/object_properties.cpp              \
-	../../src/particles.cpp                      \
-	../../src/pathfinder.cpp                     \
-	../../src/player.cpp                         \
-	../../src/porting.cpp                        \
-	../../src/porting_android.cpp                \
-	../../src/profiler.cpp                       \
-	../../src/raycast.cpp                        \
-	../../src/reflowscan.cpp                     \
-	../../src/remoteplayer.cpp                   \
-	../../src/rollback.cpp                       \
-	../../src/rollback_interface.cpp             \
-	../../src/serialization.cpp                  \
-	../../src/server.cpp                         \
-	../../src/serverenvironment.cpp              \
-	../../src/serverlist.cpp                     \
-	../../src/settings.cpp                       \
-	../../src/staticobject.cpp                   \
-	../../src/texture_override.cpp               \
-	../../src/tileanimation.cpp                  \
-	../../src/tool.cpp                           \
-	../../src/translation.cpp                    \
-	../../src/version.cpp                        \
-	../../src/voxel.cpp                          \
-	../../src/voxelalgorithms.cpp
-
-# Built-in Lua
-ifdef USE_BUILTIN_LUA
-	LOCAL_SRC_FILES += \
-		../../lib/lua/src/lapi.c \
-		../../lib/lua/src/lauxlib.c \
-		../../lib/lua/src/lbaselib.c \
-		../../lib/lua/src/lcode.c \
-		../../lib/lua/src/ldblib.c \
-		../../lib/lua/src/ldebug.c \
-		../../lib/lua/src/ldo.c \
-		../../lib/lua/src/ldump.c \
-		../../lib/lua/src/lfunc.c \
-		../../lib/lua/src/lgc.c \
-		../../lib/lua/src/linit.c \
-		../../lib/lua/src/liolib.c \
-		../../lib/lua/src/llex.c \
-		../../lib/lua/src/lmathlib.c \
-		../../lib/lua/src/lmem.c \
-		../../lib/lua/src/loadlib.c \
-		../../lib/lua/src/lobject.c \
-		../../lib/lua/src/lopcodes.c \
-		../../lib/lua/src/loslib.c \
-		../../lib/lua/src/lparser.c \
-		../../lib/lua/src/lstate.c \
-		../../lib/lua/src/lstring.c \
-		../../lib/lua/src/lstrlib.c \
-		../../lib/lua/src/ltable.c \
-		../../lib/lua/src/ltablib.c \
-		../../lib/lua/src/ltm.c \
-		../../lib/lua/src/lundump.c \
-		../../lib/lua/src/lvm.c \
-		../../lib/lua/src/lzio.c \
-		../../lib/bitop/bit.c
-endif
-
-# GMP
-LOCAL_SRC_FILES += ../../lib/gmp/mini-gmp.c
-
-# JSONCPP
-LOCAL_SRC_FILES += ../../lib/jsoncpp/jsoncpp.cpp
-
-LOCAL_STATIC_LIBRARIES += \
-	Curl libmbedcrypto libmbedtls libmbedx509 \
-	Freetype \
-	Iconv libcharset \
-	Irrlicht Irrlicht-libpng Irrlicht-libjpeg \
-	OpenAL \
-	Gettext \
-	SQLite3 \
-	Vorbis libvorbisfile libogg \
-	Zstd
-ifndef USE_BUILTIN_LUA
-	LOCAL_STATIC_LIBRARIES += LuaJIT
-endif
-LOCAL_STATIC_LIBRARIES += android_native_app_glue $(PROFILER_LIBS)
-
-LOCAL_LDLIBS := -lEGL -lGLESv1_CM -lGLESv2 -landroid -lOpenSLES -lz
-
-include $(BUILD_SHARED_LIBRARY)
-
-ifdef GPROF
-$(call import-module,android-ndk-profiler)
-endif
-$(call import-module,android/native_app_glue)

+ 0 - 32
android/native/jni/Application.mk

@@ -1,32 +0,0 @@
-APP_PLATFORM := ${APP_PLATFORM}
-APP_ABI := ${TARGET_ABI}
-APP_STL := c++_shared
-NDK_TOOLCHAIN_VERSION := clang
-APP_SHORT_COMMANDS := true
-APP_MODULES := Minetest
-
-APP_CPPFLAGS := -O2 -fvisibility=hidden
-
-ifeq ($(APP_ABI),armeabi-v7a)
-APP_CPPFLAGS += -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb
-endif
-
-ifeq ($(APP_ABI),x86)
-APP_CPPFLAGS += -mssse3 -mfpmath=sse -funroll-loops
-endif
-
-ifndef NDEBUG
-APP_CPPFLAGS := -g -Og -fno-omit-frame-pointer
-endif
-
-APP_CFLAGS   := $(APP_CPPFLAGS) -Wno-inconsistent-missing-override -Wno-parentheses-equality
-APP_CXXFLAGS := $(APP_CPPFLAGS) -fexceptions -frtti -std=gnu++14
-APP_LDFLAGS  := -Wl,--no-warn-mismatch,--gc-sections,--icf=safe
-
-ifeq ($(APP_ABI),arm64-v8a)
-APP_LDFLAGS  := -Wl,--no-warn-mismatch,--gc-sections
-endif
-
-ifndef NDEBUG
-APP_LDFLAGS  :=
-endif

+ 31 - 0
cmake/Modules/MinetestAndroidLibs.cmake

@@ -0,0 +1,31 @@
+set(DEPS "${CMAKE_SOURCE_DIR}/android/native/deps/${ANDROID_ABI}")
+
+add_library(IrrlichtMt::IrrlichtMt STATIC IMPORTED)
+set_target_properties(IrrlichtMt::IrrlichtMt PROPERTIES
+	INTERFACE_INCLUDE_DIRECTORIES ${DEPS}/Irrlicht/include)
+set_target_properties(IrrlichtMt::IrrlichtMt PROPERTIES
+	IMPORTED_LOCATION ${DEPS}/Irrlicht/libIrrlichtMt.a)
+set_target_properties(IrrlichtMt::IrrlichtMt PROPERTIES
+	INTERFACE_LINK_LIBRARIES "EGL;GLESv1_CM;GLESv2;${DEPS}/Irrlicht/libpng.a;${DEPS}/Irrlicht/libjpeg.a")
+
+set(CURL_INCLUDE_DIR ${DEPS}/Curl/include)
+set(CURL_LIBRARY ${DEPS}/Curl/libcurl.a;${DEPS}/Curl/libmbedcrypto.a;${DEPS}/Curl/libmbedtls.a;${DEPS}/Curl/libmbedx509.a)
+set(FREETYPE_INCLUDE_DIR_ft2build ${DEPS}/Freetype/include/freetype2)
+set(FREETYPE_INCLUDE_DIR_freetype2 ${FREETYPE_INCLUDE_DIR_ft2build}/freetype)
+set(FREETYPE_LIBRARY ${DEPS}/Freetype/libfreetype.a)
+set(GETTEXT_INCLUDE_DIR ${DEPS}/Gettext/include;${DEPS}/Iconv/include)
+set(GETTEXT_LIBRARY ${DEPS}/Gettext/libintl.a)
+set(ICONV_LIBRARY ${DEPS}/Iconv/libiconv.a;${DEPS}/Iconv/libcharset.a)
+set(LUA_INCLUDE_DIR ${DEPS}/LuaJIT/include)
+set(LUA_LIBRARY ${DEPS}/LuaJIT/libluajit.a)
+set(OGG_INCLUDE_DIR ${DEPS}/Vorbis/include)
+set(OGG_LIBRARY ${DEPS}/Vorbis/libogg.a)
+set(OPENAL_INCLUDE_DIR ${DEPS}/OpenAL-Soft/include)
+set(OPENAL_LIBRARY ${DEPS}/OpenAL-Soft/libopenal.a;OpenSLES)
+set(SQLITE3_INCLUDE_DIR ${DEPS}/SQLite/include)
+set(SQLITE3_LIBRARY ${DEPS}/SQLite/libsqlite3.a)
+set(VORBIS_INCLUDE_DIR ${DEPS}/Vorbis/include)
+set(VORBISFILE_LIBRARY ${DEPS}/Vorbis/libvorbisfile.a)
+set(VORBIS_LIBRARY ${DEPS}/Vorbis/libvorbis.a)
+set(ZSTD_INCLUDE_DIR ${DEPS}/Zstd/include)
+set(ZSTD_LIBRARY ${DEPS}/Zstd/libzstd.a)

+ 0 - 2
doc/compiling/README.md

@@ -43,8 +43,6 @@ Library specific options:
     CURL_DLL                        - Only if building with cURL on Windows; path to libcurl.dll
     CURL_INCLUDE_DIR                - Only if building with cURL; directory where curl.h is located
     CURL_LIBRARY                    - Only if building with cURL; path to libcurl.a/libcurl.so/libcurl.lib
-    EGL_INCLUDE_DIR                 - Only if building with GLES; directory that contains egl.h
-    EGL_LIBRARY                     - Only if building with GLES; path to libEGL.a/libEGL.so
     EXTRA_DLL                       - Only on Windows; optional paths to additional DLLs that should be packaged
     FREETYPE_INCLUDE_DIR_freetype2  - Directory that contains files such as ftimage.h
     FREETYPE_INCLUDE_DIR_ft2build   - Directory that contains ft2build.h

+ 25 - 8
src/CMakeLists.txt

@@ -285,10 +285,8 @@ if(WIN32)
 	endif()
 else()
 	# Unix probably
-	if(BUILD_CLIENT)
-		if(NOT HAIKU AND NOT APPLE)
-			find_package(X11 REQUIRED)
-		endif(NOT HAIKU AND NOT APPLE)
+	if(BUILD_CLIENT AND NOT (HAIKU OR APPLE OR ANDROID))
+		find_package(X11 REQUIRED)
 	endif()
 
 	set(PLATFORM_LIBS ${PLATFORM_LIBS} ${CMAKE_DL_LIBS})
@@ -310,6 +308,14 @@ else()
 	if (HAIKU)
 		set(PLATFORM_LIBS ${PLATFORM_LIBS} network)
 	endif()
+
+	if (ANDROID)
+		include_directories(${ANDROID_NDK}/sources/android/native_app_glue)
+		add_library(native_app_glue OBJECT ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c)
+		set(PLATFORM_LIBS ${PLATFORM_LIBS} native_app_glue)
+
+		set(PLATFORM_LIBS ${PLATFORM_LIBS} android log)
+	endif()
 endif()
 
 check_include_files(endian.h HAVE_ENDIAN_H)
@@ -419,6 +425,10 @@ set(common_SRCS
 	${UTIL_SRCS}
 )
 
+if(ANDROID)
+	set(common_SRCS ${common_SRCS} porting_android.cpp)
+endif()
+
 if(BUILD_UNITTESTS)
 	set(common_SRCS ${common_SRCS} ${UNITTEST_SRCS})
 endif()
@@ -524,7 +534,11 @@ if(NOT CMAKE_CROSSCOMPILING)
 endif()
 
 if(BUILD_CLIENT)
-	add_executable(${PROJECT_NAME} ${client_SRCS} ${extra_windows_SRCS})
+	if(ANDROID)
+		add_library(${PROJECT_NAME} SHARED ${client_SRCS})
+	else()
+		add_executable(${PROJECT_NAME} ${client_SRCS} ${extra_windows_SRCS})
+	endif()
 	add_dependencies(${PROJECT_NAME} GenerateVersion)
 	target_link_libraries(
 		${PROJECT_NAME}
@@ -874,7 +888,7 @@ if(WIN32)
 	endif()
 endif()
 
-if(BUILD_CLIENT)
+if(BUILD_CLIENT AND NOT ANDROID)
 	install(TARGETS ${PROJECT_NAME}
 		RUNTIME DESTINATION ${BINDIR}
 		LIBRARY DESTINATION ${BINDIR}
@@ -900,13 +914,16 @@ if(BUILD_CLIENT)
 
 	install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../fonts" DESTINATION "${SHAREDIR}"
 			FILES_MATCHING PATTERN "*.ttf" PATTERN "*.txt")
-endif(BUILD_CLIENT)
+endif()
 
 if(BUILD_SERVER)
 	install(TARGETS ${PROJECT_NAME}server DESTINATION ${BINDIR})
 endif()
 
-if (USE_GETTEXT)
+if (ANDROID)
+	# Android does this manually in app/build.gradle -> prepareAssets
+	# for now!
+elseif (USE_GETTEXT)
 	set(MO_FILES)
 
 	foreach(LOCALE ${GETTEXT_USED_LOCALES})

+ 1 - 21
src/config.h

@@ -1,27 +1,7 @@
-/*
-	If CMake is used, includes the cmake-generated cmake_config.h.
-	Otherwise use default values
-*/
-
 #pragma once
 
-#define STRINGIFY(x) #x
-#define STR(x) STRINGIFY(x)
-
-
 #if defined USE_CMAKE_CONFIG_H
 	#include "cmake_config.h"
 #else
-	#if defined (__ANDROID__)
-		#define PROJECT_NAME "minetest"
-		#define PROJECT_NAME_C "Minetest"
-		#define STATIC_SHAREDIR ""
-		#define ENABLE_UPDATE_CHECKER 0
-		#define VERSION_STRING STR(VERSION_MAJOR) "." STR(VERSION_MINOR) "." STR(VERSION_PATCH) STR(VERSION_EXTRA)
-	#endif
-	#ifdef NDEBUG
-		#define BUILD_TYPE "Release"
-	#else
-		#define BUILD_TYPE "Debug"
-	#endif
+	#warning Missing configuration
 #endif

+ 3 - 0
src/version.cpp

@@ -28,6 +28,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 	#define VERSION_GITHASH VERSION_STRING
 #endif
 
+#define STRINGIFY(x) #x
+#define STR(x) STRINGIFY(x)
+
 const char *g_version_string = VERSION_STRING;
 const char *g_version_hash = VERSION_GITHASH;
 const char *g_build_info =

+ 0 - 9
util/bump_version.sh

@@ -105,15 +105,6 @@ set_dev_build() {
 		sed -i -re 's/^set\(DEVELOPMENT_BUILD [A-Z]+\)$/set(DEVELOPMENT_BUILD FALSE)/' CMakeLists.txt
 	fi
 
-	# Update Android versions
-	if [ "$is_dev" -eq 1 ]; then
-		sed -i 's/set("versionExtra", "")/set("versionExtra", "-dev")/' android/build.gradle
-		sed -i 's/project.ext.set("developmentBuild", 0)/project.ext.set("developmentBuild", 1)/' android/build.gradle
-	else
-		sed -i 's/set("versionExtra", "-dev")/set("versionExtra", "")/' android/build.gradle
-		sed -i 's/project.ext.set("developmentBuild", 1)/project.ext.set("developmentBuild", 0)/' android/build.gradle
-	fi
-
 	git add -f CMakeLists.txt android/build.gradle
 }