Android: improved build system
parent
77f80646f2
commit
68117f4e03
|
@ -101,8 +101,11 @@ build/android/src/main/jniLibs
|
|||
build/android/obj
|
||||
build/android/local.properties
|
||||
build/android/.gradle
|
||||
build/android/native/build
|
||||
build/android/native/deps
|
||||
timestamp
|
||||
.idea
|
||||
.externalNativeBuild
|
||||
|
||||
## iOS build files
|
||||
build/iOS/MultiCraft/MultiCraft.xcodeproj/xcuserdata
|
||||
|
|
|
@ -26,20 +26,20 @@
|
|||
# toolchain config for ARMv7 (Clang)
|
||||
######################################################################################
|
||||
|
||||
API = 16
|
||||
TARGET_HOST = arm-linux
|
||||
TARGET_ABI = armeabi-v7a
|
||||
TARGET_ARCH = arm
|
||||
TARGET_TOOLCHAIN = arm-linux-androideabi
|
||||
TARGET_CFLAGS_ADDON = -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Ofast -fdata-sections -ffunction-sections -fvisibility=hidden -fexceptions -D__ANDROID_API__=$(API) -fpic
|
||||
TARGET_CXXFLAGS_ADDON = $(TARGET_CFLAGS_ADDON) -frtti
|
||||
CROSS_PREFIX = arm-linux-androideabi
|
||||
CROSS_CC = clang
|
||||
CROSS_CXX = clang++
|
||||
HOST_CC = "gcc -m32" # required for LuaJIT
|
||||
COMPILER_VERSION = clang
|
||||
APP_STL = c++_shared
|
||||
APP_STL_LIB = libc++
|
||||
#API = 16
|
||||
#TARGET_HOST = arm-linux
|
||||
#TARGET_ABI = armeabi-v7a
|
||||
#TARGET_ARCH = arm
|
||||
#TARGET_TOOLCHAIN = arm-linux-androideabi
|
||||
#TARGET_CFLAGS_ADDON = -mthumb -Ofast -fdata-sections -ffunction-sections -fvisibility=hidden -fexceptions -D__ANDROID_API__=$(API)
|
||||
#TARGET_CXXFLAGS_ADDON = $(TARGET_CFLAGS_ADDON) -frtti
|
||||
#CROSS_PREFIX = arm-linux-androideabi
|
||||
#CROSS_CC = clang
|
||||
#CROSS_CXX = clang++
|
||||
#HOST_CC = "gcc -m32" # required for LuaJIT
|
||||
#COMPILER_VERSION = clang
|
||||
#APP_STL = c++_shared
|
||||
#APP_STL_LIB = libc++
|
||||
|
||||
######################################################################################
|
||||
# toolchain config for ARM64 (gcc, NDK r17c)
|
||||
|
@ -64,20 +64,20 @@ APP_STL_LIB = libc++
|
|||
# toolchain config for ARM64 (Clang)
|
||||
######################################################################################
|
||||
|
||||
#API = 21
|
||||
#TARGET_HOST = arm-linux
|
||||
#TARGET_ABI = arm64-v8a
|
||||
#TARGET_ARCH = arm64
|
||||
#TARGET_TOOLCHAIN = aarch64-linux-android
|
||||
#TARGET_CFLAGS_ADDON = -Ofast -fvisibility=hidden -fexceptions -D__ANDROID_API__=$(API)
|
||||
#TARGET_CXXFLAGS_ADDON = $(TARGET_CFLAGS_ADDON) -frtti
|
||||
#CROSS_PREFIX = aarch64-linux-android
|
||||
#CROSS_CC = clang
|
||||
#CROSS_CXX = clang++
|
||||
#HOST_CC = "gcc -m64" # required for LuaJIT
|
||||
#COMPILER_VERSION = clang
|
||||
#APP_STL = c++_shared
|
||||
#APP_STL_LIB = libc++
|
||||
API = 21
|
||||
TARGET_HOST = arm-linux
|
||||
TARGET_ABI = arm64-v8a
|
||||
TARGET_ARCH = arm64
|
||||
TARGET_TOOLCHAIN = aarch64-linux-android
|
||||
TARGET_CFLAGS_ADDON = -Ofast -fvisibility=hidden -fexceptions -D__ANDROID_API__=$(API)
|
||||
TARGET_CXXFLAGS_ADDON = $(TARGET_CFLAGS_ADDON) -frtti
|
||||
CROSS_PREFIX = aarch64-linux-android
|
||||
CROSS_CC = clang
|
||||
CROSS_CXX = clang++
|
||||
HOST_CC = "gcc -m64" # required for LuaJIT
|
||||
COMPILER_VERSION = clang
|
||||
APP_STL = c++_shared
|
||||
APP_STL_LIB = libc++
|
||||
|
||||
######################################################################################
|
||||
# toolchain config for x86 (gcc, NDK r17c)
|
||||
|
@ -129,12 +129,12 @@ LEVELDB_TIMESTAMP = $(LEVELDB_DIR)/timestamp
|
|||
LEVELDB_TIMESTAMP_INT = $(ANDR_ROOT)/deps/leveldb_timestamp
|
||||
LEVELDB_URL = https://github.com/google/leveldb/archive/v$(LEVELDB_VERSION).zip
|
||||
|
||||
OPENAL_VERSION = 1.19.1
|
||||
OPENAL_VERSION = v1.19
|
||||
OPENAL_DIR = $(ANDR_ROOT)/deps/openal-soft
|
||||
OPENAL_LIB = $(OPENAL_DIR)/libopenal.a
|
||||
OPENAL_TIMESTAMP = $(OPENAL_DIR)/timestamp
|
||||
OPENAL_TIMESTAMP_INT = $(ANDR_ROOT)/deps/openal_timestamp
|
||||
OPENAL_URL = https://github.com/kcat/openal-soft/archive/openal-soft-$(OPENAL_VERSION).zip
|
||||
OPENAL_URL_GIT = https://github.com/kcat/openal-soft/
|
||||
|
||||
VORBIS_DIR = $(ANDR_ROOT)/deps/libvorbis-android
|
||||
VORBIS_LIB = $(VORBIS_DIR)/obj/local/$(TARGET_ABI)/libvorbis.a
|
||||
|
@ -142,14 +142,14 @@ VORBIS_TIMESTAMP = $(VORBIS_DIR)/timestamp
|
|||
VORBIS_TIMESTAMP_INT = $(ANDR_ROOT)/deps/vorbis_timestamp
|
||||
VORBIS_URL_GIT = https://github.com/MoNTE48/libvorbis-android
|
||||
|
||||
IRRLICHT_COMMIT = 237eb07bf4b6957f2e103adcaf835e6a2afe3486
|
||||
IRRLICHT_COMMIT = ogl-es
|
||||
IRRLICHT_DIR = $(ANDR_ROOT)/deps/irrlicht
|
||||
IRRLICHT_LIB = $(IRRLICHT_DIR)/lib/Android/libIrrlicht.a
|
||||
IRRLICHT_TIMESTAMP = $(IRRLICHT_DIR)/timestamp
|
||||
IRRLICHT_TIMESTAMP_INT = $(ANDR_ROOT)/deps/irrlicht_timestamp
|
||||
IRRLICHT_URL_HTTP = https://github.com/zaki/irrlicht/archive/$(IRRLICHT_COMMIT).zip
|
||||
|
||||
CURL_VERSION = 7.65.1
|
||||
CURL_VERSION = 7.65.3
|
||||
CURL_DIR = $(ANDR_ROOT)/deps/curl
|
||||
CURL_LIB = $(CURL_DIR)/lib/.libs/libcurl.a
|
||||
CURL_TIMESTAMP = $(CURL_DIR)/timestamp
|
||||
|
@ -174,6 +174,13 @@ LUAJIT_TIMESTAMP = $(LUAJIT_DIR)/timestamp
|
|||
LUAJIT_TIMESTAMP_INT = $(ANDR_ROOT)/deps/luajit_timestamp
|
||||
LUAJIT_URL_GIT = https://github.com/LuaJIT/LuaJIT.git
|
||||
|
||||
GMP_VERSION = 6.1.2
|
||||
GMP_DIR = $(ANDR_ROOT)/deps/gmp
|
||||
GMP_LIB = $(GMP_DIR)/usr/lib/libgmp.a
|
||||
GMP_TIMESTAMP = $(GMP_DIR)/timestamp
|
||||
GMP_TIMESTAMP_INT = $(ANDR_ROOT)/deps/gmp_timestamp
|
||||
GMP_URL_HTTP = https://gmplib.org/download/gmp/gmp-$(GMP_VERSION).tar.xz
|
||||
|
||||
ASSETS_TIMESTAMP = $(ANDR_ROOT)/deps/assets_timestamp
|
||||
|
||||
######################################################################################
|
||||
|
@ -187,7 +194,7 @@ ANDROID_SDK = $(shell grep '^sdk\.dir' local.properties | sed 's/^.*=[[:space:]]
|
|||
ANDROID_NDK = $(shell grep '^ndk\.dir' local.properties | sed 's/^.*=[[:space:]]*//')
|
||||
|
||||
debug : local.properties
|
||||
export NDEBUG=; \
|
||||
export NDEBUG=0; \
|
||||
export BUILD_TYPE=debug; \
|
||||
$(MAKE) apk
|
||||
|
||||
|
@ -234,10 +241,7 @@ openal_download :
|
|||
echo "openal sources missing, downloading..."; \
|
||||
mkdir -p ${ANDR_ROOT}/deps; \
|
||||
cd ${ANDR_ROOT}/deps ; \
|
||||
wget ${OPENAL_URL} || exit 1; \
|
||||
unzip openal-soft-${OPENAL_VERSION}.zip || exit 1; \
|
||||
rm openal-soft-${OPENAL_VERSION}.zip || exit 1; \
|
||||
mv openal-soft-openal-soft-${OPENAL_VERSION} openal-soft || exit 1; \
|
||||
git clone --branch ${OPENAL_VERSION} ${OPENAL_URL_GIT} openal-soft || exit 1; \
|
||||
cd ${OPENAL_DIR}; \
|
||||
sed '/CMAKE_FIND_ROOT_PATH / s/^/#/' -i XCompile-Android.txt; \
|
||||
sed '/CMAKE_C_COMPILER/ s/-gcc"/-clang"/' -i XCompile-Android.txt; \
|
||||
|
@ -426,7 +430,7 @@ $(FREETYPE_LIB) : $(FREETYPE_TIMESTAMP)
|
|||
export TARGET_OS=OS_ANDROID_CROSSCOMPILE; \
|
||||
export CPPFLAGS="$${CPPFLAGS} ${TARGET_CXXFLAGS_ADDON}"; \
|
||||
export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}"; \
|
||||
CC=${CROSS_CC} ./configure --enable-static --disable-shared --host=${TARGET_HOST} \
|
||||
CC=${CROSS_CC} ./configure --enable-static --disable-shared --host=${TARGET_TOOLCHAIN} \
|
||||
--prefix=${TOOLCHAIN} --with-png=no --with-harfbuzz=no || exit 1; \
|
||||
CC=${CROSS_CC} ANDROID_DEV=/tmp/ndk-${TARGET_HOST}-freetype $(MAKE) || exit 1; \
|
||||
touch ${FREETYPE_TIMESTAMP}; \
|
||||
|
@ -440,83 +444,83 @@ clean_freetype :
|
|||
$(RM) -rf ${FREETYPE_DIR}
|
||||
|
||||
iconv_download :
|
||||
@if [ ! -d ${ICONV_DIR} ] ; then \
|
||||
echo "iconv sources missing, downloading..."; \
|
||||
mkdir -p ${ANDR_ROOT}/deps; \
|
||||
cd ${ANDR_ROOT}/deps; \
|
||||
wget ${ICONV_URL_HTTP} || exit 1; \
|
||||
tar -xzf libiconv-${ICONV_VERSION}.tar.gz || exit 1; \
|
||||
rm libiconv-${ICONV_VERSION}.tar.gz; \
|
||||
mv libiconv-${ICONV_VERSION} libiconv; \
|
||||
cd libiconv; \
|
||||
patch -p1 < ${ANDR_ROOT}/patches/libiconv_android.patch; \
|
||||
export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-iconv; \
|
||||
${ANDROID_NDK}/build/tools/make_standalone_toolchain.py \
|
||||
--arch ${TARGET_ARCH} \
|
||||
--api ${API} \
|
||||
--stl=${APP_STL_LIB} \
|
||||
--install-dir=$${TOOLCHAIN}; \
|
||||
./configure || exit 1; \
|
||||
@if [ ! -d ${ICONV_DIR} ] ; then \
|
||||
echo "iconv sources missing, downloading..."; \
|
||||
mkdir -p ${ANDR_ROOT}/deps; \
|
||||
cd ${ANDR_ROOT}/deps; \
|
||||
wget ${ICONV_URL_HTTP} || exit 1; \
|
||||
tar -xzf libiconv-${ICONV_VERSION}.tar.gz || exit 1; \
|
||||
rm libiconv-${ICONV_VERSION}.tar.gz; \
|
||||
mv libiconv-${ICONV_VERSION} libiconv; \
|
||||
cd libiconv; \
|
||||
patch -p1 < ${ANDR_ROOT}/patches/libiconv_android.patch; \
|
||||
export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-iconv; \
|
||||
${ANDROID_NDK}/build/tools/make_standalone_toolchain.py \
|
||||
--arch ${TARGET_ARCH} \
|
||||
--api ${API} \
|
||||
--stl=${APP_STL_LIB} \
|
||||
--install-dir=$${TOOLCHAIN}; \
|
||||
./configure || exit 1; \
|
||||
fi
|
||||
|
||||
clean_iconv :
|
||||
$(RM) -rf ${ICONV_DIR}
|
||||
|
||||
irrlicht_download :
|
||||
@if [ ! -d "deps/irrlicht" ] ; then \
|
||||
echo "irrlicht sources missing, downloading..."; \
|
||||
mkdir -p ${ANDR_ROOT}/deps; \
|
||||
cd deps; \
|
||||
wget ${IRRLICHT_URL_HTTP} || exit 1; \
|
||||
unzip ${IRRLICHT_COMMIT}.zip || exit 1; \
|
||||
rm ${IRRLICHT_COMMIT}.zip; \
|
||||
mv irrlicht-${IRRLICHT_COMMIT} irrlicht; \
|
||||
cd irrlicht; \
|
||||
mkdir -p lib/Android; \
|
||||
patch -p1 < ${ANDR_ROOT}/patches/irrlicht-touchcount.patch || exit 1; \
|
||||
patch -p1 < ${ANDR_ROOT}/patches/irrlicht-back_button.patch || exit 1; \
|
||||
patch -p1 < ${ANDR_ROOT}/patches/irrlicht-native_activity.patch || exit 1; \
|
||||
patch -p1 < ${ANDR_ROOT}/patches/irrlicht-roundingerror.patch || exit 1; \
|
||||
@if [ ! -d "deps/irrlicht" ] ; then \
|
||||
echo "irrlicht sources missing, downloading..."; \
|
||||
mkdir -p ${ANDR_ROOT}/deps; \
|
||||
cd deps; \
|
||||
wget ${IRRLICHT_URL_HTTP} || exit 1; \
|
||||
unzip ${IRRLICHT_COMMIT}.zip || exit 1; \
|
||||
rm ${IRRLICHT_COMMIT}.zip; \
|
||||
mv irrlicht-${IRRLICHT_COMMIT} irrlicht; \
|
||||
cd irrlicht; \
|
||||
mkdir -p lib/Android; \
|
||||
patch -p1 < ${ANDR_ROOT}/patches/irrlicht-touchcount.patch || exit 1; \
|
||||
patch -p1 < ${ANDR_ROOT}/patches/irrlicht-back_button.patch || exit 1; \
|
||||
patch -p1 < ${ANDR_ROOT}/patches/irrlicht-native_activity.patch || exit 1; \
|
||||
patch -p1 < ${ANDR_ROOT}/patches/irrlicht-roundingerror.patch || exit 1; \
|
||||
fi
|
||||
|
||||
$(IRRLICHT_TIMESTAMP) : irrlicht_download
|
||||
@LAST_MODIF=$$(find ${IRRLICHT_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
|
||||
if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \
|
||||
touch ${IRRLICHT_TIMESTAMP}; \
|
||||
if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \
|
||||
touch ${IRRLICHT_TIMESTAMP}; \
|
||||
fi
|
||||
|
||||
irrlicht : $(IRRLICHT_LIB)
|
||||
|
||||
$(IRRLICHT_LIB): $(IRRLICHT_TIMESTAMP) $(FREETYPE_LIB)
|
||||
+@REFRESH=0; \
|
||||
if [ ! -e ${IRRLICHT_TIMESTAMP_INT} ] ; then \
|
||||
REFRESH=1; \
|
||||
fi; \
|
||||
if [ ! -e ${IRRLICHT_LIB} ] ; then \
|
||||
REFRESH=1; \
|
||||
fi; \
|
||||
if [ ${IRRLICHT_TIMESTAMP} -nt ${IRRLICHT_TIMESTAMP_INT} ] ; then \
|
||||
REFRESH=1; \
|
||||
fi; \
|
||||
if [ $$REFRESH -ne 0 ] ; then \
|
||||
mkdir -p ${IRRLICHT_DIR}; \
|
||||
echo "changed timestamp for irrlicht detected building..."; \
|
||||
cd deps/irrlicht/source/Irrlicht/Android; \
|
||||
export APP_PLATFORM=${APP_PLATFORM}; \
|
||||
export TARGET_ABI=${TARGET_ABI}; \
|
||||
${ANDROID_NDK}/ndk-build \
|
||||
NDEBUG=${NDEBUG} \
|
||||
APP_PLATFORM=${APP_PLATFORM} \
|
||||
TARGET_ABI=${TARGET_ABI} \
|
||||
APP_STL=${APP_STL} \
|
||||
COMPILER_VERSION=${COMPILER_VERSION} \
|
||||
TARGET_CPPFLAGS_ADDON="${TARGET_CXXFLAGS_ADDON}" \
|
||||
TARGET_CFLAGS_ADDON="${TARGET_CFLAGS_ADDON}" \
|
||||
NDK_APPLICATION_MK=${ANDR_ROOT}/jni/Irrlicht.mk || exit 1; \
|
||||
touch ${IRRLICHT_TIMESTAMP}; \
|
||||
touch ${IRRLICHT_TIMESTAMP_INT}; \
|
||||
else \
|
||||
echo "nothing to be done for irrlicht"; \
|
||||
+@REFRESH=0; \
|
||||
if [ ! -e ${IRRLICHT_TIMESTAMP_INT} ] ; then \
|
||||
REFRESH=1; \
|
||||
fi; \
|
||||
if [ ! -e ${IRRLICHT_LIB} ] ; then \
|
||||
REFRESH=1; \
|
||||
fi; \
|
||||
if [ ${IRRLICHT_TIMESTAMP} -nt ${IRRLICHT_TIMESTAMP_INT} ] ; then \
|
||||
REFRESH=1; \
|
||||
fi; \
|
||||
if [ $$REFRESH -ne 0 ] ; then \
|
||||
mkdir -p ${IRRLICHT_DIR}; \
|
||||
echo "changed timestamp for irrlicht detected building..."; \
|
||||
cd deps/irrlicht/source/Irrlicht/Android; \
|
||||
export APP_PLATFORM=${APP_PLATFORM}; \
|
||||
export TARGET_ABI=${TARGET_ABI}; \
|
||||
${ANDROID_NDK}/ndk-build \
|
||||
NDEBUG=${NDEBUG} \
|
||||
APP_PLATFORM=${APP_PLATFORM} \
|
||||
TARGET_ABI=${TARGET_ABI} \
|
||||
APP_STL=${APP_STL} \
|
||||
COMPILER_VERSION=${COMPILER_VERSION} \
|
||||
TARGET_CPPFLAGS_ADDON="${TARGET_CXXFLAGS_ADDON}" \
|
||||
TARGET_CFLAGS_ADDON="${TARGET_CFLAGS_ADDON}" \
|
||||
NDK_APPLICATION_MK=${ANDR_ROOT}/jni/Irrlicht.mk || exit 1; \
|
||||
touch ${IRRLICHT_TIMESTAMP}; \
|
||||
touch ${IRRLICHT_TIMESTAMP_INT}; \
|
||||
else \
|
||||
echo "nothing to be done for irrlicht"; \
|
||||
fi
|
||||
|
||||
clean_irrlicht :
|
||||
|
@ -567,7 +571,7 @@ $(CURL_LIB): $(CURL_TIMESTAMP)
|
|||
export CXX=${CROSS_CXX}; \
|
||||
export TARGET_OS=OS_ANDROID_CROSSCOMPILE; \
|
||||
export CPPFLAGS="$${CPPFLAGS} ${TARGET_CXXFLAGS_ADDON}"; \
|
||||
./configure --host=${TARGET_HOST} --enable-static --disable-shared \
|
||||
./configure --host=${TARGET_TOOLCHAIN} --enable-static --disable-shared \
|
||||
--disable-debug --disable-verbose --disable-dependency-tracking --disable-ftp \
|
||||
--disable-ldap --disable-ldaps --disable-rtsp --disable-proxy --disable-dict \
|
||||
--disable-telnet --disable-tftp --disable-pop3 --disable-imap --disable-smtp \
|
||||
|
@ -658,6 +662,64 @@ $(LUAJIT_LIB): $(LUAJIT_TIMESTAMP)
|
|||
clean_luajit:
|
||||
$(RM) -R deps/luajit
|
||||
|
||||
$(GMP_TIMESTAMP) : gmp_download
|
||||
@LAST_MODIF=$$(find ${GMP_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
|
||||
if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then \
|
||||
touch ${GMP_TIMESTAMP}; \
|
||||
fi
|
||||
|
||||
gmp_download :
|
||||
@if [ ! -d "${GMP_DIR}" ] ; then \
|
||||
echo "gmp sources missing, downloading..."; \
|
||||
mkdir -p ${ANDR_ROOT}/deps; \
|
||||
cd deps; \
|
||||
mkdir gmp; \
|
||||
wget ${GMP_URL_HTTP} || exit 1; \
|
||||
tar -xJf gmp-${GMP_VERSION}.tar.xz -C gmp --strip-components=1 || exit 1; \
|
||||
rm gmp-${GMP_VERSION}.tar.xz; \
|
||||
fi
|
||||
|
||||
gmp : $(GMP_LIB)
|
||||
|
||||
$(GMP_LIB): $(GMP_TIMESTAMP)
|
||||
@REFRESH=0; \
|
||||
if [ ! -e ${GMP_TIMESTAMP_INT} ] ; then \
|
||||
REFRESH=1; \
|
||||
fi; \
|
||||
if [ ! -e ${GMP_LIB} ] ; then \
|
||||
REFRESH=1; \
|
||||
fi; \
|
||||
if [ ${GMP_TIMESTAMP} -nt ${GMP_TIMESTAMP_INT} ] ; then \
|
||||
REFRESH=1; \
|
||||
fi; \
|
||||
if [ $$REFRESH -ne 0 ] ; then \
|
||||
mkdir -p ${GMP_DIR}; \
|
||||
echo "changed timestamp for gmp detected building..."; \
|
||||
cd deps/gmp; \
|
||||
export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-gmp; \
|
||||
${ANDROID_NDK}/build/tools/make_standalone_toolchain.py \
|
||||
--arch ${TARGET_ARCH} \
|
||||
--api ${API} \
|
||||
--stl=${APP_STL_LIB} \
|
||||
--install-dir=$${TOOLCHAIN}; \
|
||||
export PATH="$${TOOLCHAIN}/bin:$${PATH}"; \
|
||||
export CC=${CROSS_CC}; \
|
||||
export CXX=${CROSS_CXX}; \
|
||||
export TARGET_OS=OS_ANDROID_CROSSCOMPILE; \
|
||||
export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}"; \
|
||||
export CXXFLAGS="$${CPPFLAGS} ${TARGET_CXXFLAGS_ADDON}"; \
|
||||
./configure --host=${TARGET_TOOLCHAIN} --enable-static --disable-shared --prefix=/usr; \
|
||||
$(MAKE) install DESTDIR=/${GMP_DIR} || exit 1; \
|
||||
touch ${GMP_TIMESTAMP}; \
|
||||
touch ${GMP_TIMESTAMP_INT}; \
|
||||
$(RM) -rf $${TOOLCHAIN}; \
|
||||
else \
|
||||
echo "nothing to be done for gmp"; \
|
||||
fi
|
||||
|
||||
clean_gmp:
|
||||
$(RM) -R deps/gmp
|
||||
|
||||
assets : $(ASSETS_TIMESTAMP)
|
||||
@REFRESH=0; \
|
||||
if [ ! -e ${ASSETS_TIMESTAMP}.old ] ; then \
|
||||
|
@ -718,9 +780,10 @@ assets : $(ASSETS_TIMESTAMP)
|
|||
clean_assets :
|
||||
@$(RM) -r ${APP_ROOT}/assets
|
||||
|
||||
apk: local.properties $(IRRLICHT_LIB) $(CURL_LIB) $(LEVELDB_LIB) $(LUAJIT_LIB) \
|
||||
apk: local.properties $(IRRLICHT_LIB) $(CURL_LIB) $(GMP_LIB) $(LEVELDB_LIB) $(LUAJIT_LIB) \
|
||||
$(OPENAL_LIB) $(VORBIS_LIB) prep_srcdir iconv_download assets
|
||||
+@${ANDROID_NDK}/ndk-build \
|
||||
+@cd native; \
|
||||
${ANDROID_NDK}ndk-build \
|
||||
APP_STL=${APP_STL} COMPILER_VERSION=${COMPILER_VERSION} \
|
||||
APP_PLATFORM=${APP_PLATFORM} TARGET_ABI=${TARGET_ABI} || exit 1; \
|
||||
if [ ! -e ${APP_ROOT}/jniLibs ]; then \
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
MultiCraft Android version
|
||||
=====================
|
||||
MultiCraft: Android version
|
||||
===========================
|
||||
|
||||
Controls
|
||||
--------
|
||||
|
@ -38,18 +38,6 @@ 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
|
||||
main menu is too big or small on your device, try changing this
|
||||
value.
|
||||
* inventory_image_hack: if your inventory items are messed up, try setting
|
||||
this to true
|
||||
|
||||
Known issues
|
||||
------------
|
||||
Not all issues are fixed by now:
|
||||
|
||||
* Unable to exit from volume menu -- don't use the volume menu, use Android's
|
||||
volume controls instead.
|
||||
* 512 MB RAM seems to be inadequate -- this depends on the server you join.
|
||||
Try to play on more lightweight servers.
|
||||
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
@ -61,11 +49,12 @@ following software packages. The version number in parenthesis denotes the
|
|||
version that was tested at the time this README was drafted; newer/older
|
||||
versions may or may not work.
|
||||
|
||||
* android SDK (27+)
|
||||
* android NDK (r17b)
|
||||
* android SDK (28+)
|
||||
* android NDK (r17c)
|
||||
* wget
|
||||
* g++-multilib
|
||||
* m4
|
||||
* gettext
|
||||
|
||||
Additionally, you'll need to have an Internet connection available on the
|
||||
build system, as the Android build will download some source packages.
|
||||
|
@ -122,7 +111,9 @@ Other things that may be nice to know
|
|||
> make clean_irrlicht
|
||||
|
||||
|
||||
After compiling you need to archive files in assets into three zips - Files.zip, games.zip and worlds.zip.
|
||||
games.zip must contain "games" folder.
|
||||
worlds.zip must contain "worlds" folder and "multicraf.conf" text file.
|
||||
Finally, remaining files must be packed into Files.zip.
|
||||
The new build system MultiCraft Android is still WIP, but it is fully functional and is designed to speed up and simplify the work, as well as adding the possibility of cross-platform build.
|
||||
The Makefile is no longer used and will be removed in future releases. Use the "Start" script, which will automatically load pre-assembled dependencies, prepare localization files and archive all necessary files.
|
||||
Then you can use "./gradlew assemblerelease" or "./graldew assembledebug" from the command line or use Android Studio and click the build button.
|
||||
|
||||
When using gradlew, the newest NDK will be downloaded and installed automatically. Or you can create a local.properties file and specify sdk.dir and ndk.dir yourself.
|
||||
The script will automatically create an APK for all the architectures specified in build.gradle.
|
||||
|
|
|
@ -0,0 +1,81 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
if [ ! -d gradle ]; then
|
||||
echo "Run this in build/android"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
FOLDER=$(pwd)/src/main/assets
|
||||
DEST=$(mktemp -d)
|
||||
|
||||
echo
|
||||
echo "*** Starting build MultiCraft for Android... ***"
|
||||
|
||||
echo
|
||||
echo "=> Getting precompiled dependencies:"
|
||||
if [ ! -d native/deps ]
|
||||
then
|
||||
echo
|
||||
git clone https://github.com/MultiCraft/deps native/deps
|
||||
echo
|
||||
echo "* Done!"
|
||||
else
|
||||
echo
|
||||
echo "Already available, skipping..."
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "=> Creating Assets:"
|
||||
|
||||
for dir in builtin textures; do
|
||||
cp -r ../../$dir $DEST/$dir
|
||||
done
|
||||
|
||||
mkdir -p $DEST/fonts
|
||||
cp ../../fonts/Retron2000.ttf $DEST/fonts/ # no PNG fonts because freetype
|
||||
|
||||
echo
|
||||
echo "* Converting locale files:"
|
||||
pushd ../../po
|
||||
for lang in *; do
|
||||
[ ${#lang} -ne 2 ] && continue
|
||||
mopath=$DEST/locale/$lang/LC_MESSAGES
|
||||
mkdir -p $mopath
|
||||
pushd $lang
|
||||
for fn in *.po; do
|
||||
msgfmt -o $mopath/${fn/.po/.mo} $fn
|
||||
done
|
||||
popd
|
||||
done
|
||||
popd
|
||||
|
||||
# remove broken languages
|
||||
find $DEST -type d -name 'ja' -print0 | xargs -0 -- rm -r
|
||||
find $DEST -type d -name 'ko' -print0 | xargs -0 -- rm -r
|
||||
find $DEST -type d -name 'he' -print0 | xargs -0 -- rm -r
|
||||
|
||||
mkdir -p $FOLDER
|
||||
|
||||
echo
|
||||
echo "** Creating Files.zip"
|
||||
ZIPDEST=$FOLDER/Files.zip
|
||||
rm -f $ZIPDEST
|
||||
cd $DEST; zip -0qr $ZIPDEST -- *
|
||||
cd $FOLDER; rm -rf $DEST
|
||||
|
||||
###########
|
||||
|
||||
cd ../../../../..;
|
||||
|
||||
echo "*** Creating games.zip"
|
||||
ZIPDEST=$FOLDER/games.zip
|
||||
rm -f $ZIPDEST
|
||||
zip -0qr $ZIPDEST -- games
|
||||
|
||||
echo "**** Creating worlds.zip"
|
||||
ZIPDEST=$FOLDER/worlds.zip
|
||||
rm -f $ZIPDEST
|
||||
zip -0qr $ZIPDEST -- worlds
|
||||
|
||||
echo
|
||||
echo "*** All done! You can continue in Android Studio! ***"
|
|
@ -8,8 +8,6 @@ buildscript {
|
|||
classpath 'com.android.tools.build:gradle:3.4.2'
|
||||
classpath 'com.google.gms:google-services:4.3.0'
|
||||
classpath 'io.fabric.tools:gradle:1.29.0'
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -23,7 +21,7 @@ allprojects {
|
|||
apply plugin: 'com.android.application'
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
buildToolsVersion "29.0.0"
|
||||
buildToolsVersion "29.0.1"
|
||||
|
||||
defaultConfig {
|
||||
applicationId 'com.multicraft.game'
|
||||
|
@ -57,7 +55,7 @@ android {
|
|||
abi {
|
||||
enable true
|
||||
reset()
|
||||
include "armeabi-v7a", "arm64-v8a", "x86"
|
||||
include "armeabi-v7a", "arm64-v8a" /*, "x86"*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -77,6 +75,10 @@ android.applicationVariants.all { variant ->
|
|||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(":native")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'androidx.appcompat:appcompat:1.0.2'
|
||||
implementation 'com.google.firebase:firebase-core:17.0.0'
|
||||
|
|
|
@ -1,2 +1,11 @@
|
|||
<#if isLowMemory>
|
||||
org.gradle.jvmargs=-Xmx4G -XX:MaxPermSize=2G -XX:+HeapDumpOnOutOfMemoryError
|
||||
<#else>
|
||||
org.gradle.jvmargs=-Xmx16G -XX:MaxPermSize=8G -XX:+HeapDumpOnOutOfMemoryError
|
||||
</#if>
|
||||
org.gradle.daemon=true
|
||||
org.gradle.parallel=true
|
||||
org.gradle.parallel.threads=8
|
||||
org.gradle.configureondemand=true
|
||||
android.enableJetifier=true
|
||||
android.useAndroidX=true
|
||||
android.useAndroidX=true
|
||||
|
|
Binary file not shown.
|
@ -1,2 +1 @@
|
|||
#Mon Apr 22 16:21:42 CEST 2019
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-all.zip
|
||||
|
|
|
@ -1,310 +0,0 @@
|
|||
LOCAL_PATH := $(call my-dir)/..
|
||||
|
||||
#LOCAL_ADDRESS_SANITIZER:=true
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := Irrlicht
|
||||
LOCAL_SRC_FILES := deps/irrlicht/source/Irrlicht/Android/obj/local/$(APP_ABI)/libIrrlicht.a
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := LevelDB
|
||||
LOCAL_SRC_FILES := deps/leveldb/out-static/libleveldb.a
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := Curl
|
||||
LOCAL_SRC_FILES := deps/curl/lib/.libs/libcurl.a
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := Freetype
|
||||
LOCAL_SRC_FILES := deps/freetype/objs/.libs/libfreetype.a
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := OpenAL
|
||||
LOCAL_SRC_FILES := deps/openal-soft/libopenal.a
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := Vorbis
|
||||
LOCAL_SRC_FILES := deps/libvorbis-android/obj/local/$(APP_ABI)/libvorbis.a
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := LuaJIT
|
||||
LOCAL_SRC_FILES := deps/luajit/src/libluajit.a
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := MultiCraft
|
||||
|
||||
LOCAL_CFLAGS += \
|
||||
-DJSONCPP_NO_LOCALE_SUPPORT \
|
||||
-DHAVE_TOUCHSCREENGUI \
|
||||
-DUSE_CURL=1 \
|
||||
-DUSE_SOUND=1 \
|
||||
-DUSE_FREETYPE=1 \
|
||||
-DUSE_GETTEXT=1 \
|
||||
-DUSE_LEVELDB=1 \
|
||||
$(GPROF_DEF) \
|
||||
-pipe
|
||||
|
||||
ifdef GPROF
|
||||
GPROF_DEF := -DGPROF
|
||||
PROFILER_LIBS := android-ndk-profiler
|
||||
LOCAL_CFLAGS += -pg
|
||||
endif
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
jni/src \
|
||||
jni/src/script \
|
||||
jni/lib/intl \
|
||||
jni/lib/jsoncpp \
|
||||
jni/src/cguittfont \
|
||||
jni/lib/gmp \
|
||||
deps/irrlicht/include \
|
||||
deps/freetype/include \
|
||||
deps/curl/include \
|
||||
deps/openal-soft/include \
|
||||
deps/libvorbis-android/jni/include \
|
||||
deps/leveldb/include \
|
||||
deps/luajit/src \
|
||||
deps/libiconv/include \
|
||||
deps/libiconv/libcharset/include
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
jni/src/ban.cpp \
|
||||
jni/src/camera.cpp \
|
||||
jni/src/cavegen.cpp \
|
||||
jni/src/chat.cpp \
|
||||
jni/src/client.cpp \
|
||||
jni/src/clientenvironment.cpp \
|
||||
jni/src/clientiface.cpp \
|
||||
jni/src/clientmap.cpp \
|
||||
jni/src/clientmedia.cpp \
|
||||
jni/src/clientobject.cpp \
|
||||
jni/src/clouds.cpp \
|
||||
jni/src/collision.cpp \
|
||||
jni/src/content_abm.cpp \
|
||||
jni/src/content_cao.cpp \
|
||||
jni/src/content_mapblock.cpp \
|
||||
jni/src/content_mapnode.cpp \
|
||||
jni/src/content_nodemeta.cpp \
|
||||
jni/src/content_sao.cpp \
|
||||
jni/src/convert_json.cpp \
|
||||
jni/src/craftdef.cpp \
|
||||
jni/src/database-dummy.cpp \
|
||||
jni/src/database-files.cpp \
|
||||
jni/src/database.cpp \
|
||||
jni/src/debug.cpp \
|
||||
jni/src/defaultsettings.cpp \
|
||||
jni/src/drawscene.cpp \
|
||||
jni/src/dungeongen.cpp \
|
||||
jni/src/emerge.cpp \
|
||||
jni/src/environment.cpp \
|
||||
jni/src/face_position_cache.cpp \
|
||||
jni/src/filecache.cpp \
|
||||
jni/src/filesys.cpp \
|
||||
jni/src/fontengine.cpp \
|
||||
jni/src/game.cpp \
|
||||
jni/src/genericobject.cpp \
|
||||
jni/src/gettext.cpp \
|
||||
jni/src/guiChatConsole.cpp \
|
||||
jni/src/guiEngine.cpp \
|
||||
jni/src/guiFileSelectMenu.cpp \
|
||||
jni/src/guiFormSpecMenu.cpp \
|
||||
jni/src/guiKeyChangeMenu.cpp \
|
||||
jni/src/guiPasswordChange.cpp \
|
||||
jni/src/guiTable.cpp \
|
||||
jni/src/guiscalingfilter.cpp \
|
||||
jni/src/guiVolumeChange.cpp \
|
||||
jni/src/httpfetch.cpp \
|
||||
jni/src/hud.cpp \
|
||||
jni/src/imagefilters.cpp \
|
||||
jni/src/intlGUIEditBox.cpp \
|
||||
jni/src/inventory.cpp \
|
||||
jni/src/inventorymanager.cpp \
|
||||
jni/src/itemdef.cpp \
|
||||
jni/src/itemstackmetadata.cpp \
|
||||
jni/src/keycode.cpp \
|
||||
jni/src/light.cpp \
|
||||
jni/src/localplayer.cpp \
|
||||
jni/src/log.cpp \
|
||||
jni/src/main.cpp \
|
||||
jni/src/map.cpp \
|
||||
jni/src/map_settings_manager.cpp \
|
||||
jni/src/mapblock.cpp \
|
||||
jni/src/mapblock_mesh.cpp \
|
||||
jni/src/mapgen.cpp \
|
||||
jni/src/mapgen_flat.cpp \
|
||||
jni/src/mapgen_fractal.cpp \
|
||||
jni/src/mapgen_singlenode.cpp \
|
||||
jni/src/mapgen_v5.cpp \
|
||||
jni/src/mapgen_v6.cpp \
|
||||
jni/src/mapgen_v7.cpp \
|
||||
jni/src/mapgen_v7p.cpp \
|
||||
jni/src/mapgen_valleys.cpp \
|
||||
jni/src/mapnode.cpp \
|
||||
jni/src/mapsector.cpp \
|
||||
jni/src/mesh.cpp \
|
||||
jni/src/mesh_generator_thread.cpp \
|
||||
jni/src/metadata.cpp \
|
||||
jni/src/mg_biome.cpp \
|
||||
jni/src/mg_decoration.cpp \
|
||||
jni/src/mg_ore.cpp \
|
||||
jni/src/mg_schematic.cpp \
|
||||
jni/src/minimap.cpp \
|
||||
jni/src/mods.cpp \
|
||||
jni/src/nameidmapping.cpp \
|
||||
jni/src/nodedef.cpp \
|
||||
jni/src/nodemetadata.cpp \
|
||||
jni/src/nodetimer.cpp \
|
||||
jni/src/noise.cpp \
|
||||
jni/src/objdef.cpp \
|
||||
jni/src/object_properties.cpp \
|
||||
jni/src/particles.cpp \
|
||||
jni/src/pathfinder.cpp \
|
||||
jni/src/player.cpp \
|
||||
jni/src/porting_android.cpp \
|
||||
jni/src/porting.cpp \
|
||||
jni/src/profiler.cpp \
|
||||
jni/src/quicktune.cpp \
|
||||
jni/src/raycast.cpp \
|
||||
jni/src/reflowscan.cpp \
|
||||
jni/src/remoteplayer.cpp \
|
||||
jni/src/rollback_interface.cpp \
|
||||
jni/src/serialization.cpp \
|
||||
jni/src/server.cpp \
|
||||
jni/src/serverenvironment.cpp \
|
||||
jni/src/serverlist.cpp \
|
||||
jni/src/serverobject.cpp \
|
||||
jni/src/shader.cpp \
|
||||
jni/src/sky.cpp \
|
||||
jni/src/socket.cpp \
|
||||
jni/src/sound.cpp \
|
||||
jni/src/sound_openal.cpp \
|
||||
jni/src/staticobject.cpp \
|
||||
jni/src/subgame.cpp \
|
||||
jni/src/tileanimation.cpp \
|
||||
jni/src/tool.cpp \
|
||||
jni/src/treegen.cpp \
|
||||
jni/src/version.cpp \
|
||||
jni/src/voxel.cpp \
|
||||
jni/src/voxelalgorithms.cpp \
|
||||
jni/src/util/areastore.cpp \
|
||||
jni/src/util/auth.cpp \
|
||||
jni/src/util/base64.cpp \
|
||||
jni/src/util/directiontables.cpp \
|
||||
jni/src/util/enriched_string.cpp \
|
||||
jni/src/util/numeric.cpp \
|
||||
jni/src/util/pointedthing.cpp \
|
||||
jni/src/util/serialize.cpp \
|
||||
jni/src/util/sha1.cpp \
|
||||
jni/src/util/string.cpp \
|
||||
jni/src/util/srp.cpp \
|
||||
jni/src/util/timetaker.cpp \
|
||||
jni/src/touchscreengui.cpp \
|
||||
jni/src/database-leveldb.cpp \
|
||||
jni/src/settings.cpp \
|
||||
jni/src/wieldmesh.cpp \
|
||||
jni/src/client/clientlauncher.cpp \
|
||||
jni/src/client/inputhandler.cpp \
|
||||
jni/src/client/tile.cpp \
|
||||
jni/src/util/sha256.c \
|
||||
jni/src/client/joystick_controller.cpp \
|
||||
jni/src/irrlicht_changes/static_text.cpp
|
||||
|
||||
# Network
|
||||
LOCAL_SRC_FILES += \
|
||||
jni/src/network/connection.cpp \
|
||||
jni/src/network/networkpacket.cpp \
|
||||
jni/src/network/clientopcodes.cpp \
|
||||
jni/src/network/clientpackethandler.cpp \
|
||||
jni/src/network/serveropcodes.cpp \
|
||||
jni/src/network/serverpackethandler.cpp
|
||||
|
||||
# lua api
|
||||
LOCAL_SRC_FILES += \
|
||||
jni/src/script/common/c_content.cpp \
|
||||
jni/src/script/common/c_converter.cpp \
|
||||
jni/src/script/common/c_internal.cpp \
|
||||
jni/src/script/common/c_types.cpp \
|
||||
jni/src/script/cpp_api/s_async.cpp \
|
||||
jni/src/script/cpp_api/s_base.cpp \
|
||||
jni/src/script/cpp_api/s_client.cpp \
|
||||
jni/src/script/cpp_api/s_entity.cpp \
|
||||
jni/src/script/cpp_api/s_env.cpp \
|
||||
jni/src/script/cpp_api/s_inventory.cpp \
|
||||
jni/src/script/cpp_api/s_item.cpp \
|
||||
jni/src/script/cpp_api/s_mainmenu.cpp \
|
||||
jni/src/script/cpp_api/s_node.cpp \
|
||||
jni/src/script/cpp_api/s_nodemeta.cpp \
|
||||
jni/src/script/cpp_api/s_player.cpp \
|
||||
jni/src/script/cpp_api/s_security.cpp \
|
||||
jni/src/script/cpp_api/s_server.cpp \
|
||||
jni/src/script/lua_api/l_areastore.cpp \
|
||||
jni/src/script/lua_api/l_base.cpp \
|
||||
jni/src/script/lua_api/l_camera.cpp \
|
||||
jni/src/script/lua_api/l_client.cpp \
|
||||
jni/src/script/lua_api/l_craft.cpp \
|
||||
jni/src/script/lua_api/l_env.cpp \
|
||||
jni/src/script/lua_api/l_inventory.cpp \
|
||||
jni/src/script/lua_api/l_item.cpp \
|
||||
jni/src/script/lua_api/l_itemstackmeta.cpp\
|
||||
jni/src/script/lua_api/l_localplayer.cpp \
|
||||
jni/src/script/lua_api/l_mainmenu.cpp \
|
||||
jni/src/script/lua_api/l_mapgen.cpp \
|
||||
jni/src/script/lua_api/l_metadata.cpp \
|
||||
jni/src/script/lua_api/l_minimap.cpp \
|
||||
jni/src/script/lua_api/l_nodemeta.cpp \
|
||||
jni/src/script/lua_api/l_nodetimer.cpp \
|
||||
jni/src/script/lua_api/l_noise.cpp \
|
||||
jni/src/script/lua_api/l_object.cpp \
|
||||
jni/src/script/lua_api/l_particles.cpp \
|
||||
jni/src/script/lua_api/l_rollback.cpp \
|
||||
jni/src/script/lua_api/l_server.cpp \
|
||||
jni/src/script/lua_api/l_settings.cpp \
|
||||
jni/src/script/lua_api/l_sound.cpp \
|
||||
jni/src/script/lua_api/l_http.cpp \
|
||||
jni/src/script/lua_api/l_storage.cpp \
|
||||
jni/src/script/lua_api/l_util.cpp \
|
||||
jni/src/script/lua_api/l_vmanip.cpp \
|
||||
jni/src/script/scripting_client.cpp \
|
||||
jni/src/script/scripting_server.cpp \
|
||||
jni/src/script/scripting_mainmenu.cpp
|
||||
|
||||
# Freetype2
|
||||
LOCAL_SRC_FILES += jni/src/cguittfont/xCGUITTFont.cpp
|
||||
|
||||
# GMP
|
||||
LOCAL_SRC_FILES += jni/lib/gmp/mini-gmp.c
|
||||
|
||||
# libIntl
|
||||
LOCAL_SRC_FILES += jni/lib/intl/libintl.cpp
|
||||
|
||||
# Threading
|
||||
LOCAL_SRC_FILES += \
|
||||
jni/src/threading/event.cpp \
|
||||
jni/src/threading/mutex.cpp \
|
||||
jni/src/threading/semaphore.cpp \
|
||||
jni/src/threading/thread.cpp
|
||||
|
||||
# JSONCPP
|
||||
LOCAL_SRC_FILES += jni/lib/jsoncpp/jsoncpp.cpp
|
||||
|
||||
LOCAL_SRC_FILES += \
|
||||
deps/libiconv/lib/iconv.c \
|
||||
deps/libiconv/libcharset/lib/localcharset.c
|
||||
|
||||
LOCAL_STATIC_LIBRARIES := Irrlicht LevelDB Freetype Curl LuaJIT OpenAL Vorbis android_native_app_glue $(PROFILER_LIBS)
|
||||
|
||||
LOCAL_LDLIBS := -lEGL -lGLESv1_CM -lGLESv2 -landroid -lOpenSLES
|
||||
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
ifdef GPROF
|
||||
$(call import-module,android-ndk-profiler)
|
||||
endif
|
||||
$(call import-module,android/native_app_glue)
|
|
@ -5,6 +5,8 @@ NDK_TOOLCHAIN_VERSION := ${COMPILER_VERSION}
|
|||
APP_MODULES := Irrlicht
|
||||
|
||||
APP_CPPFLAGS := ${TARGET_CPPFLAGS_ADDON}
|
||||
APP_CFLAGS := $(APP_CPPFLAGS)
|
||||
APP_CXXFLAGS := $(APP_CPPFLAGS)
|
||||
|
||||
ifeq ($(COMPILER_VERSION),4.9)
|
||||
APP_CPPFLAGS += -flto
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
apply plugin: 'com.android.library'
|
||||
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
defaultConfig {
|
||||
minSdkVersion 16
|
||||
targetSdkVersion 29
|
||||
externalNativeBuild {
|
||||
ndkBuild {
|
||||
arguments "-j12",
|
||||
"APP_STL=c++_shared",
|
||||
"COMPILER_VERSION=clang",
|
||||
"APP_SHORT_COMMANDS=true"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
externalNativeBuild {
|
||||
ndkBuild {
|
||||
path file("jni/Android.mk")
|
||||
}
|
||||
}
|
||||
|
||||
// supported architectures
|
||||
splits {
|
||||
abi {
|
||||
enable true
|
||||
reset()
|
||||
include "armeabi-v7a", "arm64-v8a" /*, "x86"*/
|
||||
}
|
||||
}
|
||||
buildTypes {
|
||||
debug {
|
||||
debuggable = false
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,327 @@
|
|||
LOCAL_PATH := $(call my-dir)/..
|
||||
|
||||
#LOCAL_ADDRESS_SANITIZER:=true
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := Irrlicht
|
||||
LOCAL_SRC_FILES := deps/Android/Irrlicht/${COMPILER_VERSION}/$(APP_ABI)/libIrrlicht.a
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := LevelDB
|
||||
LOCAL_SRC_FILES := deps/Android/LevelDB/${COMPILER_VERSION}/$(APP_ABI)/libleveldb.a
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := Curl
|
||||
LOCAL_SRC_FILES := deps/Android/Curl/${COMPILER_VERSION}/$(APP_ABI)/libcurl.a
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := Freetype
|
||||
LOCAL_SRC_FILES := deps/Android/Freetype/${COMPILER_VERSION}/$(APP_ABI)/libfreetype.a
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := OpenAL
|
||||
LOCAL_SRC_FILES := deps/Android/OpenAL-Soft/${COMPILER_VERSION}/$(APP_ABI)/libopenal.a
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := Vorbis
|
||||
LOCAL_SRC_FILES := deps/Android/Vorbis/${COMPILER_VERSION}/$(APP_ABI)/libvorbis.a
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := LuaJIT
|
||||
LOCAL_SRC_FILES := deps/Android/LuaJIT/${COMPILER_VERSION}/$(APP_ABI)/libluajit.a
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := gmp
|
||||
LOCAL_SRC_FILES := deps/Android/gmp/${COMPILER_VERSION}/$(APP_ABI)/libgmp.a
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := MultiCraft
|
||||
|
||||
LOCAL_CFLAGS += \
|
||||
-DJSONCPP_NO_LOCALE_SUPPORT \
|
||||
-DHAVE_TOUCHSCREENGUI \
|
||||
-DUSE_CURL=1 \
|
||||
-DUSE_SOUND=1 \
|
||||
-DUSE_FREETYPE=1 \
|
||||
-DUSE_GETTEXT=1 \
|
||||
-DUSE_LEVELDB=1 \
|
||||
-DUSE_LUAJIT=1 \
|
||||
$(GPROF_DEF)
|
||||
|
||||
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/intl \
|
||||
../../../lib/jsoncpp \
|
||||
../../../src/cguittfont \
|
||||
deps/Android/Irrlicht/include \
|
||||
deps/Android/Freetype/include \
|
||||
deps/Android/Curl/include \
|
||||
deps/Android/OpenAL-Soft/include \
|
||||
deps/Android/Vorbis/include \
|
||||
deps/Android/LevelDB/include \
|
||||
deps/Android/LuaJIT/src \
|
||||
deps/Android/libiconv/include \
|
||||
deps/Android/libiconv/libcharset/include
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
../../../src/ban.cpp \
|
||||
../../../src/camera.cpp \
|
||||
../../../src/cavegen.cpp \
|
||||
../../../src/chat.cpp \
|
||||
../../../src/client.cpp \
|
||||
../../../src/clientenvironment.cpp \
|
||||
../../../src/clientiface.cpp \
|
||||
../../../src/clientmap.cpp \
|
||||
../../../src/clientmedia.cpp \
|
||||
../../../src/clientobject.cpp \
|
||||
../../../src/clouds.cpp \
|
||||
../../../src/collision.cpp \
|
||||
../../../src/content_abm.cpp \
|
||||
../../../src/content_cao.cpp \
|
||||
../../../src/content_mapblock.cpp \
|
||||
../../../src/content_mapnode.cpp \
|
||||
../../../src/content_nodemeta.cpp \
|
||||
../../../src/content_sao.cpp \
|
||||
../../../src/convert_json.cpp \
|
||||
../../../src/craftdef.cpp \
|
||||
../../../src/database-dummy.cpp \
|
||||
../../../src/database-files.cpp \
|
||||
../../../src/database.cpp \
|
||||
../../../src/debug.cpp \
|
||||
../../../src/defaultsettings.cpp \
|
||||
../../../src/drawscene.cpp \
|
||||
../../../src/dungeongen.cpp \
|
||||
../../../src/emerge.cpp \
|
||||
../../../src/environment.cpp \
|
||||
../../../src/face_position_cache.cpp \
|
||||
../../../src/filecache.cpp \
|
||||
../../../src/filesys.cpp \
|
||||
../../../src/fontengine.cpp \
|
||||
../../../src/game.cpp \
|
||||
../../../src/genericobject.cpp \
|
||||
../../../src/gettext.cpp \
|
||||
../../../src/guiChatConsole.cpp \
|
||||
../../../src/guiEngine.cpp \
|
||||
../../../src/guiFileSelectMenu.cpp \
|
||||
../../../src/guiFormSpecMenu.cpp \
|
||||
../../../src/guiKeyChangeMenu.cpp \
|
||||
../../../src/guiPasswordChange.cpp \
|
||||
../../../src/guiTable.cpp \
|
||||
../../../src/guiscalingfilter.cpp \
|
||||
../../../src/guiVolumeChange.cpp \
|
||||
../../../src/httpfetch.cpp \
|
||||
../../../src/hud.cpp \
|
||||
../../../src/imagefilters.cpp \
|
||||
../../../src/intlGUIEditBox.cpp \
|
||||
../../../src/inventory.cpp \
|
||||
../../../src/inventorymanager.cpp \
|
||||
../../../src/itemdef.cpp \
|
||||
../../../src/itemstackmetadata.cpp \
|
||||
../../../src/keycode.cpp \
|
||||
../../../src/light.cpp \
|
||||
../../../src/localplayer.cpp \
|
||||
../../../src/log.cpp \
|
||||
../../../src/main.cpp \
|
||||
../../../src/map.cpp \
|
||||
../../../src/map_settings_manager.cpp \
|
||||
../../../src/mapblock.cpp \
|
||||
../../../src/mapblock_mesh.cpp \
|
||||
../../../src/mapgen.cpp \
|
||||
../../../src/mapgen_flat.cpp \
|
||||
../../../src/mapgen_fractal.cpp \
|
||||
../../../src/mapgen_singlenode.cpp \
|
||||
../../../src/mapgen_v5.cpp \
|
||||
../../../src/mapgen_v6.cpp \
|
||||
../../../src/mapgen_v7.cpp \
|
||||
../../../src/mapgen_v7p.cpp \
|
||||
../../../src/mapgen_valleys.cpp \
|
||||
../../../src/mapnode.cpp \
|
||||
../../../src/mapsector.cpp \
|
||||
../../../src/mesh.cpp \
|
||||
../../../src/mesh_generator_thread.cpp \
|
||||
../../../src/metadata.cpp \
|
||||
../../../src/mg_biome.cpp \
|
||||
../../../src/mg_decoration.cpp \
|
||||
../../../src/mg_ore.cpp \
|
||||
../../../src/mg_schematic.cpp \
|
||||
../../../src/minimap.cpp \
|
||||
../../../src/mods.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_android.cpp \
|
||||
../../../src/porting.cpp \
|
||||
../../../src/profiler.cpp \
|
||||
../../../src/quicktune.cpp \
|
||||
../../../src/raycast.cpp \
|
||||
../../../src/reflowscan.cpp \
|
||||
../../../src/remoteplayer.cpp \
|
||||
../../../src/rollback_interface.cpp \
|
||||
../../../src/serialization.cpp \
|
||||
../../../src/server.cpp \
|
||||
../../../src/serverenvironment.cpp \
|
||||
../../../src/serverlist.cpp \
|
||||
../../../src/serverobject.cpp \
|
||||
../../../src/shader.cpp \
|
||||
../../../src/sky.cpp \
|
||||
../../../src/socket.cpp \
|
||||
../../../src/sound.cpp \
|
||||
../../../src/sound_openal.cpp \
|
||||
../../../src/staticobject.cpp \
|
||||
../../../src/subgame.cpp \
|
||||
../../../src/tileanimation.cpp \
|
||||
../../../src/tool.cpp \
|
||||
../../../src/treegen.cpp \
|
||||
../../../src/version.cpp \
|
||||
../../../src/voxel.cpp \
|
||||
../../../src/voxelalgorithms.cpp \
|
||||
../../../src/util/areastore.cpp \
|
||||
../../../src/util/auth.cpp \
|
||||
../../../src/util/base64.cpp \
|
||||
../../../src/util/directiontables.cpp \
|
||||
../../../src/util/enriched_string.cpp \
|
||||
../../../src/util/numeric.cpp \
|
||||
../../../src/util/pointedthing.cpp \
|
||||
../../../src/util/serialize.cpp \
|
||||
../../../src/util/sha1.cpp \
|
||||
../../../src/util/string.cpp \
|
||||
../../../src/util/srp.cpp \
|
||||
../../../src/util/timetaker.cpp \
|
||||
../../../src/touchscreengui.cpp \
|
||||
../../../src/database-leveldb.cpp \
|
||||
../../../src/settings.cpp \
|
||||
../../../src/wieldmesh.cpp \
|
||||
../../../src/client/clientlauncher.cpp \
|
||||
../../../src/client/inputhandler.cpp \
|
||||
../../../src/client/tile.cpp \
|
||||
../../../src/util/sha256.c \
|
||||
../../../src/client/joystick_controller.cpp \
|
||||
../../../src/irrlicht_changes/static_text.cpp
|
||||
|
||||
LOCAL_CFLAGS += #-Werror=shorten-64-to-32
|
||||
# Network
|
||||
LOCAL_SRC_FILES += \
|
||||
../../../src/network/connection.cpp \
|
||||
../../../src/network/networkpacket.cpp \
|
||||
../../../src/network/clientopcodes.cpp \
|
||||
../../../src/network/clientpackethandler.cpp \
|
||||
../../../src/network/serveropcodes.cpp \
|
||||
../../../src/network/serverpackethandler.cpp
|
||||
|
||||
# Threading
|
||||
LOCAL_SRC_FILES += \
|
||||
../../../src/threading/event.cpp \
|
||||
../../../src/threading/mutex.cpp \
|
||||
../../../src/threading/semaphore.cpp \
|
||||
../../../src/threading/thread.cpp
|
||||
|
||||
# lua api
|
||||
LOCAL_SRC_FILES += \
|
||||
../../../src/script/common/c_content.cpp \
|
||||
../../../src/script/common/c_converter.cpp \
|
||||
../../../src/script/common/c_internal.cpp \
|
||||
../../../src/script/common/c_types.cpp \
|
||||
../../../src/script/cpp_api/s_async.cpp \
|
||||
../../../src/script/cpp_api/s_base.cpp \
|
||||
../../../src/script/cpp_api/s_client.cpp \
|
||||
../../../src/script/cpp_api/s_entity.cpp \
|
||||
../../../src/script/cpp_api/s_env.cpp \
|
||||
../../../src/script/cpp_api/s_inventory.cpp \
|
||||
../../../src/script/cpp_api/s_item.cpp \
|
||||
../../../src/script/cpp_api/s_mainmenu.cpp \
|
||||
../../../src/script/cpp_api/s_node.cpp \
|
||||
../../../src/script/cpp_api/s_nodemeta.cpp \
|
||||
../../../src/script/cpp_api/s_player.cpp \
|
||||
../../../src/script/cpp_api/s_security.cpp \
|
||||
../../../src/script/cpp_api/s_server.cpp \
|
||||
../../../src/script/lua_api/l_areastore.cpp \
|
||||
../../../src/script/lua_api/l_base.cpp \
|
||||
../../../src/script/lua_api/l_camera.cpp \
|
||||
../../../src/script/lua_api/l_client.cpp \
|
||||
../../../src/script/lua_api/l_craft.cpp \
|
||||
../../../src/script/lua_api/l_env.cpp \
|
||||
../../../src/script/lua_api/l_inventory.cpp \
|
||||
../../../src/script/lua_api/l_item.cpp \
|
||||
../../../src/script/lua_api/l_itemstackmeta.cpp\
|
||||
../../../src/script/lua_api/l_localplayer.cpp \
|
||||
../../../src/script/lua_api/l_mainmenu.cpp \
|
||||
../../../src/script/lua_api/l_mapgen.cpp \
|
||||
../../../src/script/lua_api/l_metadata.cpp \
|
||||
../../../src/script/lua_api/l_minimap.cpp \
|
||||
../../../src/script/lua_api/l_nodemeta.cpp \
|
||||
../../../src/script/lua_api/l_nodetimer.cpp \
|
||||
../../../src/script/lua_api/l_noise.cpp \
|
||||
../../../src/script/lua_api/l_object.cpp \
|
||||
../../../src/script/lua_api/l_particles.cpp \
|
||||
../../../src/script/lua_api/l_rollback.cpp \
|
||||
../../../src/script/lua_api/l_server.cpp \
|
||||
../../../src/script/lua_api/l_settings.cpp \
|
||||
../../../src/script/lua_api/l_sound.cpp \
|
||||
../../../src/script/lua_api/l_http.cpp \
|
||||
../../../src/script/lua_api/l_storage.cpp \
|
||||
../../../src/script/lua_api/l_util.cpp \
|
||||
../../../src/script/lua_api/l_vmanip.cpp \
|
||||
../../../src/script/scripting_client.cpp \
|
||||
../../../src/script/scripting_server.cpp \
|
||||
../../../src/script/scripting_mainmenu.cpp
|
||||
|
||||
# Freetype2
|
||||
LOCAL_SRC_FILES += ../../../src/cguittfont/xCGUITTFont.cpp
|
||||
|
||||
# libIntl
|
||||
LOCAL_SRC_FILES += ../../../lib/intl/libintl.cpp
|
||||
|
||||
# JSONCPP
|
||||
LOCAL_SRC_FILES += ../../../lib/jsoncpp/jsoncpp.cpp
|
||||
|
||||
# iconv
|
||||
LOCAL_SRC_FILES += \
|
||||
deps/Android/libiconv/lib/iconv.c \
|
||||
deps/Android/libiconv/libcharset/lib/localcharset.c
|
||||
|
||||
# GMP
|
||||
ifneq ($(APP_ABI),arm64-v8a)
|
||||
LOCAL_C_INCLUDES += ../../../lib/gmp
|
||||
LOCAL_SRC_FILES += ../../../lib/gmp/mini-gmp.c
|
||||
else
|
||||
LOCAL_CFLAGS += -DUSE_SYSTEM_GMP=1
|
||||
LOCAL_C_INCLUDES += deps/Android/gmp/include
|
||||
LOCAL_STATIC_LIBRARIES := gmp
|
||||
endif
|
||||
|
||||
LOCAL_STATIC_LIBRARIES += Irrlicht LevelDB Curl Freetype OpenAL Vorbis LuaJIT android_native_app_glue $(PROFILER_LIBS)
|
||||
|
||||
LOCAL_LDLIBS := -lEGL -lGLESv1_CM -lGLESv2 -landroid -lOpenSLES
|
||||
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
ifdef GPROF
|
||||
$(call import-module,android-ndk-profiler)
|
||||
endif
|
||||
$(call import-module,android/native_app_glue)
|
|
@ -1,35 +1,35 @@
|
|||
APP_PLATFORM := ${APP_PLATFORM}
|
||||
APP_ABI := ${TARGET_ABI}
|
||||
APP_STL := ${APP_STL}
|
||||
NDK_TOOLCHAIN_VERSION := ${COMPILER_VERSION}
|
||||
NDK_TOOLCHAIN_VERSION := $(COMPILER_VERSION)
|
||||
APP_MODULES := MultiCraft
|
||||
|
||||
APP_CPPFLAGS := -Ofast -fvisibility=hidden -fpic -fexceptions -Wno-deprecated-declarations
|
||||
APP_CPPFLAGS := -Ofast -fvisibility=hidden -fexceptions -Wno-deprecated-declarations -Wno-extra-tokens
|
||||
|
||||
ifeq ($(COMPILER_VERSION),4.9)
|
||||
APP_CPPFLAGS += -flto
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET_ABI),armeabi-v7a)
|
||||
ifeq ($(APP_ABI),armeabi-v7a)
|
||||
APP_CPPFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET_ABI),x86)
|
||||
ifeq ($(APP_ABI),x86)
|
||||
APP_CPPFLAGS += -march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32 -funroll-loops
|
||||
endif
|
||||
|
||||
ifndef NDEBUG
|
||||
APP_CPPFLAGS := -g -D_DEBUG -O0 -fno-omit-frame-pointer
|
||||
APP_CPPFLAGS := -g -D_DEBUG -O0 -fno-omit-frame-pointer -fexceptions
|
||||
endif
|
||||
|
||||
APP_CFLAGS := $(APP_CPPFLAGS)
|
||||
APP_CFLAGS := $(APP_CPPFLAGS) #-Werror=shorten-64-to-32
|
||||
APP_CXXFLAGS := $(APP_CPPFLAGS) -frtti
|
||||
APP_LDFLAGS := -Wl,--no-warn-mismatch,--gc-sections,--icf=safe
|
||||
|
||||
ifeq ($(COMPILER_VERSION),clang)
|
||||
APP_CFLAGS += $(APP_CPPFLAGS) -Wno-parentheses-equality
|
||||
APP_CXXFLAGS += $(APP_CPPFLAGS) -std=gnu++17
|
||||
ifeq ($(TARGET_ABI),arm64-v8a)
|
||||
ifeq ($(APP_ABI),arm64-v8a)
|
||||
APP_LDFLAGS := -Wl,--no-warn-mismatch,--gc-sections
|
||||
endif
|
||||
endif
|
|
@ -0,0 +1 @@
|
|||
<manifest package="com.multicraft" />
|
|
@ -0,0 +1 @@
|
|||
include ':native'
|
|
@ -8,7 +8,6 @@ import android.content.Intent;
|
|||
import android.os.AsyncTask;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
|
||||
|
@ -21,16 +20,8 @@ import static com.multicraft.game.AdManager.stopAd;*/
|
|||
|
||||
public class GameActivity extends NativeActivity {
|
||||
static {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
if (TextUtils.join(", ", Build.SUPPORTED_ABIS).contains("64")) {
|
||||
//System.loadLibrary("c++_shared"); // uncomment when upgrading to Clang
|
||||
System.loadLibrary("MultiCraft");
|
||||
} else {
|
||||
System.loadLibrary("MultiCraft");
|
||||
}
|
||||
} else {
|
||||
System.loadLibrary("MultiCraft");
|
||||
}
|
||||
System.loadLibrary("c++_shared");
|
||||
System.loadLibrary("MultiCraft");
|
||||
}
|
||||
|
||||
private int messageReturnCode;
|
||||
|
|
Loading…
Reference in New Issue