From 67f32a7cc8b8eefb759e76f83e25367a21b5a2b4 Mon Sep 17 00:00:00 2001 From: pelya Date: Tue, 5 Jan 2021 01:09:19 +0200 Subject: [PATCH] OpenTTD-JGR: fixed compilation with CMake --- .../openttd-jgrpp/AndroidAppSettings.cfg | 8 +- .../application/openttd-jgrpp/AndroidBuild.sh | 107 +++++++++++++----- project/jni/application/openttd-jgrpp/src | 2 +- 3 files changed, 82 insertions(+), 35 deletions(-) diff --git a/project/jni/application/openttd-jgrpp/AndroidAppSettings.cfg b/project/jni/application/openttd-jgrpp/AndroidAppSettings.cfg index ec15d626c..f559e0ad8 100644 --- a/project/jni/application/openttd-jgrpp/AndroidAppSettings.cfg +++ b/project/jni/application/openttd-jgrpp/AndroidAppSettings.cfg @@ -7,10 +7,10 @@ AppName="OpenTTD JGR" AppFullName=org.openttd.jgrpp # Application version code (integer) -AppVersionCode=034209 +AppVersionCode=039210 # Application user-visible version name (string) -AppVersionName="0.34.2" +AppVersionName="0.39.2" # Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...' # If you'll start Description with '!' symbol it will be enabled by default, '!!' will also hide the entry from the menu, so it cannot be disabled @@ -269,12 +269,12 @@ APP_PLATFORM= # Specify architectures to compile, 'all' or 'y' to compile for all architectures. # Available architectures: armeabi-v7a arm64-v8a x86 x86_64 -MultiABI='arm64-v8a armeabi-v7a x86 x86_64' +MultiABI='arm64-v8a' # armeabi-v7a x86 x86_64 # Optional shared libraries to compile - removing some of them will save space # MP3 patents are expired, but libmad license is GPL, not LGPL # Available libraries: mad (GPL-ed!) sdl_mixer sdl_image sdl_ttf sdl_net sdl_blitpool sdl_gfx sdl_sound intl xml2 lua jpeg png ogg flac tremor vorbis freetype xerces curl theora fluidsynth lzma lzo2 mikmod openal timidity zzip bzip2 yaml-cpp python boost_date_time boost_filesystem boost_iostreams boost_program_options boost_regex boost_signals boost_system boost_thread glu avcodec avdevice avfilter avformat avresample avutil swscale swresample bzip2 -CompiledLibraries="c++_shared jpeg png freetype timidity expat fontconfig lzma lzo2 icui18n iculx icu-le-hb harfbuzz icudata icuuc" +CompiledLibraries="c++_shared timidity expat fontconfig lzma lzo2 icui18n iculx icu-le-hb harfbuzz icudata icuuc" # Application uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n) CustomBuildScript=y diff --git a/project/jni/application/openttd-jgrpp/AndroidBuild.sh b/project/jni/application/openttd-jgrpp/AndroidBuild.sh index c53f8126e..72f6db4c9 100755 --- a/project/jni/application/openttd-jgrpp/AndroidBuild.sh +++ b/project/jni/application/openttd-jgrpp/AndroidBuild.sh @@ -8,39 +8,86 @@ VER=build export ARCH=$1 -CPU_TYPE=32 -[ "$ARCH" = "arm64-v8a" ] && CPU_TYPE=64 -[ "$ARCH" = "x86_64" ] && CPU_TYPE=64 - -[ -e openttd-$VER-$1/bin/baseset/orig_extra.grf ] || { - mkdir -p openttd-$VER-$1/bin - cp -a src/bin/baseset openttd-$VER-$1/bin/ -} || exit 1 - -#[ -e openttd-$VER-$1/objs/lang/english.lng ] || { -# sh -c "cd openttd-$VER-$1 && ../src/configure --without-freetype --without-png --without-zlib \ -# --without-lzo2 --without-lzma --cpu-type=$CPU_TYPE && \ -# make lang && make -C objs/release endian_target.h depend && make -C objs/setting" || exit 1 -# rm -f openttd-$VER-$1/Makefile -#} || exit 1 - [ -e openttd-$VER-$1/Makefile ] || { - rm -f src/src/rev.cpp - env PATH=$LOCAL_PATH/..:$PATH \ - env LDFLAGS=-L$LOCAL_PATH/../../../obj/local/$ARCH \ - env CFLAGS_BUILD="-I." \ - env CXXFLAGS_BUILD="-I." \ - env LDFLAGS_BUILD="-L." \ - env ANDROID=1 \ - env CLANG=1 ../setEnvironment-$1.sh sh -c "cd openttd-$VER-$1 && env ../src/configure \ - --with-sdl=sdl1 --with-freetype --with-png --with-zlib --with-icu --with-libtimidity='pkg-config libtimidity' \ - --with-lzo2=$LOCAL_PATH/../../../obj/local/$ARCH/liblzo2.so --prefix-dir='.' --data-dir='' \ - --without-allegro --with-fontconfig --with-lzma --cpu-type=$CPU_TYPE --os=unix --cc-build=gcc --cxx-build=g++ \ - --without-sse --without-xdg-basedir --without-fluidsynth" + CMAKE_SDL=openttd-$VER-$1/cmake/AndroidSDL.cmake + mkdir -p openttd-$VER-$1/cmake + rm -f src/src/rev.cpp openttd-$VER-$1/CMakeCache.txt $CMAKE_SDL + + APP_MODULES="`sh -c '. ../setEnvironment-'$1'.sh true ; echo $APP_MODULES' ../setEnvironment-$1.sh true`" + APILEVEL="`sh -c '. ../setEnvironment-'$1'.sh true ; echo $APILEVEL' ../setEnvironment-$1.sh true`" + NDK="`sh -c '. ../setEnvironment-'$1'.sh true ; echo $NDK' ../setEnvironment-$1.sh true`" + APP_AVAILABLE_STATIC_LIBS="`sh -c '. ../setEnvironment-'$1'.sh true ; echo $APP_AVAILABLE_STATIC_LIBS' ../setEnvironment-$1.sh true`" + + for LIB in $APP_MODULES; do + STATIC=`echo $APP_AVAILABLE_STATIC_LIBS | grep '\b'"$LIB"'\b'` + + TARGET=`echo $LIB | tr 'a-z' 'A-Z'` + LIB_FILE=$LIB + + case $LIB in + lzma) + TARGET=LIBLZMA + ;; + lzo2) + TARGET=LZO + ;; + sdl-1.2) + TARGET=SDL + ;; + timidity) + TARGET=Timidity + ;; + expat) + # Different .so file name to avoid linking to system libexpat.so + LIB_FILE=expat-sdl + ;; + png) + # Hack for PNG_PNG_INCLUDE_DIR + echo "set(${TARGET}_${TARGET}_INCLUDE_DIR $LOCAL_PATH/../../$LIB/include)" >> $CMAKE_SDL + ;; + freetype) + # Hack for FREETYPE_INCLUDE_DIRS + echo "set(${TARGET}_INCLUDE_DIRS $LOCAL_PATH/../../$LIB/include)" >> $CMAKE_SDL + ;; + icui18n|iculx|icuuc|icudata|icule|icuio) + TARGET="ICU_`echo $LIB | sed 's/icu//'`" + echo "set(PC_${TARGET}_INCLUDE_DIRS $LOCAL_PATH/../../$LIB/include)" >> $CMAKE_SDL + echo "set(PC_${TARGET}_LIBRARY + $LOCAL_PATH/../../../obj/local/$ARCH/lib$LIB_FILE.a + $LOCAL_PATH/../../../obj/local/$ARCH/libicu-le-hb.a + $LOCAL_PATH/../../../obj/local/$ARCH/libharfbuzz.a + $LOCAL_PATH/../../../obj/local/$ARCH/libicudata.a + $LOCAL_PATH/../../../obj/local/$ARCH/libicuuc.a)" >> $CMAKE_SDL + echo "set(PC_${TARGET}_FOUND YES)" >> $CMAKE_SDL + ;; + esac + + echo "set(${TARGET}_FOUND YES)" >> $CMAKE_SDL + echo "set(${TARGET}_INCLUDE_DIR $LOCAL_PATH/../../$LIB/include)" >> $CMAKE_SDL + + if [ -n "$STATIC" ] ; then + echo "set(${TARGET}_LIBRARY $LOCAL_PATH/../../../obj/local/$ARCH/lib$LIB_FILE.a)" >> $CMAKE_SDL + echo "add_library(${TARGET} STATIC IMPORTED)" >> $CMAKE_SDL + else + echo "set(${TARGET}_LIBRARY $LOCAL_PATH/../../../obj/local/$ARCH/lib$LIB_FILE.so)" >> $CMAKE_SDL + echo "add_library(${TARGET} SHARED IMPORTED)" >> $CMAKE_SDL + fi + echo "target_include_directories(${TARGET} INTERFACE "'${'"${TARGET}"'_INCLUDE_DIR})' >> $CMAKE_SDL + echo "set_target_properties(${TARGET} PROPERTIES IMPORTED_LOCATION "'${'"${TARGET}"'_LIBRARY})' >> $CMAKE_SDL + done + + cmake \ + -DCMAKE_MODULE_PATH=$LOCAL_PATH/openttd-$VER-$1/cmake \ + -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \ + -DANDROID_ABI=$1 \ + -DANDROID_NATIVE_API_LEVEL=$APILEVEL \ + -DANDROID_STL=c++_shared \ + -B openttd-$VER-$1 src + } || exit 1 -NCPU=4 +NCPU=8 uname -s | grep -i "linux" > /dev/null && NCPU=`cat /proc/cpuinfo | grep -c -i processor` -env CLANG=1 ../setEnvironment-$1.sh sh -c "cd openttd-$VER-$1 && make -j$NCPU VERBOSE=1 STRIP='' " && cp -f openttd-$VER-$1/objs/release/openttd libapplication-$1.so || exit 1 +make -C openttd-$VER-$1 -j$NCPU VERBOSE=1 STRIP='' && cp -f openttd-$VER-$1/libopenttd.so libapplication-$1.so || exit 1 diff --git a/project/jni/application/openttd-jgrpp/src b/project/jni/application/openttd-jgrpp/src index 59915db57..64f12cda5 160000 --- a/project/jni/application/openttd-jgrpp/src +++ b/project/jni/application/openttd-jgrpp/src @@ -1 +1 @@ -Subproject commit 59915db57701feff137621db5cbfe071252dbaae +Subproject commit 64f12cda569fe639b58cb5700aa9a80dd001c29e